Candidate shortlister
Shortlist a batch of candidates against one role. Use this skill whenever someone has a folder of CVs/profiles (a LinkedIn Recruiter export, an ATS download, email attachments — any format) and a job description, and wants the closest-matching candidates surfaced as a ready-to-send message for a hiring manager. Triggers on phrases like "shortlist these candidates", "who's the best match for this role", "screen this batch against the JD", "top candidates from this folder", or "put together a shortlist for the hiring manager". The recruiter can also supply notes on what matters most in the search; the skill weights the ranking accordingly and explains its reasoning. Does not contact candidates, does not store data, and does not move files.From its SKILL.md
npx -y skills add bitesizetalent/candidate-shortlisterAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.1 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Candidate Shortlister
Turn a folder of candidate CVs plus a job description into an honest, ranked, ready-to-send shortlist. Built for recruiters who pull a batch of profiles and need to hand a hiring manager the two or three best — with the reasoning attached.
What you need before running
- A folder of candidate files. Any source (LinkedIn Recruiter export, ATS download, email attachments), any format (PDF, docx, txt). Point the skill at the folder path.
- A job description. A file or pasted text.
- Recruiter priority notes (strongly encouraged). A few sentences on how you're approaching the search: which requirements matter most, which can flex, and what your bar for "hireable" is. This is what makes the shortlist yours rather than a generic keyword match. If you don't provide notes, the skill weights all stated requirements evenly and says so.
The user can state any of these up front — otherwise the skill asks before it writes the final message (see step 5):
- How many to present — defaults to the top 3.
- Output channel — Slack, Teams, or email.
- CSV export — an optional CSV of the full scored table.
Workflow
1. Parse the role
Read the job description and extract the requirements: must-haves, nice-to-haves, seniority level, and any hard constraints (location, clearance, etc.). If the recruiter supplied priority notes, use them to weight these requirements — their stated priorities override naive equal weighting. Restate the search approach back in one sentence so the reasoning is explicit and auditable.
2. Read every candidate
Read each file in the folder. Extract, per candidate: name, current/most recent role and level, relevant skills and domains, years of relevant experience, and anything that speaks to the weighted requirements. Handle each file independently — one unreadable file must not stop the batch.
3. Score against the weighted requirements
Score each candidate on fit to the weighted requirements, not keyword overlap. For each, record: a match score, the strengths that matter for this role, and the gaps. Judge seniority honestly — a strong profile one level too junior is a gap, not a match.
4. Rank and decide
Rank all candidates by their weighted score, then apply the bar test.
What clearing the bar means. A candidate clears the bar when their overall weighted fit is ≥ 7/10 — they cover most of what matters, with only nice-to-have or flexible gaps left.
Must-haves carry a heavy penalty. Missing a requirement flagged as fundamental (what the recruiter's notes call essential, or what the JD lists as required/must-have) is a big hit to the score — usually enough to drop a candidate below the bar. But an otherwise exceptional profile can still clear 7/10 despite a missing fundamental. When that happens, always flag the missing must-have explicitly in that candidate's rationale, so the recruiter sees the trade-off and makes the call — the tool never hides a fundamental gap.
Nice-to-haves and any pillar the recruiter marked as flexible can be gaps without denting the score much. The recruiter can move the 7/10 threshold or change how harshly must-haves are penalised in their notes (e.g. "bar is high — only near-perfect profiles", or "cast wide, I'll filter myself").
Then:
- If one or more candidates clear the bar: take the top N (default 3).
- If no candidate clears the bar: say so plainly. Do not force names forward. Explain what's missing across the batch and, if useful, name the closest-but-not-there candidate with the specific gap that holds them back. An honest "nobody here meets the bar" is a valid and valuable output.
5. Confirm delivery preferences
Before writing the final message, confirm how the recruiter wants it delivered — unless they already said in their request. Ask in this order:
- Which channel? Slack, Teams, or email.
- Also want a CSV? Offer a CSV export of the full scored table alongside the message. Only produce the CSV if they say yes.
Keep these to one short prompt; don't interrogate. If the recruiter already specified channel and/or CSV up front, skip straight to producing the outputs.
6. Produce the outputs
A — Shareable shortlist message (the headline deliverable), formatted for the chosen channel:
- Open with the recruiter's one-sentence search approach ("Here's how I approached this and why").
- List the top candidates, each with a one-to-two-sentence rationale — why they're here and any caveat.
- Close with a short summary line.
Channel formatting:
- slack / teams — concise chat register, light formatting, no salutation.
- email — add a subject line, a greeting, and slightly more formal framing.
If nobody clears the bar, the message says that directly and explains why, instead of listing candidates.
B — Shortlist table (audit trail): every candidate scored, shown as a markdown table with columns for name, score, key strengths, and key gaps. This is the record of who was considered and why, so a decision can be defended later. If the recruiter asked for a CSV in step 5, also write the same table out as a CSV file.
Guardrails — what this skill must never do
- No candidate outreach. Never contact, message, or draft outreach to candidates. This skill shortlists only.
- No data persistence. Read files locally and write outputs locally. Never store, upload, or transmit candidate data anywhere. Treat every profile as confidential personal data.
- No file reorganisation. Never move, rename, copy, or delete the candidate files. Read-only on the source folder.
Example
Request: "Shortlist the profiles in my candidate folder against this JD. Notes: three pillars in the spec — of them, data platform and cloud architecture matter most and overlap heavily; the ML pillar could sit with someone a level more junior, so don't over-weight it. Present the top 2."
Result: The skill weights data-platform and cloud-architecture fit highest, treats ML depth as a nice-to-have, ranks the batch, and applies the bar test. It then asks which channel to format for and whether a CSV is wanted, and returns a message opening with that one-sentence approach, two candidates each with a one-line rationale, and a closing summary — plus a scored table of everyone considered.
What ships with it: 8 files
602.4 KB alongside SKILL.md
- candidate-shortlister.skill5.6 KB
- CONTRIBUTING.md961 B
- .gitattributes66 B
- LICENSE1.1 KB
- PRD.md5.1 KB
- PUBLISHING-GUIDE.md3.3 KB
- README.md3.8 KB
- workflow.png582.6 KB
Gives 0 of the 12 instructions most hr recruiting skills give in ~1.5k tokens
Counted across 356 of the 357 authors here whose files we hold, read 2026-08-07
- Quantify achievements with specific metricsin 14 of 356, across 6 files
- Keep the resume under two pagesin 14 of 356, across 6 files
- Request the full job description if not providedin 12 of 356, across 4 files
- Extract keywords and prioritize job requirementsin 12 of 356, across 4 files
- Stop and ask for clarification if required inputs are missingin 12 of 356, across 5 files
- Map candidate experience to job requirementsin 11 of 356, across 3 files
- Ask if the user wants adjustmentsin 11 of 356, across 3 files
- Provide strengths and gap analysis after the resumein 10 of 356, across 2 files
- Request candidate background details if not providedin 10 of 356, across 2 files
- Format experience bullets as action verb plus resultin 10 of 356, across 2 files
- Ask for missing inputs before startingin 10 of 356, across 9 files
- Use exact job description terminologyin 9 of 356, across 1 file
Said here and by no other author read
- Apply recruiter notes to weight requirements
- Restate the search approach in one sentence
- Process every candidate file independently
- Score candidates on weighted requirements fit
- Apply a bar test threshold of seven out of ten
- Flag missing must-haves in the rationale
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.