Initial commit
This commit is contained in:
112
skills/code-refactor/SKILL.md
Normal file
112
skills/code-refactor/SKILL.md
Normal file
@@ -0,0 +1,112 @@
|
||||
---
|
||||
name: code-refactor
|
||||
description: Perform bulk code refactoring operations like renaming variables/functions across files, replacing patterns, and updating API calls. Use when users request renaming identifiers, replacing deprecated code patterns, updating method calls, or making consistent changes across multiple locations.
|
||||
---
|
||||
|
||||
# Code Refactor
|
||||
|
||||
Systematic code refactoring across files. **Auto-switches to execution mode** for 10+ files (90% token savings).
|
||||
|
||||
## Mode Selection
|
||||
|
||||
- **1-9 files**: Use native tools (Grep + Edit with replace_all)
|
||||
- **10+ files**: Automatically use `code-execution` skill
|
||||
|
||||
**Execution example (50 files):**
|
||||
```python
|
||||
from api.code_transform import rename_identifier
|
||||
result = rename_identifier('.', 'oldName', 'newName', '**/*.py')
|
||||
# Returns: {'files_modified': 50, 'total_replacements': 247}
|
||||
# ~500 tokens vs ~25,000 tokens traditional
|
||||
```
|
||||
|
||||
## When to Use
|
||||
|
||||
- "rename [identifier] to [new_name]"
|
||||
- "replace all [pattern] with [replacement]"
|
||||
- "refactor to use [new_pattern]"
|
||||
- "update all calls to [function/API]"
|
||||
- "convert [old_pattern] to [new_pattern]"
|
||||
|
||||
## Core Workflow (Native Mode)
|
||||
|
||||
### 1. Find All Occurrences
|
||||
```
|
||||
Grep(pattern="getUserData", output_mode="files_with_matches") # Find files
|
||||
Grep(pattern="getUserData", output_mode="content", -n=true, -B=2, -A=2) # Verify with context
|
||||
```
|
||||
|
||||
### 2. Replace All Instances
|
||||
```
|
||||
Edit(
|
||||
file_path="src/api.js",
|
||||
old_string="getUserData",
|
||||
new_string="fetchUserData",
|
||||
replace_all=true
|
||||
)
|
||||
```
|
||||
|
||||
### 3. Verify Changes
|
||||
```
|
||||
Grep(pattern="getUserData", output_mode="files_with_matches") # Should return none
|
||||
```
|
||||
|
||||
## Workflow Examples
|
||||
|
||||
### Rename Function
|
||||
1. Find: `Grep(pattern="getUserData", output_mode="files_with_matches")`
|
||||
2. Count: "Found 15 occurrences in 5 files"
|
||||
3. Replace in each file with `replace_all=true`
|
||||
4. Verify: Re-run Grep
|
||||
5. Suggest: Run tests
|
||||
|
||||
### Replace Deprecated Pattern
|
||||
1. Find: `Grep(pattern="\\bvar\\s+\\w+", output_mode="content", -n=true)`
|
||||
2. Analyze: Check if reassigned (let) or constant (const)
|
||||
3. Replace: `Edit(old_string="var count = 0", new_string="let count = 0")`
|
||||
4. Verify: `npm run lint`
|
||||
|
||||
### Update API Calls
|
||||
1. Find: `Grep(pattern="/api/auth/login", output_mode="content", -n=true)`
|
||||
2. Replace: `Edit(old_string="'/api/auth/login'", new_string="'/api/v2/authentication/login'", replace_all=true)`
|
||||
3. Test: Recommend integration tests
|
||||
|
||||
## Best Practices
|
||||
|
||||
**Planning:**
|
||||
- Find all instances first
|
||||
- Review context of each match
|
||||
- Inform user of scope
|
||||
- Consider edge cases (strings, comments)
|
||||
|
||||
**Safe Process:**
|
||||
1. Search → Find all
|
||||
2. Analyze → Verify appropriate
|
||||
3. Inform → Tell user scope
|
||||
4. Execute → Make changes
|
||||
5. Verify → Confirm applied
|
||||
6. Test → Suggest running tests
|
||||
|
||||
**Edge Cases:**
|
||||
- Strings/comments: Ask if should update
|
||||
- Exported APIs: Warn of breaking changes
|
||||
- Case sensitivity: Be explicit
|
||||
|
||||
## Tool Reference
|
||||
|
||||
**Edit with replace_all:**
|
||||
- `replace_all=true`: Replace all occurrences
|
||||
- `replace_all=false`: Replace only first (or fail if multiple)
|
||||
- Must match EXACTLY (whitespace, quotes)
|
||||
|
||||
**Grep patterns:**
|
||||
- `-n=true`: Show line numbers
|
||||
- `-B=N, -A=N`: Context lines
|
||||
- `-i=true`: Case-insensitive
|
||||
- `type="py"`: Filter by file type
|
||||
|
||||
## Integration
|
||||
|
||||
- **test-fixing**: Fix broken tests after refactoring
|
||||
- **code-transfer**: Move refactored code
|
||||
- **feature-planning**: Plan large refactorings
|
||||
Reference in New Issue
Block a user