Claude
Skill
job-search-agent
Search, filter, and rank freelance and job opportunities on authorized sources with the career tool. Use to run a structured search or a watch.
Virus-scanned
Reviewed automatically before listing.
Download
navinspire-ia-navin-navin_skills_job-search-agent-e9c73a3.zip · 1 KB
Install
skills CLI
npx skills add https://github.com/Navinspire-ia/navin/tree/main/navin/skills/job-search-agent
Claude Code
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install navinspire-ia-navin@llmmart
Git
git clone https://github.com/Navinspire-ia/navin.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole navinspire-ia/navin collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Job Search Agent
The live index is the Career desk (#/career) and the career tool. Do not invent a posting.
Search setup
- Criteria live in the Career profile: titles, track, primary / secondary / excluded countries, stack, min_rate / min_salary, work_mode.
- Sources that index live follow the user setup (
career action=statusshowsSource idsandOfficial APIs). Search always launches web search (company career pages + public ATS boards) + scrape on open hosts + the LinkedIn official pack. Remotive, the public feeds engine (Jobicy API v2, Remote OK, Himalayas, We Work Remotely RSS, Arbeitnow, Hacker News Who is hiring; one hour cache, 16 requests max, titles filtered on the profile), published ATS slugs (Greenhouse, Lever, Ashby, Workable), JSON-LD JobPosting on careers pages and the Free-Work public listing reader (FR and UK missions with TJM, duration, remote mode and skills; rate limited, no login) run with those live families. Every row lands on the same normalized card: contracts, remote mode, experience level, start, duration, day rate and yearly salary ranges, currency of the posted amount or of the searched market. Keyed APIs (Adzuna, Jooble, USAJOBS, Job Opportunities API) are extra: only when that id is in source_ids and a key is on file (wizard secrets or env). Closed boards stay official-open or paste. Usescrape-operator/scraplingfor a public listing Search missed. Never invent a scrape because a key is missing. Never point scrape or Scrapling at LinkedIn or another closed board. - Sources that stay official-open without MCP: LinkedIn tabs, Bayt, Welcome to the Jungle, Apec, Indeed, Malt. User opens the tab, copies,
career action=import. - Recommended LinkedIn option when enabled: MCP
linkedin(user session). Callsearch_jobs/get_saved_jobs/get_job_details, thencareer action=ingestorimport. Never scrape the URL. Never Easy Apply.
Workflow
career action=statusthen confirm the full profile from the local book (titles, countries, stack, pay, CV facts).career action=search(or find with a brief). Deduplicate is already in the store.- Present Perfect then Good. Skip list pages unless the user asks.
- For a closed URL the user cares about: do not
web_fetch. Ask them to paste title + description, then import. - Selected offers:
ats-analyzer→career action=prepare→cover-letter-writer. - Autonomous hunt is the Career desk loop (Studio Start loop, Tauri
#/career,navin career start,python -m navin.career.desk_cli start). Usecareer action=start/stop/schedule/tick. Do not create a chat cron that searches. Never apply. Never scrape LinkedIn. - Heartbeat (silent unless useful): the gateway already ran
career action=watch. Ifwatch.countis 0, stop. Never search, collect, start or tick from heartbeat. Log withapplication-tracker.
Rules
- Never scrape LinkedIn. Never Easy Apply. Never fetch a closed job URL.
- Freshness: flag postings older than 30 days when the date is known.
- Scam signals: no company, pay-to-apply, generic gmail only.
- Human submits. Preparation is allowed.
Files (navin)
-
SKILL.md 3.3 KB
--- name: job-search-agent description: Search, filter, and rank freelance and job opportunities on authorized sources with the career tool. Use to run a structured search or a watch. metadata: {"navin":{"emoji":"🔎","category":"careers","default_for":"career"}} --- # Job Search Agent The live index is the Career desk (`#/career`) and the `career` tool. Do not invent a posting. ## Search setup 1. Criteria live in the Career profile: titles, track, primary / secondary / excluded countries, stack, min_rate / min_salary, work_mode. 2. Sources that index live follow the user setup (`career action=status` shows `Source ids` and `Official APIs`). Search always launches web search (company career pages + public ATS boards) + scrape on open hosts + the LinkedIn official pack. Remotive, the public feeds engine (Jobicy API v2, Remote OK, Himalayas, We Work Remotely RSS, Arbeitnow, Hacker News Who is hiring; one hour cache, 16 requests max, titles filtered on the profile), published ATS slugs (Greenhouse, Lever, Ashby, Workable), JSON-LD JobPosting on careers pages and the Free-Work public listing reader (FR and UK missions with TJM, duration, remote mode and skills; rate limited, no login) run with those live families. Every row lands on the same normalized card: contracts, remote mode, experience level, start, duration, day rate and yearly salary ranges, currency of the posted amount or of the searched market. Keyed APIs (Adzuna, Jooble, USAJOBS, Job Opportunities API) are extra: only when that id is in source_ids and a key is on file (wizard secrets or env). Closed boards stay official-open or paste. Use `scrape-operator` / `scrapling` for a public listing Search missed. Never invent a scrape because a key is missing. Never point scrape or Scrapling at LinkedIn or another closed board. 3. Sources that stay official-open without MCP: LinkedIn tabs, Bayt, Welcome to the Jungle, Apec, Indeed, Malt. User opens the tab, copies, `career action=import`. 4. Recommended LinkedIn option when enabled: MCP `linkedin` (user session). Call `search_jobs` / `get_saved_jobs` / `get_job_details`, then `career action=ingest` or `import`. Never scrape the URL. Never Easy Apply. ## Workflow 1. `career action=status` then confirm the full profile from the local book (titles, countries, stack, pay, CV facts). 2. `career action=search` (or find with a brief). Deduplicate is already in the store. 3. Present Perfect then Good. Skip list pages unless the user asks. 4. For a closed URL the user cares about: do **not** `web_fetch`. Ask them to paste title + description, then import. 5. Selected offers: `ats-analyzer` → `career action=prepare` → `cover-letter-writer`. 6. Autonomous hunt is the Career desk loop (Studio Start loop, Tauri `#/career`, `navin career start`, `python -m navin.career.desk_cli start`). Use `career action=start` / `stop` / `schedule` / `tick`. Do not create a chat cron that searches. Never apply. Never scrape LinkedIn. 7. Heartbeat (silent unless useful): the gateway already ran `career action=watch`. If `watch.count` is 0, stop. Never search, collect, start or tick from heartbeat. Log with `application-tracker`. ## Rules - Never scrape LinkedIn. Never Easy Apply. Never fetch a closed job URL. - Freshness: flag postings older than 30 days when the date is known. - Scam signals: no company, pay-to-apply, generic gmail only. - Human submits. Preparation is allowed.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.