Getting started difficulty | About 10 minutes | Youâll learn the full install-and-config workflow for caveman, understand its four compression modesâLite / Full / Ultra / Wenyanâand squeeze every last token out of AI output.
Project overview
caveman is an AI coding assistant output-compression skill developed by Julius Brussee, with its GitHub repo at JuliusBrussee/caveman.
Its core idea is simple: make the AIâs replies say only whatâs useful. While keeping the technical accuracy unchanged, it compresses the output tokens by about 75%. A 2026 study (arxiv:2604.00025) even found that, with concise constraints applied to large models, accuracy improves by 26 percentage points on certain benchmarksâmore words donât necessarily mean better answers.
caveman isnât just a joke project. It includes four compression strength levels (Lite / Full / Ultra / Wenyan), plus three sub-skills: caveman-commit (ultra-minimal commit messages), caveman-review (single-line code review), and caveman-compress (memory-file compression). It supports 40+ AI coding assistants such as Claude Code, Codex, Cursor, Windsurf, Cline, Copilot, Gemini CLI, and more.
Target audience
You use AI coding assistants every day, but you often run into: replies that are too wordy, key points that donât stand out, and you end up having to extract the real value yourself after reading everything. Faster and cheaper is your top priorityâyou donât want to waste tokens and time on pointless pleasantries.
Core dependencies and environment
| Dependency | Description |
|---|---|
| AI coding assistant | Claude Code / Codex / Cursor / Gemini CLI, etc.âat least one |
| Node.js | Needed for the npx skills installation method |
| Python 3.10+ | Required by the caveman-compress tool |
| Git | Needed for the plugin/adapter installation method |
Complete project structure
my-project/
âââ CLAUDE.md # Written after installing caveman; always active (Claude Code)
âââ .caveman/ # State marker directory (auto-generated)
â âââ .caveman-active # Current mode: full / lite / ultra / wenyan
âââ .cursor/rules/caveman.mdc # Cursor always-on rule (auto-generated)
âââ .windsurf/rules/caveman.md # Windsurf always-on rule (auto-generated)
âââ .clinerules/caveman.md # Cline rule (auto-generated)
âââ .github/copilot-instructions.md # Copilot rule (auto-generated)
Step-by-step
Step 1 â Install caveman
caveman supports 40+ AI coding assistants. Pick the command for your platform:
Claude Code (recommended)
# Option 1: Plugin marketplace (simplest)
claude plugin marketplace add JuliusBrussee/caveman
claude plugin install caveman@caveman
# Option 2: Script install (when you donât use the plugin system)
# macOS / Linux / WSL
bash <(curl -s https://raw.githubusercontent.com/JuliusBrussee/caveman/main/hooks/install.sh)
# Windows PowerShell
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/main/hooks/install.ps1 | iex
Codex (VS Code + Codex)
# macOS / Linux
# 1. Clone the repo â open it in Codex â /plugins â search "Caveman" â Install
# Windows (requires enabling symbolic links first)
git config --global core.symlinks true
# Then the same as above: clone â VS Code â Codex Settings â Plugins â install Caveman
Gemini CLI
gemini extensions install https://github.com/JuliusBrussee/caveman
Cursor / Windsurf / Cline / Copilot
npx skills add JuliusBrussee/caveman -a cursor
npx skills add JuliusBrussee/caveman -a windsurf
npx skills add JuliusBrussee/caveman -a cline
npx skills add JuliusBrussee/caveman -a github-copilot
Other Agents (opencode / Roo / Goose / Kiro, etc.â40+ total)
npx skills add JuliusBrussee/caveman # Auto-detect
# Or specify explicitly
npx skills add JuliusBrussee/caveman -a opencode
npx skills add JuliusBrussee/caveman -a roo
WARNING
npx skills add installs only the skill files themselves, not the Agentâs always-on rule files. So for Cursor / Windsurf / Cline / Copilot, after installation youâll need to manually activate it each session. Step 7 explains how to make it always-on.
Step 2 â Activate caveman mode
After installing, in any conversation, enter one of the following commands to activate:
/caveman # Default: Full mode
$caveman # Codex uses $ instead of /
Or trigger it by speaking directly:
talk like caveman
caveman mode
less tokens please
TIP
In Claude Code / Gemini CLI / Codex, /caveman automatically triggers the SessionStart hook in every new sessionâso once installed, you donât need to activate it manually each time. Cursor / Windsurf, etc., require the extra configuration in step 7.
Step 3 â Choose a compression tier
caveman has four compression strength levels. Switch using these commands:
| Tier | Trigger command | Feature | Best for |
|---|---|---|---|
| Lite | /caveman lite | Removes filler while keeping full syntaxâprofessional but concise | Formal communication, when you must preserve structure |
| Full | /caveman full | Removes articles (a/an/the), allows segmentation, and replaces short words | Everyday development (default) |
| Ultra | /caveman ultra | Extreme compression: abbreviations, causal arrows (â) | Fast debugging, high-pressure situations |
| Wenyan | /caveman wenyan | Wenyan-style compression with classical Chinese syntax | Geeky show-off, Chinese developers |
Compared on the same React problem:
đŁïž Normal reply (69 tokens):
"Your React component re-renders because you are 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."
đȘ¶ Lite (39 tokens):
"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."
đȘš Full (19 tokens):
"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."
đ„ Ultra (15 tokens):
"Inline obj prop â new ref â re-render. useMemo."
đ Wenyan (11 tokens):
"ç©ćșæ°ćç
§ïŒèŽéçčȘăuseMemo Wrapäčă"
To exit caveman mode:
stop caveman
normal mode
IMPORTANT
Content inside code blocks is not compressed. caveman only compresses natural-language replies. Code, file paths, URLs, and commands remain exactly as-is.
Step 4 â caveman-commit: ultra-minimal commit messages
caveman-commit is a sub-skill specifically for generating commit messages. It follows Conventional Commits, and the subject never exceeds 50 characters:
/caveman-commit
Example outputs:
# Regular Claude commit (too long):
"Added user authentication functionality including JWT token generation and validation,
password hashing with bcrypt, and session management middleware. This improves security
by implementing proper authentication flows."
# caveman-commit result:
"feat(auth): JWT + bcrypt login, session middleware"
Subject format: type(scope): subjectâalways under 50 characters, with why over what.
Step 5 â caveman-review: single-line code review
caveman-review performs a single-line review of a PR or code snippet. Format is fixed and it doesnât waste words:
/caveman-review
Paste your diff or code, and it outputs:
L42: đŽ bug: user null. Add guard.
L58: đĄ perf: N+1 query. Prefetch in ORM.
L71: đą nit: unused import. Remove.
You no longer need to read a long paragraph of "I think this could be improved" in PR commentsâ it directly tells you whatâs wrong on which line and how to fix it.
Format: L<line-number>: <đŽđĄđą> <issue-type>: <description>. <suggested-fix>.
Step 6 â caveman-compress: compress project memory files
This is one of cavemanâs most practical sub-skills. Your CLAUDE.md is read by the AI every session. If it contains piles of human-friendly but lengthy explanations, you waste tokens re-reading them each time. caveman-compress compresses these memory files into an AI-efficient format, while keeping the original backup for you to edit.
/caveman:compress CLAUDE.md
After running:
CLAUDE.md â compressed version (Claude reads this every time)
CLAUDE.original.md â original backup (you edit this; compression is one-way)
Observed compression results:
| File | Original tokens | After compression | 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% |
TIP
caveman-compress only compresses prose (natural-language paragraphs). Code blocks, URLs, file paths, commands, titles, and dates/version numbers are all kept as-is, so they wonât be mistakenly compressed.
Step 7 â Always-On configuration
After installing Claude Code / Gemini CLI, itâs automatically always-onâno extra setup required.
For Cursor / Windsurf / Copilot, etc., using npx skills add requires manually adding one snippet so it stays active. Put your preferred strengths into the Agentâs rule file:
Terse like caveman. Technical substance exact. Only fluff die.
Drop: articles, filler (just/really/basically), pleasantries, hedging.
Fragments OK. Short synonyms. Code unchanged.
Pattern: [thing] [action] [reason]. [next step].
ACTIVE EVERY RESPONSE. No revert after many turns.
Code/commits/PRs: normal. Off: "stop caveman" / "normal mode".
Where to place each Agentâs file:
| Agent | File path |
|---|---|
| Cursor | .cursor/rules/caveman.mdc |
| Windsurf | .windsurf/rules/caveman.md |
| Copilot | .github/copilot-instructions.md or custom instructions |
| opencode | .config/opencode/AGENTS.md |
| Roo | .roo/rules/caveman.md |
Step 8 â Uninstall / restore defaults
# Uninstall Claude Code plugin
claude plugin uninstall caveman
# Uninstall standalone hooks
bash hooks/uninstall.sh # macOS / Linux
powershell -File hooks\uninstall.ps1 # Windows
# Uninstall npx skills
npx skills remove caveman
# Uninstall Gemini CLI
gemini extensions uninstall caveman
After uninstalling, the .caveman/ state directory and rule files need to be cleaned up manually (if needed).
Troubleshooting FAQ
1. The plugin is installed, but caveman doesnât auto-activate
Claude Code uses a SessionStart hook for auto-activation. Check that the hook was written correctly:
# Check whether ~/.claude/settings.json includes the SessionStart hook
cat ~/.claude/settings.json | grep -i "SessionStart"
# Or reinstall once
claude plugin uninstall caveman
claude plugin install caveman@caveman
2. Cursor / Windsurf always-on doesnât work
npx skills add wonât automatically write an always-on rule. Manually add the step-7 snippet to the corresponding rule file. Save it, then reload the Agent.
3. Wenyan mode outputs pure gibberish or question marks
Confirm that both your terminal and editor support UTF-8. On Windows, PowerShellâs default encoding may cause issues:
chcp 65001
$env:LESSCHARSET=utf-8
In VS Code, confirm the character encoding in the status bar is set to UTF-8.
4. caveman-compress compresses code blocks too
It canât happenâcode blocks, URLs, file paths, and commands are skip items and donât participate in compression. If you see anything abnormal, itâs usually a file-format issue (for example, missing a code block marker like ```). You can manually compare and restore from CLAUDE.original.md.
5. /caveman command has no response
Another skill might be intercepting the slash command. In Claude Code, try triggering it by direct speech: "talk like caveman". If it still doesnât work, check whether thereâs a conflicting skill with the same name.
6. When multiple Agents coexist, caveman fails in one of them
cavemanâs configuration files are independent per Agent and donât affect each other. If it doesnât work in a specific Agent, check whether that Agentâs rule directory contains any caveman-related files.
Further reading / advanced directions
1. cavemanâs three-arm evaluation: how to keep the data honest
Most "compression technique" evaluations compare skill replies vs normal repliesâwhich is unfair, because terseness (conciseness) itself already improves quality. caveman uses a three-arm evaluation: _baseline_ (no system prompt), _terse_ (only "Answer concisely"), and <skill> (cavemanâs full rules). The real savings are the difference between skill and terse, not skill and baseline. This methodology is worth borrowing for evaluating any AI assistant.
2. Interpreting real benchmark data
In practice across 10 tasks, average output tokens drop from 1214 to 294âsaving 65%. The range goes from 22% (git rebase vs merge; the explanation itself is long) up to 87% (React error boundaries; normal replies are extremely over-expanded). The easier the task is to over-explain, the more caveman saves.
3. Cavekit: a spec-driven development toolchain by the same author
JuliusBrussee/cavekit is a companion project: write specifications in the caveman language â build in parallel with Claude â produce usable software. If you use caveman to optimize output efficiency, cavekit can do something similar on the input side as well.
4. Custom compression tiers
All tier rules are defined in skills/caveman/SKILL.md. You can copy it, then modify the abbreviation dictionary, decide whether to keep the dictionary, or tweak the causality-symbol rules to create your own tiers. For example, add team-specific terminology abbreviations, or specify that certain technical terms must not be replaced.
5. Cross-language applicability of Wenyan compression
The principle of Wenyan mode is: the most concise written language in human history + extremely low character-token density. On English corpora, wenyan-full can still compress about 40â60% because the classical Chinese syntax patternsâ"subject omission + verb-object inversion"âremain effective within a single-language context. Itâs a good fit when you need extreme compression and are willing to adapt to special syntax patterns.