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 skills/alwaysmap/jobs4me/updatenpx skills add alwaysmap/jobs4me --skill updategit clone --depth 1 https://github.com/alwaysmap/jobs4meWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/alwaysmap/jobs4me/update)<a href="https://agentmods.dev/skills/alwaysmap/jobs4me/update"><img src="https://agentmods.dev/badge/skills/alwaysmap/jobs4me/update.svg" alt="Measured on agentmods" height="20"></a>What 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.00109 | $0.02071 |
| Opus 5 | $0.00055 | $0.01035 |
| Sonnet 5 | $0.00022 | $0.00414 |
| Haiku 4.5 | $0.00011 | $0.00207 |
Grade A, and why
update 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 3d ago.
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.
How it starts
The opening of the file, as written. The whole thing — 161 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Update Role Status
Shell setup: Always export JFM_DIR='<workspace path>' (single quotes) before running tracker commands. The script refuses to operate if it can't resolve a real workspace.
Read ../search/references/routing.md before processing any user message — it defines how to decompose compound messages and where to route each type of input.
Update the stage or status of a tracked role, including declining roles.
Parse the user's input as: Company Name - status with an optional note/reason after. Examples:
/jfm:update Acme - applied/jfm:update Acme - interviewing phone screen scheduled for Thursday/jfm:update Acme - rejected got the generic "moved forward with other candidates" email/jfm:update Acme - closed posting removed, assume filled/jfm:update Acme - decline too much travel/jfm:update Acme - not interested, too enterprise-y
Valid stages: suggested, maybe, applied, interviewing, offered, rejected, closed, declined
Common shorthand the user might use (map these to stages):
- "applied", "submitted" ->
applied - "interviewing", "interview", "phone screen", "screen" ->
interviewing - "offered", "offer" ->
offered - "rejected", "passed", "no" ->
rejected - "closed", "ghosted", "filled", "removed" ->
closed - "interested", "maybe" ->
maybe - "decline", "declined", "not interested", "pass", "skip", "nah" ->
declined
Steps
-
Find the application by company name:
node ${CLAUDE_PLUGIN_ROOT}/scripts/tracker.js find --company "Company Name"If multiple roles at the same company, ask which one.
-
If declining (stage is
declined):Extract the reason from the user's message (everything after the status keyword).
node ${CLAUDE_PLUGIN_ROOT}/scripts/tracker.js decline --id <id> --reason "reason text"The response includes a top-level
stored_atmap pointing to where the value landed intracker.yaml— use it to confirm (e.g.stored_at.reason === "decision.reason") rather than guessing field paths. To decline several roles at once, usebatch-decline --ids a,b,c --reason "..."— its response carries the samestored_atblock at the top level (present only when at least one decline succeeded).
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.
- 3d ago First seen · 161 lines · 109 tokens per session scan A 7723ddd79627
update is a skill published in the GitHub repository alwaysmap/jobs4me (2 stars, last pushed 1mo ago), licensed MIT. It adds 109 tokens to every session and 2,071 once invoked, about $0.0005 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 skills, from other repositories
pilot
One autonomous Pilot cycle - fetch the agenda, execute the top item, journal, exit. Injected by the terminal host - not for manual invocation loops.
dashboard
Opens a local web dashboard that visualizes the job application pipeline, funnel stats, recent messages, and target company status. The agent opens it at the end of a round so the user can visually review the pipeline.
today
This skill should be used when the user asks for "/today", "my daily brief", "today's brief", "where am I in my job search", "what should I work on today", "pipeline state", or wants a sorted view of every active company plus today's actions. Two-phase: input phase captures fresh facts since the last journal entry…
dashboard
This skill should be used when the user asks to "/dashboard", "open the dashboard", "show me my pipeline visually", "launch the dashboard", or wants a browser-based view of their job-search pipeline. Launches a local Python server that serves a React + Mantine SPA reading from userdata/companies//meta.md…
roadmap-interview
Run a short product-discovery interview with a user of Kochab to surface what they actually need, then turn it into structured roadmap input. Use when someone says "interview me about features," "run the roadmap interview," "I have feedback on the tool," "what should this tool do next," or when a maintainer wants to…
update-status
Use when the user reports progress on a role and wants the board updated. Triggers: /update-status, "move X to tech interview", "I got an HR screen with Y", "Z rejected me", "got an offer from W", "schedule my interview with V". Moves a vacancy through the pipeline, appends a timestamped statusDetail (preserving…