skillreaper
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 13 GitHub stars
Code Fail
- spawnSync — Synchronous process spawning in npm/bin/skillreaper.js
- network request — Outbound network request in npm/bin/skillreaper.js
- execSync — Synchronous shell command execution in npm/install.js
- network request — Outbound network request in npm/install.js
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Evidence-based pruning for your AI-agent stack — scan, report, and safely prune unused skills/MCP servers/agents using real transcript evidence
Your AI agent reads 187 skill descriptions every session.
You use 4. Reap the rest.
brew install thousandflowers/tap/skillreaper
reap
One command. Zero config. Read-only. It scans your transcripts, finds
every skill/agent/MCP your AI loads but never uses, and tells you exactly
what it costs in context window, latency, and money.
The problem
Every Claude Code session loads 150–300 skill descriptions, agent configs,
and rule files into context. Most of it is dead weight:
- 187 items scanned
- 142 never used (76 %)
- 8 000 tok/session wasted
- ~2 160 000 tok/month burned on irrelevant instructions
Your agent scrolls through a wall of irrelevant tools looking for the right
one. Wrong picks cost turns. Turns cost tokens. Tokens cost money.
reappoints at the waste. You decide what goes.
Before → After
| Before skillreaper | After skillreaper |
|---|---|
| 187 items loaded every session | 45 items, all actively used |
| Wrong tool 1 in 5 turns | Right tool on first try |
| 8 000 tok/session dead | Full context budget for real work |
| ~30 pages of irrelevant instructions read monthly | Zero |
| Lower cache hit rate = higher latency | Smaller prompt fits in cache |
Install
# macOS — Homebrew
brew install thousandflowers/tap/skillreaper
# Any platform — Go (Go ≥ 1.22)
go install github.com/thousandflowers/skillreaper/cmd/reap@latest
Binary downloads — macOS (Intel + Apple Silicon), Linux (amd64 + arm64),
Windows (amd64 + arm64) — all on the
releases page.
Single static binary, no dependencies.
Upgrading, uninstalling, and platform-specific tips →
INSTALL.md.
Usage
reap # scan + report (read-only)
reap prune # quarantine unused items (reversible)
reap keep <name> # protect an item from pruning
reap restore --all # undo every prune
reap --json # structured JSON output
reap --md # markdown report
reap --days 7 # shorter evidence window
reap version # print version
Everything is reversible. reap prune moves files to a reaped/
directory with a versioned manifest. Nothing is ever deleted. Runreap restore --all and everything goes back exactly where it was.
Verdicts
| Label | Meaning |
|---|---|
REAP |
Zero uses — safe to quarantine |
KEEP |
Used, tiny, or manually protected |
REVIEW |
Too new or not enough sessions |
Every verdict includes a reason suffix explaining why.
Privacy
100 % local. Zero telemetry, zero network, zero uploads. Reads config
files and session transcripts on disk — your data never leaves your machine.
Platform support
| Platform | Full support |
|---|---|
| Claude Code | ✅ |
| OpenCode | ✅ |
| Codex CLI | ✅ |
| Hermes | ✅ |
| Cursor | Inventory only (no local transcripts) |
| OpenClaw | Inventory only (no session history) |
How it works
- Auto-detect — probes every known config directory. Only installed
platforms are scanned. No flags needed. - Inventory — scans skills, agents, MCP servers, hooks, and prose
files across all detected platforms. - Evidence — parses session transcripts (JSONL or SQLite). Counts
tool_useblocks and command invocations with timestamps. - Cost — character weight (
ceil(chars / 3.7)) + init parser tool
declarations. Model pricing auto-resolves by model name. - Verdict — REAP / KEEP / REVIEW with machine-readable reason.
- Act —
reap prunequarantines.reap restore --allundoes.
Limitations (transparency)
Token counts are approximate. The tool estimates tokens asceil(chars / 3.7), based on the average English BPE tokenizer rate.
Real token counts vary by tokenizer (Claude vs GPT vs Gemini) and content
(more code ≈ more tokens per char). This is a documented approximation —
the relative ranking matters more than the absolute number.
Platform format stability. Each supported platform has its own config
layout and transcript format. These change over time as platforms evolve.
Parser updates are an ongoing maintenance reality. The project is architected
for easy fixes (one struct per platform in internal/platform/), but format
changes can lag by days to weeks after a platform update.
Not a tool declaration fix. Claude Code's deferred tools reduce the
init-time tool declaration overhead. Skillreaper addresses a different
problem: always-loaded skill/agent/prose files. If a skill description
is 248 characters, it is read into context every session — regardless of
lazy tool loading. These two optimizations are complementary, not competing.
Design
- 100 % local, zero dependencies, single static binary (Go ≥ 1.22)
- Multi-platform — adding a new platform is one struct in
internal/platform/ - Reversible quarantine — never deletes, never destructive
- MIT licensed
cmd/reap/ CLI entry point
internal/
platform/ platform definitions + auto-detection
scan/ inventory scanners
usage/ transcript parser (JSONL + SQLite)
report/ verdict logic + ANSI/JSON/MD renderers
prune/ reversible quarantine
cost/ model pricing
docs/ demo assets
Issues · Discussions · Releases · MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found