From resume-builder
End-to-end application pipeline: research, match, qualify, tailor, score, review, cover letter, verify. Use when: 'apply to job', 'full application', 'e2e application', 'run the full pipeline', 'apply to this role'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/resume-builder:apply [company name] [path to JD or paste JD text] [optional: research links][company name] [path to JD or paste JD text] [optional: research links]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fire-and-forget pipeline that runs the full application workflow from company research through final deliverables. Produces a tailored resume (PDF/DOCX/MD/HTML), cover letter, scores, and review — all in one shot.
Fire-and-forget pipeline that runs the full application workflow from company research through final deliverables. Produces a tailored resume (PDF/DOCX/MD/HTML), cover letter, scores, and review — all in one shot.
Optimized for multi-job-same-company use: company research is performed once and reused across subsequent runs.
/verify step is the safety net — if it fails, flag the output clearlyEach step performs its sub-skill's analytical work inline. Every LOG GATE requires TWO writes before you may proceed:
Both writes are gates. Do not proceed to the next step until BOTH are on disk. If you skip the summary append and only write the YAML, you have violated this contract.
Session files created during this pipeline:
knowledge/sessions/{slug}/{date}_research.yaml (if research performed)knowledge/sessions/{slug}/{role-slug}/{date}_match.yamlknowledge/sessions/{slug}/{role-slug}/{date}_qualify.yamlknowledge/sessions/{slug}/{role-slug}/{date}_tailor.yamlknowledge/sessions/{slug}/{role-slug}/{date}_score.yamlknowledge/sessions/{slug}/{role-slug}/{date}_review.yamlknowledge/sessions/{slug}/{role-slug}/{date}_cover-letter.yamlknowledge/sessions/{slug}/{role-slug}/{date}_apply.yaml (aggregate, last)Extract the company name from the JD or user input. Check knowledge/sessions/{slug}/company.yaml for an existing CompanyProfile.
/research with any links the user provided. Use non-interactive mode — do not ask for additional sources, work with what's given plus web search.
LOG GATE: (1) Create knowledge/sessions/{slug}/{date}_research.yaml per /research Step 7 schema. (2) Read skills/research/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/summary.md. Do not proceed to Step 2 until both writes are on disk.Run /match against the JD. Do not prompt the user — proceed directly with wilson-resume.yml and the JD.
This produces: match scores, gap analysis, transferable skills, and tailoring recommendations.
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_match.yaml per /match Step 5 schema. (2) Read skills/match/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 3 until both writes are on disk.
Run /qualify using the CompanyProfile and JD. Do not prompt the user for culture preferences — score culture_fit with available signals and note confidence as low if preferences are unknown.
This produces: dimensional scores, weighted average, and strategic brief.
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_qualify.yaml per /qualify Step 5 schema. (2) Read skills/qualify/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 4 until both writes are on disk.
Run /tailor against the JD. This internally:
knowledge/sessions/{slug}/{role-slug}/tailored/Do not prompt for tailoring preferences — use match/qualify data to make decisions.
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_tailor.yaml per /tailor Step 7 schema. (2) Read skills/tailor/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 5 until both writes are on disk.
Run /score against the JD using the tailored resume (knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.yml).
This produces: ATS and HR scores with component breakdowns.
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_score.yaml per /score Session Log schema. (2) Read skills/score/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 6 until both writes are on disk.
Run /review with the JD as context, evaluating the tailored resume. All personas report findings.
This is report-only — findings do not feed back into tailoring.
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_review.yaml per /review Step 4 schema. (2) Read skills/review/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 7 until both writes are on disk.
Run /cover-letter using the JD. This internally:
knowledge/sessions/{slug}/{role-slug}/tailored/cover_letter.mdDo not prompt for hook preference or talking points — auto-select based on qualify scores:
LOG GATE: (1) Create knowledge/sessions/{slug}/{role-slug}/{date}_cover-letter.yaml per /cover-letter Step 7 schema. (2) Read skills/cover-letter/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Do not proceed to Step 8 until both writes are on disk.
Run /verify on the tailored resume (knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.yml).
Report status: PASS or FAIL with details. Do not block output delivery on verification — report it alongside results.
LOG GATE: Read skills/verify/SKILL.md → find the "Append to summary.md" template → append that filled template to knowledge/sessions/{slug}/{role-slug}/summary.md. Write before proceeding to Step 9.
Validation: Confirm these sub-session files exist on disk (created at LOG GATEs above). If any is missing, create it now:
knowledge/sessions/{slug}/{date}_research.yaml (if research was performed)knowledge/sessions/{slug}/{role-slug}/{date}_match.yamlknowledge/sessions/{slug}/{role-slug}/{date}_qualify.yamlknowledge/sessions/{slug}/{role-slug}/{date}_tailor.yamlknowledge/sessions/{slug}/{role-slug}/{date}_score.yamlknowledge/sessions/{slug}/{role-slug}/{date}_review.yamlknowledge/sessions/{slug}/{role-slug}/{date}_cover-letter.yamlSummary reconstruction: Overwrite knowledge/sessions/{slug}/{role-slug}/summary.md by rebuilding it deterministically from session data:
# {Company Name} — {Role Title}knowledge/sessions/{slug}/{role-slug}/ matching {date}_*.yaml (sorted by filename)_apply.yaml):
a. Read the session YAML to extract its data
b. Read the corresponding sub-skill's SKILL.md (e.g., skills/match/SKILL.md for _match.yaml)
c. Find the "Append to summary.md" template in that SKILL.md
d. Fill the template with data from the session YAML
e. Append the filled entry to summary.mdknowledge/sessions/{slug}/{date}_research.yaml — if it exists and the company-level summary.md doesn't have a research entry, rebuild knowledge/sessions/{slug}/summary.md using skills/research/SKILL.md's templateThis guarantees completeness — the summary is derived from the actual session files on disk, not from trusting that each inline LOG GATE append happened correctly.
Aggregate session: Save to knowledge/sessions/{slug}/{role-slug}/{date}_apply.yaml:
date: YYYY-MM-DD
type: apply
company: Company Name
slug: company-slug
role: Role Title
role_slug: role-slug
output_dir: knowledge/sessions/{slug}/{role-slug}/tailored/
research_skipped: true | false
company_profile: knowledge/sessions/{slug}/company.yaml
sub_sessions:
research: session-filename or null
match: session-filename
qualify: session-filename
tailor: session-filename
score: session-filename
review: session-filename
cover_letter: session-filename
verify: pass | fail
scores:
match: { required: XX, preferred: XX, overall: XX }
qualify: { weighted_average: X.X, recommendation: strong-pursue | pursue-with-caution | consider-passing }
ats: XX
hr: XX
verification: pass | fail
output_files:
- knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.yml
- knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.pdf
- knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.docx
- knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.html
- knowledge/sessions/{slug}/{role-slug}/tailored/wilson-resume.md
- knowledge/sessions/{slug}/{role-slug}/tailored/cover_letter.md
Append closing entry to knowledge/sessions/{slug}/{role-slug}/summary.md (by this point, summary.md already contains individual entries from each LOG GATE above — this is the final closing marker):
---
## {date} apply — Pipeline Complete
**Pipeline**: research({skipped?}) → match → qualify → tailor → score → review → cover-letter → verify({PASS|FAIL})
**Scores**: Match {overall}% | Qualify {weighted_avg}/10 ({recommendation}) | ATS {score}/100 | HR {score}/100
**Output**: knowledge/sessions/{slug}/{role-slug}/tailored/
**Bottom line**: {1-2 sentence synthesis — what this means for the application, key strength to lead with, key risk to prepare for}
Present a consolidated summary only after Step 9 is complete:
## Application Complete: {Company} — {Role}
### Scores
| Metric | Score |
|--------|-------|
| Match (overall) | XX% |
| Qualify (weighted avg) | X.X/10 — {recommendation} |
| ATS | XX/100 |
| HR | XX/100 |
### Verification
{PASS | FAIL with details}
### Review Highlights
- Top strength: ...
- Top concern: ...
- Consensus score: X.X/10
### Deliverables
All files in `knowledge/sessions/{slug}/{role-slug}/tailored/`:
- wilson-resume.yml (tailored)
- wilson-resume.pdf
- wilson-resume.docx
- wilson-resume.html
- wilson-resume.md
- cover_letter.md
### Strategic Position
{One-paragraph summary from /qualify strategic brief — how to position in interviews}
/apply Acme Corp jd.txt https://acme.com/about https://acme.com/blog/apply Acme Corp jd_backend.txt (reuses CompanyProfile)/apply "Company Name" path/to/jd.txtThis skill runs all sub-skills in non-interactive mode. Sub-skills that normally prompt for user input instead use these defaults:
/research: Work with provided links + web search, no source-gathering prompt/cover-letter: Auto-select hook type, no preference prompt/qualify: Score culture_fit with available signals, no preference prompt/tailor: Use match/qualify data for decisions, no tailoring preference prompt/review: Run all applicable personas without selection promptnpx claudepluginhub wilsonkichoi/resume-builder --plugin resume-builderCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.