Two invocation modes exist for Claude Code skills. Type /skill-name to run one explicitly. Or describe what you want in plain language and let Claude match it to the right skill automatically. Both work. The explicit method always works. The automatic method works when the skill's description covers your trigger pattern.
TL;DR: Type /skill-name for explicit invocation. Describe your task naturally for automatic triggering. The explicit method bypasses description matching entirely. Automatic triggering depends on the one-line description field in your SKILL.md frontmatter. New skills require a fresh Claude Code session before they appear. At AEM, we test with slash commands first, then refine descriptions for automatic triggering.
How do I use a slash command to invoke a skill?
Type a forward slash followed by the skill's folder name, then press Enter. Claude Code reads the name from the folder path inside .claude/skills/, not from any frontmatter field. It loads the full skill body and runs its instructions immediately: no description matching, no ambiguity. The command works every time, regardless of how the skill's description is written.
If your skill lives at .claude/skills/code-reviewer/SKILL.md, type /code-reviewer. Claude loads the full skill body directly and runs its instructions. No description matching. No ambiguity. The skill runs.
Practical details:
- The command name is the folder name, not the
namefield in the SKILL.md frontmatter. If they differ, the folder name is what you type. - Claude Code suggests installed skills as you start typing. Type
/and a menu appears showing available skills with their descriptions. - The
/skillscommand shows the full list of skills loaded in the current session with their one-line descriptions. Run it at session start to confirm your skill is visible.
The slash command is the reliable fallback when you know exactly which skill you need. It also makes skill development easier: you can test a new skill's instructions explicitly before investing time in refining the description that drives automatic triggering.
METR's 2025 randomized controlled trial found that AI coding tools increased task completion time by 19% for experienced developers when context had to be re-established manually each session (METR, 2025). Skills eliminate that overhead by loading persistent instructions at session start.
How does Claude trigger my skill automatically without a slash command?
Claude reads all skill descriptions at session startup and maps them to triggering conditions. When you send a message, it checks whether your request matches a skill's description closely enough to trigger it. The matching works entirely from the one-line description field in your SKILL.md frontmatter. That single line is the classifier's only input.
Testing across 650 activation trials showed that imperative descriptions achieve 100% activation rates, while passive descriptions sit at 77% (AEM internal research, 2026). The mechanism is clear: "Runs a security review on any code diff" outperforms "Can be used for security reviews" because it names the exact triggering condition as an action, not a capability.
The cost at startup: each skill description consumes approximately 100 tokens of context budget when Claude loads it (Stanford NLP Group, "Lost in the Middle," ArXiv 2307.03172). With a system prompt budget around 15,000 characters, the description field is the highest-leverage 100 characters you write.
Automatic triggering will not fire if your request uses vocabulary that does not overlap with the skill's description, even if the underlying task is identical. This is the hard limit of description-based matching: semantic intent alone does not trigger a skill. The words must match.
For more on writing descriptions that trigger reliably, see What Does the Description Field Do in a Claude Code Skill?.
What is the difference between explicit and automatic invocation?
Explicit invocation: you type /skill-name. The skill runs. No description matching required. Automatic invocation: you describe a task in plain language and Claude matches it to a skill based on the description field. A strong match triggers the skill. A weak match means Claude handles the task directly, without the skill.
The practical implication: build your description for automatic invocation, but test with explicit invocation first.
During development, use /skill-name to confirm the skill body produces the output you want. That separates the description problem from the instruction problem. Once the instructions work correctly, refine the description to cover the natural language patterns you use when asking for that work.
"The single biggest predictor of whether an agent works reliably is whether the instructions are written as a closed spec, not an open suggestion." — Boris Cherny, TypeScript compiler team, Anthropic (2024)
Explicit output formats with worked examples push model consistency from roughly 60% to over 95% in benchmarks (Addy Osmani, Engineering Director, Google Chrome, 2024). The same principle applies to skill instructions: a closed spec run explicitly produces consistent output; an open suggestion run automatically produces variance.
A skill that runs correctly when invoked explicitly but triggers inconsistently when triggered automatically has a description problem, not an instruction problem. The two layers fail independently. Test them independently.
The wit version of this: your skill is either invisible or unavoidable, depending entirely on one line of YAML.
How do I confirm my skill is loaded and ready to use?
Run /skills at the start of a session. Claude returns the full list of skills it has loaded, each paired with its one-line description. If your skill appears in that list, it loaded correctly and is available for both slash-command and automatic invocation. The description you see is exactly what Claude uses for trigger matching.
If it does not appear, check these four things in order:
File location. The SKILL.md must be inside a named subfolder inside
.claude/skills/in your project directory. A file at.claude/skills/SKILL.mdwith no subfolder will not load. The correct path is.claude/skills/your-skill-name/SKILL.md.Frontmatter validity. The YAML between the
---markers must be valid. Missing a closing---or writing the description across multiple lines breaks parsing without any visible error.Session freshness. Skills load at session start. If you created or modified the skill during the current session, start a new session to see the changes.
Name field presence. The
namefield in frontmatter must exist. It is what Claude uses to identify the skill and display it in the/skillslist.
Anthropic's September 2025 context management research found that combining persistent context tools with session-level context editing improved AI agent performance by 39% over baseline (Anthropic, 2025). Skills are the persistent context layer for Claude Code: fixing a missing or malformed skill recovers that performance gain immediately.
For the complete guide to file placement and folder structure, see Where Do I Put Skill Files in My Project? and How Do I Create My First Claude Code Skill?.
Frequently Asked Questions
Use /skill-name to invoke a skill directly. For automatic triggering, the description field in your SKILL.md frontmatter is the only variable that matters. Most invocation problems trace to two causes: a description vocabulary mismatch when the skill loads but never auto-triggers, or a file path or session freshness issue when the skill does not appear in /skills.
My skill appears in /skills but never triggers automatically. What is wrong? The description is not matching your natural language patterns. Read your description aloud, then read a typical request for that work aloud. If they use different vocabulary, update the description to match how you actually phrase the task. An imperative description naming the exact triggering scenario achieves 100% activation in controlled testing. A passive description describing what the skill "can do" sits at 77%.
Can I invoke multiple skills in the same message? One skill runs per message. Claude matches the most relevant skill and runs it. If you need two skills to run in sequence, invoke the first, get its output, then invoke the second with the result as context. Domain-specific single-task agents achieve 82.7% accuracy versus 59-63% for general-purpose models on enterprise benchmarks (Aisera, ICLR 2025 Workshop). The one-skill-per-message constraint enforces the same specialization that drives that accuracy gap.
Do I need to restart Claude Code after adding a new skill?
Yes. Skills load at session startup. Create the SKILL.md file, then start a new Claude Code session. The skill will appear in the /skills list and will be available for both explicit and automatic invocation. The session-restart requirement is consistent across Claude Code: 73% of engineering teams now use AI coding tools daily (Pragmatic Engineer Survey, February 2026), and session-level skill loading is the standard loading model across all of them.
What happens if I type /skill-name for a skill that does not exist?
Claude returns an error saying no matching skill was found. Check the folder name inside .claude/skills/. The slash command must match the folder name exactly, including capitalization.
Can I use a user-level skill while working in a specific project?
Yes. Skills installed at ~/.claude/skills/ load alongside project-level skills at every session start. User-level skills are available regardless of which project you have open. Project-level skills are only available in sessions opened from that project's directory.
Last updated: 2026-05-01