From career-navigator
Searches and ranks job listings using a connector-first strategy (Indeed MCP, browser, or manual fallback). Normalizes results into a standard schema for ranking.
How this skill is triggered — by the user, by Claude, or both
Slash command
/career-navigator:search-jobsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search and rank job listings that match the user's profile using a connector-first strategy.
Search and rank job listings that match the user's profile using a connector-first strategy.
Use a hybrid source model in this order:
Normalize all listings into this schema before ranking:
title (required)company (required)location (required)apply_url (required)source (required; examples: indeed, illinoisjoblink, wellfound, company_direct, ats_greenhouse)retrieval_mode (required; mcp | browser | manual)salary (optional, raw text if no structured range)posted_date (optional)close_date (optional; common on public-sector postings)employment_type (optional)job_id_or_requisition (optional but preferred for dedupe)raw_description (optional but preferred for stronger scoring)If required fields are missing, ask for only the missing fields before ranking.
Live path: If search_jobs and get_job_details are available, use them as the primary lane and follow §1–§5 below.
No Indeed MCP in this session: Do not invent tool results. Do both of the following:
Explain how to enable live search on Claude Desktop: Customize → Connectors → Indeed → Connect → complete Grant access to Indeed in the browser (Indeed OAuth on secure.indeed.com — sign in and Continue), then a new chat. Point to /career-navigator:launch Step 3 for the full walkthrough.
Assisted manual: Skip search_jobs / get_job_details. After loading parameters from §1, provide 2-3 targeted query/link packs for each channel requested:
job-scout for ranking; present with the §5 layout where links exist. Footer: note listings were user-provided (not live MCP) until connectors are connected.Read {user_dir}/CareerNavigator/profile.md and extract:
## Target Roles as the search query## Location into:
If the profile only implies "remote-first" and does not clearly define secondary flexibility, ask one brief clarification before searching:
"I can keep remote as priority and include selective hybrid/relocation options. Which locations should I include as secondary targets (for example NYC, SF), and are any locations off-limits?"
If the user provided explicit search terms in their request (e.g., "find AI PM jobs in New York"), use those instead of — or in addition to — the profile values. Always prefer the user's explicit intent.
If profile.md does not exist or has no target roles, ask:
"What role and location should I search for?"
Capture optional source preferences when provided:
state/federal, niche, company_direct, aggregator)If any requested channel cannot be searched live via MCP in-session, generate concise playbooks:
State/federal boards
close_date when present.Niche boards
Company-direct and ATS
site:boards.greenhouse.io, site:jobs.lever.co, site:myworkdayjobs.com).apply_url and requisition ID when visible.Before searching, check for {user_dir}/CareerNavigator/career-trajectory.md.
career_trajectory_v1 JSON (especially as_of, near_term_roles, medium_term_roles).When presenting results, include a one-line trajectory note after the scoring header:
Trajectory context: used (as_of {YYYY-MM-DD})Trajectory context: unavailable (missing or unparseable)Build a small search plan from the location preferences, then call search_jobs.
Create up to 3 lanes (max), in this order:
remote)Call search_jobs for each lane with the extracted parameters:
search — the role or keyword string (e.g., "Director of AI Product")location — city/state (e.g., "New York, NY") or "remote"country_code — "US" unless the user's location indicates otherwisejob_type — omit unless the user specifies (fulltime, parttime, contract, etc.)Run lanes in parallel, then merge and deduplicate by job ID/link.
If the user requested additional channels and equivalent MCP tools are not present, append the assisted-manual playbooks from §1.25 and continue once listings are pasted.
From the search results, identify the top 5 most relevant listings. For each one, call get_job_details using the job ID returned by search_jobs to retrieve the full description, confirmed salary, and apply link.
Run all 5 get_job_details calls in parallel.
For non-Indeed/manual listings, treat pasted metadata as the detail payload and mark missing fields explicitly.
Pass all retrieved listings to the job-scout agent for outcome-weighted scoring. Job-scout will:
search_performance and strategy_signals from tracker.json, plus performance_weights from CareerNavigator/ExperienceLibrary.json{user_dir}/CareerNavigator/career-trajectory.md when present and apply trajectory alignment bonus from career_trajectory_v1critical | high | watch | none)When invoking job-scout, explicitly pass:
profile.md, tracker.json, ExperienceLibrary.json,{user_dir}/CareerNavigator/career-trajectory.md if it exists.If career-trajectory.md exists but cannot be parsed, continue scoring and label trajectory alignment as unavailable rather than dropping job-scout.
Use job-scout's ranked order for the final presentation. If job-scout returns a tie (within 5 points), preserve the original Indeed relevance order within the tied group.
Before final ranking, apply provenance + confidence + dedupe policy:
source and retrieval_mode.high when listing has title/company/location/apply URL + description + posted date.moderate when required fields exist but description/date are partial.directional when required fields exist but multiple optional fields are missing.Before finalizing top results, apply a light location-balance check:
Output a formatted summary. Always embed the apply link in the job title so the user can click directly to apply — this is required by the Indeed connector.
Open with a one-line header showing the confidence tier from job-scout:
Scoring: {Preliminary | Directional | Moderate | High confidence} — {reason, e.g., "based on 3 resolved outcomes" or "no outcome data yet, profile-match only"}
Then include:
Trajectory context: {used (as_of YYYY-MM-DD) | unavailable (missing/unparseable)}
Then include:
Source mix: {count by source} · Retrieval modes: {mcp/browser/manual counts}
Use this format for each listing:
{#}. {Job Title} Company: {Company Name} Location: {City, State | Remote | Hybrid} Salary: {range if listed, otherwise "Not listed"} Score: {composite}/100 · {ExperienceLibrary fit %}% ExperienceLibrary fit · Recommendation: {critical|high|watch|none}{avoid signal warning if present}
{2–3 sentence summary of the role drawn from the job description — focus on scope, key responsibilities, and what makes it notable}
After all listings, add:
Listings sourced from Indeed on {today's date}. Run
/career-navigator:track-applicationto log any you apply to.
If sources are mixed, replace the line with:
Listings sourced on {today's date} from: {source list}. Retrieval modes: {mcp/browser/manual counts}. Run
/career-navigator:track-applicationto log any you apply to.
Then add:
Search mix: {remote_count} remote, {hybrid_count} hybrid, {onsite_count} on-site. Prioritized for: {primary preference}; secondary geographies included: {list or "none"}.
If any listing is critical or high, append:
Priority recommendations: {critical_count} critical, {high_count} high. Start with the top recommendation first.
If search_jobs returns no results:
"Indeed returned no results for '{query}' in '{location}'. Try a broader title or a different location."
If fewer than 5 listings are returned, present what was found — do not pad or fabricate results.
If any listing is directional, add one line:
Data quality note: some listings have partial metadata; ranking confidence is lower until missing fields are filled.
npx claudepluginhub tmargolis/career-navigator --plugin career-navigatorAutomates job search with 34 tools: search, auto-apply, tailored resume generation, application tracking, salary intelligence, and recruiter outreach via the JobGPT MCP server.
Scans company career pages for job openings matching your profile using site-scoped web searches on ATS platforms like Greenhouse, Lever, Ashby, SmartRecruiters. Invoke for 'scan for jobs' or 'find openings at'.
Searches UK/France job platforms, matches listings to candidate profile, checks visa sponsorship and commute costs, ranks results by viability, exports to Excel.