ArtificialGuyBR

Home / Blog / Fixing things

Resume + ATS + LinkedIn optimizer: an agent skill with zero fabrication

A Claude Code skill that builds and audits resumes for ATS parsing, the 7-second recruiter skim and LinkedIn search — with bundled Python checks and no inven…

2 sources cited Fixing things

Resume + ATS + LinkedIn optimizer: an agent skill with zero fabrication

TL;DR

  • One agent skill builds, rewrites, tailors and audits a resume/CV and a LinkedIn profile at the same time, against ATS parsing, the recruiter skim and LinkedIn recruiter search.
  • The hard rule is zero fabrication: no invented employer, title, date, degree or number — every resume variant is a selection from a Master Profile of things you really did.
  • Four bundled Python tools own the mechanical checks: render (ATS-safe .docx/.pdf), validate (truthfulness invariants), coverage (labeled keyword-coverage estimate), deslop (AI-slop flags).
  • It is plain Markdown plus a small script, so it works in Claude Code and in any agent that can read SKILL.md.

What it is and who it is for

Resume + ATS + LinkedIn Optimizer is an Agent Skill for Claude Code and any agent that loads a SKILL.md. The repository publishes it as a skill, not an app: you clone a folder into your agent's skills directory and the agent picks it up when the conversation turns to resumes, CVs, ATS or LinkedIn.

It is written for the job seeker who has applied to dozens of postings and stopped hearing back, and for the person helping them. The README states the goal plainly: turn a person's real experience into the strongest possible resume and LinkedIn profile without inventing anything.

Why the "zero fabrication" rule matters

Most resume prompts optimize for sounding impressive, which is how a resume ends up claiming a metric nobody can defend in a reference check. This skill takes the opposite path: it excavates the metrics you already have and labels honest estimates as estimates. The README lists what that buys you:

  • Zero fabrication — never invents employers, titles, dates, degrees or numbers.
  • Three targets at once — ATS parseability, human skim-readability and LinkedIn recruiter-search ranking, rather than trading one for the others.
  • Sourced claims — Harvard/MIT career services, Google's XYZ formula, Ladders eye-tracking research, ex-Amazon/Google recruiters and documented parsing behavior of production ATS.
  • A Master Profile as source of truth — tailoring becomes selection, so variants stay consistent across applications.

What it can do

The README maps plain requests to outcomes:

You want to…Ask your agent
Build a resume from raw notes"Build my resume from this experience."
Strengthen an existing resume"Improve my resume."
Tailor to a posting"Tailor my resume to this job description: …"
Check ATS friendliness"Audit my resume for ATS."
Quantify duties"Turn these duties into quantified bullets."
Fix the LinkedIn profile"Optimize my LinkedIn headline / About / skills."
Write a cover letter"Write a cover letter for this job."
Decide whether to apply"Should I apply to this role?"

The workflow

The agent follows a gated sequence and runs only the phases the task needs:

Intake → Master Profile → Metric Excavation → Content Engineering
       → ATS Formatting → Keyword Tailoring → Render → Evaluate → (LinkedIn)

The Master Profile (assets/master-profile-template.md) is your private, exhaustive record. Every resume and LinkedIn variant is a selection from it — which is what keeps tailoring fast and truthful at the same time.

How to use it

Clone the repository into your skills directory:

git clone https://github.com/artificialguybr/resume-ats-linkedin-optimizer.git \
  ~/.claude/skills/resume-ats-linkedin-optimizer

The README shows the user-level path; .claude/skills/ inside a project gives you a project-level install. For any other agent (Cursor, Cline, a custom harness), the skill is plain Markdown: add SKILL.md plus the references/, assets/ and scripts/ folders to the agent context, or paste SKILL.md as a system instruction.

The optional render step needs one dependency per output format:

pip install -r scripts/requirements.txt   # python-docx (.docx) + reportlab (.pdf)

The other three tools are pure standard library:

python scripts/resume_tools.py render   --resume resume.json --out resume.pdf
python scripts/resume_tools.py render   --resume resume.json --out resume.docx
python scripts/resume_tools.py validate --resume resume.json --source master-profile.json
python scripts/resume_tools.py coverage --resume resume.json --jd job.txt
python scripts/resume_tools.py deslop   --resume resume.json

render infers the format from the extension. validate checks truthfulness invariants (no fabricated employer or date, identity untouched, nothing dropped). coverage produces a labeled keyword-coverage estimate against a job description — explicitly not a fake "ATS score". deslop flags buzzwords, inflated verbs, filler and em-dash tics. The input shape lives in assets/example-resume.json, the full schema in assets/resume.schema.json.

Myths it refuses to repeat

The README calls out four common ones: the "ATS auto-reject 75% of resumes" claim (from a defunct 2012 vendor, with roughly 92% of recruiters saying their ATS does not auto-reject), hidden white-text keywords (modern AI layers detect it), "ATS can't read PDFs" (outdated since about 2019 — the killer is a two-column or image layout, not the PDF container) and cramming a keyword a dozen times (stuffing ranks lower).

When to use it, when not to

Use it when you want a resume that parses cleanly and still reads well to a human in seven seconds, or when you need to tailor one resume to one posting without inventing anything. Use it with the AI, not instead of your own judgment: the skill supplies the rules and the checks, and you still decide what is true about your career.

Skip it when you want a designer portfolio resume where layout carries meaning — a single-column, parser-first document is the point here, and a heavily designed PDF fights that. Skip it too if you refuse to keep a Master Profile; tailoring without a source of truth is where embellishment creeps in.

Sources

  1. Resume + ATS + LinkedIn Optimizer — repository — skill structure, workflow phases, bundled tools, reference files and the myths section quoted above.
  2. README.md — install commands, scripts/resume_tools.py subcommands, master-profile-template.md, license (MIT).

Project page: Resume + ATS + LinkedIn Optimizer

The skill is MIT-licensed and accepts issues and PRs, especially around newer ATS behavior and LinkedIn field changes.

FAQ

Does this skill invent metrics to make a resume look stronger? No. The README makes zero fabrication the central rule: it excavates real metrics and hedges honest estimates instead of inventing employers, dates or numbers.

Can it render the resume to a file? Yes. render turns structured JSON into a single-column, ATS-safe .docx or .pdf, and infers the format from the output extension.

Does coverage give a real ATS score? No. The README calls it a labeled keyword-coverage estimate against a job description, explicitly not a fake ATS score.

Does it work outside Claude Code? Yes. The skill is plain Markdown; Cursor, Cline and custom agents can load SKILL.md and the reference folders, or use it as a system instruction.