--- name: skill-creator description: "Interactive guide for creating, reviewing, and improving agent skills (SKILL.md folders). Use when the user wants to build a new skill ('create a skill', 'make a skill for X', 'write a SKILL.md', 'turn this workflow into a skill'), review or improve an existing skill, fix a skill that never triggers or triggers too often, or validate a skill folder before sharing it. Do NOT use for general prompt writing, MCP server development, or editing arbitrary markdown files." version: 1.0.0 license: MIT platforms: [linux, macos, windows] --- # Skill Creator A skill is a folder that teaches an agent how to handle a specific task or workflow: ``` your-skill-name/ ├── SKILL.md # Required — YAML frontmatter + Markdown instructions ├── scripts/ # Optional — executable code (Python, Bash, ...) ├── references/ # Optional — docs loaded only when needed └── assets/ # Optional — templates, fonts, icons used in output ``` Skills rely on **progressive disclosure**: the frontmatter is always in context (so it decides *when* the skill loads), the SKILL.md body loads when relevant, and linked files load only on demand. Keep each level as small as it can be. ## Workflow: Creating a New Skill ### Step 1: Define 2-3 concrete use cases Before writing anything, pin down with the user: - What does the user want to accomplish? (outcome, not feature) - What triggers it? Collect literal phrases users would say. - What steps does the workflow require, in order? - Which tools are needed (built-in, scripts, MCP servers)? - What domain knowledge or best practices must be embedded? Write each use case as: **Trigger → Steps → Result**. If the user is vague, propose use cases and confirm rather than guessing silently. Identify the category — it shapes the structure: 1. **Document & asset creation** — embed style guides, templates, quality checklists. 2. **Workflow automation** — step-by-step process with validation gates. 3. **MCP enhancement** — orchestrate MCP tool calls in sequence with domain expertise. ### Step 2: Plan the folder structure - Folder name: kebab-case only (`my-skill` — no spaces, capitals, or underscores) and it should match the frontmatter `name`. - `SKILL.md` must be named exactly that, case-sensitive. - Never put a `README.md` inside the skill folder. - Keep SKILL.md under ~5,000 words; move detail to `references/` and link to it. - For critical validations, prefer a bundled script over prose — code is deterministic, language interpretation isn't. ### Step 3: Write the frontmatter The frontmatter is the single most important part — it alone decides whether the skill ever loads. ```yaml --- name: your-skill-name description: [What it does] + [When to use it, with literal trigger phrases] + [negative triggers if needed] --- ``` Rules (hard requirements): - `description` MUST state both WHAT the skill does and WHEN to use it, under 1024 characters. - Include specific phrases users would actually say, and file types if relevant. - No XML angle brackets anywhere in frontmatter (it is injected into the system prompt). - `name` must not use reserved prefixes ("claude", "anthropic"). Weak: `description: Helps with projects.` Strong: `description: Manages Linear sprint workflows including planning, task creation, and status tracking. Use when the user mentions "sprint", "Linear tasks", or asks to "create tickets".` Optional `disable-model-invocation: true` makes the skill user-only: the agent never sees it (no skill catalog entry, no `skill_search` hit, and the `skill` tool refuses it), while `/skill-name` still works for the user. Use it for a long or interrupting workflow whose timing the user should control — a multi-phase orchestration, a deploy, anything with side effects. Leave it off by default; a skill the agent cannot see is a skill it cannot offer. Keep the "only when the user asks" rule in the `description` and body as well, so the skill still behaves if the flag is ever removed. For all optional fields (`license`, `compatibility`, `metadata`, `allowed-tools`) and more good/bad examples, read `references/frontmatter.md`. ### Step 4: Write the instructions Recommended body structure: ```markdown # Skill Name ## Instructions ### Step 1: [First major step] Exact commands / tool calls, with expected output described. ## Examples User says X → actions → result. ## Troubleshooting Error → cause → fix. ``` Best practices: - Be specific and actionable: give exact commands with flags and expected output, not vibes ("validate the data"). - Put critical instructions at the top; use `## Important` headers for must-not-skip rules. - Include error handling for the failures users will actually hit. - Reference bundled resources explicitly ("Before writing queries, read the API-patterns file in references/"). - Number steps that must happen in order; state data dependencies between steps. For proven structural patterns (sequential orchestration, multi-MCP coordination, iterative refinement, context-aware tool selection, domain-specific intelligence), read `references/patterns.md`. ### Step 5: Validate Run the bundled validator on the skill folder: ```bash python scripts/validate_skill.py /path/to/your-skill-name ``` It checks naming, frontmatter format and length, forbidden content, missing linked files, and body size. Fix every ERROR; treat WARNINGs as review prompts. Expected output on success: `PASS` with 0 errors. ### Step 6: Test and iterate Iterate on a single challenging task until it succeeds, then extract the winning approach into the skill — this gives faster signal than broad testing. Then cover: 1. **Triggering**: obvious phrasing loads it, paraphrases load it, unrelated queries don't. 2. **Function**: outputs correct, tool calls succeed, edge cases handled. 3. **Baseline comparison**: fewer corrections / tool calls / tokens than without the skill. Debugging trick: ask the agent "When would you use the [name] skill?" — it will paraphrase the description back; fix what's missing. Full test-case templates and iteration signals are in `references/testing.md`. ## Workflow: Reviewing an Existing Skill When asked to review or improve a skill: 1. Read its SKILL.md and run `python scripts/validate_skill.py `. 2. Diagnose against the common failure modes: - **Never triggers** → description too generic or missing user-facing trigger phrases. Rewrite with literal phrases and keywords. - **Triggers too often** → add negative triggers ("Do NOT use for...") and narrow the scope. - **Loads but instructions ignored** → instructions too verbose, buried, or ambiguous. Move critical rules to the top, replace prose validations with a script. - **Slow / degraded responses** → SKILL.md too large; move detail into `references/`. 3. Propose concrete edits (before/after for the description), not general advice. 4. If the user brings failure examples from real sessions, encode the fix as an explicit instruction or troubleshooting entry — that is the highest-value iteration loop. ## Quick Checklist Before delivering a skill, verify: - [ ] Folder is kebab-case and matches frontmatter `name` - [ ] `SKILL.md` exact filename; no `README.md` inside the folder - [ ] Frontmatter has `---` delimiters, `name`, and a WHAT+WHEN `description` under 1024 chars - [ ] No XML angle brackets in frontmatter - [ ] Instructions specific and actionable, with examples and error handling - [ ] Every referenced `scripts/`, `references/`, `assets/` file actually exists - [ ] `validate_skill.py` passes with 0 errors - [ ] Triggering tested: fires on target phrasings, silent on unrelated ones