Diagnose
Nyann (ငြမ်း) is Burmese for scaffolding. Nyann is a Claude Code plugin that sets up and maintains project governance.
npx -y skills add thettwe/nyann --skill diagnoseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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 config (token-redacted) + installed hook contents + nyann user-config (token-redacted) + check-prereqs into a single JSON or human-readable summary. TRIGGER when the user says "nyann is broken", "nyann diagnose", "diagnose nyann", "diagnose this repo", "support bundle", "what's wrong with nyann", "help me file a bug report", "what should I include in a nyann bug report", "/nyann:diagnose". Do NOT trigger on "is this repo healthy" — that's `doctor` (read-only audit). Do NOT trigger on "what does nyann see here" — that's `explain-state` (lighter snapshot, no health, no hook contents). Do NOT trigger on "fix this repo" — that's `retrofit`.
SKILL.md
4.4 KB, as published. Nobody here has run it
diagnose
Read-only support bundle. Aggregates everything a maintainer needs to reproduce or pinpoint a nyann bug into one paste-friendly output.
When to trigger
- User reports nyann broke on their repo and wants to file a bug
- User asks for a "support bundle", "diagnostic dump", or wants to know what to include in an issue
- User says nyann is misbehaving and wants help collecting evidence
What gets bundled
bin/diagnose.sh collects, in one structured JSON object:
nyann_version— from.claude-plugin/plugin.jsonhost—uname -srm, bash version, jq/git/gh versionsrepo—bin/explain-state.sh --jsonoutput (stack, profile, branching, hooks, CLAUDE.md, recent commits)health—bin/doctor.sh --jsonoutput (drift report + health score)git—git config --listlines +git status --porcelain, with embedded URL credentials redacted vianyann::redact_urlhook_files— first 8 KB of.git/hooks/pre-commit,.git/hooks/commit-msg,.husky/pre-commit,.husky/commit-msg,.pre-commit-config.yaml(eachnullwhen absent)nyann_config—~/.claude/nyann/preferences.json+team_profile_sources[]with URLs redactedprereqs—bin/check-prereqs.sh --json
Every field flows through redaction. The bundle is safe to paste into a public GitHub issue.
Execution flow
Phase 1: Explain what diagnose collects
Tell the user: "I'll run bin/diagnose.sh against this repo. It collects state, drift, hooks, and configuration into one bundle. URL credentials and tokens are redacted before output."
Phase 2: Run the bundle
Run bin/diagnose.sh --target . --json (default mode is human-readable; --json for the paste-into-issue version).
If the user wants to share publicly, suggest:
- Pipe to a file:
bin/diagnose.sh --target . --json > nyann-diagnose-$(date +%Y%m%d).json - OR use the human-readable mode (
bin/diagnose.sh --target .) for a quick eyeball summary
Phase 3: Surface the obvious problems
Before handing the bundle off, look at:
health.summary.broken_links> 0 → user has broken internal linkshealth.summary.missing> 0 → user has missing hygiene filesrepo.claude_md.bytes> 8192 → CLAUDE.md over the hard capprereqs[].statusofmissingfor anykind: hard→ nyann lacks a required tool
Mention the obvious ones; the maintainer will look at the bundle for the rest.
Phase 4: Where to file
Direct the user to the right surface:
- Bug report: https://github.com/thettwe/nyann/issues/new; paste the JSON bundle into a
<details>block - Security issue: see
SECURITY.md; do NOT open a public issue
Key constraints
- Read-only. Mirrors doctor's contract: never writes, never persists, never opens a network call beyond what
doctor --jsonalready does. - Redaction is the contract. Any URL with embedded credentials passes through
nyann::redact_urlbefore emission. Tokens never reach stdout. - Truncated hook content (8 KB cap) so a multi-MB hook script doesn't bloat the bundle.
- Per-tier degradation: if
ghis missing, the bundle still emits withhost.gh = "missing". If~/.claude/nyann/preferences.jsondoesn't exist,nyann_config = null. If the target isn't a git repo,git,health, andrepoare stub-empty but the bundle still emits.
When to hand off
- "Fix the issues" / "remediate" →
retrofitskill (targeted fixes) ordoctorskill (audit first, then decide). - "Just check health, not a full bundle" →
doctorskill. - "What does nyann see here?" →
explain-stateskill (lighter, no health or hook contents).