caveman
Reduce AI output tokens by 65% by adopting a concise, caveman-style communication mode without sacrificing technical accuracy.

Suggested prompts
About this skill
Caveman
Caveman is a skill/plugin for AI coding agents that makes the agent talk like a caveman: it drops filler words and answers in tight, direct 'caveman-speak', while keeping code, commands, and errors byte-for-byte exact. According to the README, this produces the same answers with about 65% fewer output tokens.
It works with Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and 30+ other agents. The honest caveat is that Caveman only reduces output tokens; input and reasoning tokens are not reduced, and the skill itself adds roughly 1–1.5k input tokens per turn.
Who it's for
- Developers using AI coding agents who want shorter, more readable replies without losing technical accuracy.
- Anyone paying for output tokens and curious about reducing them, while understanding that the real win is readability and speed, not guaranteed cost savings.
- Users of Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and the 30+ other supported agents.
Before / After
Normal agent — 69 tokens:
The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I'd recommend using useMemo to memoize the object.
Caveman agent — 19 tokens:
New object ref each render. Inline object prop = new ref = re-render. Wrap in
useMemo.
Normal agent:
Sure! I'd be happy to help you with that. The issue you're experiencing is most likely caused by your authentication middleware not properly validating the token expiry. Let me take a look and suggest a fix.
Caveman agent:
Bug in auth middleware. Token expiry check use
<not<=. Fix:
Same fix. Third of the words. Nothing technical lost.
Core abilities
- Works with a large set of AI coding agents: Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and 30+ more.
- Compresses every reply into short caveman-speak while preserving code, commands, and errors byte-for-byte.
- Shrinks what the agent says, not what it knows — the brain stays big, the mouth gets small.
- Keeps your language: write Portuguese, Spanish, French, etc., and the agent responds in that language; it compresses style, not content. The
wenyanlevel is the intentional exception, using classical Chinese because it packs the most meaning per token. - Includes multiple levels:
lite,full(default),ultra, andwenyan. - Includes commands for commits, reviews, stats, memory-file compression, MCP middleware, and subagents.
- Can rewrite memory files (like
CLAUDE.md) so future sessions load a smaller context, saving input tokens every session after. - No telemetry, no analytics, no accounts, no backend. After install, zero network calls.
What you get
| Command | What it does |
|---|---|
/caveman [lite|full|ultra|wenyan] |
Compress every reply. Level sticks for the session. |
/caveman-commit |
Conventional Commit messages, <=50-char subject. Why over what. |
/caveman-review |
One-line PR comments: L42: 🔴 bug: user null. Add guard. |
/caveman-stats |
Real session token usage, lifetime savings, USD. Tweetable line with --share. |
/caveman-compress <file> |
Rewrite a memory file (like CLAUDE.md) into caveman-speak. Cuts ~46% input tokens every session after. Code, URLs, paths byte-preserved. |
caveman-shrink |
MCP middleware. Wraps any MCP server, compresses its tool descriptions. |
cavecrew-* |
Caveman subagents (investigator, builder, reviewer). ~60% fewer tokens than vanilla, so main context lasts longer. |
On Claude Code the statusline shows [CAVEMAN] ⛏ 12.4k — that is your lifetime tokens saved, updated on every /caveman-stats. Silence it with CAVEMAN_STATUSLINE_SAVINGS=0.
Levels
Switch anytime with /caveman <level>. The level sticks until you change it or the session ends.
| Level | Same sentence, shrunk |
|---|---|
| normal agent | You should wrap the object in useMemo, since a new reference is created on every render. |
lite |
Wrap object in useMemo. New ref created every render. |
full (default) |
New ref each render. Wrap object in useMemo. |
ultra |
New ref/render. useMemo it. |
wenyan |
New ref every render, so wrap in useMemo — rendered in classical Chinese, shorter still. |
Speak your tongue. Caveman keeps your language. Write Portuguese, caveman grunt Portuguese. Spanish, French, same. It compresses the style, never translates. wenyan mode is the exception on purpose: classical Chinese packs the most meaning per token.
Turn it on / off
- Turn it on: type
/cavemanor say 'talk like caveman'. - Turn it off: say 'normal mode'.
- On Claude Code, Codex, and Gemini it is already on from message one. No command needed.
Compatibility and limitations
- Supported agents include Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and 30+ others.
- Caveman only compresses output tokens. Input and reasoning tokens are not saved.
- The skill itself adds roughly 1–1.5k input tokens per turn, so whole-session savings are smaller than the per-reply output reduction.
- On already-terse workloads, savings can go net-negative.
- The skill preserves your language; it compresses style, not content. The
wenyanlevel is the intentional exception. - The README also describes
caveman-shrinkandcavecrew-*as additional tools for MCP middleware and subagents.
Benchmarks
Real token counts from the Claude API. Average 65% output reduction across 10 prompts (range 22–87%), measured against default verbose replies. Output tokens only.
| Task | Normal | Caveman | 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% |
The README also cites a March 2026 paper, Brevity Constraints Reverse Performance Hierarchies in Language Models, which tested 31 models and found that constraining large models to brief answers improved accuracy by ~26 points on some benchmarks.
Honest number warning. Caveman only shrinks output tokens. Input and reasoning tokens are untouched, and the skill itself adds ~1–1.5k input tokens per turn. So whole-session savings run smaller than the output number, and on already-terse workloads they can go net-negative. The real win is readability and speed. Cost savings are the bonus. See docs/HONEST-NUMBERS.md for when Caveman wins, when it loses, and how to measure it yourself.
caveman-compress receipts
Real memory files, compressed once so every later session is cheaper:
| File | Original | Compressed | Saved |
|---|---|---|---|
claude-md-preferences.md |
706 | 285 | 59.6% |
project-notes.md |
1145 | 535 | 53.3% |
claude-md-project.md |
1122 | 636 | 43.3% |
todo-list.md |
627 | 388 | 38.1% |
mixed-with-code.md |
888 | 560 | 36.9% |
| Average | 898 | 481 | 46% |
Every session after, that file loads ~46% smaller. Input tokens saved forever, not just one reply.
How it works
- The skill file is placed into your agent.
- The skill tells the agent: drop filler, keep substance, use fragments — but never touch code, commands, or errors.
- On Claude Code, a hook writes a tiny flag file each session, so the agent talks caveman from message one without
/caveman. /caveman-statsreads your session log, counts tokens saved, writes the number to your statusline./caveman-compressrewrites memory files (likeCLAUDE.md) so every future session starts with a smaller context. Save tokens forever, not just once.
Privacy
Caveman no phone home. No telemetry, no analytics, no accounts, no backend. After install, zero network calls — the skill is a prompt, the hooks are local scripts, and /caveman-stats reads a log already on your disk. Install-time fetches (GitHub plus your agents' own registries) are spelled out in SECURITY.md.