# Workflow Pattern Example: Systematic Debugging Demonstrates identifying, specifying, and implementing a workflow pattern. ## Pattern Identification User: "I have a bug where users can't log in after password reset." Agent flow: 1. Asked for error message and reproduction steps 2. Created minimal reproduction case, confirmed bug 3. Added logging, inspected state, reviewed recent changes 4. Identified root cause: password hash using wrong algorithm 5. Implemented fix, added regression test 6. Bug resolved Pattern: Systematic debugging - structured investigation, not trial-and-error. Type: Workflow (multi-step sequence with clear stages) Why not orchestration: Doesn't primarily coordinate external tools Why not heuristic: Not a decision rule, but a procedural process ## Pattern Specification ```yaml name: systematic-debugging type: workflow description: Structured root cause investigation stages: - name: Reproduction goal: Create reliable, minimal reproduction actions: - Gather error messages, logs, stack traces - Document exact steps to trigger - Reduce to minimal reproduction case - Verify reproducibility exit_criteria: Can trigger bug on demand - name: Investigation goal: Form hypothesis about root cause actions: - Add logging at suspected points - Use debugger to inspect state - Review recent changes (git log, blame) - Check related issues/PRs exit_criteria: Specific, testable hypothesis - name: Validation goal: Confirm fix works without regressions actions: - Implement minimal fix - Test against reproduction case - Run full test suite exit_criteria: Fix resolves bug, no new failures - name: Prevention goal: Prevent future recurrence actions: - Add regression test - Document root cause in commit exit_criteria: Test would fail if bug reoccurs quality_criteria: - Each stage has clear outputs - Don't skip reproduction for "fixes" - Don't accept fixes without root cause - Always add regression test anti_patterns: - Random trial-and-error - Fixing symptoms instead of root cause - No regression tests - Incomplete reproduction ``` ## Component Recommendation Invocation: User-triggered (bug report, debugging request) Automation: Cannot be fully automated (requires judgment) Domain Expertise: General software engineering Decision: **SKILL** SKILL because: - User invokes when encountering bugs - Requires judgment (hypothesis formation, fix validation) - Not specialized domain (any engineer should debug) - Benefits from progressive disclosure Not COMMAND: Can't be scripted, requires contextual decisions Not AGENT: General engineering, not specialized domain Not HOOK: User-invoked, not event-triggered COMMAND: `/reproduce-bug` — automate running reproduction steps COMMAND: `/run-regression-tests` — run tests related to bug area HOOK: post-fix — warn if no regression test added ## Implementation Sketch ### File Structure ```text skills/ systematic-debugging/ SKILL.md examples/ auth-bug.md race-condition.md references/ debugging-tools.md common-patterns.md ``` ### Key Sections **Quick Start**: 1. Reproduce: Create minimal, reliable reproduction 2. Investigate: Form hypothesis using logging/debugging 3. Validate: Implement fix, verify no regressions 4. Prevent: Add regression test, document learnings **Hypothesis Documentation**: ```text Hypothesis: Password reset uses bcrypt, login uses SHA-256, causing hashes to never match. Evidence: - resetPassword() calls bcrypt.hash() - login() calls crypto.createHash('sha256') - Logged hashes have different formats Test: Change login to use bcrypt.compare() ``` **Regression Test**: ```typescript it('allows login with new password after reset', async () => { const user = await createTestUser('test@example.com'); await resetPassword(user.email); const newPassword = getLatestResetToken(user.email); const result = await login(user.email, newPassword); expect(result.success).toBe(true); }); ``` ## Anti-Patterns **Random trial and error**: - ✗ "Let me try changing this and see" - ✓ "Based on logs, I hypothesize X. Let me test that." **Fixing symptoms**: - ✗ "Skip password verification for reset users" - ✓ "Fix root cause: inconsistent hashing algorithms" **No regression test**: - ✗ Fix, commit, move on - ✓ Add test that fails if bug reoccurs ## Success Metrics | Metric | Before | After | |--------|--------|-------| | Time to resolution | Varies (30min–5hr) | Consistent (1–2hr) | | Regression rate | ~15% | <5% | | First-fix success | ~40% | ~75% |