/make-resume
Generate a tailored resume/CV from a JD
$ npx -y skills add ARPeeketi/claude-resume-kit --skill make-resume --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/make-resume
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generate a tailored resume/CV from a JD
SKILL.md
make-resume.SKILL.mddescription: Generate a tailored resume/CV from a JD
user-invocable: true
/make-resume
**User input:** `$ARGUMENTS`
Parse `$ARGUMENTS`:
- File path (e.g., `JDs/*.txt`) → read that file for the JD
- Text after the path starting with "Focus:"/"Emphasize:"/"Downplay:" → focus directive
- "Quick:" prefix → Quick Mode (see below)
- Empty → ask the user for the JD
- Inline JD text (no file path) → save to `JDs/temp_<company>.txt`, proceed normally
---
Safety Rules (ALWAYS ENFORCED)
**Accuracy > Relevance > Impact > ATS > Brevity**
Read `config.md` Provenance Flags before generating any content. Verify every claim against that table.
- Use the email from `config.md` Personal Info in all outputs
- Resume bullets: ALL variable bullets are 2L (CV: 2L/3L mix OK, check `config.md` Document Preferences)
- Source ALL bullet content from `resume_builder/experience/` files. Never fabricate.
- Run `python3 resume_builder/helpers/char_count.py` after each section — the tool is authoritative
---
User Input During Execution
If the user provides feedback, corrections, or suggestions at any point: 1. Acknowledge the input immediately 2. If it affects an already-written section: go back, fix it, re-run char count gate 3. If it changes the bullet plan: update session file Bullet Plan 4. If it's a question: answer it, then continue from current step 5. Never restart a phase — resume from current position
---
Startup
Read `resume_builder/reference/shared_ops.md` for session startup, file derivation, and organization protocols.
Then: 1. Read `CLAUDE.md` — check Active Sessions and KB Corrections 2. Read `config.md` — load Provenance Flags, email, document preferences, role types 3. If session file exists for this JD:
- Read session file, check Status
- Phase 0: DONE, Phase 1: PENDING → resume at Phase 1
- Phase 1: DONE → resume at Budget Gate
- Phase 2: IN_PROGRESS → read .tex, check what sections exist, resume from checkpoint
- Phase 2: DONE → "Resume already done. Run /make-cl next." Show next command. Stop.
4. If no session file: proceed to Phase 0
---
Quick Mode
Trigger: `$ARGUMENTS` starts with "Quick:"
Defaults:
- Select all HIGH priority achievements from bundle's Priority Matrix as 2L
- Fill remaining budget with MEDIUM priority in Priority Matrix order
- Default format: 2-page resume (unless JD clearly requires CV)
- Skip Phase 0 STOP and Phase 1 STOP
- Keep Budget Gate (auto-pass if within target) and end-of-resume STOP
- Run all phases with progress commentary instead of interactive stops
---
Phase 0: Research & Session Setup
**Read these files:** 1. The JD (from `$ARGUMENTS`) 2. `resume_builder/reference/resume_reference.md` — Budget Card, Section Specs, Char Limits, Page Budgets 3. `config.md` — Role-Type Decision Tree to identify the matching bundle
**Web Search (MANDATORY — 2-3 searches).** Load WebSearch via ToolSearch first. 1. `[Company] research & development [key JD domain]` — products, recent projects 2. `[Company] [specific technology from JD]` — concrete hooks for cover letter 3. `[Company] careers [role type] culture` OR recent news — hiring context
If web search returns no results: use JD text + training knowledge. Flag: "Web search returned limited results — CL hooks may be generic."
**Produce all of these (reference `resume_builder/reference/session_file_template.md` for format):**
- **JD Analysis** — classify every requirement as Direct / Bridge (with confidence) / Gap. Extract ATS keywords by category.
- **Company Context** — mission, role purpose, culture signals, "why them" angle (from web research)
- **Framing Strategy** — lead narrative, reframing map, emphasize/downplay, CL hooks, user focus directives
- **Critique Context** — reviewer persona, competitive landscape, domain vocabulary
- **Cover Letter Plan** — institution type, paragraph structure, hooks, jargon level
**Create output folder:** Derive folder name from JD filename: `JDs/JD_Acme.txt` → `output/Acme/`
mkdir -p output/<FolderName>/
Write session file to `output/<FolderName>/session_<name>.md` (NOT flat `output/`). All subsequent output files go in this folder.
**Verify completeness:** Re-read the session file. Confirm these 8 sections are non-empty: JD Info, Requirements table, ATS Keywords, Gap Assessment, Company Context, Framing Strategy, Critique Context, Cover Letter Plan. Fill any missing section before presenting.
**Write memory pointer** to `CLAUDE.md` Active Sessions.
**Update session file Status:** `Phase 0: DONE`
Progress: "Searching for [company] + [domain]..." / "JD analysis: X/Y requirements direct match, Z bridges, W gaps"
>>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
Present: research summary, role type + bundle, format, framing strategy. Ask user to confirm: (1) role type + bundle, (2) format, (3) framing strategy. **You MUST wait for the user's explicit text response before continuing.** Proceeding without confirmation misaligns the entire resume and requires full regeneration.
---
Phase 1: Plan Bullets
**Re-read `output/<FolderName>/session_<name>.md`** — specifically Framing Strategy and ATS Keywords.
**Read:** 1. The matching bundle from `config.md` Role Types → `resume_builder/bundles/bundle_[role_type].md` — Section 1 (Priority Matrix)
- For hybrid JDs: read both bundles. Use primary for Priority Matrix, secondary for Reframing Map on 1-2 bridging bullets.
2. All experience files from `resume_builder/experience/` 3. `resume_builder/support/achievement_reframing_guide.md` 4. `resume_builder/support/skills_taxonomy.md` 5. `resume_builder/support/pub_metadata.md`
**Present one table per position:**
**[Position Name] (Budget: N-M bullets, ~X-Y rendered lines)**
| | ID | Achievement | Variant | Lines | JD Match | |---|---|-------------|---------|-------|----------| | * | P1-1 | [short description] | 2L | 2 | Direct | | * | P1-5 | [short description] | 2L | 2 | Direct | | o | P1-3 | [short description] |
Read more
description: Generate a tailored resume/CV from a JD user-invocable: true
/make-resume
**User input:** `$ARGUMENTS`
Parse `$ARGUMENTS`:
- File path (e.g., `JDs/*.txt`) → read that file for the JD
- Text after the path starting with "Focus:"/"Emphasize:"/"Downplay:" → focus directive
- "Quick:" prefix → Quick Mode (see below)
- Empty → ask the user for the JD
- Inline JD text (no file path) → save to `JDs/temp_<company>.txt`, proceed normally
---
Safety Rules (ALWAYS ENFORCED)
**Accuracy > Relevance > Impact > ATS > Brevity**
Read `config.md` Provenance Flags before generating any content. Verify every claim against that table.
- Use the email from `config.md` Personal Info in all outputs
- Resume bullets: ALL variable bullets are 2L (CV: 2L/3L mix OK, check `config.md` Document Preferences)
- Source ALL bullet content from `resume_builder/experience/` files. Never fabricate.
- Run `python3 resume_builder/helpers/char_count.py` after each section — the tool is authoritative
---
User Input During Execution
If the user provides feedback, corrections, or suggestions at any point: 1. Acknowledge the input immediately 2. If it affects an already-written section: go back, fix it, re-run char count gate 3. If it changes the bullet plan: update session file Bullet Plan 4. If it's a question: answer it, then continue from current step 5. Never restart a phase — resume from current position
---
Startup
Read `resume_builder/reference/shared_ops.md` for session startup, file derivation, and organization protocols.
Then: 1. Read `CLAUDE.md` — check Active Sessions and KB Corrections 2. Read `config.md` — load Provenance Flags, email, document preferences, role types 3. If session file exists for this JD:
- Read session file, check Status
- Phase 0: DONE, Phase 1: PENDING → resume at Phase 1
- Phase 1: DONE → resume at Budget Gate
- Phase 2: IN_PROGRESS → read .tex, check what sections exist, resume from checkpoint
- Phase 2: DONE → "Resume already done. Run /make-cl next." Show next command. Stop.
4. If no session file: proceed to Phase 0
---
Quick Mode
Trigger: `$ARGUMENTS` starts with "Quick:"
Defaults:
- Select all HIGH priority achievements from bundle's Priority Matrix as 2L
- Fill remaining budget with MEDIUM priority in Priority Matrix order
- Default format: 2-page resume (unless JD clearly requires CV)
- Skip Phase 0 STOP and Phase 1 STOP
- Keep Budget Gate (auto-pass if within target) and end-of-resume STOP
- Run all phases with progress commentary instead of interactive stops
---
Phase 0: Research & Session Setup
**Read these files:** 1. The JD (from `$ARGUMENTS`) 2. `resume_builder/reference/resume_reference.md` — Budget Card, Section Specs, Char Limits, Page Budgets 3. `config.md` — Role-Type Decision Tree to identify the matching bundle
**Web Search (MANDATORY — 2-3 searches).** Load WebSearch via ToolSearch first. 1. `[Company] research & development [key JD domain]` — products, recent projects 2. `[Company] [specific technology from JD]` — concrete hooks for cover letter 3. `[Company] careers [role type] culture` OR recent news — hiring context
If web search returns no results: use JD text + training knowledge. Flag: "Web search returned limited results — CL hooks may be generic."
**Produce all of these (reference `resume_builder/reference/session_file_template.md` for format):**
- **JD Analysis** — classify every requirement as Direct / Bridge (with confidence) / Gap. Extract ATS keywords by category.
- **Company Context** — mission, role purpose, culture signals, "why them" angle (from web research)
- **Framing Strategy** — lead narrative, reframing map, emphasize/downplay, CL hooks, user focus directives
- **Critique Context** — reviewer persona, competitive landscape, domain vocabulary
- **Cover Letter Plan** — institution type, paragraph structure, hooks, jargon level
**Create output folder:** Derive folder name from JD filename: `JDs/JD_Acme.txt` → `output/Acme/`
mkdir -p output/<FolderName>/
Write session file to `output/<FolderName>/session_<name>.md` (NOT flat `output/`). All subsequent output files go in this folder.
**Verify completeness:** Re-read the session file. Confirm these 8 sections are non-empty: JD Info, Requirements table, ATS Keywords, Gap Assessment, Company Context, Framing Strategy, Critique Context, Cover Letter Plan. Fill any missing section before presenting.
**Write memory pointer** to `CLAUDE.md` Active Sessions.
**Update session file Status:** `Phase 0: DONE`
Progress: "Searching for [company] + [domain]..." / "JD analysis: X/Y requirements direct match, Z bridges, W gaps"
>>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
Present: research summary, role type + bundle, format, framing strategy. Ask user to confirm: (1) role type + bundle, (2) format, (3) framing strategy. **You MUST wait for the user's explicit text response before continuing.** Proceeding without confirmation misaligns the entire resume and requires full regeneration.
---
Phase 1: Plan Bullets
**Re-read `output/<FolderName>/session_<name>.md`** — specifically Framing Strategy and ATS Keywords.
**Read:** 1. The matching bundle from `config.md` Role Types → `resume_builder/bundles/bundle_[role_type].md` — Section 1 (Priority Matrix)
- For hybrid JDs: read both bundles. Use primary for Priority Matrix, secondary for Reframing Map on 1-2 bridging bullets.
2. All experience files from `resume_builder/experience/` 3. `resume_builder/support/achievement_reframing_guide.md` 4. `resume_builder/support/skills_taxonomy.md` 5. `resume_builder/support/pub_metadata.md`
**Present one table per position:**
**[Position Name] (Budget: N-M bullets, ~X-Y rendered lines)**
| | ID | Achievement | Variant | Lines | JD Match | |---|---|-------------|---------|-------|----------| | * | P1-1 | [short description] | 2L | 2 | Direct | | * | P1-5 | [short description] | 2L | 2 | Direct | | o | P1-3 | [short description] |
Most AI resume tools work the same way: paste resume + paste JD, get a rewrite. They don't know which of your papers is published vs. under review. They don't know you only ran the simulations, not the experiments.
Other skills on claude-resume-kit.
- /critique
Re-critique existing resume/CV output files against a JD
Open skill - /edit-resume
Edit existing resume/CV or cover letter from critique feedback and user suggestions
Open skill - /make-cl
Generate a tailored cover letter from an existing session file and finished resume/CV
Open skill - /setup-build-kb
Synthesize completed extractions into the knowledge base files needed for resume generation
Open skill - /setup-extract
Extract structured information from research papers, PDFs, or code into knowledge base extractions
Open skill

