Initial commit
This commit is contained in:
62
skills/code-refactoring/SKILL.md
Normal file
62
skills/code-refactoring/SKILL.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Code Refactoring
|
||||
|
||||
Modify code with clean, secure, maintainable changes that precisely meet requirements.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Discover:** Glob for files, Grep for patterns
|
||||
2. **Read:** Always read before modifying
|
||||
3. **Modify:** Edit existing (prefer over Write)
|
||||
4. **Verify:** Run tests
|
||||
|
||||
## Rules
|
||||
|
||||
| Rule | Details |
|
||||
|------|---------|
|
||||
| Read first | Never modify unread files |
|
||||
| Edit > Write | Use Edit for existing, Write only for new |
|
||||
| Delete completely | No `_unused` prefixes or `// removed` comments |
|
||||
| Match style | Follow existing conventions exactly |
|
||||
| Minimal changes | Only what's requested |
|
||||
|
||||
## Security Checklist
|
||||
|
||||
**Prevent:**
|
||||
- Command injection → Use arrays, not string interpolation: `exec('cmd', [args])`
|
||||
- XSS → Use `textContent`, not `innerHTML`
|
||||
- SQL injection → Use parameterized queries
|
||||
- Path traversal → Validate with `path.basename()`
|
||||
|
||||
## Tool Usage
|
||||
|
||||
```
|
||||
Glob: pattern: "**/*.js" # Find files
|
||||
Grep: pattern: "func", output_mode: "files_with_matches" # Search
|
||||
Read: file_path: "/path/file.js" # Read before edit
|
||||
Edit: file_path, old_string, new_string # Modify
|
||||
```
|
||||
|
||||
Parallelize independent Read calls. Chain sequentially: Read → Edit → Bash (test).
|
||||
|
||||
## Quality
|
||||
|
||||
- Three similar lines > premature abstraction
|
||||
- Meaningful names, focused functions
|
||||
- Comments only where logic isn't obvious
|
||||
- Refactor only when explicitly requested
|
||||
|
||||
## Example
|
||||
|
||||
```javascript
|
||||
// Before: Bug - off-by-one error
|
||||
function getLastItem(arr) {
|
||||
return arr[arr.length] // Wrong: returns undefined
|
||||
}
|
||||
|
||||
// After: Fix
|
||||
function getLastItem(arr) {
|
||||
return arr[arr.length - 1]
|
||||
}
|
||||
```
|
||||
|
||||
Change is minimal and targeted - only fix what's requested.
|
||||
Reference in New Issue
Block a user