compendium-lintlisted
Install: claude install-skill SoliEstre/EstreGenesis
# Compendium Lint — gardening checks for the vocabulary store
A controlled-vocabulary store degrades silently: a renamed heading orphans a pointer, a copied definition drifts, a superseded term keeps getting cited. These checks make that degradation **computable**, like a build's verify pass. **Four hard** (build-failing) + **three soft** (gardening signal) — seven checks total. This is the runtime's severity view of the spec's §9 grouping: the four gardening lints (broken-link · orphan · duplicate-concept · stale) plus the pointer-resolution check (slug resolution · no-competing-full-def · redaction) — same seven, sliced by severity instead of by family.
## If the runtime is present (preferred)
```
node plugins/compendium/lint.cjs # check only
node plugins/compendium/lint.cjs --reindex # check + regenerate INDEX.md / index.json + the viewer-agnostic [[id]] projection
node plugins/compendium/lint.cjs --quiet # exit code only (CI)
```
Exit `1` on any **hard** failure; `0` otherwise. Hard failures must be fixed before commit; soft warnings are a gardening worklist.
## If no runtime — apply the checks by inspection
**HARD (must fix):**
1. **broken-link** — every id in `links:` resolves to an existing entry id. A dangling peer link is a hard failure.
2. **pointer-resolution** — `owner_spec` is of the form `<file>#<slug>`, the file exists, and the slug is an **actual heading** in that file (GitHub-style slug: lowercase, spaces→`-`, punctuation dropped). A point