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 skills add ma-ziwei/fathom-mode-for-claude --skill skillgit clone --depth 1 https://github.com/ma-ziwei/fathom-mode-for-claudeWrote 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/ma-ziwei/fathom-mode-for-claude/skill)<a href="https://agentmods.dev/skills/ma-ziwei/fathom-mode-for-claude/skill"><img src="https://agentmods.dev/badge/skills/ma-ziwei/fathom-mode-for-claude/skill/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ma-ziwei/fathom-mode-for-claude/skill"><img src="https://agentmods.dev/badge/skills/ma-ziwei/fathom-mode-for-claude/skill.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00075 | $0.01836 |
| Opus 5 | $0.00037 | $0.00918 |
| Sonnet 5 | $0.00015 | $0.00367 |
| Haiku 4.5 | $0.00007 | $0.00184 |
Grade A, and why
fathom 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 10d 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.
This is a copy
86% identical to fathom — 18 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 137 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Fathom Mode
A planning session. While active, don't execute — help the user build shared understanding via dialogue.
Resolving the script path
This skill bundle ships Python scripts in the scripts/ subdirectory next to this SKILL.md. To invoke them, construct the absolute path from the path you used to read this SKILL.md: take the SKILL.md absolute path, drop SKILL.md, append scripts/<script-name>.py. Use that absolute path with Bash. The scripts handle their own internal imports (each finds its sibling modules via Python's automatic sys.path).
State lives at ~/.fathom-mode/active_session.json regardless of where the bundle is installed (per the scripts' built-in path resolution). This means a session started in one environment can be continued in another that uses the same protocol.
In examples below, <scripts> stands for the resolved absolute path you computed above.
Starting a session
On the first user message, you MUST call both scripts before responding:
Step 1 — Create the session (no score returned):
python3 <scripts>/init_session.py --task "<user's task>"
The output has session_id, task, next_target_dimension, etc. It intentionally does NOT include score_block_str — scoring is step 2's job.
Step 2 — Score turn 1 — follow the Per-turn protocol below, treating the user's bootstrap message as turn 1. The score_block_str you place at the top of your response comes from THIS call (update_graph.py), not step 1.
Do not skip step 2. Both scripts run for the first user message.
Per-turn protocol
For each subsequent user message during an active fathom session, BEFORE responding, invoke update_graph.py via Bash with the user's message + your extracted nodes:
python3 <scripts>/update_graph.py <<'FATHOM_TURN_END'
{"user_input": "<user's verbatim message>", "nodes": [<your extracted nodes as JSON array>]}
FATHOM_TURN_END
The closing FATHOM_TURN_END must be at column 0 with no leading whitespace. JSON-encode user_input per JSON rules (escape " \ \n); the heredoc protects against shell escaping.
What ships with it
15 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/plan-format.md 3.1 KB
- references/score-interpretation.md 3.4 KB
- references/three-part-turn.md 9.2 KB
- scripts/_causal.py 12 KB runs code
- scripts/_compiler.py 11 KB runs code
- scripts/_dimensions.py 4.1 KB runs code
- scripts/_graph.py 10 KB runs code
- scripts/_models.py 3.1 KB runs code
- scripts/_scoring.py 7.7 KB runs code
- scripts/compile_plan.py 1.8 KB runs code
- scripts/exit_session.py 626 B runs code
- scripts/init_session.py 9.0 KB runs code
- scripts/render_status.py 3.2 KB runs code
- scripts/session_state.py 5.5 KB runs code
- scripts/update_graph.py 14 KB runs code
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.
- 10d ago First seen · 137 lines · 75 tokens per session scan A c5ed9f4018bd
fathom is a skill published in the GitHub repository ma-ziwei/fathom-mode-for-claude (13 stars, last pushed 4mo ago), licensed MIT. It adds 75 tokens to every session and 1,836 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 86% identical to fathom, differing in 18 lines, and is treated as a copy.
Other skills, from other repositories
job-description-skill
A job-description analysis skill that turns a vacancy listing and a candidate’s background into an HTML report about fit, gaps, interview topics, and application strategy.
offer-compare-skill
A decision assistant for comparing two or more job offers across pay, growth, company strength, team risk, promotion, AI exposure, and lifestyle. Total compensation means the combined value of salary, bonuses, shares, and sign-on payments.
offer-toolkit-skill
A set of job-search tools covering the path from finding a vacancy to accepting an offer. It includes separate tools for job searches, job-description analysis, tailored resumes, behavioral interviews, offer comparisons, and salary negotiation.
bq-skill
A coaching workflow for building a reusable library of truthful stories for behavioral job interviews. It uses structures such as STAR—Situation, Task, Action, Result—and can connect stories to a job description and résumé.
linkedin-job-search-skill
A job-search assistant that uses a sample job description and your resume to find and rank similar public LinkedIn Jobs listings. LinkedIn Jobs is LinkedIn’s section for advertised employment positions.
exam-study-guide
A study-guide builder for a completed exam chapter that has not yet passed its required checks. It creates a structured teaching checklist and, in full mode, a self-contained HTML and printable PDF guide with readable formulas, visible images, explanations, examples, and answers.