scoutjobsBLOCK
Open-source job-search OS for job seekers: Agent Skills for Claude Code/Codex/Cursor/Gemini/Copilot, Go CLI, local dashboard, learns from your decisions
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Your job search, on your machine. An open-source job-search operating system for the person looking for a job, driven by AI coding agents. One repo gives you:
- Skills (Agent Skills standard) for the whole loop: find jobs, score fit, check your CV, tailor resume and cover letter, track applications, prep and mock interviews, debrief, negotiate, upskill.
- A learning loop: every skip, apply, withdraw and declined offer is logged with your reason.
learn-preferencesturns those into preferences you confirm, and the scorer and tailoring skills read them. It gets better the longer you use it. - A dashboard for people, not just developers: a single Go binary, SQLite, no Node, one embedded script, no external assets, bound to localhost. Overview with your next best move, job search with plain-language match reasons, pipeline board where every card opens the job and moves to the next stage with one click or a drag, a per-job Continue with AI button that tailors your CV and co
6f98ac4088abOBSERVED · 2026-10-12Install
Commands as the repository documents them. They are shown, not run.
git clone https://github.com/ZoolCoder/scoutjobs && cd scoutjobs
git clone https://github.com/zoolcoder/scoutjobs && cd scoutjobs
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| claude-desktop | mentioned | |
| codex | mentioned | |
| copilot | mentioned | |
| cursor | mentioned | |
| gemini-cli | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: application-tracker description: Records application state in ScoutJobs. Marks jobs drafted, applied, interview, offer, rejected, withdrawn or no_response, adds notes and follow-up reminders, and keeps the per-application folder tidy. Use when the user says "I applied", "mark as rejected", "they replied", "track this", "status update", or asks what is pending. license: MIT --- # Application tracker The tracker is the `scoutjobs` CLI. Status vocabulary, in pipeline order: `new` → `ranked` → `drafted` → `applied` → `interview` → `offer` → `hired` Side exits: `skipped`, `rejected`, `no_response`, `withdrawn`, `offer_declined`. ## Commands you will use ```bash scoutjobs job list --open # everything still in play scoutjobs job show <id|company/title> # one job with history scoutjobs job set <id> --status applied --note "applied via Greenhouse, used CV v3" scoutjobs job set <id> --status rejected --note "rejected after screen: wanted more k8s" scoutjobs job set <id> --deadline 2026-10-31 --salary-min 80000 --salary-max 95000 --currency EUR scoutjobs interview add <id> --stage screen --at 2026-10-20T14:00 --format video --interviewer "Jane, EM" scoutjobs stats # funnel, follow-ups due, stale list scoutjobs email sync [--dry-run] # IMAP: log replies as reply:received, move to interview/rejected when the wording is clear ``` Resolve jobs by id, by `company/title`, or by a unique company substring. If the CLI says the reference is ambiguous, list and ask. ## Rules - Every status change gets a `--note` with the fact that caused it. Notes feed the activity log and the weekly review. - `applied` only when the user confirms they submitted. Drafts ready but not sent are `drafted`. - When the user reports a rejection or ghosting, ask one question: "Anything you'd do differently?" Put the answer in the note. Do not push. - When an interview is scheduled, add it with `scoutjobs interview add` (the job flips to `interview` automatically) and suggest `interview-prep`. - When an offer arrives, set `offer`, record salary fields, and suggest `salary-negotiation-prep` or `offer-comparison-analyzer`. - Decisions that teach preferences go through `scoutjobs decision log`: withdrawals (`--kind withdraw`), declined offers (`--kind decline_offer`), accepted offers (`--kind accept_offer`). Always include `--reason` in the user's words and `--signals` with the facts. ## Per-application folder `scoutjobs job show <id> --json` returns `dir`, usually `~/.scoutjobs/applications/<company>_<title>/`. Keep there: `posting.md`, `resume.md` (tailored), `cover-letter.md`, `research.md`, `interview-prep.md`, `stories.md`, `debrief-<date>.md`. Nothing else. ## Follow-ups `scoutjobs stats` lists applications quiet for more than `follow_up_days` (config, default 10). For each, offer a two-sentence follow-up message the user can send. After they send it, `scoutjobs job set <id> --note "follow-up sent"` which resets the quiet timer. Applications quiet past `stale_days` (default 60) get `no_response` only when the user agrees.
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (4 observation(s))
- Network
- declared (2 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (14)
func (rn *Runner) Exec(ctx context.Context, run *Run, ag Agent, j store.Job, echo io.Writer) {func (rn *Runner) exec(ctx context.Context, run *Run, ag Agent, j store.Job) error {Run `scoutjobs serve` in the background (for example `nohup scoutjobs serve >/dev/null 2>&1 &` or the platform's background-task feature), wait one second, then tell the user the URL printed by `scout
.gitleaksignore
.golangci.yml
.goreleaser.yaml
if _, err := WriteFile(dir, "../../escape.md", []byte("x")); err != nil {scoutjobs serve # dashboard at http://127.0.0.1:7070
**Claude Code on the web, Codex cloud, hosted n8n**: no shell on your machine, so they use the dashboard's JSON API. Set `api_token`, run `scoutjobs serve` behind a tunnel (`cloudflared tunnel --url h
cloudflared tunnel --url http://127.0.0.1:7070 # or ngrok, tailscale serve, ssh -R; prints a public https URL
$ curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:7070/api/brief | jq .stats
@antora/lunr-extension, asciidoctor-kroki
- Server history (Slack/Telegram model): new-device backfill and multi-device sync are trivial, server-side search works, message recall is consistent. The price: an archive measured in petabytes (50B
description: Sends one application by e-mail through the user's own SMTP account, cover letter as body and tailored resume attached, after showing the full message and getting an explicit yes. Use whe
Gates applied: no_behavioural_pass.
6f98ac4088abfull audit observations/trust-audit/skill/zoolcoder__scoutjobs.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 6f98ac4088ab | BLOCK | D | 69 | first audit |
Questions
What does the scoutjobs skill do?
Open-source job-search OS for job seekers: Agent Skills for Claude Code/Codex/Cursor/Gemini/Copilot, Go CLI, local dashboard, learns from your decisions
Is scoutjobs safe to install?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can scoutjobs access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does scoutjobs work with?
Its documentation mentions claude-code, claude-desktop, codex, copilot, cursor and gemini-cli. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (6f98ac4088ab), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.