Zum Inhalt springen

Agenten-Skills

Definieren Sie wiederverwendbares Verhalten uber SKILL.md-Definitionen

Agenten-Skills lassen OpenCode wiederverwendbare Anweisungen aus Ihrem Repo oder Home-Verzeichnis entdecken. Skills werden bei Bedarf uber das native skill-Tool geladen — Agenten sehen verfugbare Skills und konnen bei Bedarf den vollstandigen Inhalt laden.


Dateien platzieren

Erstellen Sie einen Ordner pro Skill-Namen und legen Sie eine SKILL.md darin ab. OpenCode durchsucht diese Speicherorte:

  • Projektkonfiguration: .opencode/skill/<name>/SKILL.md
  • Globale Konfiguration: ~/.config/opencode/skill/<name>/SKILL.md
  • Projekt-Claude-kompatibel: .claude/skills/<name>/SKILL.md
  • Global Claude-kompatibel: ~/.claude/skills/<name>/SKILL.md

Entdeckung verstehen

Für projektspezifische Pfade geht OpenCode vom aktuellen Arbeitsverzeichnis nach oben bis zum git worktree. Es ladt alle ubereinstimmenden skill/*/SKILL.md in .opencode/ und alle ubereinstimmenden .claude/skills/*/SKILL.md auf dem Weg.

Globale Definitionen werden auch von ~/.config/opencode/skill/*/SKILL.md und ~/.claude/skills/*/SKILL.md geladen.


Frontmatter schreiben

Jede SKILL.md muss mit YAML-Frontmatter beginnen. Nur diese Felder werden erkannt:

  • name (erforderlich)
  • description (erforderlich)
  • license (optional)
  • compatibility (optional)
  • metadata (optional, String-zu-String-Map)

Unbekannte Frontmatter-Felder werden ignoriert.


Namen validieren

name muss:

  1. 1–64 Zeichen lang sein
  • Kleinbuchstaben alphanumerisch mit einfachen Bindestrich-Trennzeichen sein
  • Nicht mit - beginnen oder enden
  • Keine aufeinanderfolgenden -- enthalten
  • Mit dem Verzeichnisnamen ubereinstimmen, der SKILL.md enthalt

Aquivalente Regex:

^[a-z0-9]+(-[a-z0-9]+)*$

Langenregeln befolgen

description muss 1-1024 Zeichen lang sein. Halten Sie sie spezifisch genug, damit der Agent korrekt wahlen kann.


Ein Beispiel verwenden

Erstellen Sie .opencode/skill/git-release/SKILL.md wie folgt:

---
name: git-release
description: Erstellen Sie konsistente Releases und Changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## Was ich tue
- Veroffentlichungsnotizen aus zusammengefuhrten PRs entwerfen
- Versions-Erhohung vorschlagen
- Ein kopierbares `gh release create`-Kommando bereitstellen
## Wann man mich verwendet
Verwenden Sie dies, wenn Sie ein getaggtes Release vorbereiten.
Stellen Sie Klarungsfragen, wenn das Ziel-Versionierungsschema unklar ist.

Tool-Beschreibung erkennen

OpenCode listet verfugbare Skills in der skill-Tool-Beschreibung auf. Jeder Eintrag enthalt den Skill-Namen und die Beschreibung:

<available_skills>
<skill>
<name>git-release</name>
<description>Erstellen Sie konsistente Releases und Changelogs</description>
</skill>
</available_skills>

Der Agent ladt einen Skill durch Aufrufen des Tools:

skill({ name: "git-release" })

Berechtigungen konfigurieren

Steuern Sie, auf welche Skills Agenten zugreifen konnen, mit musterbasierten Berechtigungen in opencode.json:

{
"permission": {
"skill": {
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask",
"*": "allow"
}
}
}
PermissionVerhalten
allowSkill wird sofort geladen
denySkill vor Agenten versteckt, Zugriff abgelehnt
askBenutzer vor dem Laden zur Genehmigung aufgefordert

Muster unterstutzen Platzhalter: internal-* passt auf internal-docs, internal-tools, etc.


Pro Agent auBer Kraft setzen

Geben Sie bestimmten Agenten andere Berechtigungen als die globalen Standardwerte.

Fur benutzerdefinierte Agenten (im Agent-Frontmatter):

---
permission:
skill:
"documents-*": "allow"
---

Fur integrierte Agenten (in opencode.json):

{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}

Skill-Tool deaktivieren

Deaktivieren Sie Skills komplett fur Agenten, die sie nicht verwenden sollten:

Fur benutzerdefinierte Agenten:

---
tools:
skill: false
---

Fur integrierte Agenten:

{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}

Wenn deaktiviert, wird der Abschnitt <available_skills> vollstandig weggelassen.


Laden fehlersuchen

Wenn ein Skill nicht angezeigt wird:

  1. Uberprufen Sie, dass SKILL.md in GroBbuchstaben geschrieben ist
  2. Prufen Sie, ob Frontmatter name und description enthalt
  3. Stellen Sie sicher, dass Skill-Namen uber alle Speicherorte hinweg eindeutig sind
  4. Prufen Sie die Berechtigungen — Skills mit deny sind vor Agenten verborgen