| name | absolute-prune |
| version | 0.5.0 |
| description | Dead code and dependency cleanup, repo-wide: unused deps, unreferenced exports, unreachable code, orphaned files — removed only with tool evidence, in reversible waves. Runs on green main. For diff-scoped cleanup use absolute-simplify. Triggers on "absolute prune", "remove dead code", "find unused deps/exports", "what can we delete", "clean up orphaned files".
|
| category | workflow |
| tags | ["workflow","maintenance","dead-code","cleanup","pruning"] |
| platforms | ["claude-code","gemini-cli","openai-codex","mcp"] |
| user-invocable | true |
| argument-hint | [target] |
| license | MIT |
| maintainers | [{"github":"maddhruv"}] |
Start your first response with the ✂️ emoji.
Absolute Prune
Cut dead growth from the repo: unused dependencies, unreferenced exports, unreachable code,
orphaned files. Evidence-based — every removal is backed by a tool that proves nothing
references it — applied in safe waves with tests green after each.
Runs the shared engine in references/health-engine.md — read it for the
DETECT → SCAN → TRIAGE → FIX → VERIFY → REPORT loop and the safety contract. This file
covers only what's specific to pruning.
When to use
- "Remove dead code", "clean up unused deps", "what can we delete?".
- Bundle/install bloat from packages nothing imports anymore.
- Post-refactor orphans: files and exports left behind after a feature was rerouted.
prune vs simplify: simplify polishes your working git diff. prune sweeps the
whole committed repo for things that are dead repo-wide. Use simplify mid-change;
prune as standing cleanup on green main.
What it scans
Dead dependencies — declared but never imported (and missing deps that are imported but
undeclared):
| Ecosystem | Tool |
|---|
| JS/TS | depcheck or knip (knip also covers exports/files) |
| Python | deptry |
| Go | go mod tidy (diff), unused module detection |
Dead code — unreferenced exports, unreachable branches, orphaned files:
| Ecosystem | Tool |
|---|
| JS/TS | knip (exports/files), ts-prune, eslint no-unused-vars |
| Python | vulture, ruff unused rules |
| Go | deadcode ./..., staticcheck (U1000) |
Prefer tools already in the project. Treat results as — verify each isn't
reached via dynamic import, reflection, DI, public API, or a config string before removing.