document-healthlisted
Install: claude install-skill erclx/canon
# Document health
Reports which documents have rotted rather than which are missing. `target-check` answers whether a project's documents exist and hold the right kind of content, and this answers whether the ones that exist still earn their place. It reports and never repairs, matching the structural check beside it.
Three axes carry the report. Two answer from a verb and the third answers from a reading, which it says rather than hiding. `${CLAUDE_SKILL_DIR}/references/axes.md` holds what each axis measures, the checkpoint it reads against, and where a finding routes. This body holds the order, the guards, and the report shape.
## Guards
- `canon` absent from the path: stop. `❌ canon is not on PATH, so neither measured axis can be read.`
- `git ls-files '*.md'` listing nothing: stop. `❌ No tracked markdown here, so there is no corpus to read.`
- Run every command under `CANON_NON_INTERACTIVE=1` and prompt at no point. A caller reaching this from a rollout wave has nobody present to answer.
- Branch on each record's own fields rather than on an exit status. An operator's shell profile may wrap `canon` in a function whose status comes from a trailing command, which reports every refusal as success.
- Repair nothing, write no file in the project, and open no pull request. Whoever read the report decides what to fix.
## Step 1: scope the corpus
Take the documents the project hand-authors, defaulting to every tracked markdown file the two measured verbs reach. Narrow to a