Find agent skills you never use and remove them safely

By

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.

Deciding what to do with an unused skillCheck a skill in the Unused list with a longer period. If it shows up, keep it. If not, remove it from one folder or uninstall it everywhere; both move files to the Trash, where you can put them back.YesNoYesNoSkill in UnusedUsed in 180 days?Keep itStill useful in oneagent?Remove from onefolderUninstall this skillTrashPut it back ifneeded

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 tools and 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 skillscout gives command not found, the command isn’t installed. Choose Skill Cabinet → Install Command Line Tool… again.
  • If uninstall prints There's no skill called …, check the spelling with skillscout list, or it’s already in the Trash from an earlier run.
  • If uninstall --from prints isn't in ~/.claude/skills, that agent loads the skill from a different folder. show lists 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 show for another copy. After uninstall --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.

More tutorials for my apps →

Want me to talk about your product? You can sponsor this site.