Find agent skills you never use and remove them safely
By Flavio
List the coding agent skills no chat loaded in the last 60 days, check each one, and move it to the Trash from one agent or all of them with Skill Cabinet.
You’ve installed a lot of agent skills. Some you wrote for a project that’s finished, some came from a blog post, some you tried once. Now every agent scans a long list of descriptions before it picks one, and you can’t tell which skills still earn their place.
The question is simple: which skills has no chat loaded lately, and can I delete them without breaking an agent that still needs them? Writing a good skill is a different job, covered in How to write an Agent Skill. Here we clean up.
Skill Cabinet reads the chat histories of your coding agents on your Mac and counts a use every time an agent loads a skill. Its Unused list shows the skills no chat touched in the chosen period. At the end you’ll have a short list of unused skills, a check for each one, and a way to remove them from one agent or from all of them, with a way back.
What you need
Skill Cabinet runs on macOS 14 or later, on Apple silicon and Intel. After buying it, download the app from your Polar receipt, unzip it, and move it to Applications. The receipt also has the license key, which turns on automatic updates.
You need at least one of the 8 agents it knows: Cursor, Claude Code, Codex, Gemini CLI, OpenCode, Droid, Pi or Amp. You also need some chat history, because usage comes from those chats. A fresh install of an agent with no chats makes every skill look unused.
For the terminal part, install the skillscout command from Skill Cabinet → Install Command Line Tool…. It links the command inside the app into /usr/local/bin, and asks for your password if that folder needs it. The command reads the same skills and chats as the app and follows its settings.
Nothing in this walkthrough uses the AI features, so no chat leaves your Mac. Removing a skill moves folders to the Trash, so back up your real skill folders first, like ~/.agents/skills and ~/.claude/skills, the same way you back up code.
As a preflight check, run skillscout with no command. It prints a summary with your skill count, the agents it reads, and an Unused line:
skillscout
6 skills across Cursor, Codex
0 messages in the last 60 days
Most used
commit-and-push 4 chats
code-review 2 chats
cloudflare-deploy 1 chat
Missing somewhere 2 skillscout list --missing
Unused 3 skillscout list --unused
Run skillscout help to see every command.
The skills, projects and chats in every output on this page are examples from a demo setup. Your names and counts will differ.
Pick the period and the agents that count
Before you trust an “unused” label, check what it’s measured against. Skill Cabinet counts a use when a chat loaded or attached the skill, and several reads in one chat count once. It only reads chats from the agents that are turned on, and only from the lookback period, which is 60 days by default.
Both settings change the answer. If you turned Claude Code off in Settings, a skill you only use in Claude Code looks unused, because those chats don’t count. If you write release notes once a quarter, a 60-day window will flag that skill even though you need it. Get this wrong, and you’ll delete something you use.
Open Settings in Skill Cabinet. Read messages from the last takes 30, 60, 90 or 180 days. The agent switches are in the same window. Turning an agent off stops its skills and its chats from contributing to the view.
The skillscout command uses the app’s setting, and --days overrides it for one run without changing Settings. skillscout tools shows which agents are on:
skillscout tools
TOOL STATUS SKILLS MESSAGES SKILL FOLDER
Cursor on 6 0 ~/.cursor/skills
Claude Code off 3 – ~/.claude/skills
Codex on 4 0 ~/.codex/skills
Gemini CLI not installed 4 – ~/.gemini/skills
OpenCode not installed 6 – ~/.config/opencode/skills
Droid not installed 4 – ~/.factory/skills
Pi not installed 4 – ~/.pi/agent/skills
Amp not installed 0 – ~/.config/agents/skills
In this example Claude Code is installed but off. If you use Claude Code, turn it on before you read the unused list.
List the skills no chat used
Now the list itself. In the app, Unused in the sidebar shows your own skills with no recorded use in the chosen period, with a count next to it. The list opens with your own skills; plugin and built-in skills are managed by their agents, and you can’t uninstall them from here anyway.
The docs are careful about what this means: an unused skill can still be useful. The view only describes the chat history the app could read. Think of it as a list of candidates, not a list of skills to delete.
In the terminal, list --unused prints the same thing as a table. Each row has a column per agent that’s on, and a dot means that agent can’t see the skill:
skillscout list --unused
SKILL CHATS Cu Co DESCRIPTION
gatsby-blog-post – ● · Create a new post in a Gatsby blog with the right frontmatter and fo…
jquery-migrate – ● · Upgrade old jQuery 1.x code to jQuery 3 and fix the deprecated calls.
pdf-invoices – ● ● Generate PDF invoices from a JSON order, with the company details an…
The dash in CHATS means no chat used it in the period. For the full picture, usage ranks the skills that did get used, with the agents that used them:
skillscout usage
SKILL CHATS LAST USED TOOLS
commit-and-push 4 1 day ago Codex 4
code-review 2 4 days ago Codex 2
cloudflare-deploy 1 5 days ago Codex 1
Example 1: three candidates in a 60-day window
In the demo setup, six skills exist and three got used. The other three are gatsby-blog-post, jquery-migrate and pdf-invoices. The first two are leftovers from old projects. The third one is suspicious: invoices are the kind of thing you do once in a while.
Widen the window before you decide
A short window makes seasonal skills look dead. Before removing anything, run the unused list again with the longest period. Skill Cabinet re-reads the chats for that period, so a skill that shows up in an older chat drops off the list.
This is the step that saves the quarterly skills. Without it, you’d trash pdf-invoices in November and rebuild it in January, when you need it again. The flag doesn’t touch Settings, so the app keeps its 60 days:
skillscout list --unused --days 180
SKILL CHATS Cu Co DESCRIPTION
gatsby-blog-post – ● · Create a new post in a Gatsby blog with the right frontmatter and fo…
jquery-migrate – ● · Upgrade old jQuery 1.x code to jQuery 3 and fix the deprecated calls.
Example 2: a longer period changes the answer
pdf-invoices is gone from the list. show tells you why, with its usage for the same period:
skillscout show pdf-invoices --days 180
pdf-invoices
Generate PDF invoices from a JSON order, with the company details and VAT.
Available in
● Cursor ~/.agents/skills
● Codex ~/.agents/skills
Usage in the last 180 days
Used in 1 chat, most recently 5 months ago
Codex 1
Mostly in recipe-box
Where it lives
Created 2 June 2026
Shared ~/.agents/skills/pdf-invoices
One chat five months ago, in recipe-box. That’s a skill you keep. The app gives you the same choice: set Read messages from the last to 180 days and look at Unused again.
Check what removing a skill would break
Before you remove a skill, look at where its files live and which agents load it from there. A skill can sit in one folder and be linked into others. Removing the real folder takes it away from every agent that reads it, while removing one link only affects the agent that reads that link.
This matters most for shared folders. Six agents load ~/.agents/skills, and Cursor also loads ~/.claude/skills. Delete a folder there by hand and you may take a skill away from an agent you didn’t think about. The folder-to-agent rules are covered in Find where each coding agent loads skills from on your Mac.
show gives you all of it for one skill:
skillscout show jquery-migrate
jquery-migrate
Upgrade old jQuery 1.x code to jQuery 3 and fix the deprecated calls.
Available in
● Cursor ~/.claude/skills
· Codex missing skillscout add jquery-migrate --to codex
Usage in the last 60 days
No chat used it.
Where it lives
Created 13 November 2026
Claude Code ~/.claude/skills/jquery-migrate
One real folder, in Claude Code’s skills folder, which Cursor reads too. Removing it affects Cursor and Claude Code. Codex never had it.
Compare a skill with a link:
skillscout show commit-and-push
commit-and-push
Commit the current work with a clear message and push it to the remote branch.
Available in
● Cursor ~/.agents/skills
● Codex ~/.agents/skills
Usage in the last 60 days
Used in 4 chats, most recently 1 day ago
Codex 4
Mostly in hostingpicker and recipe-box
Where it lives
Created 6 November 2026
Shared ~/.agents/skills/commit-and-push
Claude Code ~/.claude/skills/commit-and-push → ~/.agents/skills/commit-and-push
The arrow marks a link. The Claude Code copy points at the shared folder, so both are the same files. In the app, the same details are under Available in and Where it lives when you select the skill.
If two unused skills do the same job as a skill you do use, Similar skills in the sidebar is the other route. It pairs your own skills that read alike, compared on your Mac, and Merge with AI turns two into one. That one uses your Codex or Claude Code account, so it’s outside this walkthrough.
Remove a skill from one agent only
Sometimes a skill is fine, but one agent shouldn’t load it. Maybe you linked it into Claude Code with Add to and changed your mind. Remove takes it out of one folder and leaves the rest in place.
In the app, select the skill and click Remove next to one of its folders under Where it lives. If other folders link to that one, the links go too, since they’d point to nothing. When you remove a link, the folder it points to stays. Before anything moves, Skill Cabinet asks you to confirm. The dialog is titled Remove commit-and-push from ~/.claude/skills?, says which agents will stop loading the skill, and has a Move to Trash button.
In the terminal, uninstall with --from and one agent removes only the copy in that agent’s skills folder, which undoes an add. The agent names are cursor, claude, codex, gemini, opencode, droid, pi and amp.
skillscout uninstall commit-and-push --from claude
Moved the link ~/.claude/skills/commit-and-push to the Trash
~/.agents/skills/commit-and-push stays where it is.
Your tools still load commit-and-push from another folder.
The last line is the safety check you want. Here nothing lost the skill, because the agents that are on still load it from ~/.agents/skills. The command doesn’t ask for confirmation, so read show first.
Uninstall a skill everywhere
When a skill has no use in the longest period and no project needs it, uninstall it. Uninstall moves every copy in your skills folders to the Trash, links included. Plugin and built-in copies stay, because their agents manage them. To remove a plugin skill, uninstall the plugin in its agent.
This is the destructive step, so the app makes you confirm it. Select the skill and click the Trash button in the toolbar, or Uninstall this skill under Where it lives. You can also right-click it in the list, or press Delete. The dialog is titled Uninstall jquery-migrate?. It lists the folders the skill leaves and says which agents stop loading it. Nothing moves until you click Move to Trash.
The terminal command does the same, without the dialog:
skillscout uninstall jquery-migrate
Moved ~/.claude/skills/jquery-migrate to the Trash
None of your tools load jquery-migrate anymore.
“None of your tools load jquery-migrate anymore” is what you expect for a dead skill. If you see a list of agent names instead, like “Cursor no longer loads it“, those agents lost it and the others still have it.
Example 3: a second run, or a typo
Run the same command again, or mistype the name, and the command stops before touching anything:
skillscout uninstall jquery-migrate
skillscout: There's no skill called jquery-migrate. Run skillscout list to see them all.
That’s a second run: the skill is already in the Trash. If it’s a typo, copy the name from skillscout list --unused. A similar error shows up when you pass --from with an agent whose folder doesn’t hold the skill: skillscout: pdf-invoices isn't in ~/.claude/skills. Run show to see the folders it lives in.
Put a skill back
Removing goes to the Trash on purpose. The docs say you can put a skill back from there. In Finder, open the Trash, find the folder named after the skill, and move it back to the skills folder it came from, the one show printed under Where it lives.
Links are easier to rebuild than to dig out of the Trash. If you removed a link with Remove or --from, add it again:
skillscout add commit-and-push --to claude
Linked commit-and-push into ~/.claude/skills for Claude Code
--all adds it to every agent you use that’s missing it. In the app, the same thing is the Add to button next to the agent under Available in.
If you’ve emptied the Trash, the skill is gone. That’s why the backup from the start matters.
Make it a quarterly check
You don’t need to do this weekly. Unused skills pile up slowly, and a long window catches the occasional ones. I’d do it every few months, with the 180-day period.
Most commands take --json, so you can feed the list to a script. Here’s the list of names, ready to paste into a note:
skillscout list --unused --days 180 --json | jq -r '.[].name'
gatsby-blog-post
jquery-migrate
Each JSON entry also has availableIn, missingIn, chats, projects and copies with the folder paths. If you hand this list to a coding agent, ask it to report and not to run uninstall. The command doesn’t ask for confirmation, so the decision should stay with you.
If something looks wrong
- If every skill shows a dash in CHATS, the agents you use are probably off. Run
skillscout toolsand look for off next to an installed agent, then turn it on in Settings. - If a skill you use every month shows up in Unused, the period is too short. Run
skillscout list --unused --days 180, or set Read messages from the last to 180 days. - If
skillscoutgivescommand not found, the command isn’t installed. Choose Skill Cabinet → Install Command Line Tool… again. - If
uninstallprintsThere's no skill called …, check the spelling withskillscout list, or it’s already in the Trash from an earlier run. - If
uninstall --fromprintsisn't in ~/.claude/skills, that agent loads the skill from a different folder.showlists the folders. - If uninstall tells you a skill comes from a plugin and to uninstall the plugin, it’s a plugin skill. Its agent manages it, so remove the plugin there.
- If an agent still uses a skill after you uninstalled it, check
showfor another copy. Afteruninstall --from, a line like “Your tools still load commit-and-push from another folder” means another copy remains. - If you removed the wrong skill, get it back from the Trash, or run
skillscout add <skill> --to <tool>if you removed a link.
Get Skill Cabinet
Find agent skills on your Mac, see which agents load each one, share them across folders, and track how often you use them.
See Skill Cabinet → · Read the docs · $20 including tax, with full source code.
Want me to talk about your product? You can sponsor this site.