Resume job fit screening
Screen and rank the best-fit jobs from a careers search-results URL using either a local account or a plain-text resume. Reuse local, synced, or bundled site notes, keep private user data local, and optionally queue public-safe site methods for community sharing.From its SKILL.md
npx -y skills add 2218259767/resume-job-fit-screeningAssembled 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
8.4 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Resume Job Fit Screening
Overview
Turn a recruitment search-results URL plus either a local account or a plain-text resume into a strict, evidence-backed shortlist of roles worth applying to.
This v2 workflow separates:
- installed skill resources
- local private runtime state
- optional community-synced site notes
- workspace report outputs
Use the bundled scripts when they fit. Prefer deterministic scripts over re-explaining the same runtime logic every run.
Required Inputs
- Require these inputs before starting:
- Recruitment search-results URL
- One of:
- account id already stored in local runtime
- plain-text resume
- Accept these optional inputs:
- Explicit skip or preference rules
topkto return; default to5- Whether to expand search keywords; default to
true - Whether community site note sync is enabled for this run
- Whether newly discovered public-safe notes should be queued for sharing
- If both account and resume are available, the explicit resume overrides the account for the current run only unless the user asks to persist it.
- If no account exists and no resume is provided, ask only for the missing resume and offer to create an account after the run.
Workflow
1. Initialize Runtime State
- Run:
python <skill_dir>/scripts/init_runtime.py - Runtime state lives outside the installed skill by default:
~/.codex/data/resume-job-fit-screening/
- Use the runtime for:
- local accounts
- synced community notes
- local repaired or newly discovered notes
- publish queue artifacts
2. Resolve the Candidate Profile
- If the user specifies an account, use it.
- If the user has a default account and does not override it, use that.
- If no account is available, require a plain-text resume.
- Use:
python <skill_dir>/scripts/account_store.py list python <skill_dir>/scripts/account_store.py show <account_id> - Read
references/account_template.mdonly if you need the canonical account layout.
3. Establish Site Context
- Run:
python <skill_dir>/scripts/job_site_context.py "<search_url>" - Use the returned fields to identify:
site_slug- selected note source and path
- runtime roots
- suggested report path
- Treat
site_slugas the canonical name for:- local note:
<runtime_root>/site_notes/local/<site_slug>.md - synced note:
<runtime_root>/site_notes/synced/<site_slug>.md - bundled note:
references/bundled_site_notes/<site_slug>.md - report:
<site_slug>_resume_match_<YYYYMMDD>.md
- local note:
4. Sync Community Site Notes Only When Configured
- If runtime config enables registry sync and the run should use it, run:
python <skill_dir>/scripts/sync_site_notes.py --site-slug "<site_slug>" - Sync is optional and must never block the core workflow if the registry is unavailable.
- Do not auto-overwrite local notes.
- At runtime, prefer note sources in this order:
- local
- synced
- bundled
5. Handle the Data-Access Layer
- If a selected note exists:
- read it first
- follow the recorded method before inventing a new one
- if the method breaks, repair it into the local note path, not into the bundled copy
- If no note exists:
- discover a stable way to retrieve job listings and details
- prefer this order:
- official JSON APIs behind the page
- network request reconstruction
- frontend bundle or sourcemap tracing
- browser automation
- HTML scraping as last resort
- save the final working method to the local note path
- use
references/site_note_template.mdas the note contract
- Never store:
- tokens, cookies, personal headers, or secrets
- dead ends or failed explorations
- ambiguous guesses presented as confirmed method
6. Validate and Queue New Public-Safe Notes
- For a repaired or new local note, run:
python <skill_dir>/scripts/validate_site_note.py "<note_path>" - Only if the note is explicitly public-safe and the user agrees, queue it for sharing:
python <skill_dir>/scripts/publish_site_note.py --note-path "<note_path>" - Queueing is preferred over direct publication when credentials or network access are uncertain.
7. Normalize Job Data
- Map every retained posting to this minimum schema:
{ "job_id": "string", "title": "string", "detail_url": "string", "department": ["string"], "locations": ["string"], "job_duty": "string", "job_requirement": "string", "source_site": "string", "captured_at": "YYYY-MM-DD", "raw": {} } - Prefer full JD details over list-page summaries.
- Keep enough raw fields to support later auditing.
8. Structure the Candidate Profile
- Extract only resume-grounded signals:
- core strengths
- explicit weaknesses
- hard constraints such as degree, graduation time, or required stack gaps
- Keep the profile strict. Do not upgrade the candidate based on plausible but unstated experience.
- If account preferences exist, treat them as defaults that can be tightened by current-run instructions.
- Read
references/jd_matching_methodology.mdif you need the full screening rubric.
9. Expand Search Keywords Only When Enabled
- If keyword expansion is
true, derive adjacent search terms from the resume's real evidence. - Expand only into closely related wording.
- Deduplicate aggressively.
- Do not expand into directions the user explicitly wants to skip.
- Record which keywords produced useful jobs if multiple searches are combined.
10. Run Rule-Based Prescreening
- Apply user preferences and obvious hard filters first.
- Classify each job into one of:
跳过不建议备选推荐
- Save a one-sentence reason for every job, even if it is rejected.
- Prioritize eliminating clear mismatches over optimistic ranking.
11. Run Strict Secondary Review
- Read
references/strict_reviewer_prompt.mdbefore the detailed evaluation pass. - Re-evaluate only the jobs that survive prescreening.
- If subagents are available and explicitly authorized, use independent subagents with the same strict prompt for JD-by-JD review.
- Otherwise simulate independence:
- review each JD in isolation
- avoid looking at prior scores while writing the current review
- rank only after all detailed reviews are complete
- Base every judgment on resume facts and JD text, not on optimistic interpolation.
12. Deliver the Report
- Read
references/output_format.mdbefore writing the final document. - Default output path:
<workspace_root>/<site_slug>_resume_match_<YYYYMMDD>.md
- Include:
- search scope and capture date
- account or preference summary
- Top-k table
- detailed analysis for each shortlisted job
- full screening table or grouped lists
- If the search had gaps, state them explicitly.
13. Persist Local Knowledge and Feedback
- Keep repaired or discovered notes in the local runtime note directory.
- Keep bundled notes read-only.
- If the user gives feedback that should affect future runs, append it to the account as pending preference updates rather than silently rewriting confirmed preferences.
- Use:
python <skill_dir>/scripts/account_store.py append-entry <account_id> --section pending --line "<summary>"
Resources
- Read
references/jd_matching_methodology.mdfor the reusable screening workflow and ranking rules. - Read
references/strict_reviewer_prompt.mdbefore the secondary review stage. - Read
references/output_format.mdbefore writing the Markdown deliverable. - Read
references/site_note_template.mdbefore creating or repairing a site note. - Read
references/account_template.mdbefore creating or repairing an account. - Read
references/bundled_site_notes/for bundled site-specific retrieval methods. - Run
scripts/job_site_context.pyto standardize site naming, note lookup, and report naming.
Operating Rules
- Prefer exact dates in reports and notes.
- Prefer direct evidence over summary claims.
- Prefer stable data-access methods over brittle page parsing.
- Keep private user data local by default.
- Do not auto-publish site notes without explicit user approval.
- Keep all Markdown artifacts copy-pasteable.
What ships with it: 24 files
79.0 KB alongside SKILL.md, 8 of them executable
agents/
- openai.yaml304 B
references/
- account_template.md685 B
- bundled_site_notes/alibaba.md4.0 KB
- bundled_site_notes/bytedance.md4.3 KB
- bundled_site_notes/feishu.md4.0 KB
- bundled_site_notes/kuaishou.md3.4 KB
- bundled_site_notes/meituan.md2.6 KB
- bundled_site_notes/xiaohongshu.md3.0 KB
- jd_matching_methodology.md2.6 KB
- output_format.md1.3 KB
- site_note_template.md1.4 KB
- strict_reviewer_prompt.md1.9 KB
scripts/
- account_store.pyruns7.5 KB
- build_site_note_manifest.pyruns2.5 KB
- init_runtime.pyruns2.5 KB
- job_site_context.pyruns5.8 KB
- publish_site_note.pyruns3.0 KB
- runtime_support.pyruns9.5 KB
- sync_site_notes.pyruns4.1 KB
- validate_site_note.pyruns3.3 KB
- .gitignore59 B
- LICENSE1.1 KB
- README_CN.md7.4 KB
- README.md2.6 KB
Gives 0 of the 12 instructions most hr recruiting skills give in ~1.9k 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
- require search url and resume before starting
- initialize runtime state
- resolve candidate profile
- establish site context
- sync community notes if configured
- normalize retained postings to minimum schema
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.