Systematic bug investigation, resolution, and documentation. Use when fixing bugs that need thorough analysis, test coverage, and a formal bugfix report. Applies systematic debugging methodology, creates regression tests, and generates a standardized report in specs/bugfixes/<bug-name>/. Triggers on requests like "fix this bug", "debug and document this issue", or when a bug needs both resolution and documentation.
Resources
1Install
npx skillscat add arjenschwarz/agentic-coding/fix-bug Install via the SkillsCat registry.
Bug Fix Workflow
Fix bugs systematically while ensuring proper test coverage and documentation.
Transit Integration
If a T-[number] ticket is mentioned (e.g., T-42), track it throughout the workflow:
- Extract the display ID from the reference
- Automatically create a branch named
T-{number}/bugfix-{bug-name}(no user prompt needed) - Move the ticket to
in-progressstatus after branch creation. Add a comment: "Starting bugfix — investigating on branch T-{number}/bugfix-{bug-name}" - Move the ticket to
ready-for-reviewstatus after the PR is created. Add a comment: "Fix ready for review — PR #{pr-number}"
Use mcp__transit__update_task_status with the display ID to update status. Always include a comment when changing status.
If no Transit ticket is mentioned, skip all Transit-related steps.
Workflow
1. Bug Name
Determine a concise, descriptive bug name (kebab-case) for the report directory. Derive from the issue description or ask the user if unclear.
2. Branch Creation
When a Transit ticket is present: If the current branch already matches T-{number}/bugfix-* (e.g., in a worktree), skip branch creation. Otherwise, automatically create a branch named T-{number}/bugfix-{bug-name} and switch to it. Do not ask for permission. Move the ticket to in-progress status.
When no Transit ticket is present: Use AskUserQuestion to offer branch naming options:
bugfix/{bug-name}- Standard bugfix branch- Skip branch creation
3. Systematic Investigation
Invoke the systematic-debugger skill to perform structured root cause analysis:
- Phase 1: Initial Overview (problem statement)
- Phase 2: Systematic Inspection (identify defects)
- Phase 3: Root Cause Analysis (Five Whys)
- Phase 4: Solution & Verification (proposed fixes)
Capture findings for the bugfix report.
4. Create Regression Test
Before implementing the fix:
- Write a failing test that reproduces the bug
- Run the test to confirm it fails as expected
- This test prevents future regressions
The test should:
- Be minimal and focused on the specific bug
- Include a descriptive name referencing the bug
- Document the expected vs actual behaviour in comments
5. Implement Fix
Apply the fix identified during investigation:
- Make minimal, targeted changes
- Run the regression test to confirm it passes
- Run full test suite to ensure no breakage
- Run linters/validators as per project conventions
6. Update Documentation
Review and update any affected documentation:
- Code comments if behaviour changed
- README or docs if user-facing
- API docs if interface changed
7. Generate Bugfix Report
Create specs/bugfixes/<bug-name>/report.md using the template in references/report-template.md.
8. Commit and PR (Transit bugs only)
When a Transit ticket is present, after all checks pass:
- Commit all changes using the
/commitskill - Push the branch to the remote
- Create a PR using
gh pr createwith:- Title:
Fix T-{number}: {bug-name-in-title-case} - Body: Summary of the bug, root cause, and fix (reference the bugfix report)
- Title:
- Move the Transit ticket to
ready-for-reviewstatus. Add a comment with the PR URL.
When no Transit ticket is present, do not commit or create a PR unless asked.
Output
Upon completion:
- Bug is fixed and verified
- Regression test exists and passes
- Full test suite passes
- Report exists at
specs/bugfixes/<bug-name>/report.md - If a Transit ticket was tracked: changes committed, PR created, ticket moved to
ready-for-review - If no Transit ticket: code is ready for commit (do not commit unless asked)