Check

by juliusbrussee7421e87d5b51No license1.1K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 7 weeks ago

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".

Instructions onlySoftware Development
AI-generated overview

Read-only drift detector that diffs SPEC.md against code and reports violations by severity.

What it does
Reads SPEC.md and compares it against the current codebase, checking invariants (§V), interfaces (§I) and task status (§T). Each item is classified as holding, violating, drifting, missing, extra, stale or unverifiable, with file and line evidence. It produces a severity-grouped report with a summary count and one-line remedy hints, and writes nothing.
When to use it
Use after a build step or before shipping, when you want to know whether the code still matches the spec. Also suited to requests to check drift, audit the spec, verify invariants, or compare spec against code.
Requirements
Requires a SPEC.md file in the working context and read access to the codebase. Instructions only; ships no scripts and needs no credentials or network access.

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

  1. Read SPEC.md. If missing → "no spec, nothing to check." Stop.
  2. 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<n>:

  1. Translate invariant into verifiable claim about code.
  2. Grep / read relevant files.
  3. Classify: HOLD / VIOLATE / UNVERIFIABLE.
  4. Record address + file:line evidence.

CHECK §I — interfaces

For each I item:

  1. Locate implementation.
  2. 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<n>:

  1. If x: verify claimed work present.
  2. If ~: note as in-progress.
  3. If .: note as pending.
  4. Flag x rows with no evidence as STALE.

REPORT

Caveman. Grouped by severity.

## §V driftV2 VIOLATE: auth/mw.go:47 uses `<` not `≤`. see §B.1.V5 UNVERIFIABLE: no test covers ∀ req path.
## §I driftI.api DRIFT: POST /x returns `{result}` not `{id}`. route.go:112.I.cmd MISSING: `foo bar` absent from cli/*.go.
## §T driftT3 STALE: status `x`, no middleware file exists.
## summary2 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.n if task exists; else spec skill amend §T.
  • STALE → spec skill amend §T to uncheck.
  • EXTRA → spec skill amend §I to 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.

Source and attribution

Source:juliusbrussee/cavekitinskills/checkat commit7421e87

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal