.agents/skills/resume-tailor/SKILL.md
Generate a tailored resume for a specific job application by combining Mason's profile, the role.md analysis, and the resume-base template. Every claim must trace back to profile/skills.md (Tier A/B), profile/projects/*.md, or profile/wins.md. Use whenever Mason wants a resume for a specific role he's decided to apply to.
npx skillsauth add MLGalusha/job-tracker resume-tailorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill produces applications/<app_id>/resume.md — a tailored resume for a specific job. It is the most truthfulness-critical skill in the system. Every claim it makes must be defensible in an interview against the actual shipped code in Mason's projects.
role-intakerole-intake skill recommends applying and Mason confirmsDo not run this skill if:
role.md for the app does not exist → run role-intake firstrole.md has recommended_action: skip — hard filter → ask Mason; don't auto-run on a skipped rolerole.md has recommended_action: skip — comp below floor → ask MasonBefore running:
applications/<app_id>/ directory existsapplications/<app_id>/role.md exists and has been run through role-intakeprofile/skills.md, profile/wins.md, profile/repos.md, profile/voice.md, templates/resume-base.md all existRebuilt on notes/research/resumes-2026.md and notes/research/SYNTHESIS.md. Five non-negotiables:
A tailored resume may only contain claims that trace to one of:
profile/skills.md (production-validated, shipped in a real project)profile/skills.md — but only with hedged language ("familiar with", "experience with"), never as a strengthprofile/projects/*.md file where the claim is in the "Claim guardrails" sectionprofile/wins.mdNever:
role.md into a claimrepos.md says "functional internal tool, not publicly deployed")When in doubt, omit. A shorter resume that's 100% defensible beats a longer resume with one line you can't talk to.
If you find yourself wanting to make a claim that isn't supported: either (a) ask Mason for a citation and add it to the profile first, then use it, or (b) note it in the gap report and leave it off the resume.
Read in this order:
applications/<app_id>/role.md — the whole fileprofile/skills.md — whole file, you'll be citing from it constantlyprofile/voice.md — voice rules, banned phrases, formality dialprofile/wins.md — whole file, source of quotable bulletsprofile/repos.md — to decide which repo links go on this resumeprofile/comp.md — for comp signaling (don't put comp on resume, but you need it for the "summary" tone)templates/resume-base.md — the max-volume source that the tailored resume is a subset and reordering ofprofile/projects/*.md for projects you intend to lead with (usually 2–4, not all 5)Don't read every project file. Read only the ones you'll cite.
Read role.md's lane field and adapt the resume shape:
| Lane | Summary tone | Projects to lead with | Skills emphasis | Key differentiator |
|---|---|---|---|---|
| founding | Shipping speed, solo execution, range | VTR, Staffclaw, OpenClaw | Agent-directed dev, full-stack TS, GCP | "Shipped VTR solo in 3 weeks, agent-directed" |
| ai-engineer | Production AI pipelines, cost-tiered models, HITL | VTR, PianoTranscriber, SonicGen | OpenAI API (GPT-5.4 + GPT-5.4-mini tiering), HITL, structured outputs | "Production vision pipeline on OpenAI Responses API with strict schemas and human gate" |
| fde | Ability to teach customers to build with agents, translation skill | VTR, OpenClaw | Agent-directed dev, reverse-engineering, customer-facing framing | "I direct agents on real production systems and could teach your customers to do the same" |
| fullstack-ai | Full-stack TypeScript, AI integration, shipping | VTR, Staffclaw | TypeScript end-to-end, React 19, Express, OpenAI API | "TypeScript end to end, AI in production" |
| local-raleigh | Shipping work, bootcamp + local context | VTR, Staffclaw, PianoTranscriber | Full-stack, bootcamp, local | Softer on agent-directed angle unless the company signals it's agent-friendly |
| off-lane | Do not tailor. Ask Mason if he really wants to apply. | — | — | — |
From profile/projects/, pick the 2–4 projects that best match the JD's priorities (read from role.md required list). Ordering rule:
projects/*.md "Claim guardrails" section most directly hits the JD's required list.For each selected project, write 3–5 bullets that combine what projects/*.md says with verbs and numbers from wins.md. Each bullet must be traceable to a specific line in one of those files.
Rewrite the Summary section from resume-base.md to lead with the lane's framing. Three sentences max. Must include:
Do not include comp numbers on the resume. Do not include a list of "years of experience."
From profile/skills.md Tier A and Tier B, pick the subset that maps to this JD. Ordering rule:
For any project you link, the link URL comes from profile/repos.md:
VTR — link voicesthatremain.com, never the repo
Staffclaw — link the public GitHub repo. The Staffclaw narrative arc is fixed and important. Lead with it in this exact order:
server/src/routes/auth.ts and server/src/services/teamworxs.ts.services/alamo.ts, services/weather.ts, services/showtime-poller.ts, services/history-analyzer.ts, routes/demand.ts, cron/weather-fetcher.ts.Do NOT lead Staffclaw with "I built a schedule dashboard" or "I built a pre-shift briefing." The pre-shift briefing is a byproduct. The architecture (drop-in replacement via credential proxying) and the discovery (full API surface including manager-side via agent) are the parts that prove unique technical thinking.
PianoTranscriber — link the public GitHub repo
SonicGen — link the public GitHub repo (github.com/MLGalusha/SonicGen). Standalone audio dedup engine. Use the "written by hand, no coding agents" framing as a counter to "only ships via agents" interview objections — this is one of SonicGen's most valuable signals.
job-tracker — link only if the JD mentions agent-directed work explicitly
OpenClaw, the private truth-engine dev repo, line-finder — no link. Reference in prose only if relevant. (For SonicGen, always link the public MLGalusha/SonicGen repo, never the private truth-engine dev repo it was developed in.)
If you catch yourself writing a URL that isn't in repos.md, stop and re-check.
local-raleigh or Mason explicitly wants it in.After drafting bullets and the skills section, count the JD phrases you've echoed back in the resume. If coverage is above 70%, pull some back. The research calls this the "too mirrored" suspicion filter — reviewers and LLM screeners both flag resumes that read like a JD restatement. Target 50-70% coverage. Leave some JD phrases on the table deliberately and let the lead project do the talking.
If coverage is below 40%, the lane is wrong and you should flag that to Mason before continuing.
Scan every project bullet. Each one should have a concrete engineering number. Acceptable number shapes for Mason's projects:
Unacceptable numbers for Mason's projects:
If a bullet has no defensible number, either find one from wins.md / projects/*.md or cut the bullet.
Before writing the file, scan your draft against profile/voice.md. Blocking violations:
When a violation is found, rewrite the whole bullet. Don't patch.
Write to applications/<app_id>/resume.md. Use markdown. Structure:
# Mason Galusha
Raleigh, NC · [email protected] · 304-546-5850
[github.com/MLGalusha](https://github.com/MLGalusha) · [linkedin.com/in/masonlgalusha](https://www.linkedin.com/in/masonlgalusha) · [voicesthatremain.com](https://voicesthatremain.com)
## Summary
<tailored 2-3 sentences>
## Selected projects
### <Project Name> — <year>
**<link>** · <one-line framing>
- <bullet with concrete verb + number>
- <bullet>
- <bullet>
### <Project 2> — <year>
**Title format rule:** project headers are **just the project name and the year** — no "Solo builder," no "Solo builder + architect," no "Primary builder," no "(UNC Chapel Hill AI bootcamp capstone)." Keep it minimal: `### <Name> — <year>`. Solo / role information belongs in the body of the bullets if it matters at all, not in the header.
## Skills
**<Category>:** <tier-A items>
**<Category>:** <tier-A items>
## Education
**UNC Chapel Hill AI Bootcamp** — 6-month intensive, May–December 2024
- <1 line>
After writing the file, invoke application-logger to record that the resume was produced:
cd ~/Workspace/job && pnpm log resume_updated --app_id=<app_id> --path=applications/<app_id>/resume.md --summary="Initial tailored resume for <role>"
In the same directory, write applications/<app_id>/resume-gaps.md:
# Resume gap report — <company> <role>
Claims the JD wanted that were NOT put on the resume because they aren't supported by the profile. These go to the `interview-prep` skill as study topics, NOT on the resume.
- **Gap 1** — JD wants X. Profile has Y (closest). Reason it's still a gap: ...
- **Gap 2** — ...
## Claims on the resume that might get probed in an interview
- Claim 1 — defensible because: <citation to profile or project file>
- Claim 2 — ...
This file is how interview-prep knows what to prepare for later.
Report:
resume-base.md. The base is the ceiling. Tailored resumes are a subset and reordering — never stronger than the base.voice.md and wins.md.voice.md and fix. Don't ship a first draft.cover-letter-writer).company-research).application-logger when Mason actually submits.data/ files directly. Uses pnpm log via the application-logger skill to record the artifact.resume.md without asking first. If a tailored resume already exists for this app_id, ask Mason whether to revise or replace.data-ai
Turn a job posting URL or pasted JD into a structured role.md file inside applications/<app_id>/. Extracts company, role, JD text, inferred lane (founding/AI eng/FDE/full-stack/local), required vs nice-to-have skills, fit notes against Mason's profile, and an honest truthfulness-gap list. Use whenever Mason shares a job link, pastes a JD, or asks "is this worth applying to?".
testing
Generate a tailored resume for a specific job application by combining Mason's profile, the role.md analysis, and the resume-base template. Every claim must trace back to profile/skills.md (Tier A/B), profile/projects/*.md, or profile/wins.md. Use whenever Mason wants a resume for a specific role he's decided to apply to.
testing
Draft a cold email or warm-intro-request message to a specific person at a target company. Produces applications/<app_id>/outreach/<slug>.md and logs a communication_sent event. Runs after company-research. Enforces the One-Take Rule — refuses to draft without a grounded decision from company.md. This is the highest-payoff channel per 2026 hiring research.
testing
Periodically scan a curated list of target company job boards for new postings that match Mason's lanes, and append candidate roles to a sourced-jobs queue for triage. Reads profile/target-companies.md and profile/preferences.md. Produces data/sourced-jobs.jsonl and a short daily digest. Use when Mason says "check for new jobs" or when running on a schedule.