add-team-source
Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER when the user says "add a team…
Embed a signed trend delta in the narrative header (e.g. `-8` for a 8-point regression). Optional.
$ npx -y skills add thettwe/nyann --skill explain-diff --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/explain-diffContext preview
The summary Claude sees to decide when to auto-load this skill.
Embed a signed trend delta in the narrative header (e.g. `-8` for a 8-point regression). Optional.
name: explain-diff
description: >
Translate a DriftReport JSON into a plain-English markdown narrative
suitable for pasting into a PR description, chat thread, or bug
report. Read-only template render — no LLM call, no filesystem
mutation. Pairs with `doctor` via the `--explain` flag, or runs
standalone against any DriftReport produced by `bin/compute-drift.sh`
/ `bin/retrofit.sh --json` / `bin/doctor.sh --json`.
TRIGGER when the user says "explain the drift", "summarize doctor in
plain English", "what does this drift report mean", "narrate the
drift", "translate the drift report", "human-readable drift",
"explain what nyann found", "make doctor output paste-friendly",
"give me a drift summary for the PR", "/nyann:explain-diff".
Do NOT trigger on "what's drifted" alone — that's `doctor` /
`retrofit --report-only` (which produce the raw structured report
this skill consumes). Do NOT trigger on "fix the drift" — that's
`retrofit`.
arguments:
- name: file
description: Path to a DriftReport JSON file. Use `-` to read from stdin.
- name: format
description: Output format — `markdown` (default, human-readable) or `json` (DriftNarrative shape per schemas/drift-narrative.schema.json).
optional: true
- name: with-health
description: Embed a health score (0-100) in the narrative header. Optional.
optional: true
- name: with-trend
description: Embed a signed trend delta in the narrative header (e.g. `-8` for a 8-point regression). Optional.
optional: trueRead-only template render. Wraps `bin/explain-diff.sh`.
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.
**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.
| Severity | Lead | Sources | |---|---|---| | critical | "Action required:" | `missing[]`, broken links, `claude_md=error` | | high | "Worth fixing:" | `misconfigured[]`, `claude_md=warn` / `absent`, subsystem errors | | medium | "Drifted:" | `orphans`, staleness, `misplaced[]` | | low | "Minor:" | non-compliant history (informational; nyann doesn't rewrite history) | | info | (suppressed in markdown) | reserved for downstream filtering via the JSON shape |
The mapping is intentionally fixed (no profile-level override) so a narrative pasted into a PR reads the same regardless of which profile produced the underlying report.
When the user asks for "the drift in plain English":
ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR
Repo: thettwe/nyann
Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER when the user says "add a team…
Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow", "bootstrap this repo", "scaffold…
Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for nyann", "what do I need to…
Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged branches", "prune local…
Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user says "commit these changes",…
Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines explain-state + doctor + git…