name: generate-cv description: Generates print-ready HTML CVs from career context. Detects stale data and interviews for updates. Use when user says "cv", "resume", "generate cv", or needs their CV. argument-hint: [--ats] [--output=path]
Check for flags in skill arguments:
--ats→ Use ATS template (simple, parseable layout)--output=<path>→ Custom output path- Default:
~/Desktop/cv-YYYY-MM-DD.html
2. Read Career Data
Read career/context.md from repo root. Extract:
| Field | Source Location |
|---|---|
| Name | Hardcoded: Pedro Alonso Pinto |
| Title | Current Situation → Role |
| Company | Current Situation → Company |
| Location | Current Situation → Location |
| Impact | Current Situation → Impact delivered |
| Key Activities | Current Situation → Key activities |
| Experience | Experience Summary table + detailed sections |
| Technical Skills | Skills Inventory → Technical table |
| Leadership Skills | Skills Inventory → Leadership list |
| Languages | Skills Inventory → Languages |
| Education | Education section |
3. Check Staleness
Parse "Session History" section for most recent date entry.
- Extract year-month from headers like
### 2026-02-01 - Compare to current date
- If >6 months since last update → trigger interview
4. Interview (if stale)
If career data is stale (>6 months), ask targeted questions before generating:
- Role changes: "Any role changes or promotions since [last update]?"
- Achievements: "New quantifiable achievements to highlight? (revenue, cost savings, team growth)"
- Team/scope: "Has your team size or scope of responsibility changed?"
- Projects: "Any notable projects worth adding?"
- Skills: "New technical skills or certifications?"
Update career/context.md with answers before generating CV.
5. Generate HTML
Using the appropriate template:
- Modern template:
.claude/skills/cv/templates/modern.html - ATS template:
.claude/skills/cv/templates/ats.html
Populate template placeholders with extracted career data. Write to output path.
6. Open and Instruct
open <output_path>
Tell user:
"CV generated at
<path>. Print to PDF: Cmd+P → Save as PDF. For best results, use 'Scale: 100%' and 'No margins' or 'Default margins'."
The templates use these placeholders:
{{NAME}} → Pedro Alonso Pinto
{{TITLE}} → Senior Data Science Manager (M2)
{{COMPANY}} → Meta (Facebook)
{{LOCATION}} → London, UK
{{EMAIL}} → [blank — user should add manually]
{{PHONE}} → [blank — user should add manually]
{{LINKEDIN}} → [blank — user should add manually]
{{SUMMARY}} → Generated from Current Situation impact + key activities
{{EXPERIENCE}} → Built from Experience Summary, each entry:
- Company, Role, Dates, Location
- Bullet points from detailed sections
{{SKILLS_TECHNICAL}} → From Technical skills table
{{SKILLS_LEADERSHIP}} → From Leadership skills list
{{LANGUAGES}} → From Languages section
{{EDUCATION}} → From Education section
Experience Entry Format
For each role, extract:
- Company name
- Job title
- Date range
- Location
- 3-5 bullet points of achievements (prioritize quantified impact)
Bullet points should start with action verbs: Led, Built, Developed, Delivered, Drove, etc.
Writing Style
All CV text (summary, bullet points, descriptions) must follow the Ghostwriting Rules in root CLAUDE.md. Use natural, human-sounding language. No em dashes, no filler phrases like "leveraging expertise" or "passionate about". Action verbs are good; corporate fluff is not.
Located at: .claude/skills/cv/templates/modern.html
Design principles:
- Print-first: A4 layout (210mm × 297mm) with proper margins
- System fonts:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif - Single accent: #2563eb (professional blue)
- Self-contained: All CSS embedded, no external dependencies
- Semantic HTML: Proper heading hierarchy, accessible structure
Layout:
- Header: Name (large), Title, Location, Contact (right-aligned)
- Two-column for skills/languages (space efficient)
- Single-column for experience (clarity)
- Education at bottom
ATS Template
Located at: .claude/skills/cv/templates/ats.html
Design principles:
- No columns: Single-column layout only
- Plain text appearance: Black text, simple formatting
- Larger font: 11pt minimum for readability
- Skills as comma-separated list: Not tables or grids
- Minimal styling: Bold for headings, bullets for lists
- No graphics, icons, or complex layouts
Optimized for automated applicant tracking system parsing.
If a section is missing from context.md:
- Skip that section in the CV
- Warn user: "Note: [section] not found in career context"
Very Long Experience
If experience section would exceed 2 pages:
- Prioritize recent roles (last 10 years)
- Condense older roles to single line: "Company — Role (Dates)"
- Note: "Earlier experience available upon request"
Contact Information
Contact details are intentionally blank in templates. Remind user to add before sending:
"Remember to add your email/phone/LinkedIn before sharing."