Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Tailor a resume to a job description by extracting keywords, scoring match, and rewriting bullets for impact. Use when applying to a role, optimizing for ATS keyword match, or customizing a cover letter.
.claude/skills/borghei-resume-tailor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 15% | 0% |
Tailor a base resume to a specific job description with keyword-match scoring, gap analysis, and rewritten-bullet suggestions.
resume, CV, job application, ATS, applicant tracking system, keyword match, resume tailoring, cover letter, job description, hiring, recruiter, career, job search, bullet rewrite, accomplishment, impact statement
Before tailoring the resume, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
jd.txtresume.txtbash python scripts/resume_matcher.py resume.txt jd.txt
references/bullet_rewrite_patterns.mdassets/tailored_resume_template.mdGoal: Get a quantitative score for how well the current resume matches a target job description before submitting.
Steps:
jd.txtpython scripts/resume_matcher.py resume.txt jd.txtExpected Output: A score, a kept-keyword list, and a missing-keyword list.
Time Estimate: 5-10 minutes per job description.
Goal: Convert task-oriented bullets ("responsible for…") into impact bullets that match recruiter and ATS expectations.
Steps:
references/bullet_rewrite_patterns.mdExpected Output: Bullet list rewritten in CAR format with metrics.
Time Estimate: 5 minutes per bullet.
Goal: Pull the strongest 3-5 hooks from the resume that map directly to the top requirements in the job description.
Steps:
python scripts/resume_matcher.py resume.txt jd.txt --jsonExpected Output: 3-5 evidence sentences for the cover letter.
Time Estimate: 10 minutes.
Reads a resume text file and a job description text file, returns:
bash# Human-readable python scripts/resume_matcher.py resume.txt jd.txt # JSON for programmatic use python scripts/resume_matcher.py resume.txt jd.txt --json
references/bullet_rewrite_patterns.md — CAR pattern, action-verb library, quantification examples, weak-phrase blacklistreferences/ats_optimization_guide.md — How ATS parses resumes, formatting do's and don'ts, keyword density boundsassets/tailored_resume_template.md — A bare resume skeleton with section ordering, length guidance, and keyword-placement notes. Fill in your content.personal-productivity/lead-researcher/ for prepping informational interviewsmarketing/copywriting/ for cover letter prose qualityagents/personas/ workflows when authoring sample profiles| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 7,720 | 6,472 | -16% | 1 | 1 | 0% | 1,189 | 2,340 | +97% | 0 | 0 | — |
case-02 | fail→pass | 10,594 | 2,554 | -76% | 1 | 1 | 0% | 1,786 | 1,786 | 0% | 0 | 0 | — |
case-03 | fail→pass | 6,961 | 2,484 | -64% | 1 | 1 | 0% | 1,112 | 1,778 | +60% | 0 | 0 | — |
case-04 | pass→pass | 13,179 | 11,511 | -13% | 1 | 1 | 0% | 2,014 | 2,963 | +47% | 0 | 0 | — |
case-05 | pass→pass | 9,353 | 5,974 | -36% | 1 | 1 | 0% | 1,330 | 2,247 | +69% | 0 | 0 | — |
case-06 | pass→pass | 11,009 | 9,397 | -15% | 1 | 1 | 0% | 1,632 | 2,618 | +60% | 0 | 0 | — |
case-07 | pass→pass | 12,123 | 10,490 | -13% | 1 | 1 | 0% | 1,721 | 3,025 | +76% | 0 | 0 | — |
case-08 | fail→pass | 11,146 | 7,044 | -37% | 1 | 1 | 0% | 1,691 | 2,433 | +44% | 0 | 0 | — |
case-09 | pass→pass | 4,060 | 3,810 | -6% | 1 | 1 | 0% | 628 | 1,918 | +205% | 0 | 0 | — |
case-10 | pass→pass | 11,723 | 12,572 | +7% | 1 | 1 | 0% | 1,887 | 3,333 | +77% | 0 | 0 | — |
case-11 | fail→pass | 11,178 | 4,359 | -61% | 1 | 1 | 0% | 1,686 | 1,932 | +15% | 0 | 0 | — |
case-12 | pass→pass | 11,853 | 8,747 | -26% | 1 | 1 | 0% | 1,750 | 2,600 | +49% | 0 | 0 | — |
case-13 | pass→pass | 13,594 | 9,556 | -30% | 1 | 1 | 0% | 1,934 | 2,770 | +43% | 0 | 0 | — |
case-14 | pass→pass | 10,821 | 10,791 | -0% | 1 | 1 | 0% | 1,639 | 2,995 | +83% | 0 | 0 | — |
case-15 | fail→pass | 9,502 | 2,901 | -69% | 1 | 1 | 0% | 1,510 | 1,772 | +17% | 0 | 0 | — |
case-16 | fail→pass | 13,407 | 1,935 | -86% | 1 | 1 | 0% | 1,990 | 1,608 | -19% | 0 | 0 | — |
case-17 | fail→pass | 5,970 | 1,513 | -75% | 1 | 1 | 0% | 820 | 1,511 | +84% | 0 | 0 | — |
case-22 | pass→pass | 18,195 | 16,148 | -11% | 1 | 1 | 0% | 2,735 | 3,790 | +39% | 0 | 0 | — |
case-18 | pass→pass | 4,846 | 4,069 | -16% | 1 | 1 | 0% | 706 | 1,837 | +160% | 0 | 0 | — |
case-19 | fail→pass | 12,142 | 6,508 | -46% | 1 | 1 | 0% | 1,947 | 2,263 | +16% | 0 | 0 | — |
case-20 | pass→pass | 14,636 | 20,589 | +41% | 1 | 1 | 0% | 2,238 | 2,793 | +25% | 0 | 0 | — |
case-21 | pass→pass | 5,679 | 7,533 | +33% | 1 | 1 | 0% | 758 | 2,357 | +211% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.