explain-statelisted
Install: claude install-skill thettwe/nyann
# 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 out `confidence < 0.5` as "weak detection — might
be worth confirming".
- **profile** → "Active profile: `<name>` (source: `<starter|user|
team|unknown>`)". When source is `unknown`, 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 to `doctor`.
- **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