Skills sind wiederverwendbare Anweisungen, die OpenCode aus deinem Repo oder Home-Verzeichnis entdecken kann. Sie werden on-demand ueber das native skill Tool geladen -- Agents sehen verfuegbare Skills und koennen den Inhalt bei Bedarf laden.
Offizielle Docs: opencode.ai/docs/skills
Erstelle einen Ordner pro Skill-Name mit einer SKILL.md darin:
.opencode/skills/
git-release/
SKILL.md
pr-review/
SKILL.md
migration/
SKILL.md
| Pfad | Typ |
|---|---|
.opencode/skills/<name>/SKILL.md |
Projekt (OpenCode) |
~/.config/opencode/skills/<name>/SKILL.md |
Global (OpenCode) |
.claude/skills/<name>/SKILL.md |
Projekt (Claude-kompatibel) |
~/.claude/skills/<name>/SKILL.md |
Global (Claude-kompatibel) |
.agents/skills/<name>/SKILL.md |
Projekt (Agent-kompatibel) |
~/.agents/skills/<name>/SKILL.md |
Global (Agent-kompatibel) |
Jede SKILL.md beginnt mit YAML-Frontmatter:
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.| Feld | Beschreibung | Pflicht |
|---|---|---|
name |
Skill-Name (1-64 Zeichen, lowercase) | Ja |
description |
Beschreibung (1-1024 Zeichen) | Ja |
license |
Lizenz | Nein |
compatibility |
Kompatibilitaet | Nein |
metadata |
Key-Value Map (Strings) | Nein |
- 1-64 Zeichen
- Nur lowercase alphanumerisch mit einzelnen Bindestrichen
- Darf nicht mit
-beginnen oder enden - Keine aufeinanderfolgenden
-- - Muss mit dem Verzeichnisnamen uebereinstimmen
Regex: ^[a-z0-9]+(-[a-z0-9]+)*$
OpenCode listet verfuegbare Skills in der skill Tool-Beschreibung:
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>Der Agent laedt einen Skill per:
skill({ name: "git-release" })
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}| Permission | Verhalten |
|---|---|
allow |
Skill laedt sofort |
deny |
Skill ist versteckt, Zugriff abgelehnt |
ask |
User wird vor Laden gefragt |
---
permission:
skill:
"documents-*": "allow"
---{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}Wenn ein Skill nicht auftaucht:
- Pruefe ob
SKILL.mdkorrekt grossgeschrieben ist - Pruefe ob Frontmatter
nameunddescriptionenthaelt - Stelle sicher, dass Skill-Namen ueber alle Pfade eindeutig sind
- Pruefe Permissions -- Skills mit
denysind versteckt
- Beschreibungen praezise formulieren -- Der Agent entscheidet anhand der Description, ob er den Skill laedt
- "When to use me" Section -- Hilft dem Agent bei der Entscheidung
- Modulare Skills -- Jeder Skill eine klare Aufgabe
- Globale Skills fuer persoenliche Workflows in
~/.config/opencode/skills/ - Projekt-Skills fuer Team-Workflows in
.opencode/skills/(ins Git committen)
Fertige Skill-Definitionen findest du in /templates/skills/.