Skip to content

skilldrop·docs·Explanation

Does the agent invent your resume?

The same 14 resume and cover-letter requests run with the career pack's skills and with plain Claude Code - how often each put something in the document that the person never said, and what kind of thing it was.

Ask an agent to tailor a resume to a job posting and it will produce something fluent. The question that matters to the person who signs it is whether everything in it is true. This page measures that for the two writing skills in the career pack, resume-tailor and cover-letter, against plain Claude Code given the same request.

The short version

What was run

Eight invented people: a ward nurse, a warehouse supervisor, a new graduate, a backend engineer, a teacher changing career, an accounts payable clerk, a sous chef, and a pharmacy counter assistant who gave three lines and no resume. Each has a posting chosen so that the honest application has gaps: a required system they have not used, a team smaller than the posting asks for, a qualification one level short.

That makes 14 requests, seven to tailor the resume and seven to write the letter. Each ran twice with the skill and twice without, as full agent sessions on claude-sonnet-5 in an empty sandbox: 28 documents per arm. Four of the 14 requests were written after the skills were final and the skills were not changed after seeing them.

Fabrication was counted two ways.

What it found

Plain Claude CodeWith the skill
Planted checks failed12 of 120 (10%)1 of 120 (1%)
Documents with at least one11 of 281 of 28
Figures and names the script listed18, in 13 documents2, in 1 document
Of those, unsupported when read by hand5, in 3 documents0
Preferred by the first blind judge25 of 28 pairs
Preferred by the second blind judge25 of 28 pairs
List price per run$0.06$0.13

Most of what the script lists is harmless, which is why a person reads its output: an abbreviation the resume spelled out ("LMS"), a total that is correct arithmetic on the resume's dates ("10 years"), the word "English" beside "Spanish". The five that were not harmless are in the next section.

On the four requests the skills had never seen, the plain agent failed 2 planted checks and the skills none, and the judges preferred the skill's document in 6 and 7 of 8 pairs.

What plain Claude Code added

Every one of these is from a real run. None was asked for.

None would survive a careful interviewer, and each reads well enough that the person might not notice before sending.

What the skill got wrong

One planted check failed with the skill: a letter described the posting's work as "the same job" the applicant does now, which the judge read as a claim about the employer that the posting does not make. The skill's letters also lost 3 of 14 pairs with each judge. In those the letter was judged thin beside a fuller one that was just as accurate, and twice the reply around it carried a stray line about how the letter had been checked.

The third skill in the pack, job-fit-analysis, needed two revisions before the judges preferred it. As first written it put its answer in a file nobody asked for and stated a length of experience the resume did not give. RFC-0042 records all three rounds.

Why the skill does better

It is one rule and one script. The rule fixes employers, titles, dates, qualifications and numbers, treats a similar tool as not the named tool, and says the posting is never a source of facts about the person. The script then lists whatever in the draft is not in the person's material, and the skill has to trace or remove each line. Where the resume cannot answer the posting, the skill tells the person in the reply and leaves it out of the document.

Limits

Run it yourself

python3 run_bench.py --backend claude-cli --skills resume-tailor,cover-letter \
  --trials 2 --second-judge claude-opus-5-5 --budget 10

To check a document of your own against your resume and the posting:

python3 packs/career/skills/resume-tailor/scripts/claim_check.py tailored.md \
  --source resume.md --posting posting.md

Edit this page on GitHub · View source