with one click
claude-code-skills
Use when you need to understand, create, trigger, or debug Claude Code skills—reusable workflows defined in SKILL.md files with YAML frontmatter.
Menu
Use when you need to understand, create, trigger, or debug Claude Code skills—reusable workflows defined in SKILL.md files with YAML frontmatter.
Based on SOC occupation classification
Use when unsure which Claude Code capability fits a task, when about to single-thread large/cross-cutting/repetitive work, or when you or the user ask what Claude Code can do — loads the full capability map (signal → capability) and points to the deep-dive skills.
Use when building custom AI agents headlessly, embedding Claude Code tools in an app, or running scripted/cron agents—need SDK package names, setup, core API entry points, supported languages, and relation to Claude Code CLI and Messages...
Use when needing to understand or manage background agents, long-running tasks, polling, scheduling, or async work in Claude Code without blocking the session.
Use when you need to undo code edits, explore alternatives without losing a starting point, recover from a bad edit path, or restore previous conversation state — press Esc Esc or run /rewind to open checkpoints menu.
Use when a task is too big for one context — broad audits, multi-file migrations, multi-source research, or parallel multi-dimension review — and you want to fan out and orchestrate many subagents deterministically with the Workflow tool (requires ultracode / explicit opt-in).
Use when deciding how to work on a task - choosing effort level, model, or fast mode to balance reasoning depth, speed, and token cost.
| name | claude-code-skills |
| description | Use when you need to understand, create, trigger, or debug Claude Code skills—reusable workflows defined in SKILL.md files with YAML frontmatter. |
| user-invocable | true |
A skill = a workflow saved in SKILL.md with YAML frontmatter that Claude loads on demand and applies when relevant.
name, description) + markdown body (instructions). Lives in ~/.claude/skills/<name>/, .claude/skills/<name>/, or plugin skills/<name>/.--- markers. description is how Claude decides when to use the skill (recommended). Other fields: disable-model-invocation, user-invocable, allowed-tools, disallowed-tools, model, effort, context, agent, paths, shell, argument-hint, arguments./skill-name to invoke manually, or Claude loads it automatically when relevant. Plugin skills use namespace: /plugin-name:skill-name.File structure:
~/.claude/skills/my-skill/
├── SKILL.md (required)
├── scripts/ (optional, for executables)
└── references/ (optional, detailed docs)
Minimal SKILL.md template:
---
description: Use when [trigger condition]. [Concrete signals].
---
## Instructions
[Markdown body with step-by-step instructions.]
Triggering: The description field is the trigger. Write it to start with "Use when..." and name concrete signals (e.g., "Use when the user asks about changes, wants a commit message, or asks to review their diff"). Combined description + optional when_to_use text is capped at ~1,536 characters; put the key use case first.
| Field | Type | Example | Effect |
|---|---|---|---|
name | string | my-skill | Display label in listings; directory name is the command (use /my-skill). |
description | string | Use when reviewing code… | Critical for auto-triggering. Claude uses this to decide when to load. |
when_to_use | string | Trigger phrases: code review, refactor | Appended to description; shares 1,536-char cap with description. |
disable-model-invocation | bool | true | Only you can invoke; Claude won't auto-load. Use for side-effects (deploy, send-message). |
user-invocable | bool | false | Only Claude can invoke; hidden from / menu. Use for background knowledge. |
allowed-tools | list | Bash(git *) Read Grep | Pre-approve tools; Claude can use without per-call approval (while skill is active). |
disallowed-tools | list | AskUserQuestion | Remove tools from Claude's pool while skill active. Resets when you send next message. |
model | string | claude-sonnet-4-6 | Override session model for this skill. Accepts same values as /model or inherit. |
effort | string | high xhigh max | Override effort level for this skill. Default: inherit from session. |
context | string | fork | Run in isolated subagent. Subagent receives SKILL.md as task prompt. |
agent | string | Explore Plan general-purpose | Which subagent to use when context: fork. Default: general-purpose. Explore/Plan skip CLAUDE.md to keep context small. |
paths | list | src/**/*.ts tests/** | Glob patterns; Claude loads skill automatically only when working with matching files. |
shell | string | bash (default) or powershell | Shell for !`command` and ```! blocks. |
argument-hint | string | [issue-number] or [from] [to] | Hint text shown in autocomplete. |
arguments | list | [issue, branch] | Named positional args for $name substitution in skill body. Maps names to positions. |
Inject live data into the prompt using !`command` (inline) or ```! (multi-line) blocks. Commands run BEFORE Claude sees the skill—output replaces the placeholder:
Inline:
Current changes: !`git diff HEAD`
Multi-line:
```!
git status --short
npm --version
```
Command output is plain text. Substitution runs once; output is NOT re-scanned for further placeholders.
| Variable | Example | Notes |
|---|---|---|
$ARGUMENTS | Fix issue $ARGUMENTS | All args passed when invoking skill. |
$ARGUMENTS[N] or $N | Migrate $0 from $1 to $2 | Specific argument by 0-based index. |
$name | $issue, $branch | Named arg from arguments frontmatter. Names map to positions. |
${CLAUDE_SESSION_ID} | (unique ID) | Current session ID for logging/correlation. |
${CLAUDE_EFFORT} | low, high, xhigh, max | Current effort level; adapt instructions. |
${CLAUDE_SKILL_DIR} | /path/to/skill/dir | Absolute path of the skill directory. Use in bash injection to reference bundled scripts. |
To escape a literal $ before a digit (e.g., $1.00), use \$.
| Scope | Path | Precedence |
|---|---|---|
| Enterprise | See managed settings | Highest |
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | Medium |
| Project | .claude/skills/<skill-name>/SKILL.md | Lowest |
| Plugin | <plugin>/skills/<skill-name>/SKILL.md | Namespaced: /plugin:skill |
Enterprise overrides personal, personal overrides project. Plugin skills don't conflict.
Prevent auto-trigger without disabling the skill:
disable-model-invocation: true # Only you can invoke manually (/my-skill)
Hide from / menu (Claude only):
user-invocable: false # Hidden from menu; Claude can still invoke if relevant
Default behavior: Both you and Claude can invoke any skill unless one of the above is set.
Override individual skill visibility in skillOverrides (persists in settings, not in SKILL.md):
{
"skillOverrides": {
"legacy-context": "name-only", // Show name only, no description
"deploy": "off" // Hide completely
}
}
Values: "on" (full), "name-only", "user-invocable-only" (hidden from menu but invocable), "off".
~/.claude/skills/, .claude/skills/, or --add-dir directories reload automatically mid-session when SKILL.md is edited. Creating a NEW skills directory requires restarting./reload-plugins.npx skills add, edits to the source repo do NOT auto-propagate. Re-run npx skills add . -g -y or symlink the working tree to ~/.claude/skills/<name>/ for live editing.Keep SKILL.md under 500 lines. Move detailed reference docs to separate files:
my-skill/
├── SKILL.md (overview & navigation)
├── reference.md (full API docs, loaded on demand)
├── examples.md (usage examples, loaded on demand)
└── scripts/validate.sh (executable, not loaded)
Reference from SKILL.md:
## Additional resources
- For complete API details, see [reference.md](reference.md)
- For usage examples, see [examples.md](examples.md)
Claude loads supporting files only when you ask for them—they don't cost context until invoked.
Manual-invoke only (deploy, send-message):
---
name: deploy
description: Deploy to production
disable-model-invocation: true
---
Deploy to $ARGUMENTS with safeguards: ...
Background knowledge (Claude only, not a command):
---
name: legacy-system-context
description: How the old auth system works
user-invocable: false
---
The legacy system uses... [reference material]
Auto-grant tools (reduce approval prompts):
---
name: commit
allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)
---
Stage and commit changes...
Isolated subagent task:
---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---
Research $ARGUMENTS thoroughly...
| Problem | Check |
|---|---|
| Skill not triggering | Verify description includes user keywords. Test with /skill-name direct invocation. Reword description if too generic. |
| Skill triggers too often | Make description more specific or add disable-model-invocation: true. |
| Skill descriptions cut short | Run /doctor to check listing budget overflow. Trim description or set low-priority skills to "name-only" in skillOverrides. |
| Changes not taking effect | Ensure you're editing the file Claude Code is reading. Plugin skills need /reload-plugins. |
disable-model-invocation: true.