explain-diff

A read-only converter that turns a DriftReport JSON file—a report about differences from a project baseline—into plain-English Markdown.

In plain words
What is it for?
It helps describe reports from repository checks, including health scores and trend changes, in text that others can read and paste.
Why use it?
It removes the need to interpret raw JSON when explaining repository drift in a pull request, chat, or bug report.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/thettwe/nyann/explain-diff
Any agent
npx skills add thettwe/nyann --skill explain-diff
Clone the repo
git clone --depth 1 https://github.com/thettwe/nyann

Made for: Claude Code, Codex.

Per session 228 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,310 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00228 $0.01310
Opus 5 $0.00114 $0.00655
Sonnet 5 $0.00046 $0.00262
Haiku 4.5 $0.00023 $0.00131

Measured 2d ago against content hash 3393e8f98b7f, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

explain-diff 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 2d 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.

skills/explain-diff/SKILL.md · 108 lines

How it starts

The opening of the file, as written. The whole thing — 108 lines — stays where its author put it; the contents beside it link to each section on GitHub.

explain-diff

Read-only template render. Wraps bin/explain-diff.sh.

When to trigger

  • User has a DriftReport (from doctor / retrofit / compute-drift) and wants prose.
  • User wants to paste a doctor summary into a PR body or chat without sharing raw JSON.
  • User explicitly asks for "the drift in plain English".

When NOT to trigger

  • User is asking "is this repo healthy" → that's doctor (which can chain into this via --explain).
  • User wants to mutate / fix → that's retrofit.
  • User wants LLM-polished output → this skill is template-only by design (no LLM). If the user wants prose with more nuance, suggest reading the markdown output and editing by hand.

Invocation

Three call shapes:

1. Direct: file path

bin/explain-diff.sh --file path/to/drift.json

2. Pipe from a producer

bin/compute-drift.sh --target . --profile default | bin/explain-diff.sh -

3. Via doctor (recommended path)

bin/doctor.sh --target . --profile default --explain

doctor --explain is preferred because it also forwards the computed health score and trend delta into the narrative header line — the same numbers text-mode shows at the foot of its output.

--explain is mutually exclusive with --json on doctor; if both are passed, doctor dies with a clear error.

Output shape

Markdown (default) — three sections:

  1. Header — target + profile + (optional) health score + trend
  2. What's drifted — one bullet per drift category, ordered by severity. Each bullet has a lead phrase (Action required:, Worth fixing:, Drifted:, Minor:) and up to 5 concrete items. If a category has more than 5 items, an "...and N more" line appears.
  3. What you can do — ordered action items that map to nyann skills (nyann:retrofit, nyann:optimize-claudemd, etc.)

JSON (--format json) — the DriftNarrative shape (schemas/drift-narrative.schema.json). Useful for chat-bot integrations or custom renderers that want the same source-of-truth without re-parsing the prose.

Read the full file on GitHub · 108 lines

Changes

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.

  1. 2d ago First seen · 108 lines · 228 tokens per session scan A 3393e8f98b7f

Subscribe to this mod's changes

explain-diff is a skill published in the GitHub repository thettwe/nyann (6 stars, last pushed 3d ago), licensed MIT. It adds 228 tokens to every session and 1,310 once invoked, about $0.0011 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.

Related

Other skills, from other repositories

a11y-remediate

Use to produce a leader-facing remediation proposal from one or more /a11y-audit outputs plus team and product context. Translates audit findings into sprint plans, staffing asks, customer-facing language, compliance rollups, and critical-path analysis. Refuses to fabricate numbers, owners, or commitments beyond the…

gitkraken/vscode-gitlens · 72 tokens

surface-after-care

Regelmäßiger Pflegedurchlauf für ein bereits veröffentlichtes GitHub-Repository (Stufe 1, günstig und oft wiederholbar): zuerst alle Distributionsflächen des Projekts ermitteln (npm, PyPI, Registries, Marketplaces, Stores, Website) und Änderungen später dorthin spiegeln, dann Topics setzen, Privacy-Gate, Dokumente auf…

ellmos-ai/skills · 283 tokens

wp-i18n-workflow

Use when managing the full translation workflow for a WordPress plugin — registering text domain with loadplugintextdomain, wrapping strings with (), e(), eschtml(), escattr(), n(), x(), ex(), nx(), generating POT with wp i18n make-pot, compiling .po to .mo (wp i18n make-mo / msgfmt) and .json (wp i18n make-json)…

mralaminahamed/wp-dev-skills · 303 tokens

full-after-care

Tiefe Pflegerunde für ein veröffentlichtes GitHub-Repository (Stufe 2): enthält den vollständigen surface-after-care-Durchlauf und ergänzt ihn um drei teure Schritte — rechtliche Ersteinschätzung über die Law-Checker mit Wiedervorlage nach einem Jahr (Gutachten bleibt gitignored im Repo), Querverweise zu verwandten…

ellmos-ai/skills · 196 tokens

wp-plugin-release

Use when bumping a WordPress plugin version or cutting a release — syncing version across all sources: plugin header (Version: X.Y.Z), version constant (define MYPLUGINVERSION), readme.txt (Stable tag + Changelog + Upgrade Notice), CHANGELOG.md, and .pot Project-Id-Version; following semver (major/minor/patch) rules…

mralaminahamed/wp-dev-skills · 276 tokens

changelog-generator

Transform technical git commits into polished, user-friendly changelogs and release notes. Automatically categorizes changes, translates developer language into customer-friendly copy, and generates professional changelog entries.

manu14357/zskills · 40 tokens