# Tailor Resume

> Use when tailoring a resume to a specific pasted job description. Reads content/master.yaml and jobs/<slug>/job.md, proposes a selections.yaml with per-change reasoning, runs the render/measure/export loop, and enforces one-page output via human-approved cuts.

- Skill: `clickblipclick/tailor-resume` (Agent Skill)
- Install (CLI): `npx skillmds@latest add clickblipclick/tailor-resume`
- Raw SKILL.md: https://api.skillmd.com/api/skills/clickblipclick/tailor-resume/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: clickblipclick (https://skillmd.com/u/clickblipclick)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/clickblipclick/tailor-resume

---


# Tailor Resume Skill

## When to use

User wants to generate a tailored, page-limited PDF for a job description.

## Scaffolding

If no `jobs/*-<slug>/` directory exists yet, **always scaffold via the script**: save the JD to a temp file and run `bun run tailor <temp-file> --slug <slug>`. Never create the job directory manually — the script adds a date prefix (`YYYY-MM-DD-<slug>`) that the rest of the workflow depends on.

## Hard rules

1. **Never apply a cut, override, or reordering without showing the user the specific change and the reason, and getting explicit approval.** Batch approval is fine ("looks good, proceed"); rejections can be specific ("all except 2 and 5").
2. **Never skip the measure step.** Every selections change must be followed by `bun run measure <path-to-selections.yaml>`.
3. **Iteration cap: 5 fit-loop passes.** After the 5th, stop and ask the user for direction rather than thrashing.
4. **Page limit.** Default is 1 page. If the user sets `max_pages` in selections.yaml, respect that limit. If `measure` reports overflow (`overflow_px > 0`), do not export.

## Workflow

### 1. Gather context

- Identify the job directory (e.g. `jobs/2025-04-18-acme-sre/`). Use `ls jobs/` if needed.
- Read `content/master.yaml` in full.
- Read the `job.md` from the job directory.
- Consider the `job.md` and `content/master.yaml` as if you were a hiring manager for the given role. Consider what master bullets would be most attractive for that role. Listen to the user but push back if you think they are making a mistake or an incorrect judgment. Ultimately, they are in control.
- For skills, err toward including more even if it's not explicitly applicable for the role.
- List `jobs/archive/` and read any prior `job.md` + `selections.yaml` for roles/companies that look similar to the current JD. Use these only as framing reference, not as authoritative.

### 2. Propose initial selections

Produce a proposed `selections.yaml` and present it as a diff-with-reasoning list. Format:

```
Including:
  - acme-led-migration — JD emphasizes data platform work; this matches directly.
  - acme-hired — JD mentions team growth.

Excluding:
  - globex-frontend-* — JD is backend-only; these would dilute focus.

Rewording:
  - acme-reduced-latency: "Cut API p95 latency 60%"
    (original: "Improved API latency by 60%") — JD uses "p95" explicitly.

Template:
  - template: default — using the standard template unless the user requests otherwise.
```

The proposed `selections.yaml` must include a `template` field (default: `"default"`).

Always propose `profile_overrides` with a tailored `headline` and `summary` for the JD. The headline should match the JD's role title (or a close generalization). The summary should be rewritten to emphasize the skills, technologies, and themes the JD prioritizes, while staying truthful to the candidate's experience. Ensure the headline and summary's opening are consistent (e.g. both say "Senior Software Engineer", not one "Frontend" and one "Software").

Wait for user approval. Apply approved changes to `jobs/<slug>/selections.yaml`.

### 3. Render + measure

Run:

```
bun run measure <path-to-selections.yaml>
```

Report the measure JSON back to the user.

### 4. If overflowing, propose cuts

If `pages > max_pages`:

- Identify candidate cuts sized to the reported `overflow_lines`.
- Present each as diff-with-reasoning (what you'd drop or shorten, and why this bullet is least critical given the JD).
- Wait for approval.
- Apply approved changes; return to step 3.

After 5 iterations with no fit, stop and ask the user whether to: (a) relax a constraint, (b) manually edit, or (c) adjust the template.

### 5. Export

When `pages <= max_pages`:

```
bun run export <path-to-selections.yaml> --out jobs/<slug>/resume.pdf
```

## Editing discipline

- Never edit `content/master.yaml` from this skill. Master is owner-curated. If the JD requires content that doesn't exist in master, raise it to the user explicitly — they decide whether to add to master or use a one-off override.
- Bullet IDs are stable. Don't rename them.
- Vary leading verbs across bullets. Avoid repeating the same initial verb within a role section. When writing overrides, check what verbs adjacent bullets already use.

