job-search
Source remote job postings from public boards (Greenhouse boards, HN Who-is-hiring, RemoteOK, LinkedIn via the browser harness, direct URLs), filter them for…
Skill by cheshirecode
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/cheshirecode-job-search
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/job-search
What's inside
- Skill name
job-search- Description
- Source remote job postings from public boards (Greenhouse boards, HN Who-is-hiring, RemoteOK, LinkedIn via the browser harness, direct URLs), filter them for a target market, and persist the pool into a `_worklog` program. Mechanical sourcing only; tailoring and application packages belong to `job-application`.
- License
- Unlicense
- Instructions
- 84 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (11)
- SKILL.md
- greenhouse-board.py · bin/
- hn-wih.py · bin/
- hn-wih.sh · bin/
- jd-pull.py · bin/
- linkedin-jobs.py · bin/
- pool-append.py · bin/
- remoteok.py · bin/
- remotive.py · bin/
- workingnomads.py · bin/
- test_parsers.py · tests/
SKILL.md (first lines)
# job-search Scripted sourcing of remote job postings into a filtered, persistent pool. This skill owns the mechanical parts: fetch, filter, render, append. Judgment parts (fit assessment, tailoring, applying) are out of scope — hand a target to the `job-application` skill once shortlisted. ## When to use - User asks to find remote jobs in a market (e.g. Canada) from named boards or companies. - A `_worklog` job-search program exists (or should be created) as the pool hub. ## Source ladder — cheapest first 1. **Public boards via HTTP** (no browser): `greenhouse-board.py` (with `--jd <id>` for full JD text), `hn-wih.py` (with `--max-age-days`), `remoteok.py`, `remotive.py`, `workingnomads.py`. Run these before any browser work. Himalayas.app has a paginated JSON API (`/jobs/api`, thin per page). Working Nomads yield skews agency-mediated (Lemon.io, Proxify) — flag those as staffing roles. **ATS board discovery**: probe `jobs.ashbyhq.com/<slug>` / `boards-api.greenhouse.io/v1/boards/<token>/jobs` / `api.lever.co/v0/postings/<slug>` across name variants — most companies live on one of the three (observed 2026-09: groundnews, hopper, thumbtack, ascend, xero, kake, oscilar, clickup, gcai→gc-ai all on Ashby; discover slugs from careers-page embeds). **Board notes**: arbeitnow is EU-only; jobicy returns malformed responses; WeWorkRemotely hard-blocks HTTP (browser only); Job Bank Canada needs interactive search and skews below staff-level tech; Work at a Startup blocks plain HTTP. 2. **Direct posting URLs**: `jd-pull.py <url>` (shared with `job-application`). Exit 3 means JS-only shell — escalate that URL to the browser harness. 3. **LinkedIn via the browser harness** (background tabs only): run `linkedin-jobs.py` under `browser-use`. Two modes: `LJ_MODE=keyword` (keyword + location search) and `LJ_MODE=company` (a company slug's `/jobs/` page). LinkedIn's AI search may rewrite filter URLs and drop `f_WT=2` — capture the remote flag per posting from its location text, never from the URL. Per-card posting URLs are frequently absent from the results DOM in the AI-search variant (observed 2026-09: one `/jobs/view/` anchor page-wide); when `url` comes back empty, take company + title to the direct ATS ladder (greenhouse board tokens, ashby board JSON) instead of fighting the page. ## Invocation ```bash # HTTP sources (stdlib only) skills/job-search/bin/greenhouse-board.py instacart --country canada --remote-only skills/job-search/bin/hn-wih.sh # latest Who-is-hiring month skills/job-search/bin/remoteok.py --country canada # LinkedIn (needs the browser-use daemon; BU_CDP_URL or local Chrome) BU_CDP_URL=http://<host>:9223 browser-use < skills/job-search/bin/linkedin-jobs.py # JD text for a direct URL (also: skills/job-application/bin/jd-pull.py) skills/job-search/bin/jd-pull.py https://boards.greenhouse.io/example/jobs/123 # Persist rendered rows into the program's ## Pool section skills/job-search/bin/pool-append.py --file people/oss/active/<program>.md \ --source "Greenhouse instacart 2026-09-25" --rows-file rows.md ``` `linkedin-jobs.py` configuration (env): `LJ_MODE=keyword|company`, `LJ_QUERY`, `LJ_LOCATION` (default Canada), `LJ_COMPANY` (slug), `LJ_LIMIT` (default 8). It prints markdown rows; add `LJ_FORMAT=json` for rows as JSON. It never activates a tab except for the one retry the harness skill prescribes when a background scroll times out, and never types, clicks, or applies. ## Discipline - Read-only: fetch and extract only. No auto-apply, no form submission, no third-party posting. Login walls stop and ask the user. - Posting facts rot: every persisted row carries its gather date; re-verify a link the day an application goes out (invariant echoed in the pool program). - One tab per site/task; reuse a matching tab before opening a new one. ## Persistence The pool lives in a `_worklog` program task (kind `program`, parent of any per-target application tasks). `pool-append.py` inserts a dated `###` block under `## Pool`; per-target tasks are created with `"$WORKLOG_BIN/project.sh" add-child <program-slug> <child-slug> --kind=plan --title=...` so the stub and the parent's `tasks:` entry land in one commit. Commit subjects follow `_worklog/AGENTS.md`: `<slug>: <what changed>` with `Worklog-Kind:` on creates.
From cheshirecode/dotfiles, Unlicense.
More from cheshirecode/dotfiles
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.566score
requirement-sync
cheshirecode
Propagate a changed requirement across every place it is written down, and find where the old version still reads as current.
SkillAFreshness: AClaude Code +9 - 0.529score
council
cheshirecode
Run multi-angle, audited research with independent voting.
SkillBFreshness: BClaude Code +9 - 0.529score
loop-helpers
cheshirecode
Optional deterministic helpers for loop-engineering context packs and fail-open Caveman transport decisions.
SkillBFreshness: BClaude Code +9 - 0.529score
evidence-gate
cheshirecode
Gate completion claims by mapping every observable goal or acceptance criterion to typed command, artifact, Git, GitHub, or URL evidence.
SkillBFreshness: BClaude Code +9 - 0.529score
serena-rg-search
cheshirecode
Pick the right tool for multi-faceted code search across symbols, text, semantic meaning, JSON, git history, and logs.
SkillBFreshness: BClaude Code +9 - 0.526score
pr-cost
cheshirecode
Collect a typed AI cost payload for a newly created GitHub PR, persist it to a local ledger, and optionally post an idempotent PR comment when live writes are…
SkillBFreshness: BClaude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 25, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Unlicense
- Repository
- github.com/cheshirecode/dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from cheshirecode
- 0.570score
artifact-gate
cheshirecode
Gate an HTML artifact before publishing - tag balance, dead anchors, duplicate ids, non-absolute links, drifted self-claims, and code links that still resolve…
SkillAFreshness: AClaude Code +9 - 0.570score
job-application
cheshirecode
Generate a tailored job-application package (resume, cover letter, skills keyword block) for one job description.
SkillAFreshness: AClaude Code +9 - 0.567score
browser-use-setup
cheshirecode
Install, upgrade, wrap, and connect the browser-use CLI across macOS and Linux, with sandbox-safe testing and platform-specific debugging.
SkillAFreshness: AClaude Code +9 - 0.567score
fast-crawl
cheshirecode
Fetch and crawl web pages as markdown locally, fast, with no browser session.
SkillAFreshness: AClaude Code +9 - 0.567score
loop-engineering
cheshirecode
Run bounded, evidence-driven loops for repeated, resumable, delegated, or scheduled work.
SkillAFreshness: AClaude Code +9 - 0.567score
pr-review
cheshirecode
Review one PR or close out completed work.
SkillAFreshness: AClaude Code +9
Cite this page
job-search skill. Agent Mart. https://agentmart.dev/skills/cheshirecode-job-search (last updated 2026-10-24)