/rename
Batch rename files matching a pattern, with automatic wiki-link updates.
Usage
/rename <pattern> --remove-prefix "<prefix>"
/rename <pattern> --add-prefix "<prefix>"
/rename <pattern> --replace "<old>" "<new>"
/rename type:<type> --remove-prefix "<prefix>"
/rename --dry-run <any of above>
Examples
/rename "System - *.md" --remove-prefix "System - "
/rename type:Organisation --remove-prefix "Organisation - "
/rename "Meeting - *.md" --replace "Meeting -" "Mtg -"
/rename "Task - *.md" --add-prefix "TODO - "
/rename --dry-run type:Organisation --remove-prefix "Organisation - "
Instructions
Parse the command for:
- pattern: Glob pattern or
type:<type>to match files - operation: One of:
--remove-prefix "<prefix>": Remove prefix from filenames--add-prefix "<prefix>": Add prefix to filenames--replace "<old>" "<new>": Replace text in filenames
- --dry-run: Preview changes without applying them
- pattern: Glob pattern or
Find matching files:
- If glob pattern: Use Glob tool to find matching files
- If
type:<type>: Search for files with that frontmatter type - Exclude templates, MOCs, and special files
Calculate new names:
- Apply the requested transformation
- Sanitise filenames (remove invalid characters)
- Check for conflicts with existing files
- Handle duplicates by adding suffix
Preview changes (always show first):
Files to rename: 45 Examples: System - Legacy App.md → Legacy App.md Organisation - Acme Corp.md → Acme Corp.md ... Proceed? (yes/no)Update wiki-links in body text (critical step):
- Search all vault files for links to renamed files
- Update
[[Old Name]]→[[New Name]] - Update
[[Old Name|alias]]→[[New Name|alias]] - Handle both with and without .md extension
Update wiki-links in frontmatter (critical step):
- Run the frontmatter link updater for each renamed file:
node .claude/scripts/frontmatter-link-updater.js --old="Old Name" --new="New Name" - This updates wiki-links in YAML fields:
relatedTo,project,attendees,supersedes,dependsOn,contradicts,stakeholders,systems,organisations - Use
--dry-runfirst to preview changes
- Run the frontmatter link updater for each renamed file:
Perform renames:
- Rename files using git mv (preserves history)
- Report success/failure for each file
- Summarise total changes
Post-rename report:
Renamed: 45 files Links updated: 127 references in 34 files Errors: 0
Safety Features
- Always preview first: Shows all changes before applying
- Dry-run mode: Use
--dry-runto see changes without applying - Git integration: Uses
git mvto preserve file history - Link updates: Automatically updates all wiki-links
- Conflict detection: Warns if new name already exists
- Rollback info: Shows git command to undo if needed
Common Use Cases
Remove type prefixes (recommended for cleaner links)
/rename type:Organisation --remove-prefix "Organisation - "
/rename type:System --remove-prefix "System - "
Standardise naming conventions
/rename "Mtg - *.md" --replace "Mtg - " "Meeting - "
/rename "Todo - *.md" --replace "Todo - " "Task - "
Add prefixes to organise
/rename type:Adr --add-prefix "ADR - "
Implementation Notes
When executing this skill:
For finding by type, use:
grep -l "^type: Person" *.mdOr use Grep tool with pattern
^type: Person$For updating links, search for:
[[Old Filename]][[Old Filename|[[Old Filename#
For renaming, prefer:
git mv "Old Name.md" "New Name.md"This preserves git history.
For bulk operations, process in batches to avoid overwhelming the system.
Related
- [[Pattern - Claude Code Skills Guide]] - Full skills documentation
/orphans- Find unlinked notes after renaming/broken-links- Find broken links after renaming