playbook/outfitter-agents/plugins/outfitter/skills/debugging/references/integration.md

98 lines
2.5 KiB
Markdown

# Debugging Integration
Connect debugging to broader development workflow.
## Test-Driven Debugging
Debugging follows TDD pattern:
1. Write test that reproduces bug (RED - fails)
2. Fix the bug (GREEN - passes)
3. Confirm fix works and prevents regression
The failing test becomes regression protection.
## Defensive Programming After Fix
Add validation at multiple layers:
```typescript
function processUser(userId: string): User {
// Input validation
if (!userId || typeof userId !== 'string') {
throw new Error('Invalid userId: must be non-empty string');
}
// Fetch with error handling
const user = await fetchUser(userId);
if (!user) {
throw new Error(`User not found: ${userId}`);
}
// Output validation
if (!user.email || !user.name) {
throw new Error('Invalid user data: missing required fields');
}
return user;
}
```
Key layers:
- Input validation (reject bad data early)
- Operation error handling (catch failures)
- Output validation (ensure correct results)
- Invariant assertions (verify assumptions)
## Post-Fix Documentation
After fixing, document:
1. **What broke**: Symptom description
2. **Root cause**: Why it happened
3. **The fix**: What changed
4. **Prevention**: How to avoid in future
Example:
```typescript
/**
* Processes user data from API.
*
* Bug fix (2024-01-15): Added validation for missing email field.
* Root cause: API sometimes returns partial user objects when
* user hasn't completed onboarding.
* Prevention: Always validate required fields before processing.
*/
```
## Anti-Patterns
Common debugging mistakes to avoid:
**Random Walk** - trying different things hoping one works
- Why it fails: Wastes time, may mask real issue
- Instead: Follow stages 1-2 to understand system
**Quick Fix** - stopping symptom without finding root cause
- Why it fails: Bug will resurface or manifest differently
- Instead: Use stage 1 to find root cause before fixing
**Cargo Cult** - copying code without understanding why
- Why it fails: May not apply to your context
- Instead: Use stage 2 to understand working examples
**Shotgun Approach** - changing multiple things simultaneously
- Why it fails: Can't tell which change fixed it
- Instead: Test one hypothesis at a time
## Escalation Triggers
When to ask for help:
1. After 3 failed fix attempts - architecture may be wrong
2. No clear reproduction - need more context/access
3. External system issues - need vendor/team involvement
4. Security implications - need security expertise
5. Data corruption risks - need backup/recovery planning