Render a JSON Resume file through an HTML template into a self-contained, ATS-friendly document ready for the browser's Save-as-PDF. Use when the user asks to render, build, generate, or export their résumé/CV.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add localplugins/plugins --skill generate-resume --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Generate Resume?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/localplugins-generate-resume)More formats (shields.io, HTML) on the badges page.
---
name: generate-resume
description: Render a JSON Resume file through an HTML template into a self-contained, ATS-friendly document ready for the browser's Save-as-PDF. Use when the user asks to render, build, generate, or export their résumé/CV.
---
# generate-resume
Turn `resume.json` into a finished résumé file. Pure `sh` + `awk` splice, zero
Node, zero network — the browser does the actual rendering when the user
prints to PDF. This is the mechanism `/cv-make` drives; use it directly if
you're asked to render outside that command's flow (e.g. from `/cv-tailor` in
a later plan).
## Inputs
- The active résumé: `resume.json` at the repo root, valid against
`${CLAUDE_PLUGIN_ROOT}/schema/json-resume.schema.json` (see the validation checklist in
`commands/cv-new.md` — `basics.name` required, etc.). Stop and report the
bad field rather than rendering invalid data.
- The active template slug: line 1 of `cv/.active` (default `classic-ats` if
unset). Its `template.html` lives at
`"${CLAUDE_PLUGIN_ROOT}/templates/<slug>/template.html"`.
- The shared renderer: `"${CLAUDE_PLUGIN_ROOT}/templates/_shared/render-core.js"`
— one `renderResume(resume) -> htmlString` function plus its helpers
(`escapeHtml`, `formatDate`, `dateRange`, per-section renderers). Every
template reuses this same file; a template only supplies its own CSS shell.
## Procedure
1. Resolve and validate the inputs above.
2. **Splice** the three pieces into one file with the literal splice script:
```bash
mkdir -p output
sh "${CLAUDE_PLUGIN_ROOT}/lib/render.sh" \
"${CLAUDE_PLUGIN_ROOT}/templates/<slug>/template.html" \
"${CLAUDE_PLUGIN_ROOT}/templates/_shared/render-core.js" \
resume.json > "output/resume-<slug-of-name>.html"
```
See `references/render-pipeline.md` for exactly how the splice works, the
two markers it fills, and why the result must stay self-contained.
3. Write the result to `output/resume-<slug-of-name>.html` (kebab-case the
person's name, e.g. "Alex Rivera" → `alex-rivera`).
4. Report the saved path and hand the user the render contract: **open the
file in a browser, then Print → Save as PDF.** The browser is the renderer;
this skill only assembles the HTML it renders.
## Notes
- Never write partial output. If the splice or a downstream step fails, don't
leave a half-written file in `output/`.
- The output file must open correctly directly from disk (`file://`) with no
server and no additional requests — that's what "self-contained" means here.
- This skill never produces a PDF itself. PDF generation via a headless
browser/OS tool is optional and out of scope for Plan 1 (see Plan 5 in the
project plan); the guaranteed, zero-dependency path is always the user's own
browser doing Save as PDF.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!