From skill-creator
Interactive guide for creating new Claude Code skills from scratch. Use when building a new skill, creating a SKILL.md, designing skill structure, or when the user says "create a skill", "build a skill", "make a new skill", or "help me write a skill".
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-creator:skill-creator-guideThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This is an interactive, step-by-step workflow for building a complete Claude Code skill.
This is an interactive, step-by-step workflow for building a complete Claude Code skill. Follow each phase in order. Do not skip steps.
Before writing anything, clarify exactly what the skill should do.
Ask the user (if not already specified):
disable-model-invocation: true), Claude-only (user-invocable: false), or both (default)?~/.claude/skills/), project (.claude/skills/), or plugin?Write down 2-3 concrete use cases in this format:
Use Case: [Name]
Trigger: User says "[example phrase]"
Steps:
1. [First action]
2. [Second action]
3. [Third action]
Result: [What the user gets]
Determine which category fits best:
Reference content — Knowledge Claude applies to current work. Conventions, patterns, style guides.
context: fork)disable-model-invocationTask content — Step-by-step instructions for a specific action.
disable-model-invocation: truecontext: fork for isolationHybrid — Reference knowledge + actionable workflow.
Determine file layout:
your-skill-name/
SKILL.md # Required — main instructions
references/ # Optional — detailed docs loaded on demand
scripts/ # Optional — executable code
assets/ # Optional — templates, fonts, icons
Rules:
my-cool-skill)Create the YAML frontmatter between --- markers.
Required fields:
name: kebab-case, matches folder name, max 64 charactersdescription: What it does + when to use it + key capabilities. Under 1024 characters. No XML angle brackets.Optional fields (add only if needed):
disable-model-invocation: true — user-only invocationuser-invocable: false — Claude-only invocationallowed-tools — restrict tool access (e.g., Read, Grep, Glob)context: fork — run in isolated subagentagent — subagent type when using context: fork (e.g., Explore, Plan)argument-hint — autocomplete hint (e.g., [issue-number])model — model overrideDescription formula:
[What it does]. Use when [trigger conditions]. Covers [key capabilities].
Good example:
description: >-
Generates API documentation from source code with consistent formatting.
Use when writing API docs, creating endpoint references, or when the user
says "document this API" or "generate docs". Covers REST and GraphQL endpoints.
Bad example:
description: Helps with documentation.
Structure the SKILL.md body using this template:
# Skill Name
## Instructions
### Step 1: [First Major Step]
Clear explanation of what happens.
- Specific, actionable instructions
- Include tool calls or commands when relevant
### Step 2: [Second Major Step]
...
## Examples
### Example 1: [Common scenario]
User says: "[example prompt]"
Actions:
1. [What Claude does]
2. [What Claude does]
Result: [What the user gets]
## Troubleshooting
### Error: [Common error]
Cause: [Why it happens]
Solution: [How to fix]
Best practices for instructions:
If SKILL.md exceeds ~300 lines, split into:
references/ — detailed API docs, specificationsPITFALLS.md — common mistakes with WRONG/CORRECT examplesEXAMPLES.md — extended examplesscripts/ — executable helpersReference them from SKILL.md:
## Additional Resources
- For complete API reference, see [references/api-guide.md](references/api-guide.md)
- For common pitfalls, see [PITFALLS.md](PITFALLS.md)
If the skill accepts arguments, use these placeholders:
$ARGUMENTS — all arguments passed to the skill$ARGUMENTS[0], $ARGUMENTS[1] or $0, $1 — positional arguments${CLAUDE_SESSION_ID} — current session ID${CLAUDE_SKILL_DIR} — directory containing this SKILL.mdFor dynamic context, use shell command injection:
! followed by a backtick-wrapped command runs before the skill loads!git branch --show-current`` injects the current branch nameRun through this checklist before considering the skill complete. For the full pre-flight checklist, see CHECKLIST.md.
Quick validation:
SKILL.md (case-sensitive)--- delimitersname is kebab-case, no spaces, no capitalsdescription includes WHAT and WHENTest the skill in three ways:
1. Triggering tests — Does it activate on the right queries?
2. Functional tests — Does it produce correct output?
3. Comparison test — Is it better than no skill?
After completing all phases, present the user with:
npx claudepluginhub ilyagulya/claude-marketplace --plugin skill-creatorGuides creating Claude Code skills: clarify purpose, set file structure, configure frontmatter like disable-model-invocation, user-invocable, hooks. Triggers on 'create skill' requests.
Guides development of Claude Code SKILL.md files with best practices, structure, YAML frontmatter rules, categories, patterns, references, and testing.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.