386 lines
7.5 KiB
Markdown
386 lines
7.5 KiB
Markdown
# Deleting Skills
|
|
|
|
Guidance for safely removing Agent Skills from Claude Code.
|
|
|
|
## Quick Deletion Process
|
|
|
|
### 1. Locate the Skill
|
|
|
|
```bash
|
|
# Personal skills
|
|
ls ~/.claude/skills/
|
|
|
|
# Project skills
|
|
ls .claude/skills/
|
|
|
|
# Find specific skill
|
|
find ~/.claude/skills -name "SKILL.md" -path "*/my-skill/*"
|
|
```
|
|
|
|
### 2. Create Backup (Recommended)
|
|
|
|
Before deleting, create a backup:
|
|
|
|
```bash
|
|
# Backup entire skill directory
|
|
cp -r ~/.claude/skills/my-skill ~/.claude/skills/my-skill.backup
|
|
|
|
# Or backup to a dedicated location
|
|
cp -r ~/.claude/skills/my-skill ~/skill-backups/my-skill-$(date +%Y%m%d)
|
|
```
|
|
|
|
### 3. Delete the Skill
|
|
|
|
```bash
|
|
# Personal skill
|
|
rm -rf ~/.claude/skills/my-skill
|
|
|
|
# Project skill
|
|
rm -rf .claude/skills/my-skill
|
|
```
|
|
|
|
### 4. Verify Removal
|
|
|
|
Restart Claude Code and verify the skill is no longer available:
|
|
|
|
Ask Claude: "What skills are available?"
|
|
|
|
## Deletion Scenarios
|
|
|
|
### Delete Personal Skill
|
|
|
|
```bash
|
|
# Check it exists
|
|
ls ~/.claude/skills/my-skill/SKILL.md
|
|
|
|
# Backup
|
|
cp -r ~/.claude/skills/my-skill ~/.claude/skills/my-skill.backup
|
|
|
|
# Delete
|
|
rm -rf ~/.claude/skills/my-skill
|
|
|
|
# Verify
|
|
ls ~/.claude/skills/
|
|
```
|
|
|
|
No restart needed for personal skills if Claude Code wasn't using them.
|
|
|
|
### Delete Project Skill
|
|
|
|
For skills in `.claude/skills/` that are committed to git:
|
|
|
|
```bash
|
|
# Backup first
|
|
cp -r .claude/skills/my-skill ~/skill-backups/my-skill-backup
|
|
|
|
# Remove from git
|
|
git rm -rf .claude/skills/my-skill
|
|
|
|
# Commit
|
|
git commit -m "Remove my-skill: no longer needed"
|
|
|
|
# Push
|
|
git push
|
|
```
|
|
|
|
**Important**: Notify team members so they can pull the changes and restart Claude Code.
|
|
|
|
### Delete Plugin Skill
|
|
|
|
Plugin skills are managed by the plugin system. To remove:
|
|
|
|
**Option 1: Disable the plugin**
|
|
```
|
|
/plugin disable plugin-name@marketplace-name
|
|
```
|
|
|
|
**Option 2: Uninstall the plugin**
|
|
```
|
|
/plugin uninstall plugin-name@marketplace-name
|
|
```
|
|
|
|
You cannot delete individual skills from plugins. To modify plugin skills, fork the plugin or contact the plugin author.
|
|
|
|
## Bulk Deletion
|
|
|
|
### Delete Multiple Personal Skills
|
|
|
|
```bash
|
|
# List all personal skills
|
|
ls ~/.claude/skills/
|
|
|
|
# Backup all before deletion
|
|
cp -r ~/.claude/skills ~/skill-backups/all-skills-$(date +%Y%m%d)
|
|
|
|
# Delete specific skills
|
|
rm -rf ~/.claude/skills/skill1
|
|
rm -rf ~/.claude/skills/skill2
|
|
rm -rf ~/.claude/skills/skill3
|
|
```
|
|
|
|
### Delete All Unused Skills
|
|
|
|
```bash
|
|
# Backup first
|
|
cp -r ~/.claude/skills ~/skill-backups/all-skills-$(date +%Y%m%d)
|
|
|
|
# Review each skill before deleting
|
|
for skill in ~/.claude/skills/*; do
|
|
echo "Skill: $(basename $skill)"
|
|
echo "Description:"
|
|
head -n 10 "$skill/SKILL.md"
|
|
read -p "Delete this skill? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
rm -rf "$skill"
|
|
echo "Deleted: $(basename $skill)"
|
|
fi
|
|
done
|
|
```
|
|
|
|
## Backup Strategies
|
|
|
|
### Before Major Cleanup
|
|
|
|
Create a timestamped backup of all skills:
|
|
|
|
```bash
|
|
# Backup all personal skills
|
|
tar -czf ~/skill-backups/personal-skills-$(date +%Y%m%d-%H%M%S).tar.gz \
|
|
-C ~ .claude/skills
|
|
|
|
# Backup all project skills (from project root)
|
|
tar -czf ~/skill-backups/project-skills-$(date +%Y%m%d-%H%M%S).tar.gz \
|
|
.claude/skills
|
|
```
|
|
|
|
### Restore from Backup
|
|
|
|
```bash
|
|
# Restore all personal skills
|
|
tar -xzf ~/skill-backups/personal-skills-20251016-143022.tar.gz \
|
|
-C ~
|
|
|
|
# Restore specific skill
|
|
cp -r ~/skill-backups/my-skill-20251016 ~/.claude/skills/my-skill
|
|
```
|
|
|
|
## Version Control Best Practices
|
|
|
|
### For Project Skills
|
|
|
|
When deleting project skills from git repositories:
|
|
|
|
```bash
|
|
# Create feature branch
|
|
git checkout -b remove-unused-skills
|
|
|
|
# Remove skill
|
|
git rm -rf .claude/skills/old-skill
|
|
|
|
# Commit with explanation
|
|
git commit -m "Remove old-skill: replaced by new-skill
|
|
|
|
The old-skill has been superseded by new-skill which provides
|
|
better performance and additional features.
|
|
|
|
Team members should:
|
|
1. Pull this change
|
|
2. Restart Claude Code
|
|
3. The skill will no longer be available"
|
|
|
|
# Push and create PR
|
|
git push origin remove-unused-skills
|
|
```
|
|
|
|
### Document Removal
|
|
|
|
Update project documentation:
|
|
|
|
```markdown
|
|
# Changelog
|
|
|
|
## 2025-10-16
|
|
|
|
### Removed
|
|
- **old-skill**: Replaced by new-skill. See migration guide below.
|
|
|
|
### Migration Guide
|
|
If you were using old-skill:
|
|
1. Update your workflows to use new-skill instead
|
|
2. Key differences: [list changes]
|
|
3. See examples: [link to new-skill examples]
|
|
```
|
|
|
|
## Common Deletion Scenarios
|
|
|
|
### Skill No Longer Needed
|
|
|
|
```bash
|
|
# Simple removal
|
|
rm -rf ~/.claude/skills/deprecated-skill
|
|
```
|
|
|
|
### Skill Replaced by Better Version
|
|
|
|
```bash
|
|
# Backup old version (might need reference)
|
|
cp -r ~/.claude/skills/old-skill ~/skill-backups/old-skill-reference
|
|
|
|
# Delete old version
|
|
rm -rf ~/.claude/skills/old-skill
|
|
|
|
# The new version is already in place
|
|
ls ~/.claude/skills/new-skill
|
|
```
|
|
|
|
### Skill Conflicts with Another
|
|
|
|
If two skills activate on similar triggers:
|
|
|
|
```bash
|
|
# Review both skills
|
|
cat ~/.claude/skills/skill-a/SKILL.md | head -n 10
|
|
cat ~/.claude/skills/skill-b/SKILL.md | head -n 10
|
|
|
|
# Decide which to keep (usually the more specific one)
|
|
# Delete the less useful one
|
|
rm -rf ~/.claude/skills/skill-b
|
|
```
|
|
|
|
### Experimental Skill Didn't Work Out
|
|
|
|
```bash
|
|
# No backup needed for failed experiments
|
|
rm -rf ~/.claude/skills/experiment-skill
|
|
```
|
|
|
|
## Safety Checks
|
|
|
|
### Before Deleting, Ask:
|
|
|
|
1. **Is this skill used by others?**
|
|
- For project skills, check with team
|
|
- For personal skills, just you
|
|
|
|
2. **Is there a migration path?**
|
|
- If replacing, document new approach
|
|
- If removing, explain alternatives
|
|
|
|
3. **Have I backed it up?**
|
|
- Can I restore if needed?
|
|
- Do I have the content archived?
|
|
|
|
4. **Will this break workflows?**
|
|
- Check dependencies
|
|
- Update documentation
|
|
- Notify affected users
|
|
|
|
### Validation Checklist
|
|
|
|
Before deleting a project skill:
|
|
|
|
- [ ] Created backup
|
|
- [ ] Checked for dependents (other skills referencing this one)
|
|
- [ ] Notified team members
|
|
- [ ] Updated documentation
|
|
- [ ] Committed to version control with clear message
|
|
- [ ] Verified skill is not critical to current workflows
|
|
|
|
## Troubleshooting
|
|
|
|
### Skill Still Appears After Deletion
|
|
|
|
**Problem**: Deleted skill still shows up in available skills
|
|
|
|
**Solution**: Restart Claude Code to refresh skill registry
|
|
|
|
### Cannot Delete (Permission Denied)
|
|
|
|
```bash
|
|
# Check permissions
|
|
ls -la ~/.claude/skills/my-skill/
|
|
|
|
# Fix permissions if needed
|
|
chmod -R u+w ~/.claude/skills/my-skill/
|
|
|
|
# Then delete
|
|
rm -rf ~/.claude/skills/my-skill
|
|
```
|
|
|
|
### Accidentally Deleted Important Skill
|
|
|
|
**If you have a backup**:
|
|
```bash
|
|
# Restore from backup
|
|
cp -r ~/skill-backups/my-skill ~/.claude/skills/my-skill
|
|
|
|
# Restart Claude Code
|
|
```
|
|
|
|
**If no backup**:
|
|
- Check git history (for project skills)
|
|
- Check Time Machine or system backups
|
|
- Recreate from memory or documentation
|
|
|
|
### Team Member Still Has Deleted Skill
|
|
|
|
**For project skills**:
|
|
|
|
```bash
|
|
# Team member should pull latest changes
|
|
git pull
|
|
|
|
# Remove any local-only changes
|
|
rm -rf .claude/skills/deleted-skill
|
|
|
|
# Restart Claude Code
|
|
```
|
|
|
|
## Post-Deletion Cleanup
|
|
|
|
### Verify Skill List
|
|
|
|
After deletion, verify skills are as expected:
|
|
|
|
Ask Claude: "What skills are available?"
|
|
|
|
Or check filesystem:
|
|
|
|
```bash
|
|
# Personal skills
|
|
ls ~/.claude/skills/
|
|
|
|
# Project skills
|
|
ls .claude/skills/
|
|
```
|
|
|
|
### Update Documentation
|
|
|
|
If maintaining skill documentation:
|
|
|
|
```markdown
|
|
# Available Skills
|
|
|
|
## Active Skills
|
|
- skill-a: Description
|
|
- skill-b: Description
|
|
|
|
## Deprecated Skills
|
|
- ~~old-skill~~: Removed 2025-10-16, replaced by new-skill
|
|
```
|
|
|
|
### Clean Up References
|
|
|
|
Check for references to deleted skills in:
|
|
- Documentation files
|
|
- README files
|
|
- Other skills that might reference it
|
|
- Workflow documentation
|
|
|
|
```bash
|
|
# Find references
|
|
grep -r "old-skill" .claude/
|
|
grep -r "old-skill" docs/
|
|
```
|