maddhruv/absolute/absolute-prune

Claude Code and agent skill by maddhruv/absolute

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

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".

Install

npx vskill@latest install maddhruv/absolute/absolute-prune

SKILL.md

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):

EcosystemTool
JS/TSdepcheck or knip (knip also covers exports/files)
Pythondeptry
Gogo mod tidy (diff), unused module detection

Dead code — unreferenced exports, unreachable branches, orphaned files:

EcosystemTool
JS/TSknip (exports/files), ts-prune, eslint no-unused-vars
Pythonvulture, ruff unused rules
Godeadcode ./..., staticcheck (U1000)

Prefer tools already in the project. Treat results as candidates — verify each isn't reached via dynamic import, reflection, DI, public API, or a config string before removing.


Risk ranking (TRIAGE)

WaveRemovalDefault
1unused devDeps, unreferenced local exports/functionsfix now — lowest risk
2unused runtime deps, orphaned internal filesfix this pass after confirming no dynamic ref
3anything reachable via public API, plugin system, dynamic require, reflection, or configgated / usually defer — high false-positive risk

Static tools miss dynamic references. Anything in wave 3, or anything a tool flags but you can't prove is dead, gets confirmed with the user or deferred — never auto-removed.


Fix & verify

  • Remove in small, reversible waves. One category per wave (e.g. "unused devDeps", then

"orphaned files").

  • After each wave: full test + build + typecheck. A green typecheck/build is the proof the

removed symbol truly had no references. If anything goes red, the symbol wasn't dead — revert and reclassify.

  • Removing a dep: drop it from the manifest, regenerate the lockfile, rebuild.
  • Don't delete: generated files, vendored code, public-API surface, or anything load-bearing

for a config/plugin you can't trace. Report those as "suspected dead, needs human call". Treat preferences.health.protectedPaths from config as never-delete globs — anything matching is out of scope even if a tool flags it.


Gotchas

  1. Trusting the tool blindly. Dynamic imports, DI containers, reflection, and string-keyed

lookups defeat static analysis. Confirm before deleting.

  1. Removing public API. A library's unused-internally export may be its whole point. Check

the package entry points / exports map.

  1. Deleting generated or vendored files. They look orphaned but are rebuilt/checked-in on purpose.
  2. Big-bang prune. Deleting everything flagged in one commit makes regressions un-bisectable.

Wave it.

  1. Scope creep into refactor. prune removes dead things; it does not restructure live code.

Restructuring → simplify or work.


Companion commands

  • `/absolute simplify` — for restructuring/clarity of live code in your diff.
  • `/absolute upgrade` — pairs well: prune unused deps, then upgrade what remains.
  • `/absolute debt` — pruning often clears a batch of lint/unused-var warnings too.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
189
Repository forks
32
7-day trend score
26

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/maddhruv/absolute/absolute-prune/badge)](https://verified-skill.com/skills/maddhruv/absolute/absolute-prune)

Something wrong with this skill or its page? Tell us.