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 thoughtbot/rails-consultant --skill diff-explainergit clone --depth 1 https://github.com/thoughtbot/rails-consultantWrote 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/thoughtbot/rails-consultant/diff-explainer)<a href="https://agentmods.dev/skills/thoughtbot/rails-consultant/diff-explainer"><img src="https://agentmods.dev/badge/skills/thoughtbot/rails-consultant/diff-explainer/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/thoughtbot/rails-consultant/diff-explainer"><img src="https://agentmods.dev/badge/skills/thoughtbot/rails-consultant/diff-explainer.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.00027 | $0.02386 |
| Opus 5.5 | $0.00011 | $0.00954 |
| Sonnet 5.5 | $0.00005 | $0.00477 |
| Haiku 4.5 | $0.00003 | $0.00239 |
Grade A, and why
diff-explainer 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 today.
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.
Diff explainer
The diff already shows what changed. What it can't show is why — why this approach and not the obvious one, what broke when you tried that, what you're nervous about, what you decided not to do. Supply that. Your reader is a sharp, time-poor developer who may not know this stack.
1. Work out what you're explaining
No argument means the current branch against its base, diffed from the merge base so other people's commits don't leak in.
BASE=$(git rev-parse --verify --quiet @{upstream} \
|| git rev-parse --verify --quiet refs/remotes/origin/HEAD \
|| git rev-parse --verify --quiet refs/heads/main \
|| git rev-parse --verify --quiet refs/heads/master)
MB=$(git merge-base "$BASE" HEAD)
test -n "$MB" || echo "No base found — ask which branch to diff against."
git diff --stat "$MB" && git log --oneline "$MB"..HEAD
git status --porcelain -uall # untracked files the diff won't show
Size up the change from the stat before reading git diff "$MB" — a diff you pull
into context whole is one you can no longer decide to skip. Upstream first, and
refs/heads/ not bare main, or you diff against the wrong base: a fork of
develop drags in everyone's develop commits, a trunk named anything else finds
no base at all, and a tag called main beats the branch of the same name. Empty
$MB also means an unborn HEAD — no commits yet, nothing to explain.
git diff "$MB" covers committed and uncommitted work both, so a branch with no
commits of its own still works. An argument overrides. Resolve it as a rev first
(git rev-parse --verify --quiet <arg>); anything else is a path, and goes after
-- so a docs branch and a docs/ directory can't collide. A bare number is a
PR (gh pr diff <n>, plus gh pr view <n> for the body and linked issue) unless a
branch by that name exists; with no working gh, say so and take the branch. If the
change is obvious — a version bump, a typo — say so and skip the artifact.
2. Who's reading
What ships with it
2 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.
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.
- today First seen · 161 lines · 27 tokens per session scan A c3a9c6f69b03
diff-explainer is a skill published in the GitHub repository thoughtbot/rails-consultant (29 stars, last pushed yesterday), licensed MIT. It adds 27 tokens to every session and 2,386 once invoked, about $0.0001 per session on Opus 5.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-11-07.
diff-explainer compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| diff-explainerthoughtbot/rails-consultant | Skill | 29 | yesterday | MIT | A | 27 | Claude Code |
| elixir-wayoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 55 | Claude Code |
| auditoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 35 | Claude Code |
| reviewoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 51 | Claude Code |
| pr-reviewoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 59 | Claude Code |
| phx-pr-reviewoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 61 | Claude Code, Codex |
| startoliver-kriska/claude-elixir-phoenix | Skill | 573 | yesterday | MIT | A | 57 | Claude Code |