<p align="center">
<img src="https://em-content.zobj.net/source/apple/391/rock_1faa8.png" width="120" />
</p>
<h1 align="center">caveman</h1>
<p align="center">
<strong>why use many token when few do trick</strong>
</p>
<p align="center">
<a href="https://github.com/JuliusBrussee/caveman/stargazers"><img src="https://img.shields.io/github/stars/JuliusBrussee/caveman?style=flat&color=yellow" alt="Stars"></a>
<a href="https://github.com/JuliusBrussee/caveman/commits/main"><img src="https://img.shields.io/github/last-commit/JuliusBrussee/caveman?style=flat" alt="Last Commit"></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/JuliusBrussee/caveman?style=flat" alt="License"></a>
</p>
<p align="center">
<a href="#before--after">Before/After</a> •
<a href="#install">Install</a> •
<a href="#intensity-levels">Levels</a> •
<a href="#caveman-skills">Skills</a> •
<a href="#benchmarks">Benchmarks</a> •
<a href="#evals">Evals</a>
</p>
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
<table>
<tr>
<td width="50%">
🗣️ Normal Claude (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."
</td>
<td width="50%">
🪨 Caveman Claude (19 tokens)
"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."
</td>
</tr>
<tr>
<td>
🗣️ Normal Claude
"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."
</td>
<td>
🪨 Caveman Claude
"Bug in auth middleware. Token expiry check use < not <=. Fix:"
</td>
</tr>
</table>
Same fix. 75% less word. Brain still big.
Pick your level of grunt:
<table>
<tr>
<td width="25%">
🪶 Lite
"Your component re-renders because you create a new object reference each render. Inline object props fail shallow comparison every time. Wrap it in useMemo."
</td>
<td width="25%">
🪨 Full
"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."
</td>
<td width="25%">
🔥 Ultra
"Inline obj prop → new ref → re-render. useMemo."
</td>
<td width="25%">
📜 文言文
"物出新參照,致重繪。useMemo Wrap之。"
</td>
</tr>
</table>
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 (caveman activates every session, mode badge tracks /caveman ultra etc.):
claude plugin marketplace add JuliusBrussee/caveman
claude plugin install caveman@caveman
Any agent (Claude Code, Cursor, Copilot, Windsurf, Cline, Codex)
npx skills add JuliusBrussee/caveman
For a specific agent: npx skills add JuliusBrussee/caveman -a cursor
[!NOTE]
npx skills installs skills only (no hooks). For Claude Code auto-loading hooks, use the plugin install above or run bash hooks/install.sh.
Codex
- Clone repo → Open Codex in repo →
/plugins → Search Caveman → Install
[!NOTE]
Windows Codex users: Clone repo → VS Code → Codex Settings → Plugins → find Caveman under local marketplace → Install → Reload Window. Also enable git config core.symlinks true before cloning (requires developer mode or admin).
Install once. Use in all sessions after that. One rock. That it.
Optional: Statusline Badge
Add a [CAVEMAN:ULTRA] badge to your statusline showing which mode is active. See hooks/README.md for the snippet.
Usage