Skills juliusbrussee/caveman Caveman
caveman-compress
- Use it when
- a file the agent reads every session, such as CLAUDE.md or a todo list, costs too many input tokens
- It does
- rewrites the file's prose as terse fragments, dropping articles and filler, while code, commands, paths, URLs and headings stay exactly as they were
- You get
- the compressed file in place of the original, with a readable backup kept outside the project
- Sends
- the whole file to a model provider: the claude CLI, the Anthropic API or an OpenAI-compatible endpoint; names that look like secrets are refused
- Needs
- Python, and a file path from you; it won't compress pasted text
Skill 4 of 12 in the Caveman bundle · Before it: caveman-review · After it: caveman-stats
Sends the file's full text to a model provider to compress it.
TLDR
Caveman is a skill set whose main mode makes the agent reply in short, plain fragments to save tokens. This skill applies the same style to files the agent reads, rather than the replies it writes. You run /caveman-compress with a file path; a bundled Python script sends the file to your configured model, checks the output, has the model fix only what failed, up to twice, and leaves the original untouched if it still fails. Compression drops articles, filler, pleasantries, hedging and connecting words, uses short synonyms and fragments, and merges bullets that repeat each other. Code blocks, inline code, URLs, paths, commands, names, numbers and the markdown structure stay exact. It only compresses prose files such as .md or .txt, never code or config, and only the prose parts of mixed files. The original is saved as FILE.original.md in a caveman-compress folder in your user data directory, not next to the file, so the agent doesn't load it again.
Summarizes the skill at bad48a0.
npx skills add https://github.com/juliusbrussee/caveman --skill caveman-compressskills.sh page · Source on GitHub · All skills from juliusbrussee/caveman
- Installs
- 364,482 on skills.sh, Sep 21, 2026
- Repo stars
- 106,976 juliusbrussee/caveman
- First seen
- Apr 6, 2026 on skills.sh
Weekly values
| Week to | Installs |
|---|---|
| Aug 3 | 15,015 |
| Aug 10 | 15,570 |
| Aug 17 | 10,610 |
| Aug 24 | 10,143 |
| Aug 31 | 10,034 |
| Sep 7 | 12,303 |
| Sep 14 | 13,546 |
| Sep 21 | 14,374 |
| Category |
Change how the agent replies: shorter, clearer, fewer tokens. Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills. |
|---|---|
| Type |
A one-shot action you invoke by name, such as turning the conversation into a PRD. |
| Effect |
Its own steps create or change files, git state or local tools. |
| Needs |
An account, API key or paid plan with an outside service. |
| Publisher |
Everyone else. Unverified vendor claims default to community. |
| Topics |
SKILL.md
From juliusbrussee/caveman at bad48a0. Checked daily, last changed Oct 20, 2026.
Frontmatter
name: caveman-compress
description: >
Compress a memory file such as CLAUDE.md or a todo list into caveman format
to save input tokens, keeping a readable backup. Sends the file's text to the
configured model provider. Trigger: /caveman-compress.Caveman Compress
Purpose
Data leaves the machine. Compression sends the file's full text to the model provider that
scripts/compress.pyis configured for: theclaudeCLI, the Anthropic API, or an OpenAI-compatible endpoint. Files whose names look like secrets (.env,credentials,secrets,.netrc, …) are refused before they are read. Don't compress a file the provider shouldn't see.
Compress natural language files (CLAUDE.md, todos, preferences) into caveman-speak to reduce input tokens. Compressed version overwrites original. Human-readable backup saved as <filename>.original.md, but NOT beside the source file — it lives in an out-of-tree data dir ($XDG_DATA_HOME/caveman-compress/backups/<parent-dir-name>/, or %LOCALAPPDATA%\caveman-compress\backups\<parent-dir-name>\ on Windows) so skill auto-loaders don't re-ingest it as a live file.
Trigger
/caveman-compress <filepath> or when user asks to compress a memory file.
Requires an explicit filepath. If the user pastes raw text instead of naming a file, do NOT improvise an inline compression — ask them for the filepath to compress, or offer to save the pasted text to a file first. Writing your own reasoning/commentary about the request into the compressed output (e.g. "User passed text directly, not a filepath...") is the exact failure this guards against — never let that leak into a saved file.
Process
-
The compression scripts live in
scripts/(adjacent to this SKILL.md). If the path is not immediately available, search forscripts/__main__.pynext to this SKILL.md. -
From the directory containing this SKILL.md, run:
python3 -m scripts <absolute_filepath>
- The CLI will:
- detect file type (no tokens)
- call Claude to compress
- validate output (no tokens)
- if errors: cherry-pick fix with Claude (targeted fixes only, no recompression)
- retry up to 2 times
- if still failing after 2 retries: report error to user, leave original file untouched
- Return result to user
Compression Rules
Remove
- Articles: a, an, the
- Filler: just, really, basically, actually, simply, essentially, generally
- Pleasantries: "sure", "certainly", "of course", "happy to", "I'd recommend"
- Hedging: "it might be worth", "you could consider", "it would be good to"
- Redundant phrasing: "in order to" → "to", "make sure to" → "ensure", "the reason is because" → "because"
- Connective fluff: "however", "furthermore", "additionally", "in addition"
Preserve EXACTLY (never modify)
- Code blocks (fenced ``` and indented)
- Inline code (
backtick content) - URLs and links (full URLs, markdown links)
- File paths (
/src/components/...,./config.yaml) - Commands (
npm install,git commit,docker build) - Technical terms (library names, API names, protocols, algorithms)
- Proper nouns (project names, people, companies)
- Dates, version numbers, numeric values
- Environment variables (
$HOME,NODE_ENV)
Preserve Structure
- All markdown headings (keep exact heading text, compress body below)
- Bullet point hierarchy (keep nesting level)
- Numbered lists (keep numbering)
- Tables (compress cell text, keep structure)
- Frontmatter/YAML headers in markdown files
Compress
- Use short synonyms: "big" not "extensive", "fix" not "implement a solution for", "use" not "utilize"
- Fragments OK: "Run tests before commit" not "You should always run tests before committing"
- Drop "you should", "make sure to", "remember to" — just state the action
- Merge redundant bullets that say the same thing differently
- Keep one example where multiple examples show the same pattern
CRITICAL RULE:
Anything inside ... must be copied EXACTLY.
Do not:
- remove comments
- remove spacing
- reorder lines
- shorten commands
- simplify anything
Inline code (...) must be preserved EXACTLY.
Do not modify anything inside backticks.
If file contains code blocks:
- Treat code blocks as read-only regions
- Only compress text outside them
- Do not merge sections around code
Pattern
Original:
You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.
Compressed:
Run tests before push to main. Catch bugs early, prevent broken prod deploys.
Original:
The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.
Compressed:
Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.
Boundaries
- ONLY compress natural language files (.md, .txt, .typ, .typst, .tex, extensionless)
- NEVER modify: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh
- If file has mixed content (prose + code), compress ONLY the prose sections
- If unsure whether something is code or prose, leave it unchanged
- Original file is backed up as FILE.original.md before overwriting — in the out-of-tree backup data dir (see Purpose), not beside the source file
- Never compress FILE.original.md (skip it)