From david-skills
Manages JSON Resume standard resumes with resumed CLI: create, edit, render, export to PDF/HTML, apply themes, customize for jobs, and auto-publish to registry via GitHub Actions.
npx claudepluginhub thedavidweng/skillsThis skill uses the workspace's default tool permissions.
> Tools:
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Processes PDFs: extracts text/tables/images, merges/splits/rotates pages, adds watermarks, creates/fills forms, encrypts/decrypts, OCRs scans. Activates on PDF mentions or output requests.
Share bugs, ideas, or general feedback.
Tools:
- JSON Resume — Open standard for resume data
- resumed (v6.1.0) — Lightweight JSON Resume CLI builder
- puppeteer — Required for PDF export only
- Theme: user's choice — browse at https://jsonresume.org/themes
.json files. Themes control appearance.command -v node >/dev/null 2>&1 || { echo "ERROR: Node.js not installed. Get it from https://nodejs.org/ or run: brew install node"; exit 1; }
node --version # Should be v18+
cd <resume-directory>
npm install
This installs from package.json. Example:
{
"dependencies": {
"resumed": "^6.1.0",
"jsonresume-theme-even": "^0.20.0",
"puppeteer": "^24.42.0"
}
}
| Package | Purpose | Required for |
|---|---|---|
resumed | CLI: render, export, validate, init | All operations |
jsonresume-theme-* | Visual theme (user's choice) | render & export |
puppeteer | Headless Chrome for PDF generation | export (PDF) only |
npx resumed --help
Resumed does NOT bundle any theme. The user must pick and install one.
Browse themes: https://jsonresume.org/themes
Install the chosen theme as a dependency:
npm install jsonresume-theme-even # example — replace with user's choice
Or specify the theme in resume.json via the .meta.theme field:
{
"meta": {
"theme": "jsonresume-theme-even"
}
}
When no .meta.theme is set, the -t flag is required on every render/export command.
resume/
├── resume.json # Generic version (→ published to registry)
├── resume-{target-slug}.json # Targeted version (local only)
├── package.json # Dependencies: resumed + theme
├── node_modules/
└── README.md
Full spec: https://jsonresume.org/schema
{
"basics": {
"name": "Full Name",
"label": "Professional Title",
"email": "email@example.com",
"summary": "2-3 sentence professional summary",
"location": { "city": "City", "countryCode": "XX", "region": "Region" },
"profiles": [
{ "network": "LinkedIn", "username": "handle", "url": "https://..." }
]
},
"work": [
{
"name": "Company",
"position": "Title",
"startDate": "YYYY-MM-DD",
"endDate": "YYYY-MM-DD",
"summary": "Role summary",
"highlights": ["Achievement 1", "Achievement 2"]
}
],
"education": [
{
"institution": "University",
"area": "Major (Minor: X)",
"studyType": "Bachelor/Master's",
"startDate": "YYYY-MM-DD",
"endDate": "YYYY-MM-DD"
}
],
"skills": [
{ "name": "Category", "keywords": ["Skill1", "Skill2"] }
],
"volunteer": [],
"projects": [],
"meta": {
"version": "v1.0.0",
"lastModified": "ISO-8601",
"pdfRenderOptions": {
"margin": { "top": "0.5in", "right": "0.5in", "bottom": "0.5in", "left": "0.5in" }
}
}
}
All commands use npx resumed (runs the locally-installed version).
npx resumed render "resume.json" \
-t <theme-package-name> \
-o out.html
If .meta.theme is set in the JSON file, -t can be omitted:
npx resumed render "resume.json" -o out.html
npx resumed export "resume.json" \
-t <theme-package-name> \
-o resume.pdf
npx resumed validate "resume.json"
npx resumed init resume-new.json
| Command | Description | Key flags |
|---|---|---|
render | Render to HTML | -o output, -t theme |
export | Export to PDF (requires puppeteer) | -o output, -t theme, --puppeteer-arg |
validate | Validate JSON against schema | — |
init | Create sample resume.json | — |
cp resume.json resume-{slug}.jsonbasics.label to match the role titlebasics.summary to emphasize relevant experiencework entries by relevancehighlights to mirror JD keywordsskills categories to match JD requirementsYYYY-MM-DD format (e.g., "2023-09-01")endDate field entirely)The generic resume.json auto-publishes to the JSON Resume Registry via GitHub Actions:
push resume/resume.json
→ GitHub Actions (gist.yml)
→ Updates Gist
→ registry.jsonresume.org/{username} refreshes
Only resume.json triggers the action. Targeted versions (resume-*.json) do not publish.
resume.json # Generic (published)
resume-{target-slug}.json # Targeted (local only)
Slug format: lowercase, hyphenated description of the role.
Examples:
resume-ubc-cel-coordinator.jsonresume-stripe-frontend-eng.jsonresume-amazon-pm.jsonresume.json should be publicYYYY-MM-DD