CHANGELOG
v4.1.0 — the full loop
Additive. Backward compatible with v4.0.0 — the three-command core is
unchanged; §R is optional; existing SPEC.md files still parse. Every
change below traces to a documented pain point or a research finding, not
a hunch.
added — four reach-for verbs
The core loop stays spec → build → check. Four new verbs join it, each
opt-in and right-sized — you reach for them only when the change earns it:
/ck:grill— calibrated interrogation of a fuzzy idea into a sharp§G/§C, one question at a time, before a spec exists./ck:research— external knowledge into the new§Rlog; every finding cites a source, unverified ones flagged, never written as fact./ck:review— adversarial senior review of the spec before build: refutes rather than rubber-stamps, hardens§V, ends in a go/no-go gate./ck:deepen— spare-budget design pass. Picks the one shallowest module, proposes a deeper shape, holds behavior constant (tests green before and after).
added — format
§R RESEARCH— optional pipe-table log of external knowledge (id|topic|finding|src).- Sectioned ownership — each verb writes only the sections it owns; no
verb rewrites a foreign section.
specremains the sole general mutator. - Right-size rule — ceremony scales to blast radius, never to ego.
changed
buildnow names the exact test that proves each§Vit touches (a verification contract) instead of "add tests" — "do TDD" alone backfires.buildreads§Rso it grounds in researched facts, not re-derivation.checkreframed as the drift detector: run after each build, before each ship.- skill descriptions kept ultra-tight — nine descriptions cost ~1.1k context, 16× lighter than spec-kit's 18.6k.
why — pain points → changes (sourced)
| pain point (source) | change |
|---|---|
| Token / context tax — spec-kit loads ~18.6k tokens every session (spec-kit #1401); BMAD burns 80–100k/step (#1188) | caveman descriptions keep cavekit's whole nine-skill set at ~1.1k context — 16× lighter |
| Specs drift silently with no detector (OpenSpec #1212; spec-kit #1686) | check reframed as the drift detector, run every build |
| Ceremony overkill — 10–15× overhead, "sledgehammer for a nut" (BMAD #2003; HN 45610996) | right-size rule; core stays 3 commands; verbs are opt-in |
| Agents ignore the spec / mark done without doing (spec-kit #230; BMAD #446) | build verification contract names which test proves each §V |
| "Process without library context = organized hallucinations" (Tessl) | /research + durable §R external-knowledge log |
| No tool adversarially reviews the plan before build (competitor scan) | /review — separate skeptic anchored to an external oracle |
| Tools overwrite/delete spec files (Kiro #5239; Conductor) | sectioned ownership — no verb rewrites a section it does not own |
why — research backing
- Spec as durable external memory across context resets — Anthropic, Effective Context Engineering (2025); the core justification for SDD.
- Plan in a separate phase — ADaPT (NAACL 2024).
- Verification contract names which tests, not "do TDD" — TDAD (2026).
- Critique must be external + adversarial, not introspective — LLMs cannot self-correct alone (Huang et al., ICLR 2024); separate-critic debate works (Du et al., ICML 2024).
- Gate effort by difficulty — Self-Critique Paradox (Snorkel, 2025); right-size follows directly.
- Deep modules — Ousterhout, A Philosophy of Software Design (
/deepen).
v4.0.0 — the rewrite
Full rewrite. Not backward compatible with v3.x. Different shape, same name.
philosophy
Kept only what earned its tokens:
SPEC.md— durable, addressable, caveman-encoded- three commands —
/ck:spec,/ck:build,/ck:check - two skills —
cavemanencoding,backpropprotocol
added
- single
SPEC.mdformat with six addressable sections (§G §C §I §V §T §B) - pipe-table encoding for §T (tasks) and §B (bugs)
- caveman symbol set (→ ∴ ∀ ∃ ! ? ⊥ ≠ ∈ ∉ ≤ ≥ & |) as default for spec writes
- bug → §B → §V backprop reflex wired into
/ck:buildfailure path /ck:spec from-code— distill spec from existing codebase/ck:check— read-only drift report (replaces five v3 review flavors)npx skills add JuliusBrussee/cavekitone-line install path (commands + skills)
removed (relative to v3.1.0)
- 13 of 16 commands (sketch/map/make/ship/review/revise/status/init/config/resume/help/design/research/team/make-parallel)
- all 12 named sub-agents
- 19 of 21 skills
- Go binary and source (
cmd/,internal/,bin/,cavekitexecutable) - shell hooks (
hooks/,scripts/cavekit-launch-session.sh, stop-hook state machine) - TS tooling (
scripts/cavekit-picker.ts,scripts/cavekit-router.cjs) - Codex peer-review bridge (
.codex-plugin/) context/kits/,context/plans/,context/impl/,context/refs/directories- autonomous loop, per-task budgets, model-tier routing
- design-system
DESIGN.mdworkflow - knowledge-graph
graphify-out/integration - parallel wave execution and team mode
install.sh(216 lines → 0)
changed
- caveman was opt-in for inter-agent chatter in v3; default for spec writes in v4
- version: 3.1.0 → 4.0.0 (major rewrite, semver respected)
- README, plugin metadata, marketplace entry
migration
See Migrate from v3. No automated migrator — the v3 kit
shape does not map cleanly to v4's single file. Recommended path: run
/ck:spec from-code on your existing v3 project to distill a v4 spec
from your built code.
v3 reachability
v3 is frozen at tag v3.1.0. Stays installable and documented. Fixes
only for critical bugs; no new features.
v3.1.0 and prior
See git log before the v4.0.0 commit, or check out v3.1.0:
git checkout v3.1.0