Three ways to share
| Method | How | Best for |
|---|---|---|
| Commit to the repo | .claude/skills/<name>/ in version control | Project-specific workflows |
| Package as a plugin | Put skills in a plugin and publish it to a marketplace | Reusing across many repos and teams |
| Managed settings | Admins deploy skills through enterprise configuration | Org-wide standards |
Plugin skills are namespaced, so /acme-tools:deploy won't collide with another plugin's /deploy.
Troubleshooting: "my skill never triggers"
Work through these in order:
- Is it found? Type
/and look for it in the menu. If it's missing, check the path (.claude/skills/<name>/SKILL.md) and that the first line of the file is---. - Is the frontmatter valid? Bad YAML is silently ignored. Run
claude --debugto see loading errors. - Is auto-invocation off?
disable-model-invocation: truemeans only/nameworks, by design. - Is the description specific? Vague or overlapping descriptions lose to better matches. Add real trigger phrases.
- **Is it limited by
paths?** If set, the skill only auto-activates when matching files are involved.
Name conflicts and priority
When two skills share a name, the higher-priority location wins: enterprise > personal > project. A skill also takes priority over an old .claude/commands/ file with the same name. If the wrong version runs, check for duplicates in ~/.claude/skills/.
Runtime errors
- A script fails? Run it yourself in the terminal with the same arguments first.
- A `
!commandinjection that exits non-zero aborts the skill. Add|| true` where failure is acceptable. - Prompted every time a script runs? Add it to
allowed-tools.
Measure, don't guess
The real test of a skill is whether results improve. Compare fresh sessions with and without the skill on the same task. For plugin skills, claude plugin eval runs evaluation suites, and /skill-doctor reports each skill's context cost and usage.
- ⋮⋮Type / and check whether the skill appears in the menu
- ⋮⋮Run claude --debug and look for YAML or loading errors
- ⋮⋮Check disable-model-invocation and paths in the frontmatter
- ⋮⋮Rewrite the description with specific trigger phrases
- ⋮⋮Test again in a fresh session
Check your understanding
How do plugin skills avoid name collisions?
A skill doesn't appear in the / menu. What's the first thing to check?
Which flag shows skill loading errors like invalid YAML?
Two skills share a name in personal and project locations. Which wins?