- name
- skill-creator
- description
- Guide for creating effective agent skills. Use when you want to create a new skill, improve an existing skill, or learn best practices for skill development. Helps codify learned patterns into reusable, discoverable skills.
- tags
- ["meta","skills","learning","documentation"]
- tools
- ["skills_init","skills_create","skills_update","skills_read"]
# Skill Creator
This skill provides guidance for creating effective skills that extend agent capabilities with specialized knowledge, workflows, and tools.
## What Are Skills?
Skills are modular, self-contained packages that extend agent capabilities by providing:
1. **Specialized workflows** - Multi-step procedures for specific domains
2. **Tool integrations** - Instructions for working with specific file formats or APIs
3. **Domain expertise** - Project-specific knowledge, schemas, business logic
4. **Bundled resources** - Scripts, references, and assets for complex tasks
Think of skills as "onboarding guides" that transform a general-purpose agent into a specialized one equipped with procedural knowledge.
## Skill Anatomy
Every skill consists of a required SKILL.md file and optional bundled resources:
```
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter (name, description, tags, tools)
│ └── Markdown instructions
└── Bundled Resources (optional)
├── scripts/ - Executable code (run with skills_execute)
└── references/ - Documentation (load with skills_read)
```
### Progressive Disclosure
Skills use a three-level loading system:
1. **Metadata** (name + description) - Always in context (~100 words)
2. **SKILL.md body** - When skill triggers (<5k words)
3. **Bundled resources** - On-demand as needed
Keep SKILL.md lean. Move detailed content to references/.
## Creating a Skill
### Step 1: Understand the Use Cases
Before creating, understand concrete examples:
- What triggers should activate this skill?
- What user requests would benefit from it?
- What workflows does it enable?
**Ask clarifying questions** if scope is unclear.
### Step 2: Initialize the Skill
Use `skills_init` to create the full template structure:
```
skills_init(
name: "my-skill",
description: "Initial description",
directory: ".opencode/skills"
)
```
This creates:
- SKILL.md with TODO placeholders
- scripts/ with example script
- references/ with example doc
### Step 3: Complete the SKILL.md
Fill in the TODO placeholders. Key sections:
**Frontmatter** - Critical for discoverability:
```yaml
---
name: my-skill
description: What it does and WHEN to use it. Be specific about triggering scenarios.
tags:
- category
- domain
tools:
- tool_names_used
---
```
**When to Use** - Specific triggering scenarios:
```markdown
## When to Use This Skill
- When working on X type of task
- When files matching Y pattern are involved
- When the user asks about Z topic
```
**Instructions** - Actionable, imperative form:
```markdown
## Instructions
1. Read the configuration file first
2. Check for existing patterns before creating
3. Always validate output before completing
```
**Examples** - Realistic user requests:
```markdown
## Examples
### Example: Realistic Scenario
**User**: "Help me do X"
**Process**:
1. First step
2. Second step
3. Final step
```
### Step 4: Add Bundled Resources (Optional)
**scripts/** - Executable helpers:
- Use for repeated automation
- Token-efficient (run without reading)
- Run via `skills_execute`
**references/** - On-demand documentation:
- Detailed guides too long for SKILL.md
- API documentation
- Complex workflows
- Load via `skills_read`
### Step 5: Test and Iterate
1. Use `skills_use` to load the skill
2. Try it on real tasks
3. Notice struggles or inefficiencies
4. Update SKILL.md based on experience
5. Test again
## Best Practices
### Metadata Quality
The `name` and `description` determine when the skill triggers:
**Good descriptions**:
- "Guide for creating MCP servers. Use when building tools that connect LLMs to external APIs."
- "File organization helper. Use when Downloads folder is messy or files need restructuring."
**Bad descriptions**:
- "A useful skill" (too vague)
- "Does stuff with files" (not actionable)
### Writing Style
Use **imperative/infinitive form** throughout:
- "Read the file first" (not "You should read the file")
- "Check for patterns" (not "Consider checking patterns")
### Keep SKILL.md Lean
- Core instructions only (<5k words)
- Move details to references/
- Use examples sparingly
- Delete placeholder sections
### Design for Discoverability
- Tags help agents find skills by category
- "When to Use" sections enable proper triggering
- Tools list shows what capabilities the skill uses
## Quick Reference
### Creating Skills
| Tool | Use When |
|------|----------|
| `skills_init` | Want full template structure with TODOs |
| `skills_create` | Have complete content ready to write |
| `swarm_learn` | Converting learned patterns to skills |
### Managing Skills
| Tool | Use For |
|------|---------|
| `skills_list` | Discover available skills |
| `skills_use` | Activate a skill by loading its content |
| `skills_read` | Load a reference file from a skill |
| `skills_update` | Modify an existing skill |
| `skills_delete` | Remove an obsolete skill |
### Execution
| Tool | Use For |
|------|---------|
| `skills_execute` | Run a script from a skill |
| `skills_add_script` | Add a new script to a skill |
## From Learned Patterns to Skills
When you discover something reusable during work:
1. **Identify the pattern** - What worked well?
2. **Consider scope** - Is it project-specific or universal?
3. **Use `swarm_learn`** - Document the learning
4. **Create the skill** - Use `create_skill=true` or `skills_init`
5. **Test and refine** - Iterate based on usage
Skills make swarms smarter over time by preserving learned knowledge for future agents.
GitHubで見る