---
name: Caveman
slug: caveman-4
category: Writing
description: Caveman encodes SPEC.md and spec-adjacent writes into compressed symbolic notation, cutting tokens ~75% versus prose while preserving facts. Use it when writing or editing specs, backprop entries, or whenever brevity is requested.
github: "https://github.com/JuliusBrussee/cavekit/tree/main/skills/caveman"
stars: 1142
forks: 86
install: "npx degit https://github.com/JuliusBrussee/cavekit/tree/main/skills/caveman ~/.claude/skills/caveman"
installs_to: ~/.claude/skills/caveman
source_path: skills/caveman/SKILL.md
collection_size: 9
category_size: 1012
collection_url: "https://dirskills.com/collections/JuliusBrussee/cavekit"
added: 2026-08-20T07:56:15.888Z
last_synced: 2026-08-20T07:56:15.888Z
canonical_url: "https://dirskills.com/skills/caveman-4"
---

# Caveman

Caveman encodes SPEC.md and spec-adjacent writes into compressed symbolic notation, cutting tokens ~75% versus prose while preserving facts. Use it when writing or editing specs, backprop entries, or whenever brevity is requested.

**Install:**

```bash
npx degit https://github.com/JuliusBrussee/cavekit/tree/main/skills/caveman ~/.claude/skills/caveman
```

## README

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