Ethan has ~300 custom tools in ~/.local/bin but many are almost certainly dead — one-off watchers (feedback-8469-watch.sh, invoice-q2-watcher.sh, kristin-pr3-reply-watcher.sh), .bak files, and duplicate test harnesses. This weekly reaper cross-references every tool against actual invocation evidence (shell history, cron/systemd units, hook configs, and other tools that call it) and delivers a one-tap tablet card listing the truly-orphaned ones with a single 'reap' confirmation that archives them.
Create ~/.local/bin/tool-graveyard-reaper (bash + jq, ~90 lines). For each executable in ~/.local/bin: (1) grep -rl "$name" ~/.claude/settings.json ~/.claude/skills/ /etc/systemd/system/ ~/.config/systemd/user/ and crontab -l; (2) grep -c in ~/.bash_history and ~/.zsh_history; (3) grep -rl in ~/.local/bin itself (excluding self and its own .test.* files) to catch tools invoked by other tools. Score each: referenced=alive, zero-hits + mtime > 90d = orphan candidate. Emit a markdown card to ~/Tablet/cards/tool-graveyard-$(date +%F).md listing orphans with last-modified date and a suggested reason ('one-off watcher for closed issue', 'stale .bak'). Include a REAP: checkbox line per tool. A companion stylus-reply-router rule watches for the checked card and runs `mkdir -p ~/.local/bin/.graveyard && git -C ~/.local/bin mv
**What it does:** every Sunday at 9am it walks each executable in `~/.local/bin`, looks for any evidence the tool is actually used (mentions in your Claude settings/skills, systemd units, crontab, shell history, or calls from other tools in that directory), and anything with zero evidence that hasn't been touched in 90+ days gets listed as an orphan on a tablet card with a suggested reason and a `REAP:` checkbox. Reaping never deletes: `--reap <tool>` moves it into `~/.local/bin/.graveyard/`, so it's fully reversible.
**Created:**
- `~/bin/tool-graveyard-reaper` (92 lines; supports `--dry-run`, `--email`, `--reap`)
- `~/bin/tool-graveyard-reaper.test.sh` — 4 bats tests, all passing: a tool called by another tool is protected, an old unreferenced tool shows up with a checkbox, a recently-modified tool is spared, and `--reap` moves rather than deletes
- `~/.config/systemd/user/tool-graveyard-reaper.{service,timer}` — enabled, next run Sunday 2026-07-19 09:00
**Live run:** it scanned your real `~/.local/bin` and wrote `~/Tablet/cards/tool-graveyard-2026-07-13.md` with 66 orphan candidates.
One thing worth your eye before you check any boxes: some of those 66 are pip/venv shims rather than tools you wrote (`spacy`, `isympy`, `doesitcache`). The heuristic only knows about invocation evidence, not package-manager provenance, so a package's console script looks identical to a dead one-off watcher. If that noise bug