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):
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)
- 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
- Replace All Instances
Edit( file_path="src/api.js", old_string="getUserData", new_string="fetchUserData", replace_all=true )
- Verify Changes
Grep(pattern="getUserData", output_mode="files_with_matches") # Should return none
Workflow Examples
Rename Function
-
Find: Grep(pattern="getUserData", output_mode="files_with_matches")
-
Count: "Found 15 occurrences in 5 files"
-
Replace in each file with replace_all=true
-
Verify: Re-run Grep
-
Suggest: Run tests
Replace Deprecated Pattern
-
Find: Grep(pattern="\bvar\s+\w+", output_mode="content", -n=true)
-
Analyze: Check if reassigned (let) or constant (const)
-
Replace: Edit(old_string="var count = 0", new_string="let count = 0")
-
Verify: npm run lint
Update API Calls
-
Find: Grep(pattern="/api/auth/login", output_mode="content", -n=true)
-
Replace: Edit(old_string="'/api/auth/login'", new_string="'/api/v2/authentication/login'", replace_all=true)
-
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:
-
Search → Find all
-
Analyze → Verify appropriate
-
Inform → Tell user scope
-
Execute → Make changes
-
Verify → Confirm applied
-
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