Agent Skills
Definiere wiederverwendbares Verhalten ueber SKILL.md
Agent Skills erlauben OpenCode, wiederverwendbare Anweisungen aus deinem Repo oder Home-Verzeichnis zu finden.
Sie werden bei Bedarf ueber das native skill-Tool geladen, wenn ein Agent sie wirklich braucht.
Place files
Erstelle pro Skill-Namen einen Ordner und lege dort eine SKILL.md ab.
OpenCode sucht in folgenden Pfaden:
- Project config:
.opencode/skills/<name>/SKILL.md - Global config:
~/.config/opencode/skills/<name>/SKILL.md - Project Claude-compatible:
.claude/skills/<name>/SKILL.md - Global Claude-compatible:
~/.claude/skills/<name>/SKILL.md - Project agent-compatible:
.agents/skills/<name>/SKILL.md - Global agent-compatible:
~/.agents/skills/<name>/SKILL.md
Understand discovery
Bei projektlokalen Pfaden laeuft OpenCode vom aktuellen Verzeichnis nach oben bis zum Git-Worktree.
Dabei werden passende skills/*/SKILL.md in .opencode/ sowie passende Dateien unter .claude/skills/*/SKILL.md und .agents/skills/*/SKILL.md geladen.
Globale Definitionen kommen zusaetzlich aus ~/.config/opencode/skills/*/SKILL.md, ~/.claude/skills/*/SKILL.md und ~/.agents/skills/*/SKILL.md.
Write frontmatter
Jede SKILL.md muss mit YAML-Frontmatter beginnen.
Nur diese Felder werden ausgewertet:
name(required)description(required)license(optional)compatibility(optional)metadata(optional, string-to-string map)
Unbekannte Frontmatter-Felder werden ignoriert.
Validate names
name muss:
- 1-64 Zeichen lang sein
- nur Kleinbuchstaben und Ziffern mit einzelnen Bindestrichen enthalten
- nicht mit
-beginnen oder enden - kein
--enthalten - zum Verzeichnisnamen passen, in dem
SKILL.mdliegt
Entsprechender Regex:
^[a-z0-9]+(-[a-z0-9]+)*$Follow length rules
description muss 1-1024 Zeichen lang sein.
Formuliere sie so konkret, dass Agenten den Skill eindeutig auswaehlen koennen.
Use an example
Erstelle .opencode/skills/git-release/SKILL.md zum Beispiel so:
---name: git-releasedescription: Create consistent releases and changelogslicense: MITcompatibility: opencodemetadata: 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.Recognize tool description
OpenCode listet verfuegbare Skills in der Beschreibung des skill-Tools.
Jeder Eintrag enthaelt Namen und Beschreibung:
<available_skills> <skill> <name>git-release</name> <description>Create consistent releases and changelogs</description> </skill></available_skills>Der Agent laedt einen Skill per Tool-Aufruf:
skill({ name: "git-release" })Configure permissions
Steuere in opencode.json per Muster, auf welche Skills Agenten zugreifen duerfen:
{ "permission": { "skill": { "*": "allow", "pr-review": "allow", "internal-*": "deny", "experimental-*": "ask" } }}| Berechtigung | Verhalten |
|---|---|
allow | Skill wird sofort geladen |
deny | Skill ist fuer Agenten versteckt |
ask | Vor dem Laden wird nach Freigabe gefragt |
Muster unterstuetzen Wildcards: internal-* passt z. B. auf internal-docs oder internal-tools.
Override per agent
Du kannst einzelnen Agenten andere Berechtigungen als die globalen Defaults geben.
Fuer benutzerdefinierte Agenten (im Frontmatter):
---permission: skill: "documents-*": "allow"---Fuer eingebaute Agenten (in opencode.json):
{ "agent": { "plan": { "permission": { "skill": { "internal-*": "allow" } } } }}Disable the skill tool
Deaktiviere Skills komplett fuer Agenten, die sie nicht nutzen sollen:
Fuer benutzerdefinierte Agenten:
---tools: skill: false---Fuer eingebaute Agenten:
{ "agent": { "plan": { "tools": { "skill": false } } }}Wenn deaktiviert, wird der Abschnitt <available_skills> komplett weggelassen.
Troubleshoot loading
Wenn ein Skill nicht auftaucht:
- Pruefe, ob
SKILL.mdexakt in Grossbuchstaben geschrieben ist - Pruefe, ob Frontmatter
nameunddescriptionenthaelt - Stelle sicher, dass Skill-Namen ueber alle Orte hinweg eindeutig sind
- Pruefe Berechtigungen - Skills mit
denysind fuer Agenten unsichtbar