Modern find-and-replace using sd (simpler than sed) and batch replacement patterns. Triggers on: sd, find replace, batch replace, sed replacement, string replacement, rename.
88
Quality
86%
Does it follow best practices?
Impact
91%
1.75xAverage score across 3 eval scenarios
Passed
No known issues
Modern find-and-replace using sd.
# Replace in file (in-place)
sd 'oldText' 'newText' file.txt
# Replace in multiple files
sd 'oldText' 'newText' *.js
# Preview without changing (pipe)
cat file.txt | sd 'old' 'new'| sed | sd |
|---|---|
sed 's/old/new/g' | sd 'old' 'new' |
sed -i 's/old/new/g' | sd 'old' 'new' file |
sed 's#path/to#new/path#g' | sd 'path/to' 'new/path' |
Key difference: sd is global by default, no delimiter issues.
# Variable/function rename
sd 'oldName' 'newName' src/**/*.ts
# Word boundaries (avoid partial matches)
sd '\boldName\b' 'newName' src/**/*.ts
# Import path update
sd "from '../utils'" "from '@/utils'" src/**/*.ts
# Capture groups
sd 'console\.log\((.*)\)' 'logger.info($1)' src/**/*.js# 1. List affected files
rg -l 'oldPattern' src/
# 2. Preview replacements
rg 'oldPattern' -r 'newPattern' src/
# 3. Apply
sd 'oldPattern' 'newPattern' $(rg -l 'oldPattern' src/)
# 4. Verify
rg 'oldPattern' src/ # Should return nothing
git diff # Review changes| Character | Escape |
|---|---|
. | \. |
* | \* |
[ ] | \[ \] |
$ | \$ |
\ | \\ |
| Tip | Reason |
|---|---|
Always preview with rg -r first | Avoid mistakes |
| Use git before bulk changes | Easy rollback |
Use \b for word boundaries | Avoid partial matches |
| Quote patterns | Prevent shell interpretation |
For detailed patterns, load:
./references/advanced-patterns.md - Regex, batch workflows, real-world examples5342bca
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.