# skill-creator > Create effective Claude Code skills, plugins, and marketplaces with proper structure, frontmatter, and best practices. Use when creating new skills, plugins, marketplaces, converting workflows to skills, or improving existing skills. - Author: akatz-ai - Repository: akatz-ai/akatz-skills - Version: 20260124220033 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/akatz-ai/akatz-skills - Web: https://mule.run/skillshub/@@akatz-ai/akatz-skills~skill-creator:20260124220033 --- --- name: skill-creator description: Create effective Claude Code skills, plugins, and marketplaces with proper structure, frontmatter, and best practices. Use when creating new skills, plugins, marketplaces, converting workflows to skills, or improving existing skills. --- # Skill Creator Create Claude Code skills that are concise, well-structured, and effective. ## Workflow Copy this checklist when creating a skill: ``` Skill Creation Progress: - [ ] 1. Define purpose and triggers - [ ] 2. Create directory structure - [ ] 3. Write SKILL.md with frontmatter - [ ] 4. Add supporting files (if needed) - [ ] 5. Test with real usage - [ ] 6. Iterate based on behavior ``` ## Step 1: Define Purpose Before writing, answer: - **What does this skill do?** (one sentence) - **When should it trigger?** (specific keywords/scenarios) - **Who invokes it?** (user via `/`, Claude automatically, or both) ## Step 2: Create Structure **Creating a plugin/marketplace?** STOP. Read [plugin-structure.md](plugin-structure.md) first. **Standalone skill locations:** | Scope | Path | |-------|------| | Personal | `~/.claude/skills//SKILL.md` | | Project | `.claude/skills//SKILL.md` | | Plugin | `/skills//SKILL.md` | ```bash mkdir -p / ``` ## Step 3: Write SKILL.md **Required frontmatter:** ```yaml --- name: my-skill-name description: What it does and when to use it. Be specific with trigger words. --- ``` **Optional frontmatter fields:** - `disable-model-invocation: true` - Only user can invoke (use for side effects like deploy, commit) - `user-invocable: false` - Only Claude can invoke (background knowledge) - `allowed-tools: Read, Grep, Glob` - Restrict available tools - `context: fork` - Run in isolated subagent - `agent: Explore` - Which agent type for forked context **Body content guidelines:** - Keep under 500 lines - Assume Claude already knows common concepts - Use workflows with checklists for multi-step tasks - Include validation/feedback loops for critical operations ## Step 4: Add Supporting Files For skills exceeding 500 lines, use progressive disclosure: ``` my-skill/ ├── SKILL.md # Overview + navigation (required) ├── reference.md # Detailed docs (loaded when needed) ├── examples.md # Usage examples └── scripts/ └── helper.py # Utility scripts ``` Reference files from SKILL.md: ```markdown **For API details**: See [reference.md](reference.md) **Examples**: See [examples.md](examples.md) ``` ## Step 5: Test 1. Load the skill: `claude --plugin-dir ./path/to/plugin` 2. Test automatic triggering with natural requests 3. Test direct invocation with `/skill-name` 4. Verify Claude finds the right information ## Step 6: Iterate Observe Claude's behavior: - Does it trigger when expected? - Does it follow instructions correctly? - Does it access supporting files appropriately? Refine based on actual usage, not assumptions. --- ## Quick Reference **For plugin/marketplace structure:** See [plugin-structure.md](plugin-structure.md) - **READ FIRST** when creating plugins/marketplaces **For detailed patterns:** See [patterns.md](patterns.md) **For anti-patterns to avoid:** See [anti-patterns.md](anti-patterns.md) **For evaluation setup:** See [evaluations.md](evaluations.md) ## String Substitutions Available in skill content: - `$ARGUMENTS` - User input after skill name - `${CLAUDE_SESSION_ID}` - Current session ID - `!`command`` - Execute shell command, inject output