bugfix
End-to-end bugfix workflow — analyze environment (local Docker or cloud production), collect evidence, prepare bug report, plan fix, apply appropriate engineer role, implement and verify the fix.
SKILL.md.claude/skills/bugfix/SKILL.md
GitHubBugfix
End-to-end workflow for investigating, diagnosing, and fixing bugs. Orchestrates environment analysis (analyze-local skill or analyze-prod skill), evidence collection, bug report preparation, fix planning, and implementation by the appropriate engineering role.
1. Receive Bug Report
Gather the bug description from the user:
- What is the expected behavior?
- What is the actual behavior? (error message, wrong output, crash, performance issue)
- Steps to reproduce (if known)
- Environment: local (Docker) or production (cloud K8s)?
- When did it start? (after deploy, config change, or unknown)
- Severity: P1 (outage), P2 (degraded), P3 (minor), P4 (cosmetic)
If the user provides partial information, extract what you can and fill gaps during analysis. For P1/P2 — skip detailed intake and proceed immediately to Step 2.
2. Analyze Environment
Based on the environment, delegate to the appropriate analysis follow-up skill:
| Environment | follow-up skill | When to use |
|---|---|---|
| Local Docker / Docker Compose | analyze-local skill |
Bug observed in local dev environment |
| Cloud production (GKE/AKS/EKS, managed DB) | analyze-prod skill |
Bug observed in production or staging |
| Code-only (no infra) | Skip to Step 3 | Bug is in application logic, no environment analysis needed |
Run the follow-up skill. It will:
- Apply the appropriate diagnostic role (
sre-engineerrole ordevops-engineerrole) - Collect environment snapshot (container/pod status, logs, metrics, networking)
- Identify infrastructure-level issues
- Present diagnosis
If the follow-up skill resolves the issue (e.g., container restart, config fix) — skip to Step 8.
If the root cause is in application code — continue to Step 3 with the collected evidence.
3. Detect Stack and Apply Engineer Role
Determine the affected service's tech stack and apply the appropriate engineering role:
- Read project's
AGENTS.md— tech stack declaration - Scan project files —
package.json,pom.xml,requirements.txt,go.mod, etc. - Check evidence from Step 2 — which service's logs show the error? What language is the stack trace in?
Role assignment:
| Stack Signal | Role |
|---|---|
Next.js, React, TypeScript, .tsx files |
frontend-engineer role |
Spring Boot, Java, .java files |
java-engineer role |
FastAPI, Python, .py files |
python-engineer role |
| Terraform, Dockerfile, Helm, CI/CD | devops-engineer role |
| ML model, training pipeline, inference | ml-engineer role |
| Multiple stacks affected | Apply all relevant roles |
| Unknown / general | software-engineer role |
Announce the applied role(s) to the user.
4. Collect Evidence
Gather all evidence into a structured collection. Combine data from Step 2 (environment analysis) with code-level investigation:
<evidence_checklist> - **Error output**: Full error message, stack trace, exit code - **Logs**: Relevant log entries (timestamped) from the affected service - **Reproduction**: Can you reproduce locally? Consistent or intermittent? - **Scope**: Which endpoints / features / components are affected? - **Timeline**: When did it start? What changed? (recent commits, deploys, config) - **Data**: Specific inputs that trigger the bug (request payload, user ID, dataset) - **Metrics** (if from prod): Error rate, latency change, affected user count - **Related code**: Files, functions, lines most likely involved </evidence_checklist>Use the applied role's debugging methodology to trace the bug:
- Read error stack traces to identify the failing code path
- Search codebase for related functions, error handlers, and data flows
- Check recent changes (
git log -n 20 --oneline) for potential regressions - Identify the minimal reproduction case
5. Prepare Bug Report
Compile findings into a structured bug report. Present to the user for review:
## Bug Report
### Summary
[One sentence: what is broken]
### Severity: [P1 | P2 | P3 | P4]
### Environment
- **Type**: [local | production]
- **Service**: [name]
- **Stack**: [detected] | **Role**: [applied]
### Expected Behavior
[What should happen]
### Actual Behavior
[What actually happens — include error messages]
### Steps to Reproduce
1. [step]
2. [step]
3. [observed error]
### Evidence
- **Stack trace**: [snippet or reference]
- **Logs**: [relevant entries]
- **Metrics**: [if applicable]
- **Affected code**: [file:line references]
### Root Cause Analysis
[Technical explanation of why the bug occurs]
### Affected Components
- [file/module 1] — [how it's affected]
- [file/module 2] — [how it's affected]
Wait for user confirmation before proceeding to fix.
6. Plan the Fix
Create an ordered fix plan following the applied role's guidelines:
- Root cause fix — address the actual cause, not symptoms
- Complete fix — fix everything described in the bug report. Do not leave cosmetic issues, lint warnings, or minor problems unfixed. Do not create follow-up tickets for things you can fix now
- Regression test — test that would have caught this bug
- Related fixes — any adjacent issues discovered during investigation. Fix them in the same changeset — do not increase tech debt
Present the plan:
## Fix Plan
### Root Cause
[What caused the bug — one sentence]
### Changes
1. [file] — [what to change and why]
2. [file] — [what to change and why]
...
### Tests
1. [test file] — [test that reproduces and verifies the fix]
2. [test file] — [regression test for edge cases]
### Risk Assessment
- **Blast radius**: [which features could be affected by this change]
- **Rollback**: [how to revert if the fix causes issues]
Wait for user approval before implementing.
7. Implement the Fix
Execute the approved plan step by step.
For each change:
- State what you are about to do (file, change summary)
- Implement the fix following the applied role's code quality standards
- Verify the code compiles/parses without errors
Then write tests:
- Regression test: Reproduces the original bug — must fail without fix, pass with fix
- Edge case tests: Cover related scenarios discovered during investigation
- Run the full test suite to catch regressions
Rules:
- Fix the root cause, not the symptom
- Fix EVERYTHING reported in the bug — do not leave non-blocking or cosmetic issues unfixed
- Fix all lint errors, style violations, and warnings introduced or exposed by the change
- Follow existing code patterns and conventions
- No new warnings or linter errors — and fix pre-existing ones in the affected files if trivial
- Do not defer fixes to "follow-up" tasks — complete the fix in this changeset
- Do not increase tech debt — if you touch it, leave it better than you found it
- If the fix is more complex than expected — stop and discuss with the user
- If you need more information about the environment, run specialized follow-up skills (
analyze-localskill oranalyze-prodskill) to collect it
8. Self-Review the Fix
Before declaring the bug fixed, perform a thorough self-review. Do NOT skip this step.
Code review checklist:
- Re-read every changed file diff — verify correctness and completeness
- Every item from the bug report or user description is addressed — nothing left unfixed
- No cosmetic issues, lint warnings, or style violations remain in changed files
- No TODO, FIXME, or "will fix later" comments introduced
- No tech debt created — the code is clean and production-ready
- Run linter on all changed files — zero warnings
- Run formatter on all changed files — zero diffs
If the self-review reveals any remaining issues — fix them before proceeding. Do not declare the bug fixed with known remaining problems.
9. Verify the Fix
Verify the bug is resolved in the appropriate environment:
For local bugs:
- Run the reproduction steps — confirm the bug no longer occurs
- Run the full test suite — all tests pass (new + existing)
- If Docker-based: rebuild and verify with
analyze-localskill (optional) - If you need more data, run specialized follow-up skills for
analyze-localskill to collect environment state
For production bugs:
- Verify the fix locally first
- Deploy through normal CI/CD pipeline (do NOT hotfix production directly)
- After deploy: re-run relevant checks from
analyze-prodskill to confirm resolution - Monitor error rates and SLIs for regression
Verification checklist:
- Original bug no longer reproduces
- ALL items from the bug report are fixed — not just the primary symptom
- Regression test passes
- Full test suite passes (no new failures)
- Linter passes with zero warnings on changed files
- No unrelated files modified
- Code follows project conventions and role guidelines
- No deferred work — everything is done in this changeset
If any check fails — fix and re-verify. Do NOT declare the bug fixed until every checkbox passes.
10. Summary
Present the completed bugfix:
- Bug: one-sentence summary
- Severity: P1–P4
- Environment: local / production
- Role(s) applied: which roles were used
- Root cause: technical explanation
- Fix: what was changed (files, brief description)
- Tests added: count and description
- Self-review: passed — all items verified
- Verification: how it was confirmed fixed
- Remaining issues: NONE (if any remain, go back and fix them before reporting)
- Prevention: recommendations to avoid similar bugs (e.g., add validation, improve error handling, add monitoring)
Integration
- follow-up skills:
analyze-localskill,analyze-prodskill (environment diagnostics — launch as specialized skills when more data is needed) - Follow-up:
run-testsskill (verify fix),pre-commitskill (quality gate),create-prskill (submit fix) - Skills:
code-reviewskill (review fix),test-strategyskill (test strategy),worktree-isolationskill (branch isolation)