find-jobslisted
Install: claude install-skill robbiehaynes/job-search
# find-jobs
Re-scans LinkedIn for roles matching the saved criteria in `search-criteria.json` (same directory as this file), adds genuinely new postings to the **Role Pipeline** artifact's shared database, and refreshes `lastSeenAt` on postings still live. This is Phase 1 of the job-search assistant: **collection only** — no CV tailoring or application filling happens here.
The artifact is the source of truth (`db` capability, collection `jobs`, doc id `<source>_<sourceId>`, e.g. `linkedin_4462785422`). `jobs.csv` in the repo root is a generated export, never edited directly.
## Steps
1. **Load config.** Read `search-criteria.json` for `roleKeywords`, `locations` (each with a `group`, a LinkedIn location query string, an optional `workTypeFilter`, and `matchTerms` used to classify listings), `postedWithinDays`, and `fitSignals`.
2. **Load Chrome tools.** If `mcp__claude-in-chrome__*` tools aren't loaded yet, load them in one `ToolSearch` call: `tabs_context_mcp`, `navigate`, `tabs_create_mcp`, `tabs_close_mcp`, `get_page_text`, `read_page`, `computer`.
3. **Load existing jobs.** Use the Artifact tool's `read_db` with `db_op: "query"` on `collection: "jobs"` (paginate with `query.cursor` if `next_cursor` is returned) to get every existing doc id and `title`/`company`/`url`, so new listings can be deduped without extra network calls per listing.
3b. **Load the exclusion list.** Read `excluded-jobs.json` (same directory as this file — an array of `{source, sourceId, title