--- name: create-skill description: Expert guidance for creating, writing, building, and refining GSD skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices. --- ## How Skills Work Skills are modular, filesystem-based capabilities that provide domain expertise on demand. This skill teaches how to create effective skills. ### 1. Skills Are Prompts All prompting best practices apply. Be clear, be direct, use XML structure. Assume Claude is smart - only add context Claude doesn't have. ### 2. SKILL.md Is Always Loaded When a skill is invoked, Claude reads SKILL.md. Use this guarantee: - Essential principles go in SKILL.md (can't be skipped) - Workflow-specific content goes in workflows/ - Reusable knowledge goes in references/ ### 3. Router Pattern for Complex Skills ``` skill-name/ ├── SKILL.md # Router + principles ├── workflows/ # Step-by-step procedures (FOLLOW) ├── references/ # Domain knowledge (READ) ├── templates/ # Output structures (COPY + FILL) └── scripts/ # Reusable code (EXECUTE) ``` SKILL.md asks "what do you want to do?" → routes to workflow → workflow specifies which references to read. **When to use each folder:** - **workflows/** - Multi-step procedures Claude follows - **references/** - Domain knowledge Claude reads for context - **templates/** - Consistent output structures Claude copies and fills (plans, specs, configs) - **scripts/** - Executable code Claude runs as-is (deploy, setup, API calls) ### 4. Pure XML Structure No markdown headings (#, ##, ###) in skill body. Use semantic XML tags: ```xml ... ... ... ``` Keep markdown formatting within content (bold, lists, code blocks). ### 5. Progressive Disclosure SKILL.md under 500 lines. Split detailed content into reference files. Load only what's needed for the current workflow. ## Understanding User Intent Based on the user's message, route directly to the appropriate workflow: **Creating new skills:** - Domain expertise (exhaustive knowledge base) → **Use `create-domain-expertise` skill instead** (separate skill with batched subagent orchestration) - Task-execution skill (does specific things) → workflows/create-new-skill.md **Working with existing skills:** - Audit, review, check → workflows/audit-skill.md - Verify content is current → workflows/verify-skill.md - Add workflow → workflows/add-workflow.md - Add reference → workflows/add-reference.md - Add template → workflows/add-template.md - Add script → workflows/add-script.md - Upgrade to router pattern → workflows/upgrade-to-router.md **Need help deciding:** - General guidance → workflows/get-guidance.md **If user intent is unclear, ask minimal clarifying questions:** - "Create a MIDI skill" → "Task-execution skill (does MIDI tasks) or domain expertise (complete MIDI knowledge base)?" - "Work on my skill" → "Which skill? What do you want to do with it?" - Ask one clarifying question round at a time, then wait for the user's actual response before asking another. - Never fabricate or simulate user responses while clarifying (for example, fake `[User]` markers or imagined answers). Then proceed directly to the workflow. ## Skill Structure Quick Reference **Skill directories:** - Global: `~/.agents/skills/{skill-name}/` - Project-local: `.agents/skills/{skill-name}/` **Simple skill (single file):** ```yaml --- name: skill-name description: What it does and when to use it. --- What this skill does Immediate actionable guidance Step-by-step procedure How to know it worked ``` **Complex skill (router pattern):** ``` SKILL.md: - Always applies - Question to ask - Maps answers to workflows workflows/: - Which refs to load - Steps - Done when... references/: Domain knowledge, patterns, examples templates/: Output structures Claude copies and fills (plans, specs, configs, documents) scripts/: Executable code Claude runs as-is (deploy, setup, API calls, data processing) ``` ## Domain Knowledge All in `references/`: **Structure:** recommended-structure.md, skill-structure.md **Principles:** core-principles.md, be-clear-and-direct.md, use-xml-tags.md **Patterns:** common-patterns.md, workflows-and-validation.md **Assets:** using-templates.md, using-scripts.md **Advanced:** executable-code.md, api-security.md, iteration-and-testing.md **GSD-specific:** gsd-skill-ecosystem.md ## Workflows All in `workflows/`: | Workflow | Purpose | |----------|---------| | create-new-skill.md | Build a task-execution skill from scratch | | audit-skill.md | Analyze skill against best practices | | verify-skill.md | Check if content is still accurate | | add-workflow.md | Add a workflow to existing skill | | add-reference.md | Add a reference to existing skill | | add-template.md | Add a template to existing skill | | add-script.md | Add a script to existing skill | | upgrade-to-router.md | Convert simple skill to router pattern | | get-guidance.md | Help decide what kind of skill to build | ## YAML Frontmatter Required fields: ```yaml --- name: skill-name # lowercase-with-hyphens, matches directory description: ... # What it does AND when to use it (third person) --- ``` Name conventions: `create-*`, `manage-*`, `setup-*`, `generate-*`, `build-*` A well-structured skill: - Has valid YAML frontmatter - Uses pure XML structure (no markdown headings in body) - Has essential principles inline in SKILL.md - Routes directly to appropriate workflows based on user intent - Keeps SKILL.md under 500 lines - Asks minimal clarifying questions only when truly needed - Has been tested with real usage