check
Read-only drift detector. Diffs SPEC.md against current code and reports violations grouped by severity. Writes nothing — suggests remedies via the spec or build skills but never invokes them. Triggers when the user asks to check drift, audit the spec, verify invariants, or ask whether code still matches the spec. Phrasings: "check drift", "audit the spec", "does the code still match §V", "check invariants", "spec vs code".
Overview
check — drift report
Pure diagnostic. Reports violations. Writes nothing. User decides remedy.
Spec drifting silently from code is the #1 SDD failure mode. check is the detector. Run it after each /build and before each ship — drift caught here is a diff; drift caught in prod is a §B.
LOAD
- Read
SPEC.md. If missing → "no spec, nothing to check." Stop. - Parse invocation args:
§V→ check invariants only (default)§I→ check interfaces§T→ audit task status vs code--all→ all three
CHECK §V — invariants
For each V:
- Translate invariant into verifiable claim about code.
- Grep / read relevant files.
- Classify: HOLD / VIOLATE / UNVERIFIABLE.
- Record address + file:line evidence.
CHECK §I — interfaces
For each I item:
- Locate implementation.
- Classify:
- MATCH — shape in code = shape in spec.
- DRIFT — impl exists, shape differs.
- MISSING — impl absent.
- EXTRA — code exposes surface not in §I.
CHECK §T — tasks
For each T:
- If
x: verify claimed work present. - If
~: note as in-progress. - If
.: note as pending. - Flag
xrows with no evidence as STALE.
REPORT
Caveman. Grouped by severity.
## §V drift
V2 VIOLATE: auth/mw.go:47 uses `<` not `≤`. see §B.1.
V5 UNVERIFIABLE: no test covers ∀ req path.
## §I drift
I.api DRIFT: POST /x returns `{result}` not `{id}`. route.go:112.
I.cmd MISSING: `foo bar` absent from cli/*.go.
## §T drift
T3 STALE: status `x`, no middleware file exists.
## summary
2 violate. 1 missing. 1 stale. 1 unverifiable.
next: spec skill with `bug:` or fix code at cited lines.REMEDY HINTS (not actions)
End report with one-line hint per class:
- VIOLATE / DRIFT → invoke spec skill
bug: <V.n>or fix code. - MISSING → invoke build skill on
§T.nif task exists; else spec skillamend §T. - STALE → spec skill
amend §Tto uncheck. - EXTRA → spec skill
amend §Ito document, or delete code.
Never invoke fixes. Report only.
NON-GOALS
- Zero writes. No SPEC.md edits. No code edits.
- No sub-agents. Main thread reads.
- No scores, no grades. Binary per item: holds or drifts.
Files 1 file
Install it by hand
Deska runs this for you, for every agent you pick. To run it yourself in a terminal:
npx skills add juliusbrussee/cavekit --skill checkMore from juliusbrussee
- cavemanjuliusbrusseeTerse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".559.5K installs on skills.sh0
- caveman-commitjuliusbrusseeWrite a Conventional Commits message compressed to intent only. Use for "write a commit", "commit message", /commit or /caveman-commit.394K installs on skills.sh0
- caveman-reviewjuliusbrusseeCompressed code review - one line per finding with location, problem and fix. Use for /caveman-review, "review this PR", or "review the diff".389.9K installs on skills.sh0
- caveman-compressjuliusbrusseeCompress a memory file such as CLAUDE.md or a todo list into caveman format to save input tokens, keeping a readable backup. Trigger: /caveman-compress.388.3K installs on skills.sh0
- caveman-helpjuliusbrusseeQuick-reference card for the three caveman skills and their commands. Trigger: /caveman-help or "caveman help".380.9K installs on skills.sh0