awesome-skills-purge
Agent Skills Purge
Delete installed skills across every agent on the machine, keeping only what the user names. One agent's skills directory is easy to clear by hand; the problem this solves is that a dozen agents each read their own path, half of those paths hold links into a shared store or a git clone, and the same skill exists under four names at four locations.
Why the ceremony: deleting through a link, not the link itself, is how a purge eats a git clone that was never in scope. And a skill directory is not always what it looks like — ~/.claude/skills/foo can be a real folder, a symlink into ~/.agents/skills, or a junction into a repository under active development. Each needs a different removal, and telling them apart is the whole job.
Core principle
NOTHING IS DELETED UNTIL THREE THINGS HOLD: the full inventory has been shown to the user, the keep list is agreed, and the user has explicitly confirmed. Everything before the gate is read-only.
Three invariants hold throughout:
- Delete a link as a link, never recursively. Whether a recursive delete follows a symlink or a junction depends on the tool, the shell, and its version. Remove the link itself and the question never comes up.
- A link's target is out of scope unless it is independently in scope. Removing
~/.claude/skills/foonever authorizes touching whateverfoopoints at. - Never delete a directory that is inside a git work tree. That is somebody's clone — the source of a symlinked install, not an installed copy. Report it, delete the links to it, leave it alone.