mirror of
https://github.com/duthaho/claudekit.git
synced 2026-07-26 06:31:02 +03:00
320 lines
6.8 KiB
Markdown
320 lines
6.8 KiB
Markdown
# /fix - Bug Fix Workflow
|
|
|
|
## Purpose
|
|
|
|
Smart debugging and bug fixing workflow that analyzes errors, identifies root causes, implements fixes, and adds regression tests.
|
|
|
|
## Usage
|
|
|
|
```
|
|
/fix [error message, bug description, or issue reference]
|
|
```
|
|
|
|
## Arguments
|
|
|
|
- `$ARGUMENTS`: Error message, stack trace, bug description, or issue number
|
|
|
|
---
|
|
|
|
Analyze and fix the following issue: **$ARGUMENTS**
|
|
|
|
## Workflow
|
|
|
|
### Phase 1: Error Analysis
|
|
|
|
1. **Parse Error Information**
|
|
- Extract error type and message
|
|
- Parse stack trace if available
|
|
- Identify the failing location
|
|
|
|
2. **Gather Context**
|
|
- When does this error occur?
|
|
- What triggers it?
|
|
- Is it reproducible?
|
|
- When did it start happening?
|
|
|
|
3. **Check for Known Patterns**
|
|
- Common error patterns
|
|
- Similar issues in codebase
|
|
- Recent changes that might have caused it
|
|
|
|
### Phase 2: Root Cause Investigation
|
|
|
|
1. **Trace Execution**
|
|
- Follow the code path to the error
|
|
- Identify state at each step
|
|
- Find where expectations diverge
|
|
|
|
2. **Form Hypotheses**
|
|
- List possible causes ranked by likelihood
|
|
- Identify minimal tests to validate each
|
|
|
|
3. **Validate Hypothesis**
|
|
- Test the most likely cause first
|
|
- Confirm root cause before fixing
|
|
- Don't fix symptoms only
|
|
|
|
### Phase 3: Search Related Code
|
|
|
|
1. **Find Similar Code**
|
|
- Search for similar patterns
|
|
- Check if same bug exists elsewhere
|
|
- Identify shared code that might be affected
|
|
|
|
2. **Review Recent Changes**
|
|
```bash
|
|
git log --oneline -20
|
|
git blame [file]
|
|
```
|
|
|
|
### Phase 4: Implement Fix
|
|
|
|
1. **Develop Minimal Fix**
|
|
- Fix the root cause, not symptoms
|
|
- Keep changes minimal and focused
|
|
- Consider edge cases
|
|
|
|
2. **Add Defensive Code** (if appropriate)
|
|
- Input validation
|
|
- Null checks
|
|
- Error handling
|
|
|
|
3. **Update Related Code** (if needed)
|
|
- Fix same issue in similar code
|
|
- Update shared utilities
|
|
|
|
### Phase 5: Verification
|
|
|
|
1. **Test the Fix**
|
|
- Verify original error is resolved
|
|
- Check related functionality
|
|
- Run existing test suite
|
|
|
|
2. **Add Regression Test**
|
|
- Write test that would have caught this bug
|
|
- Include edge cases discovered
|
|
- Ensure test fails without fix
|
|
|
|
3. **Run Full Test Suite**
|
|
```bash
|
|
# Python
|
|
pytest -v
|
|
|
|
# TypeScript
|
|
pnpm test
|
|
```
|
|
|
|
### Phase 6: Documentation
|
|
|
|
1. **Document the Fix**
|
|
- What was the issue
|
|
- What caused it
|
|
- How it was fixed
|
|
|
|
2. **Update Comments** (if needed)
|
|
- Add clarifying comments
|
|
- Document non-obvious behavior
|
|
|
|
## Output
|
|
|
|
### Bug Fix Summary
|
|
|
|
```markdown
|
|
## Bug Fix Complete
|
|
|
|
### Issue
|
|
[Original error/bug description]
|
|
|
|
### Root Cause
|
|
[Explanation of what caused the bug]
|
|
|
|
### Location
|
|
`path/to/file.ts:42` - [function/method name]
|
|
|
|
### Fix Applied
|
|
|
|
**Before:**
|
|
```[language]
|
|
// Problematic code
|
|
```
|
|
|
|
**After:**
|
|
```[language]
|
|
// Fixed code
|
|
```
|
|
|
|
### Explanation
|
|
[Why this fix resolves the issue]
|
|
|
|
### Regression Test Added
|
|
`path/to/test.ts` - `test_[scenario]`
|
|
|
|
### Verification
|
|
- [x] Original error no longer occurs
|
|
- [x] Existing tests pass
|
|
- [x] New regression test passes
|
|
- [x] No new issues introduced
|
|
|
|
### Related Areas Checked
|
|
- [x] `path/to/similar.ts` - No similar issue
|
|
|
|
### Commands to Verify
|
|
```bash
|
|
pytest tests/test_file.py -v
|
|
# or
|
|
pnpm test path/to/file.test.ts
|
|
```
|
|
```
|
|
|
|
## Common Fix Patterns
|
|
|
|
### Null/Undefined Access
|
|
|
|
```typescript
|
|
// Before
|
|
const name = user.profile.name;
|
|
|
|
// After
|
|
const name = user?.profile?.name ?? 'Unknown';
|
|
```
|
|
|
|
### Missing Error Handling
|
|
|
|
```python
|
|
# Before
|
|
data = json.loads(response.text)
|
|
|
|
# After
|
|
try:
|
|
data = json.loads(response.text)
|
|
except json.JSONDecodeError as e:
|
|
logger.error(f"Invalid JSON response: {e}")
|
|
raise InvalidResponseError("Failed to parse response")
|
|
```
|
|
|
|
### Race Condition
|
|
|
|
```typescript
|
|
// Before
|
|
const data = await fetchData();
|
|
setState(data); // May be unmounted
|
|
|
|
// After
|
|
useEffect(() => {
|
|
let cancelled = false;
|
|
fetchData().then(data => {
|
|
if (!cancelled) setState(data);
|
|
});
|
|
return () => { cancelled = true; };
|
|
}, []);
|
|
```
|
|
|
|
### Off-by-One Error
|
|
|
|
```python
|
|
# Before
|
|
for i in range(len(items) + 1): # IndexError
|
|
process(items[i])
|
|
|
|
# After
|
|
for i in range(len(items)):
|
|
process(items[i])
|
|
# or
|
|
for item in items:
|
|
process(item)
|
|
```
|
|
|
|
## Example
|
|
|
|
**Input**: `/fix TypeError: Cannot read property 'email' of undefined in UserService.ts:45`
|
|
|
|
**Output**:
|
|
1. Analysis: User object is undefined when accessed
|
|
2. Root cause: async fetch didn't await, user not loaded yet
|
|
3. Fix: Add null check and proper async handling
|
|
4. Regression test: Test for case when user is not loaded
|
|
|
|
## Flags
|
|
|
|
| Flag | Description | Example |
|
|
|------|-------------|---------|
|
|
| `--mode=[mode]` | Use specific behavioral mode | `--mode=deep-research` |
|
|
| `--persona=[type]` | Apply persona expertise | `--persona=security` |
|
|
| `--depth=[1-5]` | Investigation thoroughness | `--depth=4` |
|
|
| `--format=[fmt]` | Output format (concise/detailed) | `--format=concise` |
|
|
| `--skip-regression` | Skip regression test creation | `--skip-regression` |
|
|
| `--checkpoint` | Create checkpoint before fixing | `--checkpoint` |
|
|
|
|
### Flag Usage Examples
|
|
|
|
```bash
|
|
/fix --mode=deep-research "intermittent timeout error"
|
|
/fix --persona=security "SQL injection vulnerability"
|
|
/fix --depth=5 "race condition in auth flow"
|
|
/fix --format=concise "typo in error message"
|
|
```
|
|
|
|
### Persona Options
|
|
|
|
| Persona | Focus Area |
|
|
|---------|------------|
|
|
| `security` | Security vulnerabilities, OWASP |
|
|
| `performance` | Speed, memory, efficiency |
|
|
| `reliability` | Error handling, edge cases |
|
|
|
|
## MCP Integration
|
|
|
|
This command leverages MCP servers for enhanced debugging:
|
|
|
|
### Sequential Thinking - Root Cause Analysis (Primary)
|
|
```
|
|
ALWAYS use Sequential Thinking for debugging:
|
|
- Trace execution path step-by-step
|
|
- Form and test hypotheses systematically
|
|
- Track confidence in each potential cause
|
|
- Revise understanding as evidence emerges
|
|
```
|
|
|
|
### Memory - Bug Context
|
|
```
|
|
Store and recall debugging context:
|
|
- Remember similar bugs from previous sessions
|
|
- Recall fix patterns that worked before
|
|
- Store root cause analysis for future reference
|
|
- Create relations between bugs and affected components
|
|
```
|
|
|
|
### Playwright - Browser Testing
|
|
```
|
|
For UI/frontend bugs:
|
|
- Reproduce the bug in browser environment
|
|
- Test fix across different browsers
|
|
- Verify visual regressions are resolved
|
|
- Automate regression test for the fix
|
|
```
|
|
|
|
### Context7 - Library Issues
|
|
```
|
|
When debugging library-related issues:
|
|
- Fetch current documentation for correct usage
|
|
- Check for known issues or breaking changes
|
|
- Find correct patterns and examples
|
|
```
|
|
|
|
### Filesystem - Code Search
|
|
```
|
|
For tracing bug across codebase:
|
|
- Use search_files to find related code
|
|
- Use read_file to examine suspicious areas
|
|
- Track changes with file history
|
|
```
|
|
|
|
<!-- CUSTOMIZATION POINT -->
|
|
## Variations
|
|
|
|
Modify behavior via CLAUDE.md:
|
|
- Set required test coverage for fixes
|
|
- Define severity levels for bugs
|
|
- Configure error reporting format
|
|
- Set required review process
|