Add statusline support and installer/uninstaller hooks, improve compression tooling and docs. Key changes: - Add caveman statusline badge script (hooks/caveman-statusline.sh) and wire it into install/uninstall (hooks/install.sh, hooks/uninstall.sh); installer now requires node, backs up settings.json, and makes the statusline executable. - Enhance SessionStart hook (hooks/caveman-activate.js) to detect missing statusline config and emit a setup nudge; update hooks README with statusline usage and setup instructions. - Add gemini-extension.json, AGENTS.md, and GEMINI.md to register skills and support Gemini CLI installation. - Update README to mention statusline badge, Gemini CLI install, and agent list. - Improve caveman-compress: rename skill (caveman-compress), clarify CLI path/usage in SKILL.md, return on validation failure without overwriting, bump benchmark encoding, and make compressor robust to LLM outer fences by stripping wrapping fences and expanding max_tokens; add explicit rule to avoid wrapping entire output in fences. - Strengthen code-block extraction in validate.py to handle variable-length fences (```/~~~), nested fences, and CommonMark rules. - Minor SKILL.md tweak: resume caveman mode when user asks to clarify or repeats question. These changes integrate a visible status badge for Claude Code users, improve install/uninstall reliability, extend Gemini support, and make the compressor/validator more robust when interacting with LLM outputs.
caveman
why use many token when few do trick
Before/After • Install • Levels • Skills • Benchmarks • Evals
A Claude Code skill/plugin and Codex plugin that makes agent talk like caveman — cutting ~75% of output tokens while keeping full technical accuracy. Now with 文言文 mode, terse commits, one-line code reviews, and a compression tool that cuts ~45% of input tokens every session.
Based on the viral observation that caveman-speak dramatically reduces LLM token usage without losing technical substance. So we made it a one-line install.
Before / After
🗣️ Normal Claude (69 tokens)
|
🪨 Caveman Claude (19 tokens)
|
🗣️ Normal Claude
|
🪨 Caveman Claude
|
Same fix. 75% less word. Brain still big.
Pick your level of grunt:
🪶 Lite
|
🪨 Full
|
🔥 Ultra
|
📜 文言文
|
Same answer. You pick how many word.
┌─────────────────────────────────────┐
│ TOKENS SAVED ████████ 75% │
│ TECHNICAL ACCURACY ████████ 100%│
│ SPEED INCREASE ████████ ~3x │
│ VIBES ████████ OOG │
└─────────────────────────────────────┘
- Faster response — less token to generate = speed go brrr
- Easier to read — no wall of text, just the answer
- Same accuracy — all technical info kept, only fluff removed (science say so)
- Save money — ~71% less output token = less cost
- Fun — every code review become comedy
Install
Claude Code (recommended)
Install as a plugin — includes skills + auto-loading hooks + statusline badge. Caveman activates every session, [CAVEMAN:ULTRA] badge tracks mode, Claude sets up the statusline on first session:
claude plugin marketplace add JuliusBrussee/caveman
claude plugin install caveman@caveman
Any agent (Claude Code, Cursor, Copilot, Windsurf, Cline, Codex, Gemini CLI, Antigravity)
npx skills add JuliusBrussee/caveman
For a specific agent: npx skills add JuliusBrussee/caveman -a cursor
Note
npx skillsinstalls skills only (no hooks). For Claude Code auto-loading hooks, use the plugin install above or runbash hooks/install.sh. Gemini CLI users can also install directly:gemini extensions install https://github.com/JuliusBrussee/caveman
Codex
- Clone repo → Open Codex in repo →
/plugins→ SearchCaveman→ Install
Note
Windows Codex users: Clone repo → VS Code → Codex Settings → Plugins → find
Cavemanunder local marketplace → Install → Reload Window. Also enablegit config core.symlinks truebefore cloning (requires developer mode or admin).
Install once. Use in all sessions after that. One rock. That it.
Statusline Badge
The plugin ships a statusline script that shows [CAVEMAN], [CAVEMAN:ULTRA], etc. in your Claude Code status bar.
- Plugin install: Claude offers to configure it on first session (auto-detected)
- Standalone install (
install.sh): Configured automatically - Custom statusline: See
hooks/README.mdfor the snippet to add to your existing script
Usage
Trigger with:
/cavemanor Codex$caveman- "talk like caveman"
- "caveman mode"
- "less tokens please"
Stop with: "stop caveman" or "normal mode"
Intensity Levels
| Level | Trigger | What it do |
|---|---|---|
| Lite | /caveman lite |
Drop filler, keep grammar. Professional but no fluff |
| Full | /caveman full |
Default caveman. Drop articles, fragments, full grunt |
| Ultra | /caveman ultra |
Maximum compression. Telegraphic. Abbreviate everything |
文言文 (Wenyan) Mode
Classical Chinese literary compression — same technical accuracy, but in the most token-efficient written language humans ever invented.
| Level | Trigger | What it do |
|---|---|---|
| Wenyan-Lite | /caveman wenyan-lite |
Semi-classical. Grammar intact, filler gone |
| Wenyan-Full | /caveman wenyan |
Full 文言文. Maximum classical terseness |
| Wenyan-Ultra | /caveman wenyan-ultra |
Extreme. Ancient scholar on a budget |
Level stick until you change it or session end.
Caveman Skills
| Skill | What it do | Trigger |
|---|---|---|
| caveman-commit | Terse commit messages. Conventional Commits. ≤50 char subject. Why over what. | /caveman-commit |
| caveman-review | One-line PR comments: L42: 🔴 bug: user null. Add guard. No throat-clearing. |
/caveman-review |
caveman-compress
Caveman make Claude speak with fewer tokens. Compress make Claude read fewer tokens.
Your CLAUDE.md loads on every session start. Caveman Compress rewrites memory files into caveman-speak so Claude reads less — without you losing the human-readable original.
/caveman:compress CLAUDE.md
CLAUDE.md ← compressed (Claude reads this every session — fewer tokens)
CLAUDE.original.md ← human-readable backup (you read and edit this)
| File | Original | Compressed | Saved |
|---|---|---|---|
claude-md-preferences.md |
706 | 285 | 59.6% |
project-notes.md |
1145 | 535 | 53.3% |
claude-md-project.md |
1122 | 687 | 38.8% |
todo-list.md |
627 | 388 | 38.1% |
mixed-with-code.md |
888 | 574 | 35.4% |
| Average | 898 | 494 | 45% |
Code blocks, URLs, file paths, commands, headings, dates, version numbers — anything technical passes through untouched. Only prose gets compressed. See the full caveman-compress README for details. Security note: Snyk flags this as High Risk due to subprocess/file patterns — it's a false positive.
Benchmarks
Real token counts from the Claude API (reproduce it yourself):
| Task | Normal (tokens) | Caveman (tokens) | Saved |
|---|---|---|---|
| Explain React re-render bug | 1180 | 159 | 87% |
| Fix auth middleware token expiry | 704 | 121 | 83% |
| Set up PostgreSQL connection pool | 2347 | 380 | 84% |
| Explain git rebase vs merge | 702 | 292 | 58% |
| Refactor callback to async/await | 387 | 301 | 22% |
| Architecture: microservices vs monolith | 446 | 310 | 30% |
| Review PR for security issues | 678 | 398 | 41% |
| Docker multi-stage build | 1042 | 290 | 72% |
| Debug PostgreSQL race condition | 1200 | 232 | 81% |
| Implement React error boundary | 3454 | 456 | 87% |
| Average | 1214 | 294 | 65% |
Range: 22%–87% savings across prompts.
Important
Caveman only affects output tokens — thinking/reasoning tokens are untouched. Caveman no make brain smaller. Caveman make mouth smaller. Biggest win is readability and speed, cost savings are a bonus.
A March 2026 paper "Brevity Constraints Reverse Performance Hierarchies in Language Models" found that constraining large models to brief responses improved accuracy by 26 percentage points on certain benchmarks and completely reversed performance hierarchies. Verbose not always better. Sometimes less word = more correct.
Evals
Caveman not just claim 75%. Caveman prove it.
The evals/ directory has a three-arm eval harness that measures real token compression against a proper control — not just "verbose vs skill" but "terse vs skill". Because comparing caveman to verbose Claude conflate the skill with generic terseness. That cheating. Caveman not cheat.
# Run the eval (needs claude CLI)
uv run python evals/llm_run.py
# Read results (no API key, runs offline)
uv run --with tiktoken python evals/measure.py
Snapshots committed to git. CI runs free. Every number change reviewable as diff. Add a skill, add a prompt — harness pick it up automatically.
Star This Repo
If caveman save you mass token, mass money — leave mass star. ⭐
Also by Julius Brussee
- Cavekit — specification-driven development for Claude Code. Caveman language → specs → parallel builds → working software.
- Revu — local-first macOS study app with FSRS spaced repetition, decks, exams, and study guides. revu.cards
License
MIT — free like mass mammoth on open plain.
