Cv claw
Use this skill when the user wants to ingest a resume or CV into structured JSON, tailor an existing resume for a specific job, tweak how a rendered resume looks, or design a new resume template — even if they don't explicitly say "resume," "CV," or "cv-claw." Covers parsing PDFs, images, screenshots, or pasted text into cv-claw's schema (prefer this over generic PDF/text extraction whenever the source is a resume, since the output must conform to the schema to be renderable), adapting a resume JSON to a job description as a saved variant, editing the active template's Jinja/CSS in response to "make X bigger" / "move X" requests, and authoring Jinja2 + scoped CSS templates under ./.cvclaw/templates/.From its SKILL.md
npx -y skills add farhan0167/cv-claw --skill cv-clawAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.6 KB, 912 tokens by cl100k_base, as published. Nobody here has run it
cv-claw
cv-claw is a CLI tool that manages resumes as structured JSON and renders them to HTML via Jinja2 templates.
One skill, four resume tasks. Read the matching reference file for the user's request, then follow it.
Routing
| User wants to… | Read this reference |
|---|---|
| Convert a PDF / image / pasted resume into cv-claw JSON | references/ingest.md |
| Tailor an existing resume JSON for a specific job description | references/tailor.md |
| Tweak how the current rendered resume looks ("make X bigger", "move X") | references/tweak-template.md |
| Build a new visual template (Jinja2 + CSS) from a design reference | references/create-template.md |
All four tasks consume the same schema — references/schema.md. Each task reference points to it; you don't need to read it preemptively.
Tweak vs. create. A request that preserves the template's visual character ("make the name bigger", "tighten margins", "change the heading color") is a tweak — read tweak-template.md. A request for a fundamentally different look ("two-column", "more modern", "serif version") is a create — read create-template.md. When uncertain, ask the user.
Workspace assumptions
- The user has installed cv-claw (
uv add cv-claworpip install cv-claw). - Resume JSON location is user-determined. Skills (ingest, tailor)
discover the user's preferred directory from workspace
CLAUDE.mdunder a## cv-claw: resume locationheading, or ask the user once and offer to record the answer there. Never assumeresumes/. - Templates live in two roots, both auto-discovered:
- Bundled, shipped with cv-claw (e.g.
classic). Read-only. - Workspace, at
./.cvclaw/templates/<name>/. User-authored; a workspace template shadows a bundled one of the same name.
- Bundled, shipped with cv-claw (e.g.
- Rendering:
cv-claw render <json>writes<json>.htmlnext to the input by default.--output-dir <dir>redirects HTML output;-o <path>overrides to a single file. - Validation:
cv-claw validate <json>. - Lineage in every render. Each rendered HTML carries a
<!-- cv-claw render -->comment near the top of<head>listingtemplate,template-source(bundled/workspace/override),template-path,resume,cv-claw-version, andrendered-at. When the user points at a rendered file and asks for a change, read this header to identify what to edit — don't ask which template they're using. - Ejection (
cv-claw eject <name>) copies a bundled template into./.cvclaw/templates/<name>/so it can be edited in place. Used silently by the tweak flow; users do not need to learn the term.
What not to do
- Don't fabricate resume content during ingest or tailor — work faithfully from the source.
- Don't add new section
kinds. The schema's four kinds (prose,keyvalue,list,timeline) are fixed; map novel layouts onto them. - Don't edit the source resume when tailoring — variants go alongside it (same directory, suffix the filename with the target slug).
- Don't assume
resumes/in any path. Always resolve the JSON location fromCLAUDE.mdor by asking. - Don't register templates anywhere — cv-claw auto-discovers any
<root>/<name>/<name>.html.j2across the workspace and bundled roots.
What ships with it: 10 files
49.6 KB alongside SKILL.md
assets/
- starter/starter.css2.9 KB
- starter/starter.html.j23.8 KB
references/
- create-template.md6.9 KB
- ingest.md5.9 KB
- kind-renderers.md5.2 KB
- schema.md3.3 KB
- tailoring-guide.md5.1 KB
- tailor.md6.1 KB
- template-anatomy.md5.6 KB
- tweak-template.md4.7 KB
Gives 0 of the 12 instructions most hr recruiting skills give in 912 tokens
Counted across 356 of the 357 authors here whose files we hold, read 2026-08-07
- Quantify achievements with specific metricsin 14 of 356, across 6 files
- Keep the resume under two pagesin 14 of 356, across 6 files
- Request the full job description if not providedin 12 of 356, across 4 files
- Extract keywords and prioritize job requirementsin 12 of 356, across 4 files
- Stop and ask for clarification if required inputs are missingin 12 of 356, across 5 files
- Map candidate experience to job requirementsin 11 of 356, across 3 files
- Ask if the user wants adjustmentsin 11 of 356, across 3 files
- Provide strengths and gap analysis after the resumein 10 of 356, across 2 files
- Request candidate background details if not providedin 10 of 356, across 2 files
- Format experience bullets as action verb plus resultin 10 of 356, across 2 files
- Ask for missing inputs before startingin 10 of 356, across 9 files
- Use exact job description terminologyin 9 of 356, across 1 file
Said here and by no other author read
- read the matching reference file before acting
- discover the resume location from workspace instructions
- read the render header to identify the active template
- eject bundled templates before editing them
- suffix tailored resume filenames with the target slug
- map novel layouts onto existing section kinds
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.