caveman. terse. fragments OK. drop articles/filler. code, paths, identifiers verbatim.
- §G — goal. 1-3 lines, what the thing does.
- §C — constraints.
Cn, stated or implied limits. - §I — interfaces.
I.name, external surfaces — APIs, CLIs, files, env. - §V — invariants.
Vn, must-hold properties. test-checkable. - §T — tasks. pipe table, ordered, build units.
- §R — risks.
RTn, known risks + resolved-by refs. (extension; optional) - §B — bugs. pipe table, one row per bug hit.
fenced block. cols: id | st | desc | cites
stglyph —.todo ·~wip ·xdonecites— comma list of §V / §C / §I deps. e.g.V2,I.emitidmonotonicT1..— never reuse.
fenced block. cols: id | date | cause | fix
idmonotonicB1..— never reuse. every bug gets a row.
- numbering monotonic across all sections. never reuse
Vn/Tn/Bn/RTn. /ck:specsole mutator of SPEC.md.amendtouches only the named section — never silently rewrite others.- preserve paths, code, identifiers verbatim — caveman compresses prose, not symbols.
- no auto-build after spec —
/ck:buildinvoked explicitly.