Inline orchestration workflow for automated bug detection and fixing with Beads integration. Provides step-by-step phases for bug-hunter detection, history enrichment for priority bugs, priority-based fixing with bug-fixer, and verification cycles.
60
76%
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/health-bugs/SKILL.mdYou ARE the orchestrator. Execute this workflow directly without spawning a separate orchestrator agent.
Beads Init → Detection → History Check (HIGH+) → Create Issues → Fix by Priority → Close Issues → Verify → Beads CompleteMax iterations: 3 Priorities: critical → high → medium → low Beads integration: Automatic issue tracking History enrichment: For CRITICAL and HIGH bugs only
Setup directories:
mkdir -p .tmp/current/{plans,changes,backups}Validate environment:
package.json existstype-check and build scripts existCreate Beads wisp:
bd mol wisp healthcheckIMPORTANT: Save the wisp ID (e.g., mc2-xxx) for later use.
Initialize TodoWrite:
[
{ "content": "Bug detection", "status": "in_progress", "activeForm": "Detecting bugs" },
{ "content": "Create Beads issues", "status": "pending", "activeForm": "Creating issues" },
{ "content": "Fix critical bugs", "status": "pending", "activeForm": "Fixing critical bugs" },
{ "content": "Fix high priority bugs", "status": "pending", "activeForm": "Fixing high bugs" },
{
"content": "Fix medium priority bugs",
"status": "pending",
"activeForm": "Fixing medium bugs"
},
{ "content": "Fix low priority bugs", "status": "pending", "activeForm": "Fixing low bugs" },
{ "content": "Verification scan", "status": "pending", "activeForm": "Verifying fixes" },
{ "content": "Complete Beads wisp", "status": "pending", "activeForm": "Completing wisp" }
]Invoke bug-hunter via Task tool:
subagent_type: "bug-hunter"
description: "Detect all bugs"
prompt: |
Scan the entire codebase for bugs:
- Run type-check and build
- Check for security vulnerabilities
- Find dead code and debug statements
- Categorize by priority (critical/high/medium/low)
Generate: bug-hunting-report.md
Return summary with bug counts per priority.After bug-hunter returns:
bug-hunting-report.mdPurpose: Find previously fixed similar bugs to detect regressions and provide historical context.
When to run: Only for CRITICAL and HIGH priority bugs (skip for MEDIUM/LOW).
Extract keywords from each CRITICAL/HIGH bug title/description
Search Beads history:
# For each bug, search by relevant keywords
bd search "{keywords}" --status closed --limit 5
# Also search by category
bd search "security" --status closed --limit 5 # for security bugs
bd search "dependency" --status closed --limit 5 # for dependency bugs
bd search "{file_path}" --status closed --limit 3 # for file-specific bugsEvaluate results:
Enrich bug data:
For each bug with history matches:
- Add to bug metadata: related_issues: [mc2-xxx, mc2-yyy]
- Note if potential regression: is_regression: true/falseStore enrichment for Phase 3 and Phase 5:
// .tmp/current/history-enrichment.json
{
"bug_1": {
"related_closed": ["mc2-abc", "mc2-def"],
"is_potential_regression": false,
"context": "Similar security fix in mc2-abc"
}
}# Bug: "Vulnerable tar package"
bd search "tar" --status closed --limit 5
bd search "vulnerability" --status closed --limit 5
bd search "pnpm override" --status closed --limit 5
# Results: No matches → new bug, no enrichment needed
# Results: mc2-xyz found → add to related_issuesNote: History enrichment is informational, not blocking. Missing history doesn't prevent fixing.
For each bug found, create a Beads issue.
# If related_issues found in Phase 2.5:
bd create "BUG: {bug_title}" -t bug -p {1|2} \
-d "{description}
## History Context
Related closed issues: {related_issues}
Potential regression: {yes/no}
Previous fix context: {context from enrichment}" \
--deps discovered-from:{wisp_id}
# If no history found:
bd create "BUG: {bug_title}" -t bug -p {1|2} -d "{description}" \
--deps discovered-from:{wisp_id}# Medium bugs (P3)
bd create "BUG: {bug_title}" -t bug -p 3 -d "{description}" \
--deps discovered-from:{wisp_id}
# Low bugs (P4)
bd create "BUG: {bug_title}" -t bug -p 4 -d "{description}" \
--deps discovered-from:{wisp_id}Track issue IDs in a mapping:
bug_1 → mc2-aaa (related: mc2-xyz)
bug_2 → mc2-bbb
...Update TodoWrite: mark "Create Beads issues" complete.
Run inline validation:
pnpm type-check
pnpm buildFor each priority (critical → high → medium → low):
Check if bugs exist for this priority
Update TodoWrite: mark current priority in_progress
Claim issues in Beads:
bd update {issue_id} --status in_progressInvoke bug-fixer via Task tool:
subagent_type: "bug-fixer"
description: "Fix {priority} bugs"
prompt: |
Read bug-hunting-report.md and fix all {priority} priority bugs.
## History Context (for CRITICAL/HIGH only)
Check .tmp/current/history-enrichment.json for related closed issues.
If a bug has related_closed issues:
- Review the previous fix approach (bd show {related_id})
- Consider if this is a regression
- Apply learnings from previous fix
For each bug:
1. Backup file before editing
2. If history exists, review previous fix first
3. Implement fix
4. Log change to .tmp/current/changes/bug-changes.json
Generate/update: bug-fixes-implemented.md
Return: count of fixed bugs, count of failed fixes, list of fixed bug IDs.Quality Gate (inline):
pnpm type-check
pnpm buildClose fixed issues in Beads:
bd close {issue_id_1} {issue_id_2} ... --reason "Fixed in health check"Update TodoWrite: mark priority complete
Repeat for next priority
After all priorities fixed:
Update TodoWrite: mark verification in_progress
Invoke bug-hunter (verification mode):
subagent_type: "bug-hunter"
description: "Verification scan"
prompt: |
Re-scan codebase after fixes.
Compare with previous bug-hunting-report.md.
Report:
- Bugs fixed (count)
- Bugs remaining (count)
- New bugs introduced (count)Decision:
Complete Beads wisp:
# If all bugs fixed
bd mol squash {wisp_id}
# If no bugs found (nothing to do)
bd mol burn {wisp_id}Create issues for remaining bugs (if any):
bd create "REMAINING: {bug_title}" -t bug -p {priority} \
-d "Not fixed in health check. See bug-hunting-report.md"Generate summary for user:
## Bug Health Check Complete
**Wisp ID**: {wisp_id}
**Iterations**: {count}/3
**Status**: {SUCCESS/PARTIAL}
### Results
- Found: {total} bugs
- Fixed: {fixed} ({percentage}%)
- Remaining: {remaining}
### By Priority
- Critical: {fixed}/{total}
- High: {fixed}/{total}
- Medium: {fixed}/{total}
- Low: {fixed}/{total}
### Beads Issues
- Created: {count}
- Closed: {count}
- Remaining: {count} (issues created for follow-up)
### Validation
- Type Check: {status}
- Build: {status}
### Artifacts
- Detection: `bug-hunting-report.md`
- Fixes: `bug-fixes-implemented.md`Update TodoWrite: mark wisp complete
SESSION CLOSE PROTOCOL:
git status
git add .
bd sync
git commit -m "fix: health check - {fixed} bugs fixed ({wisp_id})"
bd sync
git pushIf quality gate fails:
Rollback available: .tmp/current/changes/bug-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 healthcheck |
| 2.5. History (HIGH+) | bd search "{keywords}" --status closed |
| 3. After detection | bd create for each bug (with history) |
| 5. Before fix | bd update --status in_progress |
| 5. After fix | bd close --reason "Fixed" |
| 7. Complete | bd mol squash/burn |
| 7. Remaining | bd create for unfixed bugs |
See references/worker-prompts.md for detailed prompts.
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.