Inline orchestration workflow for dead code detection and removal with Beads integration. Provides step-by-step phases for dead-code-hunter detection, priority-based cleanup with dead-code-remover, and verification cycles.
60
70%
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 ./.claude/skills/cleanup-health-inline/SKILL.mdYou ARE the orchestrator. Execute this workflow directly without spawning a separate orchestrator agent.
Beads Init → Detection → Create Issues → Remove by Priority → Close Issues → Verify → Beads CompleteMax iterations: 3 Priorities: critical → high → medium → low Beads integration: Automatic issue tracking
Setup directories:
mkdir -p .tmp/current/{plans,changes,backups}Validate environment:
package.json existstype-check and build scripts existCreate Beads wisp:
bd mol wisp exploration --vars "question=Dead code cleanup scan"IMPORTANT: Save the wisp ID (e.g., mc2-xxx) for later use.
Initialize TodoWrite:
[
{"content": "Dead code detection", "status": "in_progress", "activeForm": "Detecting dead code"},
{"content": "Create Beads issues", "status": "pending", "activeForm": "Creating issues"},
{"content": "Remove critical dead code", "status": "pending", "activeForm": "Removing critical dead code"},
{"content": "Remove high priority dead code", "status": "pending", "activeForm": "Removing high dead code"},
{"content": "Remove medium priority dead code", "status": "pending", "activeForm": "Removing medium dead code"},
{"content": "Remove low priority dead code", "status": "pending", "activeForm": "Removing low dead code"},
{"content": "Verification scan", "status": "pending", "activeForm": "Verifying cleanup"},
{"content": "Complete Beads wisp", "status": "pending", "activeForm": "Completing wisp"}
]Invoke dead-code-hunter via Task tool:
subagent_type: "dead-code-hunter"
description: "Detect all dead code"
prompt: |
Scan the entire codebase for dead code:
- Unused imports and exports
- Commented out code blocks
- Unreachable code
- Debug statements (console.log, debugger)
- Unused variables and functions
- Unused dependencies
- Categorize by priority (critical/high/medium/low)
Generate: dead-code-report.md
Return summary with dead code counts per priority.After dead-code-hunter returns:
dead-code-report.mdFor each dead code item found, create a Beads issue:
# Critical (P1)
bd create "CLEANUP: {item_title}" -t chore -p 1 -d "{description}" \
--deps discovered-from:{wisp_id}
# High (P2)
bd create "CLEANUP: {item_title}" -t chore -p 2 -d "{description}" \
--deps discovered-from:{wisp_id}
# Medium (P3)
bd create "CLEANUP: {item_title}" -t chore -p 3 -d "{description}" \
--deps discovered-from:{wisp_id}
# Low (P4)
bd create "CLEANUP: {item_title}" -t chore -p 4 -d "{description}" \
--deps discovered-from:{wisp_id}Track issue IDs in a mapping for later closure.
Update TodoWrite: mark "Create Beads issues" complete.
Run inline validation:
pnpm type-check
pnpm buildFor each priority (critical → high → medium → low):
Check if dead code exists for this priority
Update TodoWrite: mark current priority in_progress
Claim issues in Beads:
bd update {issue_id} --status in_progressInvoke dead-code-remover via Task tool:
subagent_type: "dead-code-remover"
description: "Remove {priority} dead code"
prompt: |
Read dead-code-report.md and remove all {priority} priority dead code.
For each item:
1. Backup file before editing
2. Remove dead code
3. Log change to .tmp/current/changes/cleanup-changes.json
Generate/update: dead-code-cleanup-summary.md
Return: count of removed items, count of failed removals, list of removed item IDs.Quality Gate (inline):
pnpm type-check
pnpm buildClose removed issues in Beads:
bd close {issue_id_1} {issue_id_2} ... --reason "Removed in cleanup"Update TodoWrite: mark priority complete
Repeat for next priority
After all priorities cleaned:
Update TodoWrite: mark verification in_progress
Invoke dead-code-hunter (verification mode):
subagent_type: "dead-code-hunter"
description: "Verification scan"
prompt: |
Re-scan codebase after cleanup.
Compare with previous dead-code-report.md.
Report:
- Dead code removed (count)
- Dead code remaining (count)
- New dead code introduced (count)Decision:
Complete Beads wisp:
# If all cleaned
bd mol squash {wisp_id}
# If nothing found
bd mol burn {wisp_id}Create issues for remaining items (if any):
bd create "REMAINING: {item_title}" -t chore -p {priority} \
-d "Not removed in cleanup. See dead-code-report.md"Generate summary for user:
## Cleanup Health Check Complete
**Wisp ID**: {wisp_id}
**Iterations**: {count}/3
**Status**: {SUCCESS/PARTIAL}
### Results
- Found: {total} dead code items
- Removed: {removed} ({percentage}%)
- Remaining: {remaining}
### By Priority
- Critical: {removed}/{total}
- High: {removed}/{total}
- Medium: {removed}/{total}
- Low: {removed}/{total}
### Beads Issues
- Created: {count}
- Closed: {count}
- Remaining: {count}
### Validation
- Type Check: {status}
- Build: {status}
### Artifacts
- Detection: `dead-code-report.md`
- Cleanup: `dead-code-cleanup-summary.md`Update TodoWrite: mark wisp complete
SESSION CLOSE PROTOCOL:
git status
git add .
bd sync
git commit -m "chore: cleanup - {removed} dead code items removed ({wisp_id})"
bd sync
git pushIf quality gate fails:
Rollback available: .tmp/current/changes/cleanup-changes.json
To rollback:
1. Read changes log
2. Restore files from .tmp/current/backups/
3. Re-run workflowIf worker fails:
If Beads command fails:
| Phase | Beads Action |
|---|---|
| 1. Pre-flight | bd mol wisp exploration |
| 3. After detection | bd create for each item |
| 5. Before removal | bd update --status in_progress |
| 5. After removal | bd close --reason "Removed" |
| 7. Complete | bd mol squash/burn |
| 7. Remaining | bd create for unremoved items |
8c3b576
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.