Umiejętności Agenta
Definiuj powtarzalne zachowania za pomocą definicji SKILL.md
Umiejętności agenta pozwalają opencode odkryć instrukcje wielokrotnego użytku z repozytorium lub katalogu domowego.
Umiejętności są ładowane na żądanie za pośrednictwem natywnego narzędzia skill — agenci widzą dostępne umiejętności i w razie potrzeby mogą załadować pełną zawartość.
Lokalizacja plików
Utwórz jeden folder na nazwę umiejętności i umieść w nim SKILL.md.
opencode przeszukuje te lokalizacje:
- 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
Zrozumienie wykrywania
W przypadku ścieżek lokalnych projektu opencode przechodzi od bieżącego katalogu roboczego, aż dotrze do drzewa roboczego git.
Ładuje po drodze dowolne pasujące skills/*/SKILL.md w .opencode/ i dowolne pasujące .claude/skills/*/SKILL.md lub .agents/skills/*/SKILL.md.
Ładowane są także definicje globalne z ~/.config/opencode/skills/*/SKILL.md, ~/.claude/skills/*/SKILL.md i ~/.agents/skills/*/SKILL.md.
Tworzenie frontmatter
Każdy SKILL.md musi zaczynać się od treści YAML.
Rozpoznawane są tylko te pola:
name(wymagane)description(wymagane)license(opcjonalnie)compatibility(opcjonalnie)metadata(opcjonalnie, mapa string-to-string)
Nieznane pola frontmatter są ignorowane.
Walidacja nazw
name musi:
- Mieć od 1 do 64 znaków
- Należy używać małych liter alfanumerycznych i oddzielać je pojedynczym łącznikiem
- Nie zaczyna się ani nie kończy na
- - Nie może zawierać następujących po sobie
-- - Dopasuj nazwę katalogu zawierającą
SKILL.md
Odpowiednik wyrażenia regularnego:
^[a-z0-9]+(-[a-z0-9]+)*$Zasady dotyczące długości
description musi mieć od 1 do 1024 znaków.
Zadbaj o to, aby agent mógł dokonać prawidłowego wyboru.
Przykład użycia
Utwórz .opencode/skills/git-release/SKILL.md w ten sposób:
---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.Opis narzędzia
opencode wymienia dostępne umiejętności w opisie narzędzia skill.
Każdy wpis zawiera nazwę i opis umiejętności:
<available_skills> <skill> <name>git-release</name> <description>Create consistent releases and changelogs</description> </skill></available_skills>Agent ładuje umiejętność wywołując narzędzie:
skill({ name: "git-release" })Konfiguracja uprawnień
Kontroluj, do których umiejętności agenci mogą uzyskać dostęp, używając uprawnień opartych na wzorcach w opencode.json:
{ "permission": { "skill": { "*": "allow", "pr-review": "allow", "internal-*": "deny", "experimental-*": "ask" } }}| Permission | Behavior |
|---|---|
allow | Skill loads immediately |
deny | Skill hidden from agent, access rejected |
ask | Użytkownik proszony o zatwierdzenie przed załadowaniem |
Wzorce obsługują symbole wieloznaczne: internal-* odpowiada internal-docs, internal-tools itd.
Nadpisywanie dla agenta
Nadaj konkretnym agentom inne uprawnienia niż globalne ustawienia domyślne.
Dla agentów niestandardowych (w temacie agentów):
---permission: skill: "documents-*": "allow"---Dla agentów wbudowanych (w opencode.json):
{ "agent": { "plan": { "permission": { "skill": { "internal-*": "allow" } } } }}Wyłączanie narzędzia umiejętności
Całkowicie wyłącz umiejętności agentów, którzy nie powinni ich używać:
Dla agentów niestandardowych (w temacie agentów):
---tools: skill: false---W przypadku agentów wbudowanych:
{ "agent": { "plan": { "tools": { "skill": false } } }}Jeśli opcja jest wyłączona, sekcja <available_skills> jest całkowicie pomijana.
Rozwiązywanie problemów z ładowaniem
Jeśli umiejętność nie pojawi się:
- Sprawdź, czy
SKILL.mdjest napisane wielkimi literami - Sprawdź, czy frontmatter zawiera
nameidescription - Upewnij się, że nazwy umiejętności są unikalne we wszystkich lokalizacjach
- Sprawdź uprawnienia — umiejętności z
denysą ukryte przed agentami