Not another resume builder. Most resume tools rewrite the same surface every time you apply for a job. This one builds a deep career profile once β your achievements, scope, framings, and gaps β then tailors fast resumes from it for every future job. The profile is the asset. Resumes are disposable derivatives.
Two installable skills for Claude (Claude Code, Claude.ai, or any agent that supports the Agent Skills standard):
career-profile-builderβ runs a structured 30β45 minute interview that adapts to your experience level (intern β principal) and career track (engineering, PM, design, DS/ML, marketing, sales, ops, academia). Output:career_profile.md, a 19-section honest source-of-truth.resume-tailorβ reads yourcareer_profile.mdplus a job description, runs JD analysis β gap scoring β targeted discovery β drafting β ATS optimization β rendering. Output:resume_<JD-ID>.{md,docx,pdf,html}in roughly 15 minutes.
Every commercial resume tool I tried (LiveCareer, Enhancv, Rezi, Jobscan, Resume-Now) does one of two things: form-fill from shallow questions, or ATS-optimize an existing resume. Both miss the actual problem.
The actual problem is discovery. When a senior engineer applies to a security-platform role, the resume bullet that gets the interview is "built JWKS-based public-key verification across 242 services" β not "experienced in cloud security." The first one only exists if someone asked the right follow-up question. Standard tools never ask.
This skill set splits the work the way it should be split:
| Profile builder | Resume tailor | |
|---|---|---|
| Cadence | Once, then occasional updates | Every job application |
| Time | 30β45 min cold start | ~15 min per JD |
| Output | One reusable career_profile.md |
Tailored resume_<JD-ID>.docx/.pdf |
| Asks deep questions? | Yes β branched by experience + track | No β only for gaps the JD surfaces |
| Honesty rails | Captures known gaps + approved framings | Respects them, never overrides |
The compounding effect: each tailoring session writes its targeted-discovery answers back to the profile. The profile gets richer over time. By the third or fourth JD, "tailoring" is mostly assembly.
# Clone the repo
git clone https://github.com/vignzpie/resume-agent-skills.git
cd resume-agent-skills
# Drop into your Claude skills directory
cp -r career-profile-builder ~/.claude/skills/
cp -r resume-tailor ~/.claude/skills/For Claude.ai, Codex, Cursor, Gemini CLI, or other Agent-Skillsβcompatible tools, see Compatibility below for tool-specific install steps.
Then in Claude Code or Claude.ai:
You: Help me build my resume from scratch.
β career-profile-builder triggers, runs the interview, saves career_profile.md
You: Tailor my resume for this job: <paste JD or path to JD file>
β resume-tailor triggers, reads the profile, produces the tailored resume
You ββββ "Help me build my resume from scratch."
β
βΌ
career-profile-builder
β
βββ Pass 0: Triage (~2 min)
β Years of experience, target role, geography, IC vs. mgr,
β existing resume? career switcher?
β
βββ Pass 1: Skeleton (~10 min)
β Reverse-chrono job history. One line per role.
β
βββ Pass 2: Achievement deep-dive (~15β25 min)
β Branching questions per track. The high-yield phase.
β "What did you decide that someone else might have decided differently?"
β
βββ Pass 3: Coverage sweep (~5β10 min)
β Education, certs, public artifacts.
β "Anything you do well but feel uncomfortable claiming?" β known gaps
β "Anything you've talked yourself into a good framing for?" β approved framings
β
βΌ
career_profile.md saved (19 sections, ~15-25 KB typical)
You ββββ "Tailor for this JD" + paste / file path / URL
β
βΌ
resume-tailor (reads career_profile.md first; refuses if missing)
β
βββ Phase 1: JD ingest β req-ID, role, must-haves, ATS family
βββ Phase 2: Gap scorecard β β
/ π‘ / β per requirement
βββ Phase 3: Targeted discovery β only for π‘ and β, max 5 questions
β (answers get written BACK to career_profile.md)
βββ Phase 4: Draft β keywords planted in summary + skills + first bullet
βββ Phase 5: ATS pass β exact-phrase match, word-order check
βββ Phase 6: Render β md β html β docx β pdf, gracefully degrades
βββ Phase 7: Compression β if over 2 pages, suggest cuts in priority order
βββ Phase 8: Versioning β prompt for git commit / version-suffix / overwrite
β
βΌ
resume_<JD-ID>.{md, docx, pdf, html} saved alongside the JD
career-profile-builder/
βββ SKILL.md # Workflow, invariants, output contract
βββ references/
βββ branching-questions.md # Track-by-track interview question bank
βββ profile-template.md # Canonical 19-section structure
resume-tailor/
βββ SKILL.md # 9-phase workflow + invariants
βββ assets/
β βββ resume.css # 2-page-friendly print stylesheet
βββ references/
β βββ ats-detection.md # Workday, Greenhouse, Lever, Taleo, etc.
β βββ bullet-patterns.md # Bullet shapes, verb selection, quantification
βββ scripts/
βββ render.sh # md β html/docx/pdf with graceful degradation
The skills work standalone, but install these for the full output set:
| Tool | What it unlocks | Install |
|---|---|---|
pandoc |
.docx rendering |
brew install pandoc (Mac) / apt install pandoc (Linux) |
| Chrome / Chromium | .pdf via headless print |
usually already on your machine |
pdfinfo |
automatic page-count reporting | brew install poppler / apt install poppler-utils |
git |
optional commit step | usually already on your machine |
The skill detects what's available and tells you what's missing. Without pandoc, you still get .md and .html (with embedded CSS). Without Chrome, you can open the .html and Print β Save as PDF in any browser.
career_profile.md is the durable artifact. The structure (in brief):
- Identity Β· 2. Headline & target roles Β· 3. Summary Β· 4. Experience snapshot Β· 5. Experience deep-dive Β· 6. Education Β· 7. Certifications Β· 8. Technical skills Β· 9. Domain expertise Β· 10. Leadership & people Β· 11. Public artifacts Β· 12. Languages spoken Β· 13. Awards Β· 14. Volunteer Β· 15. Interests Β· 16. Visa / work auth Β· 17. Achievements bank Β· 18. Known gaps Β· 19. Pre-built framings
Sections 17β19 are the engine:
- Achievements bank β flat list of "things worth bragging about" in your voice. The tailor pulls bullets from here.
- Known gaps β things you don't have or are uncertain about claiming. Prevents over-claiming. (e.g., "PCI work was regex/keyword-based, not formally certified.")
- Pre-built framings β your approved phrasings for sensitive topics. The tailor uses these verbatim. (e.g., "aligned with PCI-DSS intent" β not "PCI-DSS certified.")
These are what make subsequent tailoring fast and honest.
These skills follow the Agent Skills standard, so they work with:
- Claude Code (primary target β drop into
~/.claude/skills/) - Claude.ai (upload via Settings β Capabilities β Skills)
- Claude API (use the Skills API)
- Other Agent-Skillsβcompatible tools (Codex, Cursor, Gemini CLI via conversion)
These two skills cover the core resume workflow. Adjacent skills that read from the same career_profile.md are natural extensions:
-
cover-letter-tailorβ same profile + JD pair, different output -
linkedin-rewriterβ long-form profile content from the same source -
interview-prepβ pulls likely questions from JD + profile gaps -
multi-jd-batchβ tailor against N JDs in one pass, surface common keywords
If you'd like to contribute one, see CONTRIBUTING.md.
Q: Do I have to use both skills?
Yes β the resume-tailor refuses to run without a career_profile.md. The profile is what makes the tailor good. If you want one-off resume help without building a profile, this isn't the right tool.
Q: Where does my profile live? Wherever you tell it to. By default, alongside the JD you're tailoring for. If you want a centralized profile across many job folders, put it somewhere stable and point the tailor at it.
Q: Does it send my data anywhere?
No. Everything happens in your Claude session and on your local disk. The git step is optional and only commits to a repo you've configured.
Q: Will it lie or invent metrics to make me look better? No. The skills are explicitly built to refuse fabrication. If a number isn't in the profile, the tailor uses qualitative phrasing instead. Section 18 (Known Gaps) is the safety rail; Section 19 (Pre-built Framings) is the user's voice.
Q: How is this different from Jobscan / Rezi / Enhancv? Those tools optimize an existing resume against a JD. They don't do deep discovery. This one runs the discovery interview that those tools assume already happened.
Q: I'm a new grad / career switcher / academic. Does it work for me?
Yes β the interview branches by track and experience level. New grads get a different set of questions than 15-year veterans, and the same is true for tracks (engineering vs. PM vs. design vs. academia). See career-profile-builder/references/branching-questions.md for the full question bank.
Built from a 4-hour real session tailoring a resume for a Proofpoint cloud-security role (R13927). The patterns that worked in that session β three rounds of discovery, the 19-section profile structure, the honest framing rules, the ATS keyword-density check, the pandoc + Chrome rendering pipeline β are codified here. The patterns that didn't work, also captured (see docs/PROVENANCE.md for the original session recap).
Contributions welcome. See CONTRIBUTING.md. Especially welcome:
- New track question banks (we cover engineering / EM / PM / design / DS / marketing / sales / ops / academia today; healthcare, legal, finance, education are gaps)
- Better ATS-detection heuristics (especially for non-US ATSes)
- Render-pipeline improvements (especially WeasyPrint or other pdf-engine options)
- Test cases β especially "this is what my profile looked like, this is the JD, this is the resume that came out, here's what was wrong"
MIT β use, fork, ship. Attribution appreciated but not required.
Keywords: claude-skills, claude-code, resume-builder, ats-optimizer, career-profile, agent-skills, resume-tailor, job-application, career-development, ai-resume, jd-analysis, applicant-tracking-system, pandoc, workday-resume