Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/soheilfallah/jobxhunter/huntgit clone --depth 1 https://github.com/soheilfallah/jobxhunterWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00020 | $0.00796 |
| Opus 5 | $0.00010 | $0.00398 |
| Sonnet 5 | $0.00004 | $0.00159 |
| Haiku 4.5 | $0.00002 | $0.00080 |
Grade A, and why
hunt scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Use the jobxhunter skill's DAILY HUNT routine against the populated workspace.
Open references/run-the-hunt.md and follow it (context discipline + every command with its flags). In short: read STATE.md → read the profile fresh → python "$root/scripts/run_hunt.py" --workspace "$w"
(sweep every source across the whole keyword file, company boards, consolidate, rank, verify, fetch
JDs → to-tailor.csv) → triage every fetched advert on disk → tailor every role you can defend →
write each cover letter in full, finished and send-ready → write the L2 alternative-world CV per
role → track & file every job (Drafted/Skipped) → daily_bundle.py --root <apps> → verify.
The day is not done when the script exits. run_hunt.py ends at to-tailor.csv; if the day's
bundle folder holds no .docx, the day produced a spreadsheet and left the work.
Triage is tracked on disk, not in your head. A run that reads the loudest lane properly and skims the rest leaves the best fit unread.
python "$root/scripts/triage.py" --workspace "$w" --init # one row per fetched advert
python "$root/scripts/triage.py" --workspace "$w" --next --n 5 # ROUND-ROBIN BY LANE, not by rank
python "$root/scripts/triage.py" --workspace "$w" --mark <url> --verdict applied|skipped --reason "..."
python "$root/scripts/triage.py" --workspace "$w" --status # EXITS NON-ZERO while any pending
--next hands out work round-robin across lanes on purpose. A skip needs a reason — skipping most
of the adverts is fine, leaving no record of why is not. The day is not finished until --status
exits 0.
Every tailored folder must pass scripts/validate_profile.py --folder <dir> (exit 0; exit 2 =
broken rules, stop) and the humanizer pass (the installed humanizer skill, if present) before
bundling.
Sources the script cannot reach (an OAuth MCP connector such as Indeed, or a board that serves a
bot interstitial to a plain GET): query them yourself, then hand the rows over so they go through the
same gate, ledger and query log as everything else — indeed_to_rows.py + import_rows.py, any time
before --stage consolidate. See references/daily-hunt.md.
Relevance is a ranking, not a gate. The pipeline rejects only security-clearance titles and the
Global knockouts list in SEARCH-KEYWORDS.md; an unmatched title scores 0 and sorts last, never
dropped. Judge fit yourself from the advert — do not expect the pipeline to have judged it for you.
Before writing anything up: python "$root/scripts/verify_run.py" --workspace "$w" --date <DATE>.
A FAIL means the run is thin — go back and search more; never write it up as thorough.
Follow SKILL.md ("Command: DAILY HUNT") and references/daily-hunt.md. Only LIVE, only NEW roles;
dedupe on the canonical link key; never touch Applied rows. STATE.md at the workspace root is the
handover: read it first, overwrite it last, keep it short.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 50 lines · 20 tokens per session scan A 9c86fa91f1d1
hunt is a command published in the GitHub repository soheilfallah/jobxhunter (8 stars, last pushed 4d ago), licensed MIT. It adds 20 tokens to every session and 796 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
start
Onboard with Rebound — capture your base resume and build your private profile (skills, differentiators, and situation).
dashboard
Launch the local Rebound dashboard (React) to visualize your job-search progress.
track
Record or update a job application in your local tracker so it shows on the Rebound dashboard.
tailor
Tailor your resume to a specific job description — honesty-first, ATS-safe, exported as Word + PDF.
match
Score how well roles fit you (50–90%+) and rank them — paste roles/URLs now; web-crawling discovery is on the roadmap.
profile
View or update your Rebound profile — skills, differentiators, and your private situation (work authorization, timeline).