Score a job seeker's resume against a specific job description (JD) and surface a clear gap analysis. On first run, captures the user's resume (paste or upload) and stores it as a persistent reference file so future scoring runs don't have to re-ask. Optionally collects target preferences (titles, comp floor, location, deal-breakers) the same way. When a JD is pasted, produces 0–10 scores across title/level, industry, overlapping experience and responsibilities, IC vs leader fit, skills/tools match, years of experience, and an overall weighted score — plus a concrete gap analysis of what's missing or weak. Use this skill whenever the user pastes a job description and wants to know if it's a fit, asks "should I apply to this", "how well does my resume match this job", "score this JD", "rate this opportunity", "what gaps do I have for this role", or similar. Also trigger when the user uploads or pastes a resume and asks Claude to remember it for future job-fit checks. Trigger even if they don't explicitly say "score" — phrases like "is this role a stretch", "am I qualified for this", or "what would I need to learn" all call for this skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/career-systems-community:cs-job-fit-scorerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Score a resume against a JD on 0–10, name the gaps, and tell the user where they actually stand. The goal is honest, useful signal — not flattery, not gatekeeping.
Score a resume against a JD on 0–10, name the gaps, and tell the user where they actually stand. The goal is honest, useful signal — not flattery, not gatekeeping.
Two distinct phases:
These are handled in the same skill because they're tightly coupled — the resume is the anchor every score is computed against.
All persistent state for this skill lives in a known folder so future runs can find it:
<workspace>/.cs-job-fit-scorer/
├── resume.md # the user's resume in markdown
└── preferences.md # optional: target titles, comp floor, location, deal-breakers
<workspace> is the user's connected workspace folder (the one they selected in Cowork, or their working directory in Claude Code). If no workspace is connected, fall back to the outputs folder and tell the user the resume will only persist within this session.
Always check for these files first. Before asking the user anything, read resume.md if it exists. Treat its presence as "we already know this person, jump straight to scoring."
If resume.md doesn't exist:
<workspace>/.cs-job-fit-scorer/resume.md.Then offer the preferences step:
"Optional: do you want to tell me your target titles, comp floor, preferred location (remote/hybrid/onsite + geo), and any deal-breakers? It makes scoring more personalized, but you can skip it."
If they say yes, collect those answers conversationally and save to preferences.md in the same folder. If they say skip, move on — don't push.
If resume.md exists but they paste a new resume or say "update my resume", overwrite it and confirm.
When the user pastes a JD (or a URL to one — fetch it first), and resume.md exists:
resume.md and preferences.md (if present).Each category gets a score and a one-line justification. Scores follow this anchor scale:
1. Title / level Does the resume show the user has held titles at or near this JD's level? A senior IC applying to a senior IC role scores high; a senior IC applying to VP scores lower (stretch), and a director applying to senior IC scores lower (over-leveled). Account for both directions of mismatch.
2. Industry How well does the user's industry experience map to the JD's industry/domain? Direct industry match scores high. Adjacent industries (e.g., B2B SaaS → B2B fintech) score moderate. Completely unrelated industries score low unless the JD explicitly welcomes cross-industry candidates.
3. Overlapping experience and responsibilities Read the JD's "responsibilities" and "what you'll do" sections. For each, find evidence in the resume that the user has done this kind of work before. Score reflects how much of the JD's actual job content the user has demonstrably done. This is usually the highest-signal category — weight your overall score accordingly.
4. IC vs leader fit Determine whether the JD is IC, player-coach, or pure leadership (team size, scope, language like "build" vs "manage" vs "set strategy"). Determine the same about the user from their resume. Score the match. An IC applying to a heads-down IC role scores high; an IC applying to a pure people-management role scores low unless the resume shows mentoring/lead-IC patterns.
5. Skills / tools match Extract the explicit skills, tools, frameworks, certifications, and methodologies the JD names. Check the resume for each. Score reflects coverage — but distinguish "must-have" skills from "nice-to-have" skills if the JD signals that distinction.
6. Years of experience What does the JD ask for (e.g., "8+ years")? How many relevant years does the resume show? Within ±2 years scores high; significant under or over scores lower. Over-experience is real — penalize moderately, not severely.
7. Overall score Not just an average. Weight the categories — overlapping experience/responsibilities and skills/tools usually matter more than industry or exact title. Use this weighting as a starting point, but adapt if the JD makes it clear something else matters more (e.g., a regulated-industry role where industry is critical):
If preferences exist and the JD violates a deal-breaker (e.g., onsite when user is remote-only, or comp below floor), flag it prominently — don't bury it in the overall score.
After the scores, list the most important gaps. Be specific and actionable. For each gap, name:
Don't pad — if there are only two real gaps, list two. Three to five is typical.
Deliver in chat. Use this structure exactly:
**Overall fit: X.X / 10**
| Category | Score | Note |
|---|---|---|
| Title/level | X | one-line justification |
| Industry | X | one-line justification |
| Experience/responsibilities | X | one-line justification |
| IC vs leader | X | one-line justification |
| Skills/tools | X | one-line justification |
| Years of experience | X | one-line justification |
**Gaps**
1. [Gap]. [How big a deal]. [What to do.]
2. ...
**Bottom line:** [One or two sentences — apply, apply with caveats, or pass, with the reason.]
If a deal-breaker from preferences was hit, lead with that above the score line:
**⚠ Deal-breaker hit:** [What — e.g., role is onsite NYC; you set remote-only.]
A few patterns worth knowing:
The user is making a real decision with this score — apply or pass, spend hours tailoring a resume or move on. A skill that grades generously to feel encouraging wastes their time; a skill that grades harshly to seem rigorous makes them skip good opportunities. Calibrate to reality. If the fit is great, say so plainly. If it's a stretch, say that too, and explain what would close the gap.
npx claudepluginhub blaze212/cs-community-skills --plugin career-systems-communityCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.