From creating-prompts
Guides creating Claude Code skills: clarify purpose, set file structure, configure frontmatter like disable-model-invocation, user-invocable, hooks. Triggers on 'create skill' requests.
npx claudepluginhub bitovi/ai-enablement-prompts --plugin creating-promptsThis skill uses the workspace's default tool permissions.
Help the user create a new Claude Code skill in this project.
Guides development of Claude Code SKILL.md files with best practices, structure, YAML frontmatter rules, categories, patterns, references, and testing.
Creates Claude Code skills at project or global scope by prompting for specs, generating SKILL.md with trigger phrases and instructions, and writing to disk.
Creates, reviews, and iterates on Claude Code skills using Anthropic's best practices and latest API docs. Use for new skill creation, existing skill review, description writing, and architecture design.
Share bugs, ideas, or general feedback.
Help the user create a new Claude Code skill in this project.
Ask the user (or infer from context):
Project skills live at:
.claude/skills/<skill-name>/
├── SKILL.md # Main instructions (required)
├── references/ # background knowledge, specs, checklists
├── examples/ # example inputs/outputs
└── scripts/ # helper shell scripts
Use this frontmatter template:
---
name: skill-name
description: Use this skill when the user asks to "...", mentions "...", or wants to "...". Include specific trigger phrases.
---
All fields are optional. Only description is recommended.
| Field | Description |
|---|---|
name | Display name / slash command. Lowercase letters, numbers, hyphens only (max 64 chars). Defaults to directory name. |
description | What the skill does and when to use it. Claude uses this to decide when to auto-load. If omitted, uses first paragraph of content. |
argument-hint | Hint shown during autocomplete (e.g., [issue-number] or [filename] [format]). |
disable-model-invocation | true prevents Claude from auto-loading. Use for side-effect workflows (/deploy, /send). Description is removed from context. |
user-invocable | false hides from / menu. Use for background knowledge. Description stays in context so Claude can auto-invoke. |
allowed-tools | Tools Claude can use without asking permission when skill is active (e.g., Read, Grep, Glob). |
model | Model to use when this skill is active. |
context | Set to fork to run in a forked subagent context (isolated, no conversation history). |
agent | Subagent type when context: fork is set. Options: Explore, Plan, general-purpose, or custom from .claude/agents/. Defaults to general-purpose. |
hooks | Hooks scoped to this skill's lifecycle. |
| Configuration | User can invoke? | Claude can invoke? | Context behavior |
|---|---|---|---|
| (default) | Yes | Yes | Description always in context; full skill loads when invoked |
disable-model-invocation: true | Yes | No | Description not in context; full skill loads when user invokes |
user-invocable: false | No | Yes | Description always in context; full skill loads when Claude invokes |
The !command`` syntax runs shell commands before the skill content is sent to Claude. The output replaces the placeholder — Claude only sees the result, not the command.
- Current branch: !`git branch --show-current`
- Staged files: !`git diff --name-only --cached`
| Substitution | Description |
|---|---|
$ARGUMENTS | All arguments passed when invoking. If not present in content, appended as ARGUMENTS: <value>. |
$ARGUMENTS[N] | Access a specific argument by 0-based index (e.g., $ARGUMENTS[0]). |
$N | Shorthand for $ARGUMENTS[N] (e.g., $0, $1, $2). |
${CLAUDE_SESSION_ID} | Current session ID. Useful for logging or session-specific files. |
${CLAUDE_SKILL_DIR} | Directory containing this SKILL.md. Use to reference bundled scripts/files regardless of cwd. |
Example with positional arguments:
---
name: migrate-component
description: Migrate a component from one framework to another
argument-hint: [component] [from-framework] [to-framework]
---
Migrate the $0 component from $1 to $2.
Preserve all existing behavior and tests.
The body of SKILL.md is the prompt Claude follows. Best practices:
[checklist.md](checklist.md)context: fork, the skill content becomes the subagent's prompt — must include an explicit task, not just guidelinesSupporting files keep SKILL.md focused. Reference them so Claude knows when to load each:
## Additional resources
- For complete API details, see [reference.md](reference.md)
- For usage examples, see [examples.md](examples.md)
Create .claude/skills/<skill-name>/SKILL.md with:
name and descriptionIf a CLAUDE.md file exists at the project root, append the new skill to reinforce discoverability. Add a bullet with the skill name and short description to the skills list:
- **skill-name**: Short description of what the skill does
If no CLAUDE.md exists, skip this step — skills are still auto-discovered from .claude/skills/.
Confirm the skill was created and explain how to test it: the user can invoke it with /<skill-name> or describe the situation that should auto-trigger it.
/skill-name.disable-model-invocation: true./context to check for warnings. Override with SLASH_COMMAND_TOOL_CHAR_BUDGET env var.Skill(name) for exact match or Skill(name *) for prefix match in permission rules. Deny all with Skill in deny rules.