| name | safe-file-ops |
| description | Safely delete and manage files and folders. Uses git rm for git-tracked files, moves other files to .trash directory. Automatically applied when deletion operations are needed. |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep |
Safe File Operations
Purpose
A skill for safely deleting files and folders. Git-tracked files are removed using git rm for safe version control removal, while non-tracked files are moved to the .trash directory for possible recovery.
Core Principles
- Git-tracked files: Use
git rm for safe deletion (maintains version history)
- Non-tracked files: Move to
.trash/ directory (recoverable)
- Safety: Never permanently delete - keep in trash for recovery
- Auto-detection: Automatically detect if files are git-tracked
Use Cases
- When you need to delete files or folders
- When cleaning up folders that are no longer needed
- When deleting a mix of git-tracked and non-tracked files
Workflow
Step 1: Collect File/Folder List
Confirm the paths of files or folders the user wants to delete:
Please provide the paths of files or folders you want to delete.
(e.g., src/old-component.ts, tests/deprecated/, docs/draft.md)
Step 2: Check Git Tracking Status
Check if each file/folder is tracked by Git:
git ls-files --error-unmatch <filepath>
git ls-files <folderpath>
Step 3: Separate Handling
Git-tracked files:
git rm <filepath>
git rm -r <folderpath>
Non-tracked files:
mkdir -p .trash
mv <filepath> .trash/
mv <folderpath> .trash/
Step 4: Report Summary
Report the list of processed files and their locations:
✅ Git-tracked files (deleted with git rm):
- src/old-component.ts
- lib/deprecated/
✅ Non-tracked files (moved to .trash/):
- cache/temp.dat
- logs/old-logs/
📁 All preserved files: .trash/
Examples
Example 1: Delete Single File
$ git ls-files --error-unmatch src/utils/legacy.ts
src/utils/legacy.ts
$ git rm src/utils/legacy.ts
rm 'src/utils/legacy.ts'
✅ Removed src/utils/legacy.ts from git.
Example 2: Delete Mixed Files/Folders
$ git ls-files build/
build/index.html
build/bundle.js
$ git ls-files --error-unmatch temp.dat
$ git rm -r build/
$ mkdir -p .trash
$ mv temp.dat .trash/
✅ Git-tracked files (deleted with git rm):
- build/
✅ Non-tracked files (moved to .trash/):
- temp.dat
Important Notes
- No permanent deletion: All files are kept in recoverable state
- Git commit required: Files deleted with
git rm need to be committed
- .trash management: Periodically cleaning
.trash/ directory is recommended
- Path conflicts: Files with same name in
.trash/ will be overwritten
Clean Up .trash
To empty the .trash directory:
rm -rf .trash/
find .trash/ -type f -mtime +30 -delete
Related Operations
- Undo: Recover git-tracked files with
git checkout HEAD -- <file>
- Commit: Commit deletions with
git commit -m "Remove old files"
- Cleanup: Periodic
.trash/ directory cleaning recommended
Reference: This skill is based on Claude Code official Skills documentation.
(https://code.claude.com/docs/en/skills)