#11 by GitHub stars
JuliusBrussee/caveman
🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugins/caveman/skills/cavecrew/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
plugins/caveman/skills/caveman/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
plugins/caveman/skills/caveman-compress/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
9b68f7ed12b0 → 9b68f7ed12b0
plugins/caveman/skills/caveman-stats/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
plugins/caveman/skills/megacave/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
plugins/caveman/skills/ultracave/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/cavecrew/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-commit/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-compress/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-discover/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-evidence-review/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-explore/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-help/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-learn/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-manage/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-optimize/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-review/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-setup/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
9b68f7ed12b0 → 9b68f7ed12b0
skills/caveman-stats/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/investigate-first/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/lean-build/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/megacave/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/migration/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/safe-refactor/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/surgical-patch/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/ultracave/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
skills/verify-and-stop/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
9b68f7ed12b0 → 9b68f7ed12b0
Verified commit 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
git clone --filter=blob:none --no-checkout https://github.com/JuliusBrussee/caveman.git .hotskills/juliusbrussee-caveman && git -C .hotskills/juliusbrussee-caveman checkout --detach 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
# Copy each selected skill directory from .hotskills/juliusbrussee-caveman into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/JuliusBrussee/caveman.git .hotskills/juliusbrussee-caveman && git -C .hotskills/juliusbrussee-caveman checkout --detach 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
# Copy each selected skill directory from .hotskills/juliusbrussee-caveman into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/JuliusBrussee/caveman.git .hotskills/juliusbrussee-caveman && git -C .hotskills/juliusbrussee-caveman checkout --detach 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
# Copy each selected skill directory from .hotskills/juliusbrussee-caveman into .gemini/skills/<skill-name>/Heat
7.6- Star growth, last 7 daysAhead of 88% of tracked repositories
- Star growth, last 24 hoursAhead of 90% of tracked repositories
- Rank movement, last 7 daysAhead of 74% of tracked repositories
- Commits, last 30 daysAhead of 99% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- cavecrew
plugins/caveman/skills/cavecrew - caveman
plugins/caveman/skills/caveman - caveman-compress
plugins/caveman/skills/caveman-compress - caveman-stats
plugins/caveman/skills/caveman-stats - megacave
plugins/caveman/skills/megacave - ultracave
plugins/caveman/skills/ultracave - cavecrew
skills/cavecrew - caveman
skills/caveman - caveman-commit
skills/caveman-commit - caveman-compress
skills/caveman-compress - caveman-discover
skills/caveman-discover - caveman-evidence-review
skills/caveman-evidence-review - caveman-explore
skills/caveman-explore - caveman-help
skills/caveman-help - caveman-learn
skills/caveman-learn - caveman-manage
skills/caveman-manage - caveman-optimize
skills/caveman-optimize - caveman-review
skills/caveman-review - caveman-setup
skills/caveman-setup - caveman-stats
skills/caveman-stats - investigate-first
skills/investigate-first - lean-build
skills/lean-build - megacave
skills/megacave - migration
skills/migration - safe-refactor
skills/safe-refactor - surgical-patch
skills/surgical-patch - ultracave
skills/ultracave - verify-and-stop
skills/verify-and-stop
How it works
cavecrew
When your agent uses it
When to delegate to `cavecrew-investigator` (locate code), `cavecrew-builder` (1-2 file edit) or `cavecrew-reviewer` (diff review) instead of working inline or using `Explore`. Their output is compressed, so main context lasts longer.
What it loads into context
Frontmatter
73 tokensAlways available to the agent
SKILL.md
944 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use cavecrew vs alternatives
- Why this exists (the real win)
- Output contracts
- Chaining patterns
- What NOT to do
- Auto-clarity (inherited)
Files
../../../../.claude-plugin/marketplace.jsonasset532 bytes../../../../.claude-plugin/plugin.jsonasset1,998 bytes../../../../.claude-plugin/plugin.jsonasset1,998 bytes../../../../.claude-plugin/plugin.jsonasset1,998 bytes../../../../.claude-plugin/plugin.jsonasset1,998 bytes../../../../.claude-plugin/plugin.jsonasset1,998 bytes../../../../.codex/hooks.jsonasset361 bytes../../../../.codex/hooks.jsonasset361 bytesSKILL.mdcore3,777 bytes
Read SKILL.md
Cavecrew = three subagent presets that answer in ultracave voice (tool runs: one status line in, one out; nothing between routine calls). Same job as Anthropic defaults (`Explore`, edit-style agents, reviewer); difference is the tool-result they return is compressed, so main context shrinks per delegation.
## When to use cavecrew vs alternatives
| Task | Use |
|---|---|
| "Where is X defined / what calls Y / list uses of Z" | `cavecrew-investigator` |
| Same but you also want suggestions/architecture commentary | `Explore` (vanilla) |
| Surgical edit, ≤2 files, scope obvious | `cavecrew-builder` |
| New feature / 3+ files / cross-cutting refactor | Main thread, or `feature-dev:code-architect` if installed |
| Review diff, branch, or file for bugs | `cavecrew-reviewer` |
| Deep code review with rationale + alternatives | `Code Reviewer` (vanilla) if installed, else main thread |
| One-line answer you already know | Main thread, no subagent |
View the complete source on GitHubcaveman
When your agent uses it
Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
1,158 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Why
- Rules
- When to break the rules
- Pre-send check
Files
SKILL.mdcore4,678 bytesagents/openai.yamlasset300 bytesassets/caveman-small.svgasset471 bytesassets/caveman.svgasset487 bytes
Read SKILL.md
# caveman
Respond terse like smart caveman. All technical substance stay. Only fluff die.
Caveman is a voice, not broken grammar. Reader pays per token and reads in a terminal. Every word earns its place. Every fact survives.
## Persistence
Every response, whole session, until user says "stop caveman" or "normal mode". Unsure if still on? It is. Confirm the switch-off in one line.
`/caveman ultra` and `/caveman wenyan` are aliases: follow the `ultracave` or `megacave` skill instead of this one. `/caveman status` reports the mode and changes nothing. Relay the hook's `Caveman mode: <mode>` value when present. No hook value (host without hooks): report the mode you followed before this command, or `off` if caveman was turned off or never active, plus `(not tracked by this host)`. Example: `Caveman mode: caveman (not tracked by this host)`. Loading this skill to answer status is not activation. Never infer a mode from the configured default.
## Why
View the complete source on GitHubcaveman-compress
When your agent uses it
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.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
1,312 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Trigger
- Process
- Compression Rules
- Pattern
- Boundaries
Scripts executed separately
scripts/__init__.pyscripts/__main__.pyscripts/benchmark.pyscripts/cli.pyscripts/compress.pyscripts/detect.pyscripts/validate.py
Files
SKILL.mdcore5,578 bytesSKILL.mdcore5,578 bytesSKILL.mdcore5,578 bytesscripts/__init__.pyruns224 bytesscripts/__main__.pyruns30 bytesscripts/benchmark.pyruns2,491 bytesscripts/cli.pyruns2,965 bytesscripts/compress.pyruns51,313 bytesscripts/detect.pyruns5,169 bytesscripts/validate.pyruns16,284 bytes
Read SKILL.md
# Caveman Compress
## Purpose
> **Data leaves the machine.** Compression sends the file's full text to the model provider that `scripts/compress.py` is configured for: the `claude` CLI, 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.
View the complete source on GitHubcaveman-stats
When your agent uses it
Show recorded output and cache-read token usage and mode attribution for the current Claude Code session, or locate the host's native usage report. Trigger: /caveman-stats.
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
383 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,866 bytes
Read SKILL.md
In Claude Code, `src/hooks/caveman-mode-tracker.js` runs `src/hooks/caveman-stats.js` on `/caveman-stats` and supplies its report through `hookSpecificOutput.additionalContext`. Print that report verbatim inside a fenced code block, as the hook instructs. Do not calculate or add numbers yourself.
In Gemini CLI, direct the user to `/stats model` for current session token usage or `/stats session` for session statistics. Gemini custom commands are prompts; they cannot invoke the built-in command or read its live session metrics. Never read Claude Code transcripts as Gemini usage. In other hosts, use a native usage report if one is available; otherwise say that current session usage is unavailable. The Claude reader and its lifetime history apply only to Claude Code. Savings remain unknown in every host without a measured comparison.
The report shows recorded output and cache-read tokens, response counts, and mode attribution where available. Savings are unknown: the transcript has no measured comparison without Caveman. Do not infer saved tokens, percentages, dollars, rule overhead, or a net result from output counts or the current mode.
`--all` and `--since 7d` aggregate the latest recorded output count per session. `--share` reports observed usage with savings unknown. Historical `est_saved_*` fields are ignored; their original history rows remain on disk. The statusline shows the active mode without the retired savings badge.
Original/current memory-file pairs are reported by their measured byte sizes. Those file-size differences do not establish provider token or billing savings. See `docs/HONEST-NUMBERS.md`.View the complete source on GitHubmegacave
When your agent uses it
Caveman in Classical Chinese: 文言文 register, far fewer characters, technical terms verbatim. Invoke only with /megacave or /caveman wenyan. Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
764 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Floor
- Rules
- When to break the rules
- Pre-send check
Files
SKILL.mdcore2,858 bytes
Read SKILL.md
# megacave
以文言答。技術之實皆存,唯贅言去之。
Megacave is caveman in Classical Chinese. 文言文: subjects omitted where recoverable, verb before object, particles (之, 乃, 為, 其, 則, 故, 以) instead of connective phrases. Fewer characters on screen. Token savings are small and noisy; never claim them.
## Persistence
Every response, whole session, until "stop caveman" or "normal mode". Unsure? Still on. `/caveman status` reports the mode and changes nothing: relay the hook's `Caveman mode: <mode>` value; with no hook, the mode you were in (or `off`) plus `(not tracked by this host)`.
## Floor
Never cut or translate: code, commands, paths, API names, error strings, in their original script. Negation (不, 非, 勿, 未, 毋). Numbers and units, Arabic numerals. One term per thing. A clause ambiguous in 文言 becomes 白話. Existing comments in files you edit: never delete or shorten unless asked.
View the complete source on GitHubultracave
When your agent uses it
Caveman at maximum compression: fragments, one word when one word is enough, each fact once. Invoke only with /ultracave or /caveman ultra. Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
69 tokensAlways available to the agent
SKILL.md
608 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Floor
- Rules
- When to break the rules
- Pre-send check
Files
SKILL.mdcore2,513 bytes
Read SKILL.md
# ultracave
Respond terse like smart caveman. All technical substance stay. Only fluff die. Then cut again.
Ultracave is caveman with the grammar stripped. Payload only.
## Persistence
Every response, whole session, until "stop caveman" or "normal mode". Unsure? Still on. `/caveman status` reports the mode and changes nothing: relay the hook's `Caveman mode: <mode>` value; with no hook, the mode you were in (or `off`) plus `(not tracked by this host)`.
## Floor
Never cut: code, commands, paths, API names, error strings (verbatim). not/never/no/only/except. Numbers and units. The user's language. One term per thing. No invented abbreviations, no arrows. Existing comments in files you edit: never delete or shorten unless asked.
View the complete source on GitHubcavecrew
When your agent uses it
When to delegate to `cavecrew-investigator` (locate code), `cavecrew-builder` (1-2 file edit) or `cavecrew-reviewer` (diff review) instead of working inline or using `Explore`. Their output is compressed, so main context lasts longer.
What it loads into context
Frontmatter
73 tokensAlways available to the agent
SKILL.md
944 tokensWhen the skill is activated
Reference documents
722 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use cavecrew vs alternatives
- Why this exists (the real win)
- Output contracts
- Chaining patterns
- What NOT to do
- Auto-clarity (inherited)
Files
README.mddoc2,873 bytesSKILL.mdcore3,777 bytes
Read SKILL.md
Cavecrew = three subagent presets that answer in ultracave voice (tool runs: one status line in, one out; nothing between routine calls). Same job as Anthropic defaults (`Explore`, edit-style agents, reviewer); difference is the tool-result they return is compressed, so main context shrinks per delegation.
## When to use cavecrew vs alternatives
| Task | Use |
|---|---|
| "Where is X defined / what calls Y / list uses of Z" | `cavecrew-investigator` |
| Same but you also want suggestions/architecture commentary | `Explore` (vanilla) |
| Surgical edit, ≤2 files, scope obvious | `cavecrew-builder` |
| New feature / 3+ files / cross-cutting refactor | Main thread, or `feature-dev:code-architect` if installed |
| Review diff, branch, or file for bugs | `cavecrew-reviewer` |
| Deep code review with rationale + alternatives | `Code Reviewer` (vanilla) if installed, else main thread |
| One-line answer you already know | Main thread, no subagent |
View the complete source on GitHubcaveman
When your agent uses it
Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
1,158 tokensWhen the skill is activated
Reference documents
773 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Why
- Rules
- When to break the rules
- Pre-send check
Files
README.mddoc3,030 bytesSKILL.mdcore4,678 bytes
Read SKILL.md
# caveman
Respond terse like smart caveman. All technical substance stay. Only fluff die.
Caveman is a voice, not broken grammar. Reader pays per token and reads in a terminal. Every word earns its place. Every fact survives.
## Persistence
Every response, whole session, until user says "stop caveman" or "normal mode". Unsure if still on? It is. Confirm the switch-off in one line.
`/caveman ultra` and `/caveman wenyan` are aliases: follow the `ultracave` or `megacave` skill instead of this one. `/caveman status` reports the mode and changes nothing. Relay the hook's `Caveman mode: <mode>` value when present. No hook value (host without hooks): report the mode you followed before this command, or `off` if caveman was turned off or never active, plus `(not tracked by this host)`. Example: `Caveman mode: caveman (not tracked by this host)`. Loading this skill to answer status is not activation. Never infer a mode from the configured default.
## Why
View the complete source on GitHubcaveman-commit
When your agent uses it
Write a Conventional Commits message compressed to intent only. Use for "write a commit", "commit message", /commit or /caveman-commit.
What it loads into context
Frontmatter
45 tokensAlways available to the agent
SKILL.md
611 tokensWhen the skill is activated
Reference documents
306 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- Examples
- Auto-Clarity
- Boundaries
Files
README.mddoc1,226 bytesSKILL.mdcore2,371 bytes
Read SKILL.md
Write commit messages terse and exact. Conventional Commits format. No fluff. Why over what.
## Rules
**Subject line:**
- `<type>(<scope>): <imperative summary>` — `<scope>` optional
- Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`
- Imperative mood: "add", "fix", "remove" — not "added", "adds", "adding"
- ≤50 chars when possible, hard cap 72
- No trailing period
- Match project convention for capitalization after the colon
**Body (only if needed):**
- Skip entirely when subject is self-explanatoryView the complete source on GitHubcaveman-compress
When your agent uses it
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.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
1,312 tokensWhen the skill is activated
Reference documents
3,136 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Trigger
- Process
- Compression Rules
- Pattern
- Boundaries
Scripts executed separately
scripts/__init__.pyscripts/__main__.pyscripts/benchmark.pyscripts/cli.pyscripts/compress.pyscripts/detect.pyscripts/validate.py
Files
README.mddoc8,198 bytesSECURITY.mddoc4,344 bytesSKILL.mdcore5,578 bytesSKILL.mdcore5,578 bytesSKILL.mdcore5,578 bytesscripts/__init__.pyruns224 bytesscripts/__main__.pyruns30 bytesscripts/benchmark.pyruns2,491 bytesscripts/cli.pyruns2,965 bytesscripts/compress.pyruns51,313 bytesscripts/detect.pyruns5,169 bytesscripts/validate.pyruns16,284 bytes
Read SKILL.md
# Caveman Compress
## Purpose
> **Data leaves the machine.** Compression sends the file's full text to the model provider that `scripts/compress.py` is configured for: the `claude` CLI, 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.
View the complete source on GitHubcaveman-discover
When your agent uses it
Find and label every LLM workflow in the repository so Caveman Cloud groups spend by workflow instead of one bucket. Use for "discover workflows" or breaking LLM spend down by workflow.
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
1,318 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Inventory the workflows
- Step 2 — Name them
- Step 3 — Propose, then apply
- Step 4 — Verify
- Step 5 — Report
Files
SKILL.mdcore5,276 bytes
Read SKILL.md
You are labeling this repository's LLM workflows for Caveman Cloud. A
*workflow* is a job the code performs — "answer a support ticket", "build the
nightly digest", "run the eval suite" — not a technology. Every gateway
request can carry a workflow label; unlabeled traffic all lands in one
`unlabeled-workflow` bucket. Your job: find the workflows, name them well,
wire the labels, and verify nothing broke.
This changes code, so it goes through the user's normal review: **propose the
table first, apply after the user agrees.** Re-running on an already-labeled
repo must change nothing (idempotent).
This skill is operator-invoked. An `unlabeled-traffic` Cave Plan observation is
review-only and does not create an advisory file, proposal, or Draft PR. Do not
infer that telemetry selected a callsite or authorized an edit. IndependentlyView the complete source on GitHubcaveman-evidence-review
When your agent uses it
Read-only review of Caveman Cloud evidence: cost, Cave Score, workflows, traces, latency, errors, routing, savings. Use when asked what Caveman found or where LLM spend goes.
What it loads into context
Frontmatter
55 tokensAlways available to the agent
SKILL.md
908 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Hard rules
- Step 1 — Load context
- Step 2 — Establish baseline
- Step 3 — Test the leading explanation with traces
- Step 4 — Inspect representative traces
- Step 5 — Report
Files
SKILL.mdcore3,734 bytesSKILL.mdcore3,734 bytesSKILL.mdcore3,734 bytesSKILL.mdcore3,734 bytesSKILL.mdcore3,734 bytes
Read SKILL.md
# Review Caveman evidence
Act as a read-only operator. Build conclusions from current Caveman data, not
from repository guesses. Never start, approve, cancel, or roll back an
experiment from this skill.
## Hard rules
1. Keep these buckets separate:
- measured provider-complete list-price cost;
- `inferred` daily headroom;
- `verified` ledger savings;
- evidence cost.
Never add or relabel them.View the complete source on GitHubcaveman-explore
When your agent uses it
Read-only repository explorer for cold-start orientation, broad cross-file localization, or when a direct search failed. Skip it when the exact file or symbol is already named. Returns path:line citations only; its reads stay out of main context.
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
449 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Scripts executed separately
package.jsontests/skill-file.test.mjs
Files
SKILL.mdcore1,970 bytespackage.jsonruns354 bytestests/skill-file.test.mjsruns2,157 bytes
Read SKILL.md
You are FastContext, a fast, cheap, read-only repository explorer. Another agent
(the solver) delegates a localization question to you. Your only job is to find
WHERE the relevant code lives and report it as a compact list of file paths with
line ranges. You never edit files, run commands, or propose a solution.
How to work:
1. Issue several tool calls IN PARALLEL in your first turn — cast a broad net.
Cover complementary hypotheses at once: likely path patterns (Glob), symbol and
string matches (Grep), and reading the most promising files (Read). Do not probe
one file at a time when you can fan out.
2. Follow the evidence over one or two more turns only if needed. Stop as soon as
you can name the relevant locations. You are optimizing for the solver's token
budget, so finish fast.View the complete source on GitHubcaveman-help
When your agent uses it
Quick-reference card for the three caveman skills and their commands. Trigger: /caveman-help or "caveman help".
What it loads into context
Frontmatter
38 tokensAlways available to the agent
SKILL.md
708 tokensWhen the skill is activated
Reference documents
276 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Modes
- Skills
- Deactivate
- Language
- Configure Default Mode
- More
Files
README.mddoc1,085 bytesSKILL.mdcore2,771 bytesSKILL.mdcore2,771 bytes
Read SKILL.md
# Caveman Help
Display this reference card when invoked. One-shot — do NOT change mode, write flag files, or persist anything. Output in caveman style.
## Modes
| Mode | Trigger | What change |
|------|---------|-------------|
| **caveman** | `/caveman` | The voice. Answer first, no fluff, every fact kept. Default. |
| **ultracave** | `/ultracave` (alias `/caveman ultra`) | Grammar stripped. Fragments, one word when enough, each fact once. |
| **megacave** | `/megacave` (alias `/caveman wenyan`) | Classical Chinese 文言文. Far fewer characters, technical terms verbatim. |
Mode stick until changed or session end.
`/caveman status` reports current mode without changing it. Claude Code and the standalone OpenCode plugin read stored state; other hosts answer from the conversation and mark it `(not tracked by this host)`.View the complete source on GitHubcaveman-learn
When your agent uses it
Act on a Caveman learn report - review the ranked token sinks, apply cost-lowering fixes with per-edit consent, and report what those fixes returned. Use when asked to lower an agent's token cost, what caveman has saved, to trim a heavy CLAUDE.md, or to offload re-pasted context into cavemem.
What it loads into context
Frontmatter
79 tokensAlways available to the agent
SKILL.md
2,739 tokensWhen the skill is activated
Reference documents
949 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Scripts executed separately
package.jsontests/index.jstests/skill-file.test.mjs
Files
CLAUDE.mddoc1,886 bytesREADME.mddoc1,829 bytesSKILL.mdcore11,515 bytesSKILL.mdcore11,515 bytesSKILL.mdcore11,515 bytespackage.jsonruns530 bytestests/index.jsruns32 bytestests/skill-file.test.mjsruns2,847 bytes
Read SKILL.md
You are the Caveman Learn editing skill. The "caveman learn" command MEASURES where
an agent's tokens go; you are the consent-gated half that turns its findings into
edits — with the user approving each one. You never claim a saving you have not
measured, and you never make the agent dumber.
New sinks you may see, and what they are for:
- cache_efficiency — what a million input tokens actually cost after cache reuse. It is
a RATE the other sinks are priced at, not a volume; never add it to anything.
- tool_output_portfolio — the call shapes that dominate context, ranked.
- session_outcomes — the share of tokens in sessions with no commit in their window.
Correlational. Present it as an observation and read its caveat out loud; a session
without a commit is not a wasted session.
- subagent_spend — the share of context that ran in subagents. Visibility only. Do not
turn it into advice to spawn fewer subagents.View the complete source on GitHubcaveman-manage
When your agent uses it
Inspect Caveman Cloud's experiment lifecycle and block unsafe execution. Use when asked to start, approve, cancel, promote or roll back a Caveman experiment.
What it loads into context
Frontmatter
46 tokensAlways available to the agent
SKILL.md
850 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable gates
- Step 1 — Load project and experiment
- Step 2 — Evaluate evidence
- Step 3 — Propose one action
- Step 4 — Block unsafe execution
- Step 5 — Re-read after external operator action
Files
SKILL.mdcore3,916 bytesSKILL.mdcore3,916 bytes
Read SKILL.md
# Manage eval-gated experiments
Treat every lifecycle change as a production control action. Read current state
and results, then report one supported recommendation or block.
Current agent MCP is intentionally read-only: control-api does not yet enforce a
complete lifecycle transition table and evidence gate atomically.
## Non-negotiable gates
1. A request to review, inspect, explain, or recommend authorizes reads only.
2. Never approve an experiment whose results are pending, whose required
guardrails are absent, or whose evidence reports a breach.
3. Never convert experiment lift into `verified_savings`. Only active real
traffic plus provider-causal, provider-complete ledger evidence can do that.View the complete source on GitHubcaveman-optimize
When your agent uses it
Turn a Caveman optimization observation into an operator-chosen candidate with a paired baseline evaluation. Use when asked to inspect or evaluate a Caveman optimization report. Needs explicit approval.
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
986 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Read the exact observations
- 2. Ask the operator to choose
- 3. Design a candidate and paired eval
- 4. Apply only the approved candidate
- 5. Report observations, not savings
Files
SKILL.mdcore4,723 bytesSKILL.mdcore4,723 bytes
Read SKILL.md
# Evaluate an optimization observation
Use Caveman's report-only observations as diagnostic input. They describe
recorded aggregate shapes; they are not Cave Plan moves, savings estimates,
implementation recipes, experiment eligibility, or proof that a code change is
safe. Keep the workflow operator-chosen and evidence-first.
## 1. Read the exact observations
Require a logged-in Caveman CLI session and run:
```bash
caveman opportunities list
```View the complete source on GitHubcaveman-review
When your agent uses it
Compressed code review - one line per finding with location, problem and fix. Use for /caveman-review, "review this PR", or "review the diff".
What it loads into context
Frontmatter
46 tokensAlways available to the agent
SKILL.md
633 tokensWhen the skill is activated
Reference documents
322 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- Examples
- Auto-Clarity
- Boundaries
Files
README.mddoc1,210 bytesSKILL.mdcore2,567 bytes
Read SKILL.md
Write code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.
## Rules
**Format:** `L<line>: <problem>. <fix>.` — or `<file>:L<line>: ...` when reviewing multi-file diffs.
**Severity prefix (optional, when mixed):**
- `🔴 bug:` — broken behavior, will cause incident
- `🟡 risk:` — works but fragile (race, missing null check, swallowed error)
- `🔵 nit:` — style, naming, micro-optim. Author can ignore
- `❓ q:` — genuine question, not a suggestion
**Drop:**
- "I noticed that...", "It seems like...", "You might want to consider..."View the complete source on GitHubcaveman-setup
When your agent uses it
Wire a repository through the Caveman Cloud gateway so every LLM request is measured, with no behavior change. Use for "set up caveman" or adding LLM spend observability.
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
2,835 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules (non-negotiable)
- Step 1 — Find every live LLM callsite
- Step 2 — Pick the app slug
- Step 3 — Wire each callsite
- Step 4 — Verify with one real request
- Step 5 — Report
- Failure templates (use verbatim, filled in — never soften)
Files
SKILL.mdcore10,524 bytesSKILL.mdcore10,524 bytesSKILL.mdcore10,524 bytesSKILL.mdcore10,524 bytes
Read SKILL.md
You are wiring this repository through the Caveman gateway. Caveman is a
byte-preserving LLM proxy: in record mode it measures what your app sends and
what it costs, and changes nothing else. Your job is a minimal, verified
integration — not a refactor.
The prompt that sent you here provides four values. Refer to them as:
- `GATEWAY` — the gateway base URL (e.g. `https://gateway.caveman.so` or `http://127.0.0.1:8787`)
- `CAVE_API_KEY` — the gateway auth secret (treat like any API key: env var only, never committed, never printed in full)
- `PROVIDER_KEYS` — `stored` (provider keys live encrypted in Caveman Cloud) or `byok` (this app sends its own provider key per request)
- `DASHBOARD` — the dashboard base URL (e.g. `https://app.caveman.so`)
If any value is missing, stop and ask for it. Do not guess a URL or mint a key.
View the complete source on GitHubcaveman-stats
When your agent uses it
Show recorded output and cache-read token usage and mode attribution for the current Claude Code session, or locate the host's native usage report. Trigger: /caveman-stats.
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
404 tokensWhen the skill is activated
Reference documents
577 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
README.mddoc2,754 bytesSKILL.mdcore1,964 bytes
Read SKILL.md
In Claude Code, `src/hooks/caveman-mode-tracker.js` resolves `src/hooks/caveman-stats.js` next to itself and runs it on `/caveman-stats`. The hook does not block the prompt: it supplies the report through `hookSpecificOutput.additionalContext` with an instruction to print it verbatim inside a fenced code block. Do exactly that, and do not calculate, recompute or re-round the numbers yourself.
In Gemini CLI, direct the user to `/stats model` for current session token usage or `/stats session` for session statistics. Gemini custom commands are prompts; they cannot invoke the built-in command or read its live session metrics. Never read Claude Code transcripts as Gemini usage. In other hosts, use a native usage report if one is available; otherwise say that current session usage is unavailable. The Claude reader and its lifetime history apply only to Claude Code. Savings remain unknown in every host without a measured comparison.
The report shows recorded output and cache-read tokens, response counts, and mode attribution where available. Savings are unknown: the transcript has no measured comparison without Caveman. Do not infer saved tokens, percentages, dollars, rule overhead, or a net result from output counts or the current mode.
`--all` and `--since 7d` aggregate the latest recorded output count per session. `--share` reports observed usage with savings unknown. Historical `est_saved_*` fields are ignored; their original history rows remain on disk. The statusline shows the active mode without the retired savings badge.
Original/current memory-file pairs are reported by their measured byte sizes. Those file-size differences do not establish provider token or billing savings. See `docs/HONEST-NUMBERS.md`.View the complete source on GitHubinvestigate-first
When your agent uses it
Diagnose ambiguous failures before editing. Use for unknown causes, intermittent behavior, performance regressions, or investigations needing evidence-ranked hypotheses.
What it loads into context
Frontmatter
32 tokensAlways available to the agent
SKILL.md
118 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore688 bytesagents/openai.yamlasset202 bytes
Read SKILL.md
# Investigate first
Gather evidence before changing product code.
- Separate observed symptom from inferred cause.
- Trace inputs, state transitions, ownership boundaries, and failure output.
- Rank hypotheses by evidence and cheap falsification value.
- Do not edit until one credible mechanism explains evidence.
- Stop exploration when evidence is sufficient to name cause or exact blocker.
Report cause and proof. Make no fix unless task authorizes implementation.View the complete source on GitHublean-build
When your agent uses it
Build feature work with high overbuilding risk. Use for new behavior, product slices, or integrations where repository reuse, strict scope, and an explicit stop condition matter.
What it loads into context
Frontmatter
40 tokensAlways available to the agent
SKILL.md
208 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,090 bytesagents/openai.yamlasset190 bytes
Read SKILL.md
# Lean build
Native Core's architecture-first simplicity remains mandatory. Turn feature into complete narrow outcome fitting system.
- Derive observable acceptance and explicit non-goals from request and repository.
- Trace entry point through layers owning invariants.
- Deliver coherent end-to-end path across responsible layers; never force work into one file, direct expression, or local patch.
- Reuse fitting seam. Refactor when patching duplicates behavior, weakens ownership, or hides root cause.
- Omit modes, providers, config, extensibility, and polish unless acceptance needs them.
- Add surface, dependency, service, config, or migration only for lifecycle design or acceptance; state material tradeoff.
- Keep work runnable; preserve Core safety.
Exercise path. Run focused proof. Stop when acceptance passes. Report only material omissions and trigger.View the complete source on GitHubmegacave
When your agent uses it
Caveman in Classical Chinese: 文言文 register, far fewer characters, technical terms verbatim. Invoke only with /megacave or /caveman wenyan. Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
764 tokensWhen the skill is activated
Reference documents
221 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Floor
- Rules
- When to break the rules
- Pre-send check
Files
README.mddoc809 bytesSKILL.mdcore2,858 bytes
Read SKILL.md
# megacave
以文言答。技術之實皆存,唯贅言去之。
Megacave is caveman in Classical Chinese. 文言文: subjects omitted where recoverable, verb before object, particles (之, 乃, 為, 其, 則, 故, 以) instead of connective phrases. Fewer characters on screen. Token savings are small and noisy; never claim them.
## Persistence
Every response, whole session, until "stop caveman" or "normal mode". Unsure? Still on. `/caveman status` reports the mode and changes nothing: relay the hook's `Caveman mode: <mode>` value; with no hook, the mode you were in (or `off`) plus `(not tracked by this host)`.
## Floor
Never cut or translate: code, commands, paths, API names, error strings, in their original script. Negation (不, 非, 勿, 未, 毋). Numbers and units, Arabic numerals. One term per thing. A clause ambiguous in 文言 becomes 白話. Existing comments in files you edit: never delete or shorten unless asked.
View the complete source on GitHubmigration
When your agent uses it
Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and preservation proof.
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
136 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore784 bytesagents/openai.yamlasset203 bytes
Read SKILL.md
# Migration
Map current readers, writers, data shape, compatibility window, and ownership before editing.
- Define forward path and rollback path.
- Preserve existing data; make destructive steps explicit and separately authorized.
- Keep mixed-version operation safe where rollout can overlap.
- Sequence expand, migrate, verify, then contract when applicable.
- Make retries idempotent and partial failure observable.
- Verify old and new paths at required transition stages.
Stop after requested stage passes; do not perform later destructive contraction implicitly.View the complete source on GitHubsafe-refactor
When your agent uses it
Restructure code while preserving behavior. Use for extraction, consolidation, ownership moves, or cleanup where verification must bracket structural edits.
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
121 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore705 bytesagents/openai.yamlasset201 bytes
Read SKILL.md
# Safe refactor
Define behavior-preservation boundary and establish verification before structural edits.
- Keep feature changes outside refactor.
- Move one ownership boundary at a time.
- Preserve public interfaces, failure behavior, ordering, and compatibility unless explicitly scoped.
- Keep intermediate states buildable and testable.
- Avoid dependency or configuration growth without correctness need.
Run same proof after change. Stop when behavior matches and requested structure is achieved.View the complete source on GitHubsurgical-patch
When your agent uses it
Fix bugs and small behavior changes at the narrowest responsible layer. Use when regression proof, preserved surrounding behavior, and task-relevant tests matter.
What it loads into context
Frontmatter
37 tokensAlways available to the agent
SKILL.md
120 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore664 bytesagents/openai.yamlasset194 bytes
Read SKILL.md
# Surgical patch
Reproduce failure first when economical; otherwise capture strongest available evidence.
- Trace symptom to responsible mechanism.
- Change narrowest layer that owns incorrect behavior.
- Preserve unrelated behavior and user changes.
- Avoid cleanup, renaming, and abstraction outside fix.
- Add only regression proof relevant to task.
Run focused proof plus nearest affected gate. Stop when failure is fixed and regression proof passes.View the complete source on GitHubultracave
When your agent uses it
Caveman at maximum compression: fragments, one word when one word is enough, each fact once. Invoke only with /ultracave or /caveman ultra. Stays on until "stop caveman" or "normal mode".
What it loads into context
Frontmatter
69 tokensAlways available to the agent
SKILL.md
608 tokensWhen the skill is activated
Reference documents
224 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Persistence
- Floor
- Rules
- When to break the rules
- Pre-send check
Files
README.mddoc885 bytesSKILL.mdcore2,513 bytes
Read SKILL.md
# ultracave
Respond terse like smart caveman. All technical substance stay. Only fluff die. Then cut again.
Ultracave is caveman with the grammar stripped. Payload only.
## Persistence
Every response, whole session, until "stop caveman" or "normal mode". Unsure? Still on. `/caveman status` reports the mode and changes nothing: relay the hook's `Caveman mode: <mode>` value; with no hook, the mode you were in (or `off`) plus `(not tracked by this host)`.
## Floor
Never cut: code, commands, paths, API names, error strings (verbatim). not/never/no/only/except. Numbers and units. The user's language. One term per thing. No invented abbreviations, no arrows. Existing comments in files you edit: never delete or shorten unless asked.
View the complete source on GitHubverify-and-stop
When your agent uses it
Prove existing work meets acceptance conditions without expanding scope. Use for validation-only tasks, completion checks, focused gate runs, and last-mile proof.
What it loads into context
Frontmatter
37 tokensAlways available to the agent
SKILL.md
131 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore704 bytesagents/openai.yamlasset197 bytes
Read SKILL.md
# Verify and stop
Translate acceptance conditions into smallest sufficient proof set.
- Reuse still-current results with matching repository state.
- Run focused checks before wider gates.
- Distinguish pass, fail, unavailable, and blocked exactly.
- Do not edit product code unless verification request includes fixes.
- Do not add polish, cleanup, or unrelated tests after criteria pass.
Stop immediately when acceptance proof is complete. Report commands, results, and unresolved risk only.View the complete source on GitHubSkills included
- cavecrew
- caveman
- caveman-compress
- caveman-stats
- megacave
- ultracave
- cavecrew
- caveman
- caveman-commit
- caveman-compress
- caveman-discover
- caveman-evidence-review
- caveman-explore
- caveman-help
- caveman-learn
- caveman-manage
- caveman-optimize
- caveman-review
- caveman-setup
- caveman-stats
- investigate-first
- lean-build
- megacave
- migration
- safe-refactor
- surgical-patch
- ultracave
- verify-and-stop
Repository facts
- License
- Apache-2.0
- Created
- Apr 4, 2026
- Last pushed
- Nov 6, 2026
- Forks
- 6,846
- Open issues
- 62
- Project activity
- Active
Rank over the last 12 weeks
Now #11 · best #11 · same as 30 days ago
- #10 on Aug 2
- #11 from Aug 7 to Oct 24
- #12 on Oct 25
- #11 since Oct 28
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Changed on Oct 27, 2026
No longer found: Access to secrets
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 40 notes
.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.codex/hooks.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notesplugins/caveman/skills/caveman-compress/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/caveman/skills/caveman-compress/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notes.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notes.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notes.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notes.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notes.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notesskills/caveman-compress/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/caveman-compress/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Plugin-wide analysis incomplete; see repository notesskills/caveman-evidence-review/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/caveman-evidence-review/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/caveman-evidence-review/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 51 network referencesin 11 files: caveman-setup/SKILL.md:16 caveman-compress/scripts/compress.py:409 caveman-compress/scripts/compress.py:409 and 8 more
- No hidden or obfuscated text
- No instruction overrides
- 19 executable scriptsin 19 files: caveman-compress/scripts/__init__.py:1 caveman-compress/scripts/__main__.py:1 caveman-compress/scripts/benchmark.py:1 and 16 more
- 77 references to secretsin 7 files: caveman-compress/scripts/compress.py:68 caveman-compress/scripts/compress.py:68 caveman-setup/SKILL.md:17 and 4 more
- No requests to vote in Hot
Show all 147 signals by file
.claude-plugin/marketplace.json
- Network accessline 1
{ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 2
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 5
"owner": { "name": "Julius Brussee", "url": "https://github.com/JuliusBrussee" - Network accessline 6
"name": "Julius Brussee", "url": "https://github.com/JuliusBrussee" }, - Network accessline 7
"url": "https://github.com/JuliusBrussee"
.claude-plugin/plugin.json
plugins/caveman/skills/caveman-compress/scripts/__init__.py
- Executable scriptline 1
Executable file
plugins/caveman/skills/caveman-compress/scripts/__main__.py
- Executable scriptline 1
Executable file
plugins/caveman/skills/caveman-compress/scripts/benchmark.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/caveman/skills/caveman-compress/scripts/cli.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/caveman/skills/caveman-compress/scripts/compress.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 394
[Credential-related source omitted] - Access to secretsline 399
[Credential-related source omitted] - Network accessline 409
PROVIDER_OPENAI_COMPAT, }) DEFAULT_OPENAI_COMPAT_ENDPOINT = "http://localhost:11434/v1" # Ollama - Network accessline 411
DEFAULT_OPENAI_COMPAT_ENDPOINT = "http://localhost:11434/v1" # Ollama - Access to secretsline 457
[Credential-related source omitted] - Access to secretsline 513
[Credential-related source omitted] - Access to secretsline 526
[Credential-related source omitted] - Access to secretsline 527
[Credential-related source omitted] - Access to secretsline 572
[Credential-related source omitted] - Access to secretsline 573
[Credential-related source omitted] - Access to secretsline 575
[Credential-related source omitted] - Access to secretsline 587
[Credential-related source omitted] - Access to secretsline 644
[Credential-related source omitted] - Access to secretsline 663
[Credential-related source omitted] - Network accessline 701
[Credential-related source omitted] - Access to secretsline 701
[Credential-related source omitted] - Network accessline 702
body = {"model": model, "messages": [{"role": "user", "content": prompt}], "stream": False} request = urllib.request.Request( f"{base}/chat/completions", - Network accessline 703
request = urllib.request.Request( - Access to secretsline 708
[Credential-related source omitted] - Access to secretsline 709
[Credential-related source omitted] - Network accessline 712
[Credential-related source omitted] - Access to secretsline 712
[Credential-related source omitted] - Network accessline 713
try: with urllib.request.urlopen(request, timeout=CLAUDE_CALL_TIMEOUT_SECONDS) as response: raw = response.read() - Network accessline 714
with urllib.request.urlopen(request, timeout=CLAUDE_CALL_TIMEOUT_SECONDS) as response: - Access to secretsline 744
[Credential-related source omitted] - Access to secretsline 755
[Credential-related source omitted] - Access to secretsline 764
[Credential-related source omitted]
plugins/caveman/skills/caveman-compress/scripts/detect.py
plugins/caveman/skills/caveman-compress/scripts/validate.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/caveman/skills/caveman/assets/caveman-small.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Caveman">
plugins/caveman/skills/caveman/assets/caveman.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Caveman">
skills/caveman-compress/README.md
- Network accessline 1
<p align="center"> <img src="https://em-content.zobj.net/source/apple/391/rock_1faa8.png" width="80" /> - Network accessline 2
<img src="https://em-content.zobj.net/source/apple/391/rock_1faa8.png" width="80" /> - Access to secretsline 108
[Credential-related source omitted] - Network accessline 120
export CAVEMAN_COMPRESS_PROVIDER=openai-compat export CAVEMAN_COMPRESS_MODEL=qwen3:8b # required export CAVEMAN_COMPRESS_ENDPOINT=http://localhost:11434/v1 # default (Ollama) - Network accessline 121
[Credential-related source omitted] - Network accessline 122
export CAVEMAN_COMPRESS_ENDPOINT=http://localhost:11434/v1 # default (Ollama) - Access to secretsline 123
[Credential-related source omitted] - Network accessline 126
Common endpoints: Ollama `http://localhost:11434/v1`, LM Studio `http://localhost:1234/v1`, llama.cpp server `http://localhost:8080/v1`, vLLM `http://localhost:8000/v1`. Nothing leaves your machine with a local server. A non-local `http://` - Network accessline 225
This skill is part of the [caveman](https://github.com/JuliusBrussee/caveman) toolkit.
skills/caveman-compress/SECURITY.md
skills/caveman-compress/scripts/__init__.py
- Executable scriptline 1
Executable file
skills/caveman-compress/scripts/__main__.py
- Executable scriptline 1
Executable file
skills/caveman-compress/scripts/benchmark.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/caveman-compress/scripts/cli.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/caveman-compress/scripts/compress.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 394
[Credential-related source omitted] - Access to secretsline 399
[Credential-related source omitted] - Network accessline 409
PROVIDER_OPENAI_COMPAT, }) DEFAULT_OPENAI_COMPAT_ENDPOINT = "http://localhost:11434/v1" # Ollama - Network accessline 411
DEFAULT_OPENAI_COMPAT_ENDPOINT = "http://localhost:11434/v1" # Ollama - Access to secretsline 457
[Credential-related source omitted] - Access to secretsline 513
[Credential-related source omitted] - Access to secretsline 526
[Credential-related source omitted] - Access to secretsline 527
[Credential-related source omitted] - Access to secretsline 572
[Credential-related source omitted] - Access to secretsline 573
[Credential-related source omitted] - Access to secretsline 575
[Credential-related source omitted] - Access to secretsline 587
[Credential-related source omitted] - Access to secretsline 644
[Credential-related source omitted] - Access to secretsline 663
[Credential-related source omitted] - Network accessline 701
[Credential-related source omitted] - Access to secretsline 701
[Credential-related source omitted] - Network accessline 702
body = {"model": model, "messages": [{"role": "user", "content": prompt}], "stream": False} request = urllib.request.Request( f"{base}/chat/completions", - Network accessline 703
request = urllib.request.Request( - Access to secretsline 708
[Credential-related source omitted] - Access to secretsline 709
[Credential-related source omitted] - Network accessline 712
[Credential-related source omitted] - Access to secretsline 712
[Credential-related source omitted] - Network accessline 713
try: with urllib.request.urlopen(request, timeout=CLAUDE_CALL_TIMEOUT_SECONDS) as response: raw = response.read() - Network accessline 714
with urllib.request.urlopen(request, timeout=CLAUDE_CALL_TIMEOUT_SECONDS) as response: - Access to secretsline 744
[Credential-related source omitted] - Access to secretsline 755
[Credential-related source omitted] - Access to secretsline 764
[Credential-related source omitted]
skills/caveman-compress/scripts/detect.py
skills/caveman-compress/scripts/validate.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/caveman-explore/package.json
- Executable scriptline 1
Executable file
skills/caveman-explore/tests/skill-file.test.mjs
- Executable scriptline 1
Executable file
skills/caveman-help/SKILL.md
- Network accessline 62
Full docs: https://github.com/JuliusBrussee/caveman
skills/caveman-learn/package.json
- Executable scriptline 1
Executable file
skills/caveman-learn/tests/index.js
- Executable scriptline 1
Executable file
skills/caveman-learn/tests/skill-file.test.mjs
- Executable scriptline 1
Executable file
skills/caveman-setup/SKILL.md
- Network accessline 16
- `GATEWAY` — the gateway base URL (e.g. `https://gateway.caveman.so` or `http://127.0.0.1:8787`) - Network accessline 17
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Network accessline 19
- `DASHBOARD` — the dashboard base URL (e.g. `https://app.caveman.so`) - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 89
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Network accessline 129
Concretely, with slug `support-bot` and the hosted gateway, an OpenAI-SDK base URL reads `https://gateway.caveman.so/w/support-bot/openai/v1`. And in `stored` - Network accessline 130
URL reads `https://gateway.caveman.so/w/support-bot/openai/v1`. And in `stored` - Access to secretsline 141
[Credential-related source omitted] - Network accessline 152
Send one minimal request through the wiring you just built — the app's own cheapest path if it has a script for it, otherwise curl **on the path matching - Network accessline 153
cheapest path if it has a script for it, otherwise curl **on the path matching - Network accessline 158
# OpenAI-protocol wiring: curl -sS "$CAVE_GATEWAY_URL/w/<app>/v1/chat/completions" \ - Network accessline 159
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 160
[Credential-related source omitted] - Network accessline 164
# Anthropic-protocol wiring: curl -sS "$CAVE_GATEWAY_URL/w/<app>/v1/messages" \ - Network accessline 165
[Credential-related source omitted] - Access to secretsline 165
[Credential-related source omitted] - Access to secretsline 166
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Network accessline 208
(<error>). Wiring is in place but unverified — nothing will be measured until the gateway is reachable. Check the URL and network, then re-run the verification curl above." - Network accessline 209
until the gateway is reachable. Check the URL and network, then re-run the verification curl above." - **401 cave_invalid_api_key**: "The gateway rejected CAVE_API_KEY. Mint a new - Network accessline 210
verification curl above." - Access to secretsline 211
[Credential-related source omitted]
skills/caveman-stats/README.md
- Network accessline 46
Gemini CLI uses its native `/stats model` or `/stats session` report. The Caveman command points there; it cannot access Gemini's live metrics or aggregate Claude transcripts as Gemini usage. [Gemini command reference](https://geminicli.com - Network accessline 48
transcripts as Gemini usage. [Gemini command reference](https://geminicli.com/docs/reference/commands/).
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Combined signals: 2 facts
- Reads a credential store, and the same file sends data over the network or runs a command (line 409)caveman-compress/scripts/compress.py:74High confidence
- Reads a credential store, and the same file sends data over the network or runs a command (line 409)caveman-compress/scripts/compress.py:74High confidence
Declared and executed: 2 facts
- Uses a credential store, which the skill description does not mentioncaveman-compress/scripts/compress.py:74High confidence
- Uses a credential store, which the skill description does not mentioncaveman-compress/scripts/compress.py:74High confidence
Signal confidence: 145 facts
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:1High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:2High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:7High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:7High confidence
- Executable script in prose of a file that runscaveman-compress/scripts/__init__.py:1Low confidence
- Executable script in code of a file that runscaveman-compress/scripts/__main__.py:1High confidence
- Executable script in code of a file that runscaveman-compress/scripts/benchmark.py:1High confidence
- Executable script in code of a file that runscaveman-compress/scripts/cli.py:1High confidence
- Executable script in code of a file that runscaveman-compress/scripts/compress.py:1High confidence
- Access to secrets in a comment of a file that runscaveman-compress/scripts/compress.py:68Low confidence
- Access to secrets in a comment of a file that runs: reads a credential storecaveman-compress/scripts/compress.py:69Low confidence
- Access to secrets in code of a file that runs: reads a credential storecaveman-compress/scripts/compress.py:74High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:87High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:100Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:103Low confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:394High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:399High confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:409High confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:411High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:457Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:513Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:526Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:527Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:572Low confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:573High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:575High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:587High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:644Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:663Low confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:701High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:701Low confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:702High confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:703High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:708Low confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/compress.py:709High confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:712High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:712Low confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:713High confidence
- Network access in code of a file that runscaveman-compress/scripts/compress.py:714High confidence
- Access to secrets in prose of a file that runscaveman-compress/scripts/compress.py:744Low confidence
- Access to secrets in prose of a file that runscaveman-compress/scripts/compress.py:755Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecaveman-compress/scripts/compress.py:764Low confidence
- Executable script in code of a file that runscaveman-compress/scripts/detect.py:1High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/detect.py:18High confidence
- Access to secrets in code of a file that runscaveman-compress/scripts/detect.py:93High confidence
- Executable script in code of a file that runscaveman-compress/scripts/validate.py:1High confidence
and 95 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugins/caveman/skills/cavecrew/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Manifest gemini-extension.json | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md plugins/caveman/skills/cavecrew/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugins/caveman/skills/cavecrew/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/juliusbrussee-caveman/)