Releases: thousandflowers/skillreaper
Release list
v0.4.0
Changelog
- eb3d604 Add motivation section to README
- c8fcd43 Merge pull request #10 from thousandflowers/feat/issues-7-8-9-route-apm-payload
- 69ab02d Update downloads badge cache duration in README
- 4baa5b7 feat(apm): emit a proposed APM apm.yml from per-repo firing (reap apm)
- 97f9d41 feat(gap): payload-quality axis — score MCP tools that fire but return noise
- b0e1784 feat(route): usage-informed lazy-load routing plan (reap route)
- 649cc91 fix: address adversarial review (2 high, 3 medium, low) across #7/#8/#9
v0.3.3
v0.3.2
Changelog
- a6a469b fix: pin CI Go to go.mod (1.26.4) via go-version-file
v0.3.1
Changelog
- d731906 fix: drop redundant postinstall to silence npm 11 install-scripts warning
v0.3.0
Changelog
- 9e4b751 Address security review path-safety findings
- 80b1d23 Harden pruning and release install paths
- 797b879 Merge pull request #6 from brianluby/worktree-fix-usage-counting
- b5d4397 Remove release badge from README
- 6112c30 feat: write shared config files atomically
- 0dee58f fix: address automated PR review findings
- 2427e0c fix: cap file sizes read during scan
- 2f9569e fix: confine restore paths and tighten state-file permissions
- 80d27c8 fix: confirm bulk mute and resolve named agents
- c7440ca fix: correct skill usage counting and per-session dead-tool display
- f5cefa5 fix: harden mute, hook management, and low-activity cost estimate
- 0d45a68 fix: harden mute/prune writes and centralize path-safety helpers
- 2a48728 fix: harden the sqlite3 subprocess
- 8fedda8 fix: ignore rules symlinks that escape the rules tree
- bfe6560 fix: inherit environment for sqlite subprocess
- 74fa70f fix: make destructive prune/mute operations recoverable
- 6cbb674 refactor: drop unused frontmatter name in skill/agent scan
v0.2.4
Changelog
- 6c548c6 fix: parse flags in any position so subcommand flags aren't dropped
v0.2.1
Changelog
- 881ba31 feat: MUTE, why, manifest, per-project, tool-surface + OpenCode SQLite evidence
v0.2.0
v0.2.0
MUTE verdict — a third state between KEEP and REAP
Skills that are rarely used but carry heavy token weight now get a MUTE
verdict. reap mute <name> strips the description from SKILL.md, keeping
the skill available but removing its context cost. Original description is
backed up to ~/.claude/reaped/muted/<name>.md.bak.
reap unmute <name> and reap unmute --all restore from backup.
CLAUDE.md protection
Skills referenced in CLAUDE.md are automatically protected with
KEEP(claude-md-ref), regardless of usage data. Scans ./CLAUDE.md,
~/CLAUDE.md, and ./.claude/CLAUDE.md.
Weekly nudge — passive SessionStart hook
reap install-hook installs a hook that checks once a week whether your
REAP or MUTE count has grown. One line to stderr if it has, nothing otherwise.
reap uninstall-hook removes only the skillreaper entry — other hooks intact.
Broken-vs-cold distinction
A skill that was invoked but errored now shows as REAP(broken) in bright
red, separate from REAP(unused). Broken skills get their own section in
reap gap with error counts.
Credits
Ideas for MUTE, CLAUDE.md protection, the weekly nudge, and broken-vs-cold
were inspired by groundskeeper,
optimize, and discussion in
r/claudeskills. Full credits in README.
v0.1.3
What's new
Loaded vs fired utilization gap (issue #4)
reap gap— dedicated breakdown showing per-category utilization with token weight, 10-segment bars, and color-coded rows- Compact utilization line in the default
reapreport (⟡ utilization 4%) - Output formats: text,
--json,--md - MCP token weight shown as
?(unknown); no sessions showsn/a
Commits
v0.1.2
Changelog
- fcfab69 fix: use utf8.RuneCountInString for dynamic box width