Complete AI-assisted resume/CV generation framework: - 6 Claude Code skills (setup-extract, setup-build-kb, make-resume, make-cl, edit-resume, critique) - LaTeX templates (resume, CV, cover letter) with .cls class files - 6 reference docs (shared_ops, resume_reference, cl_reference, critical_rules, session_file_template, critique_framework) - Fictional Dr. Jordan Chen examples (extraction, experience, bundle, config, session, JD) - Knowledge base scaffolding and config template - README with setup guide and workflow documentation
4.8 KiB
description, user-invocable
| description | user-invocable |
|---|---|
| Generate a tailored cover letter from an existing session file and finished resume/CV | true |
/make-cl
User input: $ARGUMENTS
Parse $ARGUMENTS:
- Session file path (e.g.,
output/Acme/session_acme_engineer.md) → read that session file - Session name (e.g.,
acme_engineer) → find session file via shared_ops.md derivation - Empty → check
CLAUDE.mdActive Sessions for latest
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.mdPersonal Info in all outputs - CL deepens what resume presents — never introduces new claims not traceable to resume bullets
- Source field context from
resume_builder/support/significance_*.mdfiles
User Input During Execution
If the user provides feedback, corrections, or suggestions at any point:
- Acknowledge the input immediately
- If it affects already-written content: fix it, re-verify word count and anti-patterns
- If it changes the framing: note the change in session file Framing Strategy
- Never restart — resume from current position
Startup
Read resume_builder/reference/shared_ops.md for session startup and file derivation.
Then:
- Read
CLAUDE.md— check Active Sessions and KB Corrections - Read
config.md— load Provenance Flags, email, role types - Find and read the session file
- Recovery check:
- If CL Status is DONE → "CL already generated. Run
/critiquenext." Show next command. Stop. - If CL Status is IN_PROGRESS → check if CL .tex exists, offer to resume or regenerate
- If Resume Status is not DONE → "Resume not yet generated. Run
/make-resumefirst." Stop. - If CL Status is PENDING → proceed to Phase 1
- If CL Status is DONE → "CL already generated. Run
Phase 1: Load Context
Read in this order:
- Session file — specifically: Company Context, Cover Letter Plan, Framing Strategy, ATS Keywords
- Finished resume/CV .tex — path from session file Output Files. Read to understand what CL must complement.
resume_builder/reference/cl_reference.md— CL format rules, paragraph templates, anti-patterns- The matching bundle from session file role type →
resume_builder/bundles/bundle_[role_type].md— Section 5 (Cover Letter) - All significance files from
resume_builder/support/significance_*.md
Update session file Status: Cover Letter: IN_PROGRESS
Progress: "Loading CL context — [company], [role type] bundle, [institution type]..."
Phase 2: Generate Cover Letter
Read resume_builder/templates/coverletter_template.tex.
Detect institution type from session file Cover Letter Plan:
- Industry → 3 paragraphs, 250-300 words
- National Lab → 4 paragraphs, 350-450 words
- Academic → 4 paragraphs, 350-450 words (postdoc) or 450-650 words (faculty)
Generate CL following cl_reference.md paragraph structure:
- Use significance files for field-context depth (NOT resume bullet text)
- Use session file CL hooks and "why them" angle
- Ensure every major claim is traceable to a resume/CV bullet
- Open with a specific reference to their work — no generic openers
- Weave credentials into body paragraphs, not closing
Save to output/<FolderName>/e2e_<name>_cover_letter.tex
Progress: "Writing [institution type] cover letter — [N] paragraphs, targeting [N] words..."
Phase 3: Compile & Verify
pdflatex -interaction=nonstopmode -output-directory=output/<FolderName> output/<FolderName>/e2e_<name>_cover_letter.tex
Use Read tool to view compiled PDF. Verify:
| Gate | Check | If FAIL |
|---|---|---|
| Word count | Industry 250-300, Lab/Academic 350-450 | Trim/expand |
| Page count | Resume package: 1 page. CV package: 1-2 pages | Adjust content |
| Page fill | 1pg: well-filled. 2pg: page 2 >= half filled before signature | Adjust |
| Anti-patterns | No generic opener, no defensive framing, no credential dump | Rewrite |
| Package cohesion | CL claims traceable to resume bullets, no contradictions | Fix |
| Compile | Clean pdflatex | Fix LaTeX errors |
Update session file:
- Add CL to Output Files
- Status:
Cover Letter: DONE - Add Next Critique command
Progress: "Compiled — 1 page, 278 words. Package cohesion verified."
>>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
Present: CL summary (word count, page count, key hooks used). You MUST wait for the user's explicit text response before continuing.
If user requests changes: apply them, re-compile, re-verify. Update session file. If user approves: update Status, present next command.
Do NOT trigger file organization — that happens after /critique approval.
"Cover letter done. Next steps:
- /clear
- [exact /critique command with session file path]"