Safely remove files and directories without breaking the shell session
View on GitHubSelect agents to install to:
npx add-skill https://github.com/cowwoc/claude-code-cat/blob/main/plugin/skills/safe-rm/SKILL.md -a claude-code --skill safe-rmInstallation paths:
.claude/skills/safe-rm/# Safe Remove Skill **Purpose**: Prevent shell session breakage by verifying working directory before `rm -rf` operations. ## Critical Issue If you delete the directory you're currently in, **all subsequent Bash commands will fail** with "Exit code 1" and Claude Code must be restarted. This is unrecoverable without restart. ## Mandatory Pre-Delete Checklist **BEFORE any `rm -rf` command:** ```bash # 1. Check current working directory pwd # 2. Verify target is NOT current directory or ancestor # If deleting /path/to/workspace/test and pwd shows /path/to/workspace/test -> DANGER! # 3. If in danger, change directory first cd /path/to/workspace # or another safe location # 4. Then delete rm -rf /path/to/workspace/test ``` ## Safe Patterns ```bash # SAFE - Explicit cd before delete cd /path/to/workspace && rm -rf /path/to/workspace/test-dir # SAFE - Delete from parent directory cd /path/to/workspace && rm -rf test-dir # SAFE - Use absolute paths after confirming pwd pwd # Shows /path/to/workspace (not /path/to/workspace/test-dir) rm -rf /path/to/workspace/test-dir # DANGEROUS - Deleting without checking pwd rm -rf /path/to/workspace/test-dir # If pwd is /path/to/workspace/test-dir, shell breaks! # DANGEROUS - Deleting current directory rm -rf . # Always breaks shell # DANGEROUS - Deleting parent of current directory # pwd: /path/to/workspace/test-dir/subdir rm -rf /path/to/workspace/test-dir # Breaks shell ``` ## Recovery If shell breaks (all commands return "Exit code 1"): 1. **Restart Claude Code** - this is the only fix 2. The shell session cannot recover from a deleted working directory ## Quick Reference | Situation | Action | |-----------|--------| | Deleting temp directory | `pwd` first, `cd` if needed | | Cleaning up test files | Verify not inside target directory | | Removing build artifacts | Use parent directory as working dir | | Any `rm -rf` operation | **Always check `pwd` first** |