/devteam-bug
Fix a bug with structured diagnostic workflow. Uses interview to clarify details and Bug Council for complex issues.
$ npx -y skills add michael-harris/devteam --skill devteam-bug --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/devteam-bug
Context preview
The summary Claude sees to decide when to auto-load this skill.
Fix a bug with structured diagnostic workflow. Uses interview to clarify details and Bug Council for complex issues.
SKILL.md
devteam-bug.SKILL.mdname: devteam-bug
description: Fix a bug with structured diagnostic workflow. Uses interview to clarify details and Bug Council for complex issues.
argument-hint: "<description>" [--council] [--severity <level>] [--scope <path>] [--skip-interview] [--eco]
user-invocable: true
allowed-tools: Read, Edit, Write, Glob, Grep, Bash, Task
model: opus
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 stepsPhase 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`
- `--council` flag 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
- EvideRead more
name: devteam-bug description: Fix a bug with structured diagnostic workflow. Uses interview to clarify details and Bug Council for complex issues. argument-hint: "<description>" [--council] [--severity <level>] [--scope <path>] [--skip-interview] [--eco] user-invocable: true allowed-tools: Read, Edit, Write, Glob, Grep, Bash, Task model: opus
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 stepsPhase 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`
- `--council` flag 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
- EvideA Claude Code plugin providing 127 specialized AI agents with: Interview-driven planning - Clarify requirements before work begins Codebase research - Investigate patterns and blockers before implementation SQLite state management - Reliable session tracking
Repo: michael-harris/devteam
Other skills on michael-harris-devteam.
devteam-design-drift
Detect design inconsistencies and drift from the design system. Launches the Design Drift Detector to analyze the codebase for deviations.
devteam-design
Coordinate UX/UI design work across platforms. Launches the UX System Coordinator to orchestrate design specialists.
devteam-implement
Execute implementation work - plans, sprints, tasks, or ad-hoc work.
devteam-issue-new
Create a new GitHub issue with proper formatting, labels, and context from the codebase.

