Solo Stack Kits Directory
Claude Code workflows & skills for solo consultants and freelancers

← Blog · 2026-10-15

Claude Code Skill Not Triggering? A 10-Point Checklist

Shortcut: paste your file into our free SKILL.md validator. It catches the YAML and field-name mistakes below in a few seconds, and nothing leaves your browser.

The symptom is always the same. You type /weekly-client-update and the skill runs perfectly. You say "do Acme's Friday update" and Claude writes something from scratch.

Here's the checklist, cheapest checks first. Every item is drawn from the Claude Code skills docs.

First, a 10-second test

Ask Claude Code: "What skills are available?"

1. The description doesn't use the words you actually say

Claude only sees each skill's name and description until it decides to load one. If your description says "Generates stakeholder status communications" and you say "Friday update for Acme," there's nothing to match.

Fix it with two parts: what the skill does, then when to use it, written in your own words.

description: Writes the weekly client status email from my notes and open tasks. Use when I ask for a client update, Friday update, weekly recap or status email.

You can also add a when_to_use field with trigger phrases or example requests. It's appended to the description. More on this in How to write a SKILL.md description Claude actually triggers on.

2. The front matter isn't on line 1

Claude Code only reads front matter when the opening --- is the file's first line. A blank line, a title or a comment above it means the whole file, markers included, is treated as plain instructions. The skill loads without a description.

3. The YAML doesn't parse

This one fails quietly. If the YAML between the markers is malformed, the skill still loads with no fields set. That's why /skill-name keeps working while automatic triggering doesn't.

The usual culprit is an unquoted colon inside the description:

description: Drafts proposals. Use when: a client asks for a quote   # breaks
description: "Drafts proposals. Use when a client asks for a quote"  # fine

To find it, start Claude Code with --debug and look for the parse error. On v2.1.233 or later you can also run claude plugin validate .claude/skills (or ~/.claude/skills for personal skills).

4. A field name is misspelled

Claude Code ignores fields it doesn't recognize, without an error. Field names use lowercase words joined by hyphens, with one exception, when_to_use. So disable_model_invocation, allowed_tools or Description are silently skipped.

5. You turned off automatic use

If the front matter has disable-model-invocation: true, Claude can't load the skill on its own, and its description isn't even in context. That's right for /deploy or /send-invoice, but not for a skill you want picked up automatically.

6. paths limits when it can load

With a paths field set, Claude only loads the skill automatically while working on files that match those globs. A proposal skill limited to proposals/** won't fire while you're editing clients/acme/notes.md.

7. It's in the wrong place

The skill has to be a folder with a file named exactly SKILL.md:

The older .claude/commands/<name>.md files still work too. One catch: skills in a .claude/skills/ folder below where you started Claude don't load until Claude reads or edits a file in that subfolder. Start from the right folder, or run /add-dir with the path on recent versions.

8. You're running in the cloud, not on your machine

Cloud sessions, routines and Cowork don't read ~/.claude/skills/ on your laptop. A routine that calls a personal skill reports that the skill wasn't found. Commit the skill to the repo's .claude/skills/ for cloud sessions, or enable it on your claude.ai account for Cowork.

9. The name is reserved or collides

10. Too many skills, so your description got dropped

Claude Code keeps every skill's name in the listing but has a character budget for descriptions, about 1% of the model's context window. When it overflows, it drops descriptions starting with the skills you use least. A new skill you've never invoked is first to lose its description.

What to do:

The opposite problem: it triggers too often

Make the description narrower, or add disable-model-invocation: true so it only runs when you type /skill-name.

And if Claude stops following it halfway through

Claude Code adds the skill's content once and doesn't re-read the file later. After a long conversation is compacted it may keep only the start of the skill. Put the critical rules at the top, invoke the skill again after compaction, and move any rule that must hold every time into a hook.

Tools that help


If you run a solo consulting or freelance practice: the free 3-skill sample has three working skills: client follow-ups, meeting-to-tasks and invoice chase. The full Solo Consultant Kit is $29.