doc-enforce-laneslisted
Install: claude install-skill nikolanovoselec/codeflare
# Documentation Enforcement — Lane discipline
This skill enforces the rules that police what content belongs in which `documentation/*` file. Invoked by `doc-enforce` (the spine) per file in diff.
## Inputs
- `diff`: git diff against base
- `scope`: `all` | `diff`
- `mode`: `interactive` | `auto` | `unleashed`
- `files`: list of changed doc files in diff (when scope=diff)
- `layout`: `nested` | `flat` (auto-detected by parent `doc-enforce`)
**Layout-awareness.** Lane-violation auto-fix proposals resolve the target lane file path per the detected layout:
- Nested: target lane = `documentation/lanes/{file}.md`
- Flat: target lane = `documentation/{file}.md`
The lane signatures (the WHAT) are layout-invariant; only the WHERE-it-goes path changes.
## Output
Returns findings array + auto-fix actions. Writes evidence-count rows back to the spine's manifest:
- `Pass 3 — Implementation-prose detection`: `ran (K files, M findings)`
- `Pass 4 — Lane-violation detection`: `ran (K files, M findings)`
## Pass 3 — Implementation-prose detection
Scan each file for paragraphs that read like AC text (`must`, `shall`, `ensures that`, `the system rejects`). These belong in `sdd/`. Flag MEDIUM with target REQ ID (or "no matching REQ": HIGH because it indicates an unspec'd feature).
Detection heuristic:
1. Paragraph contains >=2 of the AC-shape tokens: `must`, `shall`, `MUST`, `the system`, `rejects`, `ensures that`, `requires that`.
2. Paragraph is not inside a fenced code block.
3. Pa