Add comprehensive skills and documentation for various technologies

This commit is contained in:
duthaho
2025-11-29 18:07:28 +07:00
commit ef96f165ef
60 changed files with 10538 additions and 0 deletions
+244
View File
@@ -0,0 +1,244 @@
# /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
<!-- 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