OpenParable
Skip to content
← Back to skills

health-bugs

Testing & Quality

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.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/maslennikov-ig/claude-code-orchestrator-kit/blob/HEAD/.claude/skills/health-bugs/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/health-bugs, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Bug Health Check (Inline Orchestration)

You ARE the orchestrator. Execute this workflow directly without spawning a separate orchestrator agent.

Workflow Overview

Beads Init → Detection → History Check (HIGH+) → Create Issues → Fix by Priority → Close Issues → Verify → Beads Complete

Max iterations: 3 Priorities: critical → high → medium → low Beads integration: Automatic issue tracking History enrichment: For CRITICAL and HIGH bugs only


Phase 1: Pre-flight & Beads Init

  1. Setup directories:

    mkdir -p .tmp/current/{plans,changes,backups}
    
  2. Validate environment:

    • Check package.json exists
    • Check type-check and build scripts exist
  3. Create Beads wisp:

    bd mol wisp healthcheck
    

    IMPORTANT: Save the wisp ID (e.g., mc2-xxx) for later use.

  4. 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" }
    ]
    

Phase 2: Detection

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:

  1. Read bug-hunting-report.md
  2. Parse bug counts by priority
  3. If zero bugs → skip to Phase 7 (Final Summary)
  4. Update TodoWrite: mark detection complete

Phase 2.5: History Enrichment (CRITICAL/HIGH only)

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

Steps

  1. Extract keywords from each CRITICAL/HIGH bug title/description

  2. 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 bugs
    
  3. Evaluate results:

    • Match found: Similar closed issue exists
      • Could be regression (same bug returned)
      • Could be related pattern (similar problem elsewhere)
    • No match: New type of bug
  4. 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/false
    
  5. Store 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"
      }
    }
    

Output

  • If related issues found: Include in bug description when creating Beads issue
  • If potential regression: Flag for special attention in bug-fixer prompt
  • If no history: Proceed normally (new bug type)

Example

# 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_issues

Note: History enrichment is informational, not blocking. Missing history doesn't prevent fixing.


Phase 3: Create Beads Issues

For each bug found, create a Beads issue.

For CRITICAL/HIGH bugs (with history enrichment):

# 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}

For MEDIUM/LOW bugs (no history check):

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


Phase 4: Quality Gate (Pre-fix)

Run inline validation:

pnpm type-check
pnpm build
  • If both pass → proceed to fixing
  • If fail → report to user, exit

Phase 5: Fixing Loop

For each priority (critical → high → medium → low):

  1. Check if bugs exist for this priority

    • If zero → skip to next priority
  2. Update TodoWrite: mark current priority in_progress

  3. Claim issues in Beads:

    bd update {issue_id} --status in_progress
    
  4. Invoke 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.
    
  5. Quality Gate (inline):

    pnpm type-check
    pnpm build
    
    • If FAIL → report error, suggest rollback, exit
    • If PASS → continue
  6. Close fixed issues in Beads:

    bd close {issue_id_1} {issue_id_2} ... --reason "Fixed in health check"
    
  7. Update TodoWrite: mark priority complete

  8. Repeat for next priority


Phase 6: Verification

After all priorities fixed:

  1. Update TodoWrite: mark verification in_progress

  2. 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)
    
  3. Decision:

    • If bugs_remaining == 0 → Phase 7
    • If iteration < 3 AND bugs_remaining > 0 → Go to Phase 2
    • If iteration >= 3 → Phase 7 with remaining bugs

Phase 7: Final Summary & Beads Complete

  1. Complete Beads wisp:

    # If all bugs fixed
    bd mol squash {wisp_id}
    
    # If no bugs found (nothing to do)
    bd mol burn {wisp_id}
    
  2. 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"
    
  3. 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`
  1. Update TodoWrite: mark wisp complete

  2. SESSION CLOSE PROTOCOL:

    git status
    git add .
    bd sync
    git commit -m "fix: health check - {fixed} bugs fixed ({wisp_id})"
    bd sync
    git push
    

Error Handling

If 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 workflow

If worker fails:

  • Report error to user
  • Keep Beads wisp open for manual completion
  • Suggest manual intervention
  • Exit workflow

If Beads command fails:

  • Log error but continue workflow
  • Beads tracking is enhancement, not blocker

Quick Reference

PhaseBeads Action
1. Pre-flightbd mol wisp healthcheck
2.5. History (HIGH+)bd search "{keywords}" --status closed
3. After detectionbd create for each bug (with history)
5. Before fixbd update --status in_progress
5. After fixbd close --reason "Fixed"
7. Completebd mol squash/burn
7. Remainingbd create for unfixed bugs

Worker Prompts

See references/worker-prompts.md for detailed prompts.