why use many token when few do trick
Before/After β’ Install β’ Levels β’ Skills β’ Benchmarks β’ Evals
A Cursor rule/skills/commands set that makes the agent talk like a 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 ~46% 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.
|
|
|
|
Same fix. 75% less word. Brain still big.
Pick your level of grunt:
|
|
|
|
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
Neandercode is built natively for Cursor. It uses Cursor's .cursor/rules, .cursor/skills, and .cursor/commands to integrate seamlessly into your workflow.
To install in your project:
Copy the .cursor directory from this repository into the root of your own project.
cp -r path/to/neandercode/.cursor /path/to/your/project/Alternatively, you can install the base skill via npx:
npx skills add ManjotS/neandercode(Note: npx skills only installs the skill file. For the full experience including slash commands and auto-activation rules, copying the .cursor folder or using npx neandercode is recommended.)
Or, you can install the full .cursor directory directly into your project using:
npx neandercodeRepo scripts that call the model (neandercode-compress, evals/llm_run.py, benchmarks/run.py) use the cursor agent CLI (not Anthropic/OpenAI keys from this repo). They need Cursor authentication on your machine:
- Interactive (usual): in a terminal, run once:
cursor agent login - Scripts / CI / headless: set
CURSOR_API_KEYin the environment (Cursor documents how to obtain it)
Chat in the IDE uses your logged-in Cursor session; cursor agent -p is a separate headless CLI β it uses credentials from cursor agent login or CURSOR_API_KEY, not the chat pane.
Cursorβs integrated terminal exports CURSOR_CLI (and sometimes CURSOR_AGENT). Those make the cursor shim delegate into the editor and can break headless cursor agent -p (including spurious auth errors). Repo scripts (neandercode-compress, evals/llm_run.py, benchmarks/run.py) unset those variables in the subprocess, pass --workspace to the repo root, and invoke the real CLI β same shape as running from iTerm or Terminal.
If the agent errors with a missing @anysphere/... native module, run cursor agent update (see below).
If compress or evals fail with Cannot find module '@anysphere/file-service-darwin-β¦', the package nameβs suffix should match your Macβs CPU: arm64 / darwin-arm64 on Apple Silicon, x64 on Intel. The headless agent did not load the right optional native binding β not something this repo can fix inside Python.
- Use the Cursor build that matches your machine β On Apple Silicon, install Cursorβs Apple Silicon (ARM) app so ARM native modules are used; you do not need (and should not rely on) the Intel/x64 Cursor build on an ARM Mac. On Intel Macs, use the Intel/x64 build. Avoid Rosetta-mismatched installs (e.g. x64 Cursor on ARM) if agent native modules fail to load.
- Refresh the agent:
cursor agent update(also run afternpx neandercode/ copying.cursorif headless agent misbehaves) - Reinstall Cursor from cursor.com (fixes corrupted/partial installs)
If you still see Authentication required after the subprocess clears CURSOR_CLI / CURSOR_AGENT, the CLI agent was never authenticated on this machine: run cursor agent login once, or set CURSOR_API_KEY for non-interactive runs.
Trigger neandercode mode in Cursor Chat using the built-in slash commands:
/neandercodeβ switch to default neandercode mode/neandercode-liteβ drop filler, keep grammar/neandercode-ultraβ maximum compression/neandercode-offβ disable neandercode mode
Or just say "talk like neandercode" or "less tokens please".
| Level | Trigger | What it do |
|---|---|---|
| Lite | /neandercode lite |
Drop filler, keep grammar. Professional but no fluff |
| Full | /neandercode full |
Default neandercode. Drop articles, fragments, full grunt |
| Ultra | /neandercode ultra |
Maximum compression. Telegraphic. Abbreviate everything |
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 | /neandercode wenyan-lite |
Semi-classical. Grammar intact, filler gone |
| Wenyan-Full | /neandercode wenyan |
Full ζθ¨ζ. Maximum classical terseness |
| Wenyan-Ultra | /neandercode wenyan-ultra |
Extreme. Ancient scholar on a budget |
Level stick until you change it or session end.
/neandercode-commit β terse commit messages. Conventional Commits. β€50 char subject. Why over what.
/neandercode-review β one-line PR comments: L42: π΄ bug: user null. Add guard. No throat-clearing.
/neandercode-help β quick-reference card. All modes, skills, commands, one command away.
/neandercode-compress <filepath> β neandercode make Cursor speak with fewer tokens. Compress make Cursor read fewer tokens.
Your CURSOR.md (or .cursorrules) loads on every session start. Neandercode Compress rewrites memory files into neandercode-speak so Cursor reads less β without you losing the human-readable original.
/neandercode-compress CURSOR.md
CURSOR.md β compressed (Cursor reads this every session β fewer tokens)
CURSOR.original.md β human-readable backup (you read and edit this)
| File | Original | Compressed | Saved |
|---|---|---|---|
cursor-md-preferences.md |
706 | 285 | 59.6% |
project-notes.md |
1145 | 535 | 53.3% |
cursor-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% |
Code blocks, URLs, file paths, commands, headings, dates, version numbers β anything technical passes through untouched. Only prose gets compressed. See the full neandercode-compress README for details. Security note: Snyk flags this as High Risk due to subprocess/file patterns β it's a false positive.
Benchmark numbers come from cursor agent output scored with tiktoken (approximate; reproduce):
| Task | Normal (tokens) | Neandercode (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
Neandercode only affects output tokens β thinking/reasoning tokens are untouched. Neandercode no make brain smaller. Neandercode 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.
Neandercode not just claim 75%. Neandercode 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 neandercode to verbose agent conflate the skill with generic terseness. That cheating. Neandercode not cheat.
# Run the eval (needs cursor CLI)
uv run python evals/llm_run.py
# Read results (no API key, runs offline)
uv run --with tiktoken python evals/measure.pyMIT β free like mass mammoth on open plain.
This project is a fork of caveman by Julius Brussee. Thank you for the original implementation!
