This guide walks you through creating a new skill for AI agents.
Every skill is a directory containing at minimum a SKILL.md file:
skill-name/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: helper scripts
├── references/ # Optional: detailed documentation
└── assets/ # Optional: templates, images, fonts
Skills are organized into category subdirectories within skills/. Choose the most appropriate category:
| Category | Purpose | Examples |
|---|---|---|
creative |
Art, music, design | algorithmic-art, theme-factory |
data |
Data analysis, SQL | sql-query-optimizer |
development |
Coding patterns, tools | mcp-builder, tdd-workflow |
documentation |
Docs, READMEs | github-profile-architect |
education |
Teaching, learning | socratic-tutor |
integrations |
Third-party tools | specstory-* skills |
knowledge |
Knowledge management | second-brain-librarian |
professional |
Business, career | cv-resume-builder |
project-management |
Planning, roadmaps | github-roadmap-strategist |
security |
Security, compliance | gdpr-compliance-check |
specialized |
Niche domains | game-mechanics-designer |
tools |
Meta-skills | skill-creator |
Create your skill directory in the appropriate category:
mkdir -p skills/development/my-new-skill
Use kebab-case (lowercase with hyphens) for the directory name.
Create the main skill file with YAML frontmatter:
---
name: my-new-skill
description: What this skill does and when to use it. Be specific about trigger phrases and use cases.
license: MIT
---
# My New Skill
Brief overview of what this skill provides.
## When to Use
- Scenario 1 where this skill applies
- Scenario 2 where this skill applies
## Process
### Step 1: Title
Instructions for step 1.
### Step 2: Title
Instructions for step 2.
## Examples
Concrete examples showing the skill in action.
name (required)
^[a-z0-9-]+$description (required)
license (required for contributions)
MIT for open-source skillsComplete terms in LICENSE.txt for separate license filesBe specific about when to use the skill:
description: Guide for creating MCP servers that enable LLMs to interact
with external services. Use when building MCP servers to integrate APIs.
Provide step-by-step workflows:
## Process
### Phase 1: Research
1. Study the API documentation
2. Identify key endpoints
### Phase 2: Implementation
1. Set up the project structure
2. Implement tool handlers
Include concrete examples:
## Example
When the user asks: "Help me create a Slack integration"
→ Follow Phase 1 to understand Slack's API
→ Implement message sending and receiving tools
scripts/ - For deterministic, reusable code:
mkdir skills/development/my-new-skill/scripts
Use when:
references/ - For detailed documentation:
mkdir skills/development/my-new-skill/references
Use when:
assets/ - For output resources:
mkdir skills/development/my-new-skill/assets
Use when:
Run the validation script:
python3 scripts/validate_skills.py --collection example --unique
This checks:
After adding your skill, regenerate the collections:
python3 scripts/refresh_skill_collections.py
This updates:
.build/collections/example-skills.txt.build/Move detailed information to references/:
# Good: Lean SKILL.md
SKILL.md (50 lines) → Core workflow
references/api-guide.md → Detailed API docs
# Bad: Bloated SKILL.md
SKILL.md (500 lines) → Everything
Structure information in three levels:
Good:
description: Guide for test-driven development workflow. Use when
implementing new features with TDD or when users mention "write tests first".
Poor:
description: TDD helper.
Information should exist in one place only:
For multi-step processes:
## Process
### Phase 1: Planning
...
### Phase 2: Implementation
...
### Phase 3: Verification
...
For domain knowledge:
## Overview
Brief context on the domain.
## Key Concepts
Definitions and explanations.
## Patterns
Common patterns with examples.
For external tools:
## Setup
Prerequisites and configuration.
## Usage
How to invoke the tool.
## Examples
Common use cases.
Validation fails with “name does not match directory”
name field exactly matches the directory nameSkill not being detected by agent
Collections not updating
python3 scripts/refresh_skill_collections.py