{"id":"87445d1a-c928-43b8-95c3-9de66e07d2de","slug":"ats-resume-agent","kind":"skill","name":"ats-resume-agent","summary":"Claude Code agents that tailor ATS-friendly LaTeX resumes and cover letters to a job description, using only your career document. A validator checks numbers, dates, titles, certs, and skills against","owner":"NullSpace-BitCradle","repoUrl":"https://github.com/NullSpace-BitCradle/ats-resume-agent","license":"MIT","licenseTier":"permissive","trust":"community","stars":13,"match":null,"fewStars":false,"format":"skill","createdAt":null,"addedAt":"2026-10-14T06:09:18.374Z","logoUrl":"https://avatars.githubusercontent.com/u/216858096?u=bbf3946f589f793cebee57b8875e836fdf480648&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","search","files-documents"],"tags":["ai-resume","anthropic","ats","claude-code","cover-letter","job-search","latex","resume"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T07:17:17.511Z","sample":false,"url":"https://conduits.dev/tools/ats-resume-agent","language":"TypeScript","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# ATS Resume Writer Agent for Claude Code\n\n[![CI](https://github.com/NullSpace-BitCradle/ats-resume-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/NullSpace-BitCradle/ats-resume-agent/actions/workflows/ci.yml)\n\n> v1.2.0. Prefer the original? It is preserved as the [v1.1.0 release](https://github.com/NullSpace-BitCradle/ats-resume-agent/releases/tag/v1.1.0) and the [`v1` branch](https://github.com/NullSpace-BitCradle/ats-resume-agent/tree/v1). See [CHANGELOG.md](CHANGELOG.md) for what changed.\n\nAn AI-powered resume and cover letter generator built on [Claude Code](https://code.claude.com/docs). It creates ATS-optimized, LaTeX-formatted resumes tailored to specific job descriptions. It also includes a guided career document builder that helps you create the source material through an interactive interview.\n\n**Zero fabrication policy:** The agent will never estimate metrics, suggest proxy numbers, or embellish your experience. If a quantified achievement isn't in your master document, it won't appear in the output. This is a hard constraint, not a suggestion, and a [validator](#verify-zero-fabrication) checks it in code.\n\n![The Zero-Fabrication Resume Workflow](images/Infographic.png)\n\n## How It Works\n\nThe project has two agents that work together:\n\n1. **Career Document Builder**: Guides you through an interactive interview to create a comprehensive Master Career Document. It can also ingest existing resumes, LinkedIn profile exports, or any career materials you already have as a starting point.\n2. **Resume Writer**: Takes your Master Career Document and a job description, then produces a tailored LaTeX resume optimized for Applicant Tracking Systems. You run this each time you apply somewhere.\n\nThe typical flow:\n\n1. Build your Master Career Document once (guided interview or manual)\n2. Drop a job description file into the project\n3. Tell Claude to generate a resume\n4. The agent selects the most relevant content, maps keywords, and produces a polished PDF\n5. The validator confirms every checked claim traces to your MCD, and an optional plain-text export gives you a copy for application forms\n\nYou can use it from a clone of this repository or install it as a [Claude Code plugin](#install-as-a-plugin).\n\n### Sample Output\n\nHere's what the agent produces from the included example data:\n\n**Resume:**\n\n![Sample Resume](images/Resume-Alex_Morgan-Example_Corp-Senior_Engineer.png)\n\n**Cover Letter:**\n\n![Sample Cover Letter](images/CoverLetter-Alex_Morgan-Example_Corp-Senior_Engineer.png)\n\n## Prerequisites\n\n### Claude Code\n\nInstall [Claude Code](https://code.claude.com/docs) (Anthropic's CLI tool). On macOS, Linux, or WSL:\n\n```bash\ncurl -fsSL https://claude.ai/install.sh | bash\n```\n\nOn Windows PowerShell:\n\n```powershell\nirm https://claude.ai/install.ps1 | iex\n```\n\nOn Windows CMD, run `curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd`. Homebrew (`brew install --cask claude-code`) and WinGet (`winget install Anthropic.ClaudeCode`) also work. Run `claude --version` afterward to confirm the install. See the [setup guide](https://code.claude.com/docs/en/setup) for other options.\n\nYou need a Claude Pro, Max, Team, or Enterprise plan, or an Anthropic Console (API) account. The free claude.ai plan does not include Claude Code. See [authentication](https://code.claude.com/docs/en/authentication) for details. Each resume generation typically uses the Sonnet model and takes 30-60 seconds. The career document builder interview takes longer depending on career complexity.\n\n### LaTeX (for PDF compilation)\n\nThe agent outputs `.tex` files. To compile them to PDF, you need `pdflatex`.\n\n**Ubuntu/Debian/WSL:**\n```bash\nsudo apt-get install texlive-latex-base texlive-fonts-recommended \\\n  texlive-fonts-extra texlive-latex-extra cm-super\n```\nThis installs all required LaTeX packages. `cm-super` provides the scalable fonts the cover letter template needs; without it, `pdflatex` stops with `auto expansion is only possible with scalable fonts`.\n\n**macOS:**\n```bash\nbrew install --cask mactex-no-gui\n```\nThe full `mactex-no-gui` (~4GB) includes all required packages. The smaller `basictex` (~100MB) may be missing fonts and packages. If you use it, install missing packages with `tlmgr`:\n```bash\nsudo tlmgr update --self\nsudo tlmgr install fontawesome5 fontawesome CormorantGaramond charter \\\n  ragged2e microtype lastpage bookmark tabularx enumitem titlesec fancyhdr cm-super\n```\n\n**Important:** The resume template uses `fontawesome5` and the cover letter template uses `fontawesome`. These are separate packages, and both must be installed for full functionality.\n\n### Bun (for the validator and text export)\n\nThe [zero-fabrication validator](#verify-zero-fabrication) and the [plain-text export](#plain-text-export) run on [Bun](https://bun.com). Resume generation works without it, but the agent skips those two steps. On macOS, Linux, or WSL:\n\n```bash\ncurl -fsSL https://bun.com/install | bash\n```\n\nSee the [Bun installation docs](https://bun.com/docs/installation) for Windows and other options.\n\n<details>\n<summary>Troubleshooting LaTeX packages</summary>\n\nTo check if a specific package is installed:\n```bash\nkpsewhich fontawesome5.sty\n```\n\nIf `pdflatex` fails with `File 'X.sty' not found`, install the missing package:\n```bash\nsudo tlmgr install <package-name>\n```\n\nIf you don't have LaTeX installed and don't want to install it locally, you can still use the agent to generate the `.tex` files and compile them using [Overleaf](https://www.overleaf.com/) or another online LaTeX editor.\n</details>\n\n## Setup\n\nThere are two ways to use this project. Clone it (steps below) if you want to edit the templates or agents. Or install it as a Claude Code plugin and use it from any folder without cloning (see [Install as a plugin](#install-as-a-plugin)).\n\n1. **Clone this repository:**\n   ```bash\n   git clone https://github.com/NullSpace-BitCradle/ats-resume-agent.git\n   cd ats-resume-agent\n   ```\n\n2. **Check dependencies** (optional but recommended):\n   ```bash\n   ./setup.sh\n   ```\n   This checks for Claude Code and LaTeX, and offers to install anything missing.\n\n3. **Create your Master Career Document** (choose one):\n\n   **Option A, guided interview (recommended):**\n   ```\n   Help me build my career document\n   ```\n   The `career-doc-builder` agent will walk you through an interactive interview to produce a comprehensive 18-section MCD. If you have existing resumes, LinkedIn exports, or other career materials, it can ingest those as a starting point.\n\n   **Option B, manual:**\n   ```bash\n   cp examples/Master_Career_Document.md Master_Career_Document.md\n   ```\n   Edit `Master_Career_Document.md` with your real career data. See the example file for the expected format and available features like agent notes and legacy sections.\n\n   **Note:** `Master_Career_Document.md` and `Job_Description-*.md` files in the project root are gitignored by default to prevent accidentally committing personal information. The example files in `examples/` are tracked normally.\n\n4. **Start Claude Code in the project directory:**\n   ```bash\n   claude\n   ```\n\n   The agent definition in `.claude/agents/ats-resume-writer.md` is preconfigured, so you don't need to read or modify it to generate resumes.\n\n### Install as a plugin\n\nThis repository is also a Claude Code plugin marketplace. Inside any Claude Code session, run these, then confirm the install in the `/plugin` panel that the second command opens:\n\n```\n/plugin marketplace add NullSpace-BitCradle/ats-resume-agent\n/plugin install ats-resume-agent@nullspace-bitcradle\n```\n\nOr from your shell, where the install finishes directly:\n\n```bash\nclaude plugin marketplace add NullSpace-BitCradle/ats-resume-agent\nclaude plugin install ats-resume-agent@nullspace-bitcradle\n```\n\nThat installs both agents (`ats-resume-writer` and `career-doc-builder`) along with the LaTeX templates and the validator. Then work from any folder that holds your `Master_Career_Document.md` and a `Job_Description-*.md` file. Generated files go to `output/` in that folder. You still need `pdflatex` for PDFs (see [Prerequisites](#latex-for-pdf-compilation)), and Bun if you want the validator.\n\nTo update later, run `/plugin marketplace update nullspace-bitcradle`.\n\n## Usage\n\n### Generate a Resume\n\nDrop a job description file in the project root:\n\n```bash\n# Name it following the convention:\n# Job_Description-[Company]-[Role].md\n```\n\nThen tell Claude:\n\n```\nResume for the Example Corp file\n```\n\nor:\n\n```\nResume and cover letter for the Example Corp file\n```\n\nThe agent will:\n1. Read your Master Career Document\n2. Analyze the job description for keywords and requirements\n3. Select the most relevant experience and skills\n4. Generate a `.tex` file with ATS-optimized content\n5. Compile it to PDF using `pdflatex`\n6. Run the validator and fix any claim it flags (if Bun is installed)\n7. Write a plain-text copy for application forms (if Bun is installed)\n\nOutput files are saved to the `output/` directory.\n\n### Review and Iterate\n\nAfter generating a resume, you can ask for adjustments:\n\n```\nMake the summary more focused on leadership experience\n```\n\n```\nAdd the CloudBridge SSO migration project to the experience section\n```\n\n```\nCut it to one page and lead with the platform work\n```\n\n### Verify Zero Fabrication\n\nThe zero-fabrication promise is checked in code, not just in the prompt. The validator reads a generated resume and your Master Career Document and fails if the resume contains anything the MCD does not back up:\n\n- **Numbers:** every number, including spelled-out ones like \"fifteen\" or \"12 million\", must appear in the MCD. Percentages must match a percentage, money must match money in the same currency, and scaled values must match by value, so `2.3M`, `2.3 million`, and `2,300,000` are interchangeable, but a bare `3` does not back `3M`.\n- **Dates:** each start and end date on a heading line. `Mar 2022`, `March 2022`, and `03/2022` count as the same date, and so do Present and Current.\n- **Employers, titles, and degrees:** the text of every `\\headingBf`, `\\headingIt`, and `\\heading` line, plus client names in `\\itemTitle{Client: ...}`. When a heading has several parts (`Software Engineer, Mathematics`), they must all come from one section of the MCD, not from anywhere in it. Common degree abbreviations (`B.S.`, `MBA`, `Ph.D.`) match the spelled-out degree.\n- **Certifications:** each item, and any loose text, under a Certifications, Licenses, or Credentials heading or section. The name, issuer, and year must appear together in one MCD bullet, so when each certification is its own bullet, a real certification with a shifted year still fails. An entry can run across several lines.\n- **Skills:** each item in the skills table, including rows that wrap across lines. An acronym passes when the MCD spells out the phrase it stands for (`TDD` for Test-Driven Development), and `AWS (EC2, Lambda)` in the MCD backs `AWS Lambda`.\n\nThese never count as a source: the \"Legacy & Historical Platforms\" section at any heading level (and titles like \"Legacy Skills\", \"Deprecated Skills\", or plain \"Legacy\"), Agent Notes, whether a quoted block or a bullet (a note saying \"never list CISSP\" is not evidence of CISSP), HTML comments, link targets, and the table of contents.\n\nIt also flags an unescaped `%` after a number (`34%` instead of `34\\%`). LaTeX treats that `%` as the start of a comment, so the rest of the line silently disappears from the PDF even though `pdflatex` reports success.\n\nIf the resume has a skills section (Skills, Core Competencies, Technical Proficiencies, and similar names) or a certifications heading the validator cannot read, for example skills written as plain text instead of the template's table, it reports a `coverage` finding instead of passing. An unfamiliar layout fails loudly; it never passes silently.\n\nThe validator needs [Bun](#bun-for-the-validator-and-text-export):\n\n```bash\nbun tools/validate.ts output/Resume-Your_Name-Company-Role.tex Master_Career_Document.md\n```\n\nIt prints `PASS` and exits 0, or lists each unsupported claim with its line number and exits 1. Files that don't end in `.tex` are read as plain text, and only their numbers are checked.\n\n**Cover letters** can name the company, the role, and facts from the job posting, so pass the job description as an extra source:\n\n```bash\nbun tools/validate.ts output/CoverLetter-Your_Name-Company-Role.tex Master_Career_Document.md Job_Description-Company-Role.md\n```\n\nA number that only the job description backs has to keep its context: the letter's sentence must share a word with the posting's sentence. `serving 50M+ users` passes against \"serving 50M+ monthly active users\", but `mentored 5 junior engineers` does not pass just because the posting asks for \"5+ years\". Close paraphrases can still fail (`the 5-year requirement` shares no word with `5+ years`); reword or leave the number out.\n\nThe letter's own date is skipped when it sits on a line of its own that starts a paragraph (after a blank line, and followed by a blank line, a `\\\\` break, or the salutation), or after `\\hfill` at the end of a line. A date inside a sentence is still checked, and resumes never skip dates.\n\nThe validator refuses extra sources for a file with resume structure. Everything on a resume has to come from your own history, and a job posting's tech stack is exactly where padded skills come from.\n\nWhat it cannot prove:\n\n- **It matches values, not sentences.** If a real number, title, or date shows up attached to the wrong role, the validator will not notice.\n- **Parts of a heading can be combined within one MCD section.** Any parts found in the same section pass together, so a target title and a held title, or a title and a word from that role's bullets, can be joined into one heading.\n- **A posting's metric can be claimed as your own** if the sentence shares words with the posting's sentence.\n- **Shorthand like `45m` reads as 45 million.** Write out minutes.\n- **Synonyms fail.** If the MCD says PostgreSQL and the resume says Postgres, it fails. The fix is to add the term to your MCD if it's true.\n- **Prose isn't parsed for names.** An employer mentioned only in the summary paragraph isn't checked.\n\nTreat a PASS as \"nothing was invented,\" not \"every sentence is accurate,\" and still read the output.\n\n### Plain-Text Export\n\nSome applicant tracking systems read plain text more reliably than a PDF, and many application forms want resume text pasted into a box. The export turns a generated `.tex` into clean text with standard section headings, one line per role, and dash bullets:\n\n```bash\nbun tools/export-text.ts output/Resume-Your_Name-Company-Role.tex\n```\n\nIt writes `output/Resume-Your_Name-Company-Role.txt` (pass a second argument to choose the path). It also handles cover letters. The `.tex` stays the source of truth. The export is derived from it, so run the validator on the `.txt` too if you edit it by hand.\n\n### Build or Update Your Career Document\n\nThe `career-doc-builder` agent guides you through creating a comprehensive Master Career Document via interactive interview:\n\n```\nHelp me build my career document\n```\n\nIt can also enrich an existing MCD:\n\n```\nReview my career document for gaps\n```\n\n```\nUpdate my MCD with my new role\n```\n\n#### How the Career Document Builder Works\n\nThe agent runs a multi-phase interview that builds your career document section by section:\n\n1. **Intake**: Feed it existing resumes, LinkedIn exports, or any career materials you have. It extracts roles, skills, metrics, and dates as a baseline. Starting from scratch is fine too.\n2. **Identity & Positioning**: Establishes your target titles, value proposition, and writes 2-4 genuinely different professional summary angles.\n3. **Skills Inventory**: Walks through skill categories relevant to your field, suggests gaps, and separates current skills from legacy ones.\n4. **Work Experience**: The core of the interview. Goes role by role (most recent first), probing for metrics, suggesting common responsibilities you may have missed, and offering agent notes where context matters.\n5. **Supporting Sections**: Education, certifications, publications, compliance expertise, volunteer work, and positioning guidance.\n6. **Synthesis**: Revises your summaries with the full career context, curates a highlight reel of your strongest metrics, and delivers the final document.\n\nThe output is a single Markdown file with 18 structured sections. The interview typically takes 30-60 minutes depending on career complexity and how much existing material you provide. Once complete, you reuse this document every time you generate a resume, with no re-interviewing.\n\n## Project Structure\n\n```\nats-resume-agent/\n|-- README.md                 # This file\n|-- CHANGELOG.md              # Release notes\n|-- CONTRIBUTING.md           # How to contribute\n|-- LICENSE                   # MIT\n|-- CLAUDE.md                 # Instructions for Claude Code (you don't need to edit this)\n|-- setup.sh                  # Dependency checker and installer\n|-- package.json              # Bun scripts: validate, export, test\n|-- agents/                   # Same agents, in the plugin layout (kept identical by CI)\n|-- .claude-plugin/\n|   |-- plugin.json           # Plugin manifest (name, version, metadata)\n|   `-- marketplace.json      # Lets /plugin marketplace add install from this repo\n|-- .github/\n|   |-- ISSUE_TEMPLATE/       # Bug report and LaTeX error forms\n|   `-- workflows/ci.yml      # Validator tests, LaTeX build, plugin install check\n|-- .gitignore                # Excludes output files and personal documents\n|-- .claude/\n|   `-- agents/\n|       |-- ats-resume-writer.md   # Resume/cover letter generation agent\n|       `-- career-doc-builder.md  # Interactive career document builder agent\n|-- images/                        # Screenshots for README\n|-- tools/\n|   |-- validate.ts                # Zero-fabrication validator\n|   |-- latex.ts                   # Shared LaTeX parsing helpers\n|   |-- export-text.ts             # Plain-text export for ATS portals\n|   `-- *.test.ts                  # Tests (bun test)\n|-- templates/\n|   |-- resume-template.tex        # LaTeX resume template (CC-BY-4)\n|   |-- LICENSE-CC-BY-4.0.md       # License notice for the resume template\n|   `-- cover-letter-template.tex  # LaTeX cover letter template\n|-- examples/\n|   |-- Master_Career_Document.md  # Example career doc with fake data\n|   |-- Job_Description-Example_Corp-Senior_Engineer.md  # Example JD\n|   `-- sample-output/\n|       |-- Resume-Alex_Morgan-Example_Corp-Senior_Engineer.tex  # Example generated resume\n|       |-- CoverLetter-Alex_Morgan-Example_Corp-Senior_Engineer.tex  # Example cover letter\n|       |-- resume-preview.pdf     # Blank resume template, rendered\n|       `-- cover-letter-preview.pdf  # Blank cover letter template, rendered\n`-- output/                        # Generated resumes go here (gitignored)\n```\n\n## Master Career Document Format\n\nThe `career-doc-builder` agent produces a comprehensive 18-section MCD. You can also create one manually; the resume writer agent handles both formats. Key sections:\n\n| Section | Purpose |\n|---------|---------|\n| **Contact Information** | Name, phone, email, LinkedIn, GitHub |\n| **Professional Identity & Positioning** | Target titles and core value proposition |\n| **Professional Summaries** | 2-4 different summary angles for different role types |\n| **Hybrid Strengths** | Cross-domain strengths (section name adapts to your field) |\n| **Core Competencies & Technical Skills** | Categorized skill lists with sub-categories |\n| **Industries Supported** | Industries served across your career |\n| **Work Experience** | Detailed roles with metrics and agent notes |\n| **Education & Training** | Degrees, courses, certifications, lab environments |\n| **Key Achievements & Metrics** | Curated highlight reel of strongest outcomes |\n| **Leadership & Soft Skills** | Leadership style, values, professional attributes |\n| **Notes for Resume Customization** | Positioning angles and metrics guidance by role type |\n| **Legacy & Historical Platforms** | Outdated skills to exclude from resumes |\n\nSee `examples/Master_Career_Document.md` for the full 18-section structure with all available sections.\n\n### Agent Notes\n\nYou can embed instructions for the agent directly in your career document:\n\n```markdown\n> **Agent Note:** This project was collaborative; do not attribute sole ownership.\n```\n\nThe agent treats these as binding instructions and will respect them when generating content.\n\n### Legacy Section\n\nAny content under a \"Legacy & Historical Platforms\" heading is automatically excluded from all generated resumes, and the validator never counts it as a source. Titles like \"Legacy Skills\" or \"Deprecated Skills\" work the same way. Use this for outdated skills you want to keep on record but never include in applications.\n\n## Key Design Decisions\n\n**LaTeX over Word/PDF:** LaTeX produces consistent, professional formatting and is ATS-compatible through Unicode glyph mapping (`\\pdfgentounicode=1`). The PDF output is machine-readable by ATS systems despite custom fonts and styling.\n\n**Keyword-first content selection:** The agent builds a keyword map from each job description and prioritizes matching content from your career document. Skills sections list job-description keywords first within each category.\n\n**One source of truth:** All content comes from the Master Career Document. The agent never asks you for information during generation. It reads the files and produces output.\n\n**Checked, not trusted:** The prompt tells the agent not to fabricate, and the validator checks that it didn't. CI runs the validator tests, builds every template and example with `pdflatex`, and installs the plugin on every push.\n\n## Customization\n\n### Adjusting the Visual Design\n\nThe LaTeX templates in `templates/` control the visual design:\n\n- **Colors:** Edit the `\\definecolor` lines in `templates/resume-template.tex`\n  ```latex\n  \\definecolor{accentTitle}{HTML}{0e6e55}  % Name and section text\n  \\definecolor{accentText}{HTML}{0e6e55}   % Section headings\n  \\definecolor{accentLine}{HTML}{a16f0b}   % Horizontal rules\n  ```\n- **Fonts:** Uncomment one of the sans-serif options or keep the default serif (Garamond + Charter)\n- **Margins:** Adjust the `\\addtolength` values\n- **Bullet style:** Change `\\renewcommand\\labelitemi{--}` to use a different bullet character\n\n### Adjusting Content Strategy\n\nThe agent's content selection strategy and quality standards are defined in the \"The resume\" section of `.claude/agents/ats-resume-writer.md`. You can modify these to match your preferences. For example, changing the recency bias from 5-7 years to 10 years, or adjusting the page limit. If you plan to contribute the change, copy the file to `agents/` too; the plugin loads that copy, and CI checks the two match.\n\n### Cover Letter Tone\n\nEdit the \"The cover letter\" section of the agent definition to adjust tone, structure, or length preferences.\n\n### Model Settings\n\nBoth agents default to Sonnet (`model: sonnet` in each agent file's frontmatter). You can pick a different model in any of these ways, from most specific to least:\n\n- **Per request:** name the model when you ask, such as \"use the ats-resume-writer agent on Opus for the Example Corp file.\" A model named in the request wins over the other two settings below.\n- **Per agent:** change the `model:` line at the top of `.claude/agents/ats-resume-writer.md` or `.claude/agents/career-doc-builder.md`. It takes an alias (`sonnet`, `opus`, `haiku`), a full model ID, or `inherit` to use whatever model your main session runs.\n- **For every subagent:** set `CLAUDE_CODE_SUBAGENT_MODEL` (for example, to `opus`) in your environment or in the `env` block of your Claude Code settings. It applies to agents with no `model:` line. Adding `CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1` makes it win over everything: the `model:` lines are ignored, and a model named per request is too.\n\nThese work the same for a plugin install, whose agent files keep the `model: sonnet` line. With a plugin, though, the agent files live in Claude Code's plugin cache and are replaced on every update, so choose per request or with the environment variable rather than editing them. See [choosing a subagent's model](https://code.claude.com/docs/en/sub-agents).\n\n#### How models compare on this workflow\n\nOn 2026-09-27, each model got the resume writer's instructions plus the example MCD and job description, with no sample output available to copy, and wrote the Example Corp resume. These runs skipped the agent's own validator step, so they measure what the model writes before any check; the validator scored each result afterward. Runs passing, across all batches:\n\n| Model | Original prompt | Rewritten prompt |\n|-------|--------------------------|------------------|\n| Sonnet | 2 of 2 | 4 of 4 |\n| Opus | 2 of 2 | 2 of 2 |\n| Haiku | 1 of 4 | 4 of 4 |\n\nWith the original prompt, Haiku added Kafka, which appears only in the job description's tech stack, in 2 of 4 runs, and wrote `34%` instead of `34\\%` (which silently cuts the rest of the line out of the PDF) in 2 of 4. The rewrite states that the job description never supplies content, puts a check on the skills table (where the padding happened), and requires escaping LaTeX special characters. Two further Haiku runs with the validator step turned on also passed, after fixing what it flagged.\n\n\"Original prompt\" is v1.1.0 plus this release's plugin paths and validator steps, which these runs skipped. \"Rewritten prompt\" covers the rewrite and one round of small review edits (summary length, tense, certification form). These are small samples, so treat them as a smoke test rather than a benchmark. Sonnet stays the default: Opus did no better on these checks and costs more. Either way, keep the validator step on.\n\nIf you find the agents occasionally deviating from instructions (adding unsolicited content, ignoring agent notes), start a fresh session to avoid context pollution from previous conversations. Running plain `claude` always starts a new session (only `--continue` or `--resume` pick up an old one), and `/clear` wipes the context inside a session that is already open.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\nThe LaTeX resume template (`templates/resume-template.tex`) is adapted from [MTecknology/latex-resume](https://github.com/MTecknology/latex-resume) by [Michael Lustfield](https://github.com/mtecknology), modified for this project, and licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode.txt). See [templates/LICENSE-CC-BY-4.0.md](templates/LICENSE-CC-BY-4.0.md).\n\n## Acknowledgments\n\n- Resume LaTeX template adapted from [MTecknology/latex-resume](https://github.com/MTecknology/latex-resume) by [Michael Lustfield](https://github.com/mtecknology) (CC-BY-4.0)\n- Built for use with [Claude Code](https://code.claude.com/docs) by Anthropic\n"}