From job-search
Builds or updates a prose Job Preferences Brief at user-chosen depth (sketch, standard, thorough) for job-fit evaluation. Imports existing briefs, deepens light ones.
How this skill is triggered — by the user, by Claude, or both
Slash command
/job-search:job-preference-interviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> To configure, extend, customize, or troubleshoot the agent itself (or understand its
evals/evals.jsonevals/files/imported-brief.mdevals/files/imported-rubric-brief.mdevals/files/setup-interview-ws.shreferences/agent-data-contract.mdreferences/conventions.mdreferences/errors.mdreferences/internals.mdreferences/parallelism.mdreferences/platform/claude.mdreferences/platform/codex.mdreferences/platform/copilot.mdreferences/platform/cursor.mdreferences/platform/droid.mdreferences/platform/gemini.mdreferences/platform/opencode.mdreferences/platform/pi.mdreferences/voice.mdTo configure, extend, customize, or troubleshoot the agent itself (or understand its capabilities), use the job-search-agent skill — the operator manual.
Build the user's Job Preferences Brief at a depth they choose — from a one-line sketch to a thorough
interview — the prose preferences.md that evaluate-job-fit later reads next to a posting to judge it.
Follow references/voice.md for how you talk and how you present the finished brief — and don't narrate
setup mechanics (no "resolving the workspace", no reference-file talk; your first words open the
conversation itself).
Produce a prose brief a model can read against a job posting and judge it qualitatively:
relevant or not, and if relevant weak / moderate / strong, with plain-language reasoning. The brief is the
"what I want" half of the system; evaluate-job-fit is the reader.
No numbers. Do not produce a fit score, a numeric scale, per-category point values, or category weights, and do not ask the user to rank categories against each other numerically. Importance is expressed by which bucket a factor lands in (must-have vs. strong preference vs. nice-to-have), never as math. Capture compensation, hours, and the like as plain words ("at least ~$180K base", "no regular on-call"), never as a formula.
This skill is interactive only — it asks questions and waits for answers. Never invoke it in a headless or scheduled run.
Find the workspace with the Discovery procedure in references/internals.md (one fact-gathering
command, then its precedence rules) and never hard-code its path.
Write the brief to <workspace>/<config.workspace.preferences_path> (default preferences.md).
If discovery reports first_run: true and you were invoked standalone (no workspace set up yet), write
to the resolved default path anyway and tell the user exactly where it went. (If onboarding owns the
workspace, it tells you where to write.)
If a preferences.md already exists, you are updating it — read it first, fill gaps, and confirm changes
rather than silently overwriting.
Put created_at: and updated_at: front-matter lines at the top, matching
templates/preferences.example.md. On a new brief set both to today; on an update keep created_at
and refresh updated_at to today — the home view measures staleness from updated_at:
---
created_at: 2026-06-05
updated_at: 2026-06-08
---
# Job Preferences Brief
...
Before you ask anything, let the user choose how deep to go — and make clear they can start light and deepen later (a follow-up interview reads the existing brief and enriches it, never overwrites). The depth ask happens even when another skill invoked you. Onboarding's hand-off, an args string ("standard interview", "one question at a time"), or any invoker's description of this skill never counts as the user's choice — only the user's own words do (they already said "just a quick sketch" / "make it thorough" → honor that and skip the ask). The failure mode: an invoker pre-picks "standard", the depth question silently disappears, and the user never learns a one-question sketch existed.
Ask it as a closed choice (see your platform's adapter → Closed-choice question; references/voice.md → Asking questions keeps the agnostic decision). Header Depth; question: "This
brief is the plain-English 'what I want' that every job posting gets judged against. How deep do you want to
go? You can always come back for a deeper pass later."; options:
(Standalone only — not mid-onboarding, where import was just declined — add a fourth option: Import — "already have one written down? Paste it or give me the path.")
Whatever the depth, the output is the same five-section brief (below): depth changes how much you ask, not the shape of the result. If a brief already exists, any path updates it — read it first, fill gaps, and confirm changes rather than overwriting.
For users who'd rather see jobs now than answer questions:
This is the Standard and Thorough path — same method, different coverage. Standard (~6–10 questions) works the core dimensions below and skips whatever the user says doesn't matter. Thorough (~15–20) works through every dimension with follow-ups and deliberately fleshes out all four buckets — nice-to-haves and red flags included.
references/voice.md → Asking questions).Skip any the user says don't matter; add others if they come up. For each, learn what they want, how much it matters (which bucket), and what would be a dealbreaker.
At a natural point — once the dimensions are mostly covered — sort the factors into four buckets. This replaces any scoring: importance lives in the bucket, full stop.
Do not ask the user to assign numbers or weights, and do not ask how categories trade off against each other numerically. If they volunteer a relative ordering, capture it in words inside the bucket.
Write the prose document to the path above, with exactly these sections —
references/conventions.md ("preferences.md — prose brief") owns the authoritative set (names + order);
the gloss below is orientation, not a second source of truth:
Every item is plain and observable — something a reader could verify against a posting's text, not an internal feeling. Skip an empty section's bullets rather than inventing filler.
End the brief with a one-line How to use this note, e.g.:
How to use this: your job-search assistant reads this brief next to each posting and judges whether it's relevant, and if so whether it's a weak, moderate, or strong match — with reasoning. No score.
After writing, show the user the brief itself — print preferences.md's body directly in your reply as
normal message text (rendered markdown; no code fence, skip the front-matter lines — see
references/voice.md), say in one line where it's saved, and offer to refine any section.
If the user already has a brief, accept a file path or pasted prose instead of interviewing from scratch.
created_at: + updated_at: front-matter lines, and write
preferences.md at the resolved path. Show the finished brief rendered in your reply the same way (no
code fence), and confirm in one line where it's saved.npx claudepluginhub agent-data/job-search --plugin job-searchGenerates customized interview questions from job descriptions and tailored resumes, categorizing by likelihood, gaps, and behavioral competencies, with practice schedules.
Prepares for interviews using STAR framework, simulates realistic mocks, reports interviewer perspectives, and coaches post-rejection with ageism and overqualification strategies.
Evaluates job postings (JD text or URL) against your profile with A-F match score, archetype analysis, compensation research, positioning strategy, and interview prep.