Skip to content
Skuto

Guides

Why Isn't My Claude Code Skill Triggering? (And How to Fix It)

Published: · Updated:

A skill that won’t trigger is one of the most frustrating things in Claude Code: you wrote it, it’s clearly there, and Claude just… ignores it. The good news is that there are only a handful of causes, and they have a reliable order. Work through these five checks top to bottom and you’ll almost always find the culprit. Usually it’s a vague description, or a character budget that’s quietly dropping your skill’s description.

First, understand how a skill gets chosen

Before the checklist, the one fact that explains most failures: Claude doesn’t read your whole skill to decide whether to use it. It reads only the name and description at the top of the SKILL.md file and matches those against what you ask. That short description isn’t documentation. It’s the entire trigger. Get it right and the skill fires; leave it vague and nothing happens. Keep that in mind as we go.

Check 1: Make sure Claude Code can see the folder

Older advice says to restart the session. You rarely need to now: Claude Code watches ~/.claude/skills/ and your project’s .claude/skills/ and picks up a new or edited SKILL.md within the session. The exception catches people out. If you created a skills folder that didn’t exist when the session started, Claude Code isn’t watching it yet, so run /reload-skills, and run it again after each later change there. Type / and look for your skill’s name in the list: if it’s there, Claude Code has found it and the problem is further down this page.

Check 2: Make the description specific

If a restart didn’t help, look hard at your description. “Helps with code” or “useful for tasks” gives Claude nothing to match. A good description names the situation that should trigger it:

  • Weak: description: Helps with commits
  • Strong: description: Use when writing or reviewing a git commit message, so messages follow the project's conventional-commit style

Write the description as “use this when…” and include the words a person would actually say when they want it. This single change fixes more silent skills than anything else.

Check 3: Check the folder isn’t nested too deep

Claude Code expects a personal skill at ~/.claude/skills/<skill-name>/SKILL.md and a project skill at .claude/skills/<skill-name>/SKILL.md. The classic mistake is one extra folder, as in skills/my-skill/my-skill/SKILL.md, which puts the file out of reach. Confirm the path has exactly one folder named for your skill, with SKILL.md directly inside it.

Check 4: Confirm the file header is valid

Open the file and check two things. It has to be called exactly SKILL.md. And it should start with a front-matter block between two --- lines that holds a description (the name is optional: without one, the folder name becomes the skill’s name). If the description is missing, Claude Code falls back to the first line of your instructions, which is rarely a good trigger. And if the header doesn’t parse, or the opening --- isn’t the file’s very first line, the skill still loads but with no description at all, so Claude has nothing to match (start Claude Code with --debug to see the error). The official skills docs show the exact format. Match it line for line.

Check 5: Raise the description budget

If everything above looks right and the skill still won’t fire, you’ve likely hit the cause almost nobody mentions. That goes double if you have a lot of skills installed. Claude Code puts a listing of your skills into every conversation, and that listing has a character budget: by default 1% of the model’s context window. Every skill name always makes the list, but when the descriptions don’t all fit, Claude Code drops some of them, starting with the skills you use least. A skill with no description has nothing for Claude to match, so it just stops firing. Nothing appears on screen; the only warning goes to the debug log, which you see if you start Claude Code with --debug.

Run /doctor for an estimate of what the listing costs and which skills take the most room. Then either raise the budget, with the skillListingBudgetFraction setting (0.02 means 2%) or the SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable set to a fixed number of characters, or make room: /skill-doctor shows the skills you never use, so you can turn them off. Also keep each description tight and put the main use case first, because each one is cut at 1,536 characters whatever the budget. Before Anthropic documented all this, it was a known gotcha behind a lot of “it worked yesterday” mysteries: you added one more skill and pushed the total over the edge.

The order is the point

Run these in sequence and stop when the skill works: check it’s found → fix the description → check the path → check the header → raise the budget. Most of the time you’ll be done by check 2. The character budget is the one that catches experienced users off guard, because nothing visibly breaks: the skill is still listed, it just quietly stops firing.

Building your coding setup

Skills are one piece of a good Claude Code setup; the bigger wins come from getting the whole thing configured for how you work. Our free AI for Coders tool helps you choose the right assistant, install it for your operating system, and generate a starter rules file that tells the AI your conventions up front, so you rely less on individual skills and more on a setup that just behaves the way you want.

Keep reading

Frequent questions

Why won't my Claude Code skill activate? +

The most common reasons, in order: Claude Code isn't watching the folder you put it in yet (run /reload-skills), the description is too vague for Claude to match, the folder is nested one level too deep, the file isn't named SKILL.md or its header is broken, or you have enough skills that the listing budget is dropping your skill's description. Work through them top to bottom.

How does Claude decide when to use a skill? +

Claude reads only the skill's name and description, not its full contents, and matches them against what you ask. That short description is load-bearing: it's the entire basis for whether the skill fires. A vague description like 'helps with code' rarely matches anything; a specific one like 'use when writing or reviewing git commit messages' matches reliably.

What is the skill description budget, and how do I raise it? +

Claude Code loads a listing of every skill's name and description, and the listing has a character budget: by default 1% of the model's context window. When you have more skills than fit, the names stay but some descriptions are dropped, starting with the skills you use least, and without its description Claude has nothing to match your request against. Run /doctor to see the listing's cost. To raise the budget, set skillListingBudgetFraction in your settings (0.02 means 2%) or the SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable to a fixed number of characters.

Where should a skill folder live? +

A personal skill goes in ~/.claude/skills/<skill-name>/SKILL.md, and a project skill goes in .claude/skills/<skill-name>/SKILL.md. A frequent mistake is nesting it one level too deep (putting SKILL.md inside an extra folder), so Claude Code never finds it.

Set location

Tunes each tool to where you are. Stays on this device.

Set your AI

Which AI do you use?

Not sure? Help me choose →