Create and manage OpenCode skills with proper SKILL.md format, frontmatter, and organization...
Create loadable knowledge modules that enhance agent capabilities.
A skill is a markdown file that provides specialized knowledge, workflows, or tool integrations. Skills are loaded on-demand via the skill tool when needed.
| Scope | Path |
|---|---|
| Project | .opencode/skill/<name>/SKILL.md |
| Global | ~/.config/opencode/skill/<name>/SKILL.md |
CRITICAL: The folder name MUST match the name in frontmatter.
.opencode/skill/my-skill/
├── SKILL.md # REQUIRED - Main skill definition
├── scripts/ # Optional - Executable scripts
│ └── validate.sh
├── references/ # Optional - Reference documents
│ └── schema.md
└── assets/ # Optional - Images, data files
└── diagram.png
| Rule | Valid | Invalid |
|---|---|---|
| Lowercase | my-skill |
My-Skill |
| Alphanumeric + hyphen | api-client |
api_client |
| Match folder name | foo/SKILL.md with name: foo |
Mismatch |
---
name: my-skill-name # REQUIRED, MUST match folder name
description: |- # REQUIRED, 1-1024 characters
[Capability summary]. Use for [use cases].
Use proactively when [trigger contexts].
Examples:
- user: "query" → action
- user: "another query" → action
---
The description MUST have three parts:
user: "query" → action formatdescription: |-
Generate comprehensive API documentation from source code. Use for documenting REST endpoints, GraphQL schemas, and SDK methods.
Use proactively when user says "document API", "generate docs", "API reference", or asks about endpoint documentation.
Examples:
- user: "Document this FastAPI app" → analyze routes, generate OpenAPI-style docs
- user: "Create SDK documentation" → extract methods, parameters, return types
---
name: example-skill
description: |-
[Description as above]
---
# Skill Title
Brief overview of what this skill enables.
## Core Concepts
Fundamental knowledge the agent needs.
## Workflow
Step-by-step process:
1. **Understand**: Gather requirements
2. **Analyze**: Assess current state
3. **Implement**: Make changes
4. **Verify**: Confirm correctness
## Patterns
### Pattern Name
\`\`\`language
// Code example
\`\`\`
## Anti-Patterns
- **Problem**: Description → **Solution**: Fix
## Validation
How to verify the skill's output is correct.
| Guideline | Recommendation |
|---|---|
| SKILL.md total length | SHOULD be under 500 lines |
| Complex documentation | SHOULD use references/ dir |
| Code examples | SHOULD use scripts/ dir |
| Progressive disclosure | Core in SKILL.md, details in references |
Control which skills agents can load:
# In agent frontmatter or opencode.json
permission:
skill:
"*": "deny" # Deny all by default
"security-*": "allow" # Allow security-prefixed
"my-skill": "allow" # Allow specific skill
| Pattern | Matches |
|---|---|
"*" |
All skills |
"prefix-*" |
Skills starting with prefix- |
"exact-name" |
Only that exact skill |
For detailed documentation that would bloat SKILL.md:
.opencode/skill/my-skill/
├── SKILL.md
└── references/
├── schema.md # JSON schema documentation
├── examples.md # Extended examples
└── troubleshooting.md # Common issues
Reference in SKILL.md:
See `references/schema.md` for the complete configuration schema.
For executable utilities:
.opencode/skill/my-skill/
├── SKILL.md
└── scripts/
├── validate.sh # Validation script
└── generate.py # Generator script
Reference in SKILL.md:
Run validation:
\`\`\`bash
bash .opencode/skill/my-skill/scripts/validate.sh
\`\`\`
Skills are discovered at:
.opencode/skill/*/SKILL.md~/.config/opencode/skill/*/SKILL.mdProject skills take precedence over global skills with the same name.
references/ for detailed documentationskill my-skill-nameAfter creating a skill:
opencode run "test"
Then test loading:
Load the my-skill-name skill and explain what it does.