Install
$ agentstack add skill-jain777-jobclaw-skills-score-fit ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
score-fit
Judge a job against the user's profile the way a good recruiter + ATS would, and give a decision — not just a number.
Inputs
- The profile: read
profile/master-profile.md.
- Missing → offer a degraded one-shot mode: score against a resume/profile snippet the user
pastes now, and set profile_missing: true in the sidecar. Suggest /build-profile for next time.
- Stale → if fields the score depends on are marked
[VERIFY], warn in the output and set
profile_stale: true. Never credit [VERIFY] facts toward must-haves.
- The job: a pasted description, a URL to fetch, or an entry from
jobs/found-.json.
Known-info gate (RULES §6): if no job is given inline, read jobs/current.json (the job under work) and use its jd_text/url — do not re-ask for the JD if it's already captured. After resolving the job, write/refresh jobs/current.json ({company, role, url, job_id, jd_text, region, source, captured_at}) so tailor-resume / write-cover-letter / answer-application-questions reuse it without asking again. Only ask the user for a job if none is supplied and current.json is absent.
Method (think like an ATS, then like a hiring manager)
- Apply work-authorization logic first. Determine the job's country and resolve the
applicant's work_auth per [../../knowledge/work-authorization.md](../../knowledge/work-authorization.md) — it uses the job's region pack, not the applicant's, and returns one of NON-ISSUE / MINOR-NOTE / MAJOR-FILTER / DISQUALIFIER. Record it as work_auth_verdict. (E.g. India applicant + India job → NON-ISSUE: do not raise or penalize; weight notice-period/CTC fit instead. The same applicant + a US "no sponsorship" job → MAJOR-FILTER.)
- Extract the job's requirements: hard requirements (must-haves), preferred (nice-to-haves),
key skills/keywords, seniority, domain, location/remote, comp if stated.
- AI/ML roles: if the role is AI/ML, detect its archetype per
[../../knowledge/ai-roles.md](../../knowledge/ai-roles.md) (AI Platform/LLMOps · Agentic · Technical AI PM · Solutions Architect · Forward-Deployed · Transformation). Weight the domain and must_haves sub-scores toward that archetype's proof points, note it in strengths/gaps, and record archetype in the sidecar. Distinguish genuine AI roles from "AI" used only as a buzzword (title filter in ai-roles.md).
- Grade each requirement as met / partial / missing, citing profile evidence:
- met — clear evidence in the resume; partial — adjacent/transferable experience, or only
part of a compound requirement is shown; missing — no evidence. Don't credit skills not shown.
- Match semantically, not literally (the shared engine — [
../../knowledge/relevance.md](../../knowledge/relevance.md)):
credit a skill demonstrated under a different name (a "Visual AI agent" shows computer vision; "ran paid campaigns" shows performance marketing; "RAG" ≈ retrieval-augmented). Literal keyword absence is not the same as missing evidence. But never credit [VERIFY] facts — not even as transferable.
- "X OR Y" requirements — satisfied if the profile has either. Never penalize for lacking the
other half of an OR.
- Ambiguous / underspecified JDs — score conservatively, note the ambiguity in
gaps, and don't
inflate must-haves. Lower confidence rather than guessing high.
- Mark
is_dealbreaker: truefor must-haves whose absence alone should drive a Skip.
- Keyword coverage: list keywords present in the profile (
matched_keywords) vs. missing ones an
ATS would screen on (missing_keywords). Keep missing_keywords to terms the resume could honestly incorporate — this list feeds tailor-resume.
- Score 0–100 using this weighting (adjust slightly per role) — these are the
subscores:
- Must-have requirements met — 45
- Seniority & scope match — 20
- Domain/industry relevance — 15
- Keyword/skills coverage — 15
- Location / remote / work-auth fit — 5
Then subtract itemized penalties for hard-constraint violations (onsite when remote-only; sponsorship not offered when needed per §0; comp clearly below min_base_salary). The final score = sum(subscores) + sum(penalties), clamped to 0–100. (Subscores still sum to 100 — the factor weights mirror [../../knowledge/relevance.md](../../knowledge/relevance.md), so this score stays directionally consistent with find-jobs fit_rank.)
- Goal alignment (directional — not a subscore). Read
context.career_goalto judge whether
this role advances the candidate's stated direction; set goal_alignment ∈ strong|neutral|weak. It breaks ties / nudges the recommendation (e.g. a borderline 70 that strongly serves the goal → "apply"; one that pulls away → "applyiftailored"). It is never a numeric subscore (preserves the 100-point sum) and is never quoted, paraphrased, or echoed into any output (RULES.md §2) — it directs the verdict, it does not appear in it.
Output
Human-readable (always)
- Score: NN/100 + one-line verdict.
- Recommendation: Apply / Apply if tailored / Skip — with the single biggest reason.
- Strengths (3–5 bullets) — citing profile evidence.
- Gaps / risks (3–5 bullets) — missing must-haves or weak areas; note dealbreakers vs. addressable.
- Missing keywords — comma list the resume should incorporate (feeds
tailor-resume). - If recommending Apply, suggest
/tailor-resumefor this job.
Structured sidecar (gated)
When the job has an id (from jobs/found-.json) or score-fit runs inside a pipeline, also write scores/.score.json per [reference/score-schema.md](reference/score-schema.md) (subscores must sum to the pre-penalty total). For one-off pasted JDs, skip the file unless asked.
Be honest — a low score is more useful than a flattering one. No emoji.
Next steps
Apply / Apply-if-tailored → /tailor-resume for this job (or /apply-to-job to assemble the whole package). Skip → move to the next job.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jain777
- Source: jain777/jobclaw-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.