Inline orchestration workflow for code duplication detection and consolidation with Beads integration. Provides step-by-step phases for reuse-hunter detection, priority-based consolidation with reuse-fixer, and verification cycles.
62
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/reuse-health-inline/SKILL.mdYou ARE the orchestrator. Execute this workflow directly without spawning a separate orchestrator agent.
Beads Init → Detection → Create Issues → Consolidate by Priority → Close Issues → Verify → Beads CompleteMax iterations: 3 Priorities: 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=Code duplication scan and consolidation"IMPORTANT: Save the wisp ID (e.g., mc2-xxx) for later use.
Initialize TodoWrite:
[
{"content": "Duplication detection", "status": "in_progress", "activeForm": "Detecting duplications"},
{"content": "Create Beads issues", "status": "pending", "activeForm": "Creating issues"},
{"content": "Consolidate high priority duplications", "status": "pending", "activeForm": "Consolidating high priority"},
{"content": "Consolidate medium priority duplications", "status": "pending", "activeForm": "Consolidating medium priority"},
{"content": "Consolidate low priority duplications", "status": "pending", "activeForm": "Consolidating low priority"},
{"content": "Verification scan", "status": "pending", "activeForm": "Verifying consolidation"},
{"content": "Complete Beads wisp", "status": "pending", "activeForm": "Completing wisp"}
]Invoke reuse-hunter via Task tool:
subagent_type: "reuse-hunter"
description: "Detect all code duplications"
prompt: |
Scan the entire codebase for code duplications:
- Duplicated TypeScript interfaces/types
- Duplicated Zod schemas
- Duplicated constants and configuration objects
- Copy-pasted utility functions
- Similar code patterns that should be abstracted
- Categorize by priority (high/medium/low)
Generate: reuse-hunting-report.md
Return summary with duplication counts per priority.After reuse-hunter returns:
reuse-hunting-report.mdFor each duplication found, create a Beads issue:
# High - types/schemas duplicated across packages (P2)
bd create "REUSE: {type_name} duplicated in {locations}" -t chore -p 2 -d "{description}" \
--deps discovered-from:{wisp_id}
# Medium - constants/configs duplicated (P3)
bd create "REUSE: {const_name} duplicated" -t chore -p 3 -d "{description}" \
--deps discovered-from:{wisp_id}
# Low - utility functions, minor duplications (P4)
bd create "REUSE: {item_name} can be consolidated" -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 (high → medium → low):
Check if duplications exist for this priority
Update TodoWrite: mark current priority in_progress
Claim issues in Beads:
bd update {issue_id} --status in_progressInvoke reuse-fixer via Task tool:
subagent_type: "reuse-fixer"
description: "Consolidate {priority} duplications"
prompt: |
Read reuse-hunting-report.md and consolidate all {priority} priority duplications.
For each duplication:
1. Backup files before editing
2. Determine canonical location (usually shared-types or shared package)
3. Create/update canonical file with the type/schema/constant
4. Replace duplicates with imports/re-exports
5. Log change to .tmp/current/changes/reuse-changes.json
Generate/update: reuse-consolidation-implemented.md
Return: count of consolidated items, count of failed consolidations, list of consolidated item IDs.Quality Gate (inline):
pnpm type-check
pnpm buildClose consolidated issues in Beads:
bd close {issue_id_1} {issue_id_2} ... --reason "Consolidated to shared-types"Update TodoWrite: mark priority complete
Repeat for next priority
After all priorities consolidated:
Update TodoWrite: mark verification in_progress
Invoke reuse-hunter (verification mode):
subagent_type: "reuse-hunter"
description: "Verification scan"
prompt: |
Re-scan codebase after consolidation.
Compare with previous reuse-hunting-report.md.
Report:
- Duplications resolved (count)
- Duplications remaining (count)
- New duplications introduced (count)Decision:
Complete Beads wisp:
# If all consolidated
bd mol squash {wisp_id}
# If nothing found
bd mol burn {wisp_id}Create issues for remaining items (if any):
bd create "REUSE REMAINING: {item_name}" -t chore -p {priority} \
-d "Not consolidated. May require architectural decision. See reuse-hunting-report.md"Generate summary for user:
## Code Reuse Health Check Complete
**Wisp ID**: {wisp_id}
**Iterations**: {count}/3
**Status**: {SUCCESS/PARTIAL}
### Results
- Found: {total} duplications
- Consolidated: {consolidated} ({percentage}%)
- Remaining: {remaining}
### By Priority
- High: {consolidated}/{total}
- Medium: {consolidated}/{total}
- Low: {consolidated}/{total}
### Beads Issues
- Created: {count}
- Closed: {count}
- Remaining: {count}
### Validation
- Type Check: {status}
- Build: {status}
### Artifacts
- Detection: `reuse-hunting-report.md`
- Consolidation: `reuse-consolidation-implemented.md`Update TodoWrite: mark wisp complete
SESSION CLOSE PROTOCOL:
git status
git add .
bd sync
git commit -m "refactor: consolidate {consolidated} duplications ({wisp_id})"
bd sync
git pushIf quality gate fails:
Rollback available: .tmp/current/changes/reuse-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:
Types/Interfaces (shared-types):
Constants (shared-types):
Utilities (shared package or re-export):
Single Source of Truth Pattern:
packages/shared-types/src/export * from '@package/shared-types/{module}'| Phase | Beads Action |
|---|---|
| 1. Pre-flight | bd mol wisp exploration |
| 3. After detection | bd create for each item |
| 5. Before consolidation | bd update --status in_progress |
| 5. After consolidation | bd close --reason "Consolidated" |
| 7. Complete | bd mol squash/burn |
| 7. Remaining | bd create for unconsolidated 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.