Current session: !source "${CLAUDE_PLUGIN_ROOT}/scripts/state.sh" && get_current_session 2>/dev/null || echo "No active session"
Active sprint: !source "${CLAUDE_PLUGIN_ROOT}/scripts/state.sh" && get_kv_state "active_sprint" 2>/dev/null || echo "None"
Failure count: !source "${CLAUDE_PLUGIN_ROOT}/scripts/state.sh" && get_kv_state "consecutive_failures" 2>/dev/null || echo "0"
DevTeam Bug Command
Command: /devteam:bug "<description>" [options]
Fix a bug with structured diagnostic workflow. Uses interview to clarify details and Bug Council for complex issues.
Usage
# Basic bug fix (will trigger interview for missing details)
/devteam:bug "Login fails for guest users"
# Force Bug Council activation
/devteam:bug "Memory leak in image processor" --council
# Specify severity
/devteam:bug "Payment processing timeout" --severity critical
/devteam:bug "Button color wrong" --severity low
# Limit scope
/devteam:bug "API returns 500" --scope "src/api/"
# Skip interview (if you have all details)
/devteam:bug "Null pointer in UserService.getProfile() when user.settings is undefined" --skip-interview
# Cost-optimized
/devteam:bug "Minor typo in error message" --eco
Options
| Option | Description |
|---|---|
--council | Force Bug Council activation |
--severity <level> | Set severity: critical, high, medium, low |
--scope <path> | Limit search to specific files/directories |
--skip-interview | Skip clarifying questions |
--eco | Cost-optimized execution |
--model <model> | Force starting model |
Your Process
Phase 0: Initialize Session
source "${CLAUDE_PLUGIN_ROOT}/scripts/state.sh"
source "${CLAUDE_PLUGIN_ROOT}/scripts/events.sh"
SESSION_ID=$(start_session "/devteam:bug \"$1\"" "bug")
log_session_started "/devteam:bug \"$1\"" "bug"
set_phase "interview"
Phase 1: Interview (Clarify Bug Details)
Always ask if missing from description:
bug_interview:
required:
- key: expected_behavior
question: "What is the expected behavior?"
skip_if: description contains "should" or "expected"
- key: actual_behavior
question: "What is the actual behavior?"
skip_if: description contains "but" or "instead" or "actually"
conditional:
- key: repro_steps
condition: description lacks step-by-step
question: "What steps reproduce this issue?"
- key: environment
condition: could be environment-specific
question: "What environment does this occur in? (browser, OS, version)"
- key: frequency
condition: not clear if consistent
question: "Does this happen every time or intermittently?"
- key: recent_changes
condition: could be regression
question: "Did this start recently? Any recent changes that might be related?"
- key: error_message
condition: no error mentioned
question: "Are there any error messages or stack traces?"
Interview flow:
async function runBugInterview(description) {
log_interview_started('bug')
const questions = []
const responses = {}
// Check what's missing from description
if (!hasExpectedBehavior(description)) {
const response = await ask("What is the expected behavior?")
responses.expected_behavior = response
questions.push('expected_behavior')
}
if (!hasActualBehavior(description)) {
const response = await ask("What is the actual behavior?")
responses.actual_behavior = response
questions.push('actual_behavior')
}
// ... more conditional questions
log_interview_completed(questions.length)
return responses
}
Phase 2: Classify Bug
Determine severity:
severity_indicators:
critical:
- "security vulnerability"
- "data loss"
- "system down"
- "production"
- "payment"
- "authentication bypass"
high:
- "major functionality broken"
- "affects all users"
- "no workaround"
- "blocking"
medium:
- "workaround exists"
- "affects some users"
- "degraded experience"
low:
- "cosmetic"
- "typo"
- "minor"
- "edge case"
Determine complexity:
complexity_indicators:
simple:
- single file likely
- clear error message
- obvious fix
- similar bug fixed before
moderate:
- multiple files
- requires investigation
- unclear root cause
complex:
- architectural issue
- race condition
- intermittent
- cross-system
- no reproduction steps
Phase 3: Create Bug Record
INSERT INTO bugs (
session_id,
description,
severity,
complexity,
status
) VALUES (
'session-xxx',
'Login fails for guest users when settings is null',
'high',
'moderate',
'in_progress'
);
Phase 4: Bug Council (if needed)
Activate Bug Council if:
- Complexity is
complex --councilflag specified- 2+ failed fix attempts
- Severity is
critical
if (shouldActivateBugCouncil(bug)) {
log_bug_council_activated(reason)
set_phase('bug_council')
// Spawn 5 diagnostic agents in parallel
const councilResults = await Promise.all([
Task({
subagent_type: "diagnosis:root-cause-analyst",
model: "opus",
prompt: `Analyze bug: ${bug.description}
Expected: ${bug.expected_behavior}
Actual: ${bug.actual_behavior}
Repro: ${bug.repro_steps}
Provide:
- Root cause hypothesis
- Evidence supporting hypothesis
- Recommended fix approach
- Confidence score (0-1)`
}),
Task({
subagent_type: "diagnosis:code-archaeologist",
model: "opus",
prompt: `Investigate git history for: ${bug.description}
Look for:
- Recent changes to affected areas
- When behavior changed
- Related commits
- Previous similar fixes`
}),
Task({
subagent_type: "diagnosis:pattern-matcher",
model: "opus",
prompt: `Search codebase for patterns related to: ${bug.description}
Find:
- Similar code patterns
- Related bugs/fixes
- Anti-patterns that might cause this
- Inconsistencies in handling`
}),
Task({
subagent_type: "diagnosis:systems-thinker",
model: "opus",
prompt: `Analyze system interactions for: ${bug.description}
Consider:
- Component dependencies
- Data flow
- State management
- Integration points`
}),
Task({
subagent_type: "diagnosis:adversarial-tester",
model: "opus",
prompt: `Find edge cases for: ${bug.description}
Test:
- Boundary conditions
- Null/undefined scenarios
- Race conditions
- Security implications`
})
])
// Ranked-choice voting
const decision = synthesizeCouncilDecision(councilResults)
log_bug_council_completed(decision.approach, decision.votes)
return decision
}
Council output format:
bug_council_decision:
winning_proposal:
agent: diagnosis:pattern-matcher
diagnosis: "Inconsistent null checking across 4 locations"
confidence: 0.92
votes:
diagnosis:pattern-matcher: 11 points (winner)
diagnosis:systems-thinker: 10 points
diagnosis:root-cause-analyst: 16 points
diagnosis:adversarial-tester: 16 points
diagnosis:code-archaeologist: 22 points
consensus: "Strong (4/5 ranked winner in top 2)"
recommended_fix:
approach: "Add optional chaining to all user.settings ac