223 lines
4.8 KiB
Plaintext
223 lines
4.8 KiB
Plaintext
---
|
||
title: "Agentferdigheter"
|
||
description: "Definer gjenbrukbar atferd via SKILL.md-definisjoner"
|
||
---
|
||
|
||
Agentferdigheter lar OpenCode oppdage gjenbrukbare instruksjoner fra repo- eller hjemmekatalogen din.
|
||
Ferdigheter lastes inn på forespørsel via det opprinnelige `skill`-verktøyet – agenter ser tilgjengelige ferdigheter og kan laste inn hele innholdet når det er nødvendig.
|
||
|
||
---
|
||
|
||
## Plasser filer
|
||
|
||
Opprett én mappe per ferdighetsnavn og legg inn en `SKILL.md` i den.
|
||
OpenCode søker etter disse stedene:
|
||
|
||
- Prosjektkonfigurasjon: `.opencode/skills/<name>/SKILL.md`
|
||
- Global konfigurasjon: `~/.config/opencode/skills/<name>/SKILL.md`
|
||
- Prosjekt Claude-kompatibel: `.claude/skills/<name>/SKILL.md`
|
||
- Global Claude-kompatibel: `~/.claude/skills/<name>/SKILL.md`
|
||
- Prosjektagent-kompatibel: `.agents/skills/<name>/SKILL.md`
|
||
- Global agent-kompatibel: `~/.agents/skills/<name>/SKILL.md`
|
||
|
||
---
|
||
|
||
## Forstå oppdagelsen
|
||
|
||
For prosjektlokale stier går OpenCode opp fra din nåværende arbeidskatalog til den når git-arbeidstreet.
|
||
Den laster alle matchende `skills/*/SKILL.md` i `.opencode/` og alle matchende `.claude/skills/*/SKILL.md` eller `.agents/skills/*/SKILL.md` underveis.
|
||
|
||
Globale definisjoner lastes også inn fra `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` og `~/.agents/skills/*/SKILL.md`.
|
||
|
||
---
|
||
|
||
## Skriv frontmaterie
|
||
|
||
Hver `SKILL.md` må starte med YAML frontmatter.
|
||
Bare disse feltene gjenkjennes:
|
||
|
||
- `name` (påkrevd)
|
||
- `description` (påkrevd)
|
||
- `license` (valgfritt)
|
||
- `compatibility` (valgfritt)
|
||
- `metadata` (valgfritt, streng-til-streng kart)
|
||
|
||
Ukjente frontmatter-felter ignoreres.
|
||
|
||
---
|
||
|
||
## Bekreft navn
|
||
|
||
`name` må:
|
||
|
||
- Bestå av 1–64 tegn
|
||
- Vær alfanumerisk med små bokstaver med skilletegn med enkelt bindestrek
|
||
- Ikke begynne eller slutte med `-`
|
||
- Ikke inneholde påfølgende `--`
|
||
- Match katalognavnet som inneholder `SKILL.md`
|
||
|
||
Ekvivalent regulært uttrykk:
|
||
|
||
```text
|
||
^[a-z0-9]+(-[a-z0-9]+)*$
|
||
```
|
||
|
||
---
|
||
|
||
## Følg lengdereglene
|
||
|
||
`description` må bestå av 1-1024 tegn.
|
||
Hold det spesifikt nok til at agenten kan velge riktig.
|
||
|
||
---
|
||
|
||
## Bruk et eksempel
|
||
|
||
Lag `.opencode/skills/git-release/SKILL.md` slik:
|
||
|
||
```markdown
|
||
---
|
||
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.
|
||
```
|
||
|
||
---
|
||
|
||
## Gjenkjenne verktøybeskrivelsen
|
||
|
||
OpenCode viser tilgjengelige ferdigheter i `skill` verktøybeskrivelsen.
|
||
Hver oppføring inneholder ferdighetsnavnet og beskrivelsen:
|
||
|
||
```xml
|
||
<available_skills>
|
||
<skill>
|
||
<name>git-release</name>
|
||
<description>Create consistent releases and changelogs</description>
|
||
</skill>
|
||
</available_skills>
|
||
```
|
||
|
||
Agenten laster inn en ferdighet ved å kalle verktøyet:
|
||
|
||
```
|
||
skill({ name: "git-release" })
|
||
```
|
||
|
||
---
|
||
|
||
## Konfigurer tillatelser
|
||
|
||
Kontroller hvilke ferdigheter agenter har tilgang til ved å bruke mønsterbaserte tillatelser i `opencode.json`:
|
||
|
||
```json
|
||
{
|
||
"permission": {
|
||
"skill": {
|
||
"*": "allow",
|
||
"pr-review": "allow",
|
||
"internal-*": "deny",
|
||
"experimental-*": "ask"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
| Tillatelse | Atferd |
|
||
| ---------- | ------------------------------------------ |
|
||
| `allow` | Ferdigheter lastes umiddelbart |
|
||
| `deny` | Ferdighet skjult for agent, tilgang avvist |
|
||
| `ask` | Bruker bedt om godkjenning før lasting |
|
||
|
||
Mønstre støtter jokertegn: `internal-*` samsvarer med `internal-docs`, `internal-tools` osv.
|
||
|
||
---
|
||
|
||
## Overstyring per agent
|
||
|
||
Gi spesifikke agenter andre tillatelser enn de globale standardinnstillingene.
|
||
|
||
**For egendefinerte agenter** (i agent frontmatter):
|
||
|
||
```yaml
|
||
---
|
||
permission:
|
||
skill:
|
||
"documents-*": "allow"
|
||
---
|
||
```
|
||
|
||
**For innebygde agenter** (i `opencode.json`):
|
||
|
||
```json
|
||
{
|
||
"agent": {
|
||
"plan": {
|
||
"permission": {
|
||
"skill": {
|
||
"internal-*": "allow"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Deaktiver ferdighetsverktøyet
|
||
|
||
Deaktiver ferdigheter fullstendig for agenter som ikke bør bruke dem:
|
||
|
||
**For egendefinerte agenter**:
|
||
|
||
```yaml
|
||
---
|
||
tools:
|
||
skill: false
|
||
---
|
||
```
|
||
|
||
**For innebygde agenter**:
|
||
|
||
```json
|
||
{
|
||
"agent": {
|
||
"plan": {
|
||
"tools": {
|
||
"skill": false
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Når den er deaktivert, blir `<available_skills>`-delen utelatt helt.
|
||
|
||
---
|
||
|
||
## Feilsøk lasting
|
||
|
||
Hvis en ferdighet ikke vises:
|
||
|
||
1. Kontroller at `SKILL.md` er stavet med store bokstaver
|
||
2. Sjekk at frontmatter inkluderer `name` og `description`
|
||
3. Sørg for at ferdighetsnavnene er unike på alle steder
|
||
4. Sjekk tillatelser – ferdigheter med `deny` er skjult for agenter
|