caveman
juliusbrussee/cavekit
Token-efficient spec encoding for SPEC.md—cuts prose ~75% while preserving precision.
What is caveman?
Caveman is a compression grammar for specification documents that replaces verbose prose with symbols, fragments, and structured notation. Use it when writing or updating SPEC.md files, or when explicitly requested to compress technical writing while maintaining accuracy.
- Replaces articles, filler, and auxiliary verbs with fragments and symbols
- Provides symbol set (→, ∴, ∀, ∃, !, ?, ⊥, ≠, ∈, ∉, ≤, ≥, &, |, §) for common technical relations
- Defines structured shapes for invariants, bug rows, task rows, and interfaces
- Preserves code, paths, URLs, identifiers, numbers, error strings, and quoted content verbatim
- Automatically triggers on writes to SPEC.md or user keywords like 'caveman', 'compress this', 'be brief'
How to install caveman
npx skills add https://github.com/juliusbrussee/cavekit --skill cavemanHow to use caveman
- 1.Install via: npx skills add https://github.com/juliusbrussee/cavekit --skill caveman
- 2.Write or edit SPEC.md files; caveman encoding applies automatically
- 3.Use symbols (→, ∴, ∀, ∃, !, ?, etc.) instead of prose equivalents
- 4.Structure invariants as V<n>: <subject> <relation> <condition>
- 5.Create bug and task tables under §B and §T sections with pipe-delimited rows
- 6.Preserve code blocks, paths, URLs, identifiers, numbers, and quoted strings verbatim
- 7.Switch to normal English for external specs, commit messages, or when user requests prose explanation
Use cases
- Writing or updating SPEC.md files to reduce token overhead in version control and review
- Documenting invariants and constraints using formal notation (V1, V2, etc.)
- Tracking bugs and tasks in pipe-table format with citations to invariants
- Specifying APIs, commands, and environment variables in compact form
- Compressing technical prose in spec-adjacent documentation while preserving external-facing docs in standard English
- Engineers writing or maintaining specification documents
- Teams using SPEC.md for architecture and requirements tracking
- Developers working with coding agents (Claude Code, Cursor) that load specs
- Technical leads documenting invariants and constraints
caveman FAQ
No. Code blocks, snippets, paths, URLs, identifiers, error strings, SQL, regex, JSON, YAML, and quoted strings are never compressed—always preserved verbatim.
Use normal English for commit messages, PR descriptions, external-facing specs (RFC, pitch), diff comments in code, and when a user explicitly asks for a prose explanation.
→ (leads to/becomes), ∴ (therefore/fix), ∀ (for all), ∃ (exists), ! (must/required), ? (optional/unknown), ⊥ (forbidden/nil), ≠ (not equal), ∈ (in), ∉ (not in), ≤ (at most), ≥ (at least), & (and), | (or), § (section reference).
Invariants: V<n>: <subject> <relation> <condition>. Bug rows: id|date|cause|fix. Task rows: id|status|task|cites. Status uses x (done), ~ (wip), . (todo). Escape literal | as \|.
Keep the word. Caveman is compression, not amputation. Preserve any content necessary for accuracy.
Full instructions (SKILL.md)
Source of truth, from juliusbrussee/cavekit.
name: caveman description: | Caveman encoding for SPEC.md and spec-adjacent writes. Loaded by /spec, /build, /check. Cuts tokens ~75% vs prose while staying precise. Triggers on any write to SPEC.md or when user says "caveman", "compress this", "be brief".
caveman — spec encoding
Applies to SPEC.md writes, spec-referencing prose, backprop entries. Does NOT apply to code, error strings, commit messages, PR descriptions.
GRAMMAR
- Drop articles (a, an, the).
- Drop filler (just, really, basically, simply, actually).
- Drop aux verbs where fragment works (is, are, was, were, being).
- Drop pleasantries.
- No hedging (skip "might", "perhaps", "could be worth").
- Fragments fine.
- Short synonyms: fix > implement, big > extensive, run > execute.
SYMBOLS
Prefer over words:
→ leads to / becomes / on <x>
∴ therefore / fix
∀ for all / every
∃ exists / some
! must / required
? may / optional / unknown
⊥ never / forbidden / nil
≠ not equal
∈ in
∉ not in
≤ at most
≥ at least
& and
| or
§ section reference
PRESERVE VERBATIM
Never compress:
- Code blocks, snippets, one-liners with backticks.
- Paths:
src/auth/mw.go. - URLs.
- Identifiers: function names, variable names, env vars.
- Numbers and versions.
- Error message strings.
- SQL, regex, JSON, YAML.
- Quoted strings.
SHAPES
Invariant:
V<n>: <subject> <relation> <condition>
V1: ∀ req → auth check before handler
V2: token expiry ≤ current_time → reject
Bug row (pipe table under §B):
id|date|cause|fix
B1|2026-04-20|token `<` not `≤`|V2
Task row (pipe table under §T):
id|status|task|cites
T3|x|add auth mw|V1,I.api
Status: x done, ~ wip, . todo. Escape literal | as \|.
Interface:
<kind>: <name> → <shape>
api: POST /x → 200 {id:string}
cmd: `foo bar <arg>` → stdout JSON
env: FOO_KEY ! set
EXAMPLES
Bad:
The system should ensure that every incoming request is properly authenticated before being forwarded to its corresponding handler function.
Good:
V1: ∀ req → auth check before handler
Bad:
We discovered that the token expiration check in the middleware was using a strict less-than comparison operator, which meant tokens were being rejected at the exact moment of their expiry.
Good:
B1: token
<not≤→ reject @ expiry boundary.
Bad:
The POST endpoint at /x accepts a JSON body and returns a 200 response with an object containing the created id.
Good:
api: POST /x → 200 {id}
BOUNDARIES
- User asks for prose explanation → switch to normal English.
- Spec documents for external review (RFC, pitch) → normal English.
- Commit message → normal English (git readers expect it).
- Diff comment in code → normal English.
WHEN UNSURE
If cutting a word loses a fact, keep it. Caveman is compression, not amputation.
Related skills
More from juliusbrussee/cavekit and the wider catalog.

check
Read-only drift detector that diffs SPEC.md against code and reports violations without making changes.

spec
Create and maintain SPEC.md—the single source of truth for project goals, constraints, invariants, and bugs.

backprop
Trace bugs to root cause and edit specs to prevent recurrence.

build
Plan-then-execute implementation against SPEC.md with automatic backprop on failure.

cavecrew
Delegate to compressed subagents—investigator, builder, reviewer—to keep main context lean across long sessions.

caveman
Cut token usage ~75% with caveman-mode responses — full technical accuracy, zero fluff