explain-state
Read-only. Never mutates. Wraps bin/explain-state.sh.
1. Invoke
bin/explain-state.sh --target <cwd> [--json] [--profile <name>]
- No args → human-readable table, easy to read back to the user.
--json→ machine-readable JSON when the user wants to pipe it or you need structured fields for a follow-up operation.--profile <name>→ override profile inference when the user names one explicitly.
2. Read the output aloud
The JSON has six blocks. When the user asks a general "what's the state", summarize the highlights rather than dumping the whole structure:
- stack → "Detected
<primary_language>" + framework + package manager. Call outconfidence < 0.5as "weak detection — might be worth confirming". - profile → "Active profile:
<name>(source:<starter|user| team|unknown>)". When source isunknown, say "couldn't infer the profile; CLAUDE.md doesn't reference one". - branching → "Strategy:
<strategy>; base branches:<list>". If null, profile isn't resolved. - hooks → "Husky:
<bool>/ pre-commit.com:<bool>/ nyann core hooks:<bool>". These are presence signals only — they tell you whether something's wired, not whether it's healthy. For health, route todoctor. - claude_md → "CLAUDE.md present,
<bytes>bytes, router markers<bool>". Mention the 3 KB soft / 8 KB hard budget if bytes > 3072. - recent_commits → Mention the count; read back the 1-2 most recent subjects.
3. Follow-up routing
The whole point of explain-state is to help the user decide what to do next. Offer one or two next steps based on what's present:
- Stack but no profile → suggest
bootstrap-projectwith a matching profile name. - Profile but no hooks wired → suggest re-running
/nyann:retrofitto install the hook bundle. - CLAUDE.md missing router markers → note it can be regenerated via
/nyann:retrofit. - Everything present and clean → "Looks set up. Want a deeper audit?
Run
doctorfor drift checks."
4. When the profile field shows (unknown)
CLAUDE.md wasn't generated by nyann (or the marker block has been removed). Don't treat this as a bug — some users intentionally hand- curate CLAUDE.md. Ask whether they want to re-bootstrap or leave it manually-maintained.
When to hand off
- "Is it healthy?" / "What's drifted?" →
doctorskill. - "What does
nextjs-prototypedo?" →inspect-profile. - "Set this up with the right profile" →
bootstrap-project. - "I want to change the branching strategy" → edit the profile (or pick a different one) and re-bootstrap.