PDF Generation pack
Claude Skill

Resume Builder

Generates a clean, ATS-friendly resume PDF from structured experience data. No fancy graphics that break ATS.

What it does

Given structured resume data (experience, education, skills, summary), produces a 1-2 page ATS-safe resume PDF. Single-column layout, real text (not images), parseable section headers, no icons or charts that confuse applicant tracking systems. Optional second variant for human readers if requested.

When to use

  • You're applying through ATS-based job boards (most large companies)
  • You have your resume in JSON / structured form and need a polished PDF
  • You want an ATS-safe baseline; design treatments come later

When not to use

  • Creative roles where a visually distinctive resume is the point — designers, artists, etc.
  • You need a fully designed resume with graphics — use a designer or Canva, then test ATS separately

Install

Download the .zip, then unzip into your Claude skills folder.

mkdir -p ~/.claude/skills
unzip ~/Downloads/resume-builder.zip -d ~/.claude/skills/

# Restart Claude Code session.
# Skill is now available — Claude will use it when relevant.

SKILL.md

SKILL.md
---
name: resume-builder
description: Use when generating an ATS-friendly resume PDF from structured data. Triggers on "build my resume", "generate resume PDF", "format my CV", or pasted experience data.
---

# Resume Builder

Generate a resume PDF that ATS systems parse correctly AND humans want to read. The dirty secret: most "designer" resumes get rejected by ATS before a human ever sees them. ATS-safe is the default.

## Required inputs

1. **Header** — name, location (city, state/country — no full street), phone, email, LinkedIn, portfolio (if relevant)
2. **Summary** (optional, 2-3 sentences) — only if it says something specific. Generic summaries hurt.
3. **Experience** — for each role: company, title, dates, location, 3-6 bullets
4. **Education** — institution, degree, field, year (year only if recent)
5. **Skills** — grouped by category if many; flat list if few
6. **Optional**: certifications, publications, languages, volunteer work

If a bullet is "responsible for X," push back: "What did you actually accomplish? Numbers?" Resumes win on outcomes, not duties.

## Approach

**Default**: HTML + print CSS via headless Chrome or WeasyPrint. Single-column layout, system-safe fonts (Helvetica, Calibri, Arial, Georgia). Output is real selectable text — that's what ATS reads.

**LaTeX**: classic for academic CVs and engineering resumes. Use the `moderncv` or `awesome-cv` class — but verify the output is ATS-parseable. Some `awesome-cv` icons render as glyphs ATS can't read.

**Avoid**: tables for layout (older ATS misreads them), text in images, multi-column layouts (column order is unpredictable when parsed), headers/footers (some ATS skip them entirely — never put contact info there).

## Structure

Single column, top to bottom:

1. **Header** — Name (largest), then contact line. No photo (US convention; in some EU countries photos are normal — ask).
2. **Summary** (optional)
3. **Experience** — reverse chronological. Each entry:
   - **Company | Title | Dates | Location** on one line (or two lines)
   - 3-6 bullets, each starting with a strong verb, including a metric where possible
4. **Education**
5. **Skills**
6. **Optional sections** — certifications, volunteer, languages

Section headers in plain text (not images). Use exact words ATS expects: "Experience" or "Work Experience", "Education", "Skills". Don't be clever ("My Adventures" instead of "Experience" — ATS won't match).

## Style guidance

- Page size: US Letter for US applications, A4 elsewhere
- Margins: 15-20mm. Less than 12mm signals "I cheated to fit." More than 25mm wastes space.
- Font: ONE font family. Helvetica or Calibri (sans) or Georgia (serif). 10-11pt body, 12-14pt headers, 18-22pt name.
- Single column. ALWAYS. Multi-column resumes parse unpredictably.
- Color: black or one dark accent (navy, charcoal). No bright colors.
- No icons next to phone/email — many ATS strip them and the layout collapses
- No graphs, ratings bars, or skill-level diagrams — they're text-in-images to ATS
- Date format: "Mar 2022 – Present" or "2022 – Present" — consistent throughout
- 1 page if <10 years experience; 2 pages if more. Never 1.5 with whitespace.

## Bullet writing

Best resume bullets follow: **Verb + Object + Result/Metric**.

- BAD: "Responsible for product roadmap"
- GOOD: "Owned product roadmap for B2B analytics suite ($12M ARR), shipping 14 features over 18 months and reducing churn from 8% to 5%"

If the user gives you duty-style bullets, rewrite them as outcome-style. If you don't have enough info to add a metric, ask before inventing one. Never fabricate numbers.

## Common pitfalls

- **Tables for the header**: old ATS reads them column-by-column and contact info gets scrambled. Use a simple line.
- **Skills as a chart with bars**: image content. ATS reads it as "Skills." Use plain text: "Python, SQL, Tableau."
- **Date as image** or non-standard date format: ATS may miss employment history entirely.
- **PDF generated as image** (scanned PDF): zero ATS parseability. Always real text.
- **Custom Unicode bullets** (▪️◆■★): some ATS choke. Use `-` or `•`.
- **Filename**: `resume.pdf` is forgettable. Default to `FirstLast_Resume.pdf` or `FirstLast_Role_Resume.pdf`.
- **Hidden white text** to game ATS: don't. Modern ATS flag it and recruiters reject on sight.

## Output

The resume PDF + a 3-line summary:
- Page count
- ATS-safe checks passed (single column, real text, no images, parseable headers)
- Suggested filename

Optional: offer a "designed" version if the user wants a human-eyes companion (slightly visual, used after passing ATS).

Example prompts

Once installed, try these prompts in Claude:

  • Build my resume PDF from this JSON: [paste]. ATS-safe, 1 page if possible.
  • Make a resume for a Senior PM applying to enterprise SaaS roles. Here's my experience: [...]