Dead code removal via parallel scanning, reference verification, batch execution, and atomic commits. You are the ORCHESTRATOR — you scan, verify, batch, then delegate ALL removals.
59
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/dead-code-removal/SKILL.mdDead code removal via massively parallel scanning and execution. You are the ORCHESTRATOR — you scan, verify, batch, then execute all removals with atomic commits.
Rules:
False-positive guards — NEVER mark as dead:
index re-exports@public / @api doc tagscreateXXXHook), tool factories (createXXXTool), plugin definitionsRun ALL of these in parallel:
Compiler/linter strict mode (primary scanner — run FIRST):
# TypeScript
npx tsc --noEmit --noUnusedLocals --noUnusedParameters 2>&1
# Python
vulture src/ --min-confidence 80
# Go
staticcheck -checks U1000 ./...This gives you the definitive list of unused locals, imports, parameters, and types with exact file:line locations.
Orphaned file detection (run simultaneously): Find files in src/ NOT imported by any other file. Check all import statements. EXCLUDE: index files, test files, entry points, markdown, config files. Return: file paths.
Unused export detection (run simultaneously): Find exported functions/types/constants that are never imported by other files. Cross-reference: for each export, grep the symbol name across src/ — if it only appears in its own file, it's a candidate. EXCLUDE: entry point exports, test files. Return: file path, line, symbol name, export type.
Collect all results into a master candidate list.
For EACH candidate from Phase 1:
# Search for all references (excluding the declaration itself)
grep -rn "symbolName" src/ --include="*.ts" | grep -v "declaration_file.ts"
# Or use language-specific tools:
# TypeScript: ts-prune, ts-unused-exports
# Python: vulture --min-confidence 80
# Go: staticcheck -checks U1000
# 0 references = CONFIRMED dead
# 1+ references = NOT dead, drop from listAlso apply the false-positive guards above. Produce a confirmed list:
| # | File | Symbol | Type | Action |
|---|------|--------|------|--------|
| 1 | src/foo.ts:42 | unusedFunc | function | REMOVE |
| 2 | src/bar.ts:10 | OldType | type | REMOVE |
| 3 | src/baz.ts:7 | ctx | parameter | PREFIX _ |Action types:
REMOVE — delete the symbol/import/file entirelyPREFIX _ — unused function parameter required by signature → rename to _paramNameIf ZERO confirmed: report "No dead code found" and STOP.
Goal: maximize parallel execution with ZERO conflicts.
Example batching:
Batch A: [src/hooks/foo/hook.ts — 3 unused imports]
Batch B: [src/features/bar/manager.ts — 2 unused constants, 1 dead function]
Batch C: [src/tools/baz/tool.ts — 1 unused param, src/tools/baz/types.ts — 1 unused type]
Batch D: [src/dead-file.ts — entire file deletion]Files in the same directory CAN be batched together (they won't conflict as long as no two agents edit the same file). Maximize batch count for parallelism.
For EACH batch:
_ (do NOT remove — required by signature)rmgit checkout -- [files] and report failuregit add [your-specific-files] && git commit -m "refactor: remove dead code from [brief file list]"git add [specific files]). NEVER git add -A — other batches may be running in parallel.After ALL batches complete:
# Language-specific type check (must pass)
npx tsc --noEmit # TypeScript
mypy src/ # Python
go vet ./... # Go
# Tests (note any NEW failures vs pre-existing)
npm test
pytest
# Build (must pass)
npm run buildProduce summary:
## Dead Code Removal Complete
### Removed
| # | Symbol | File | Type | Commit |
|---|--------|------|------|--------|
| 1 | unusedFunc | src/foo.ts | function | abc1234 |
### Skipped (verification failed)
| # | Symbol | File | Reason |
|---|--------|------|--------|
### Verification
- Type check: PASS/FAIL
- Tests: X passing, Y failing (Z pre-existing)
- Build: PASS/FAIL
- Total removed: N symbols across M files
- Total commits: K atomic commitsIf a specific scope is provided, narrow the scan:
all or empty → full project scan (default)STOP and report if:
Inspired by: oh-my-opencode remove-deadcode command
4f38503
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.