mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-24 23:04:55 +00:00
223 lines
4.7 KiB
Plaintext
223 lines
4.7 KiB
Plaintext
---
|
|
title: "Skills agenata"
|
|
description: "Definisite ponasanje koje se moze ponovo koristiti"
|
|
---
|
|
|
|
Agent skills omogucavaju OpenCode da pronade uputstva koja se mogu ponovo koristiti iz repozitorija ili home direktorija.
|
|
Skills se ucitavaju po potrebi kroz ugradeni `skill` alat - agenti vide dostupne skills i ucitavaju puni sadrzaj kad zatreba.
|
|
|
|
---
|
|
|
|
## Postavite datoteke
|
|
|
|
Kreirajte jedan folder po nazivu skill-a i stavite `SKILL.md` unutar njega.
|
|
OpenCode pretrazuje ove lokacije:
|
|
|
|
- Konfiguracija projekta: `.opencode/skills/<name>/SKILL.md`
|
|
- Globalna konfiguracija: `~/.config/opencode/skills/<name>/SKILL.md`
|
|
- Claude kompatibilno u projektu: `.claude/skills/<name>/SKILL.md`
|
|
- Globalno Claude kompatibilno: `~/.claude/skills/<name>/SKILL.md`
|
|
- Agent kompatibilno u projektu: `.agents/skills/<name>/SKILL.md`
|
|
- Globalno agent kompatibilno: `~/.agents/skills/<name>/SKILL.md`
|
|
|
|
---
|
|
|
|
## Razumijte otkrivanje
|
|
|
|
Za projektne lokalne putanje, OpenCode ide prema gore od trenutnog radnog direktorija dok ne dode do git worktree-ja.
|
|
Usput ucitava sve odgovarajuce `skills/*/SKILL.md` u `.opencode/` i odgovarajuce `.claude/skills/*/SKILL.md` ili `.agents/skills/*/SKILL.md`.
|
|
|
|
Globalne definicije se takoder ucitavaju iz `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` i `~/.agents/skills/*/SKILL.md`.
|
|
|
|
---
|
|
|
|
## Napisite frontmatter
|
|
|
|
Svaki `SKILL.md` mora poceti YAML frontmatter-om.
|
|
Prepoznaju se samo ova polja:
|
|
|
|
- `name` (obavezno)
|
|
- `description` (obavezno)
|
|
- `license` (opcionalno)
|
|
- `compatibility` (opcionalno)
|
|
- `metadata` (opcionalno, mapa string->string)
|
|
|
|
Nepoznata frontmatter polja se ignorisu.
|
|
|
|
---
|
|
|
|
## Validirajte nazive
|
|
|
|
`name` mora:
|
|
|
|
- Imati 1-64 karaktera
|
|
- Biti malim slovima i brojevima sa jednim crticama kao razdvajacima
|
|
- Ne pocinjati ni zavrsavati sa `-`
|
|
- Ne sadrzavati uzastopno `--`
|
|
- Odgovarati nazivu direktorija koji sadrzi `SKILL.md`
|
|
|
|
Ekvivalentni regex:
|
|
|
|
```text
|
|
^[a-z0-9]+(-[a-z0-9]+)*$
|
|
```
|
|
|
|
---
|
|
|
|
## Pratite pravila duzine
|
|
|
|
`description` mora imati 1-1024 karaktera.
|
|
Neka bude dovoljno precizan da agent moze pravilno odabrati.
|
|
|
|
---
|
|
|
|
## Koristite primjer
|
|
|
|
Kreirajte `.opencode/skills/git-release/SKILL.md` ovako:
|
|
|
|
```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.
|
|
```
|
|
|
|
---
|
|
|
|
## Prepoznajte opis alata
|
|
|
|
OpenCode navodi dostupne skills u opisu `skill` alata.
|
|
Svaki unos sadrzi naziv i opis skill-a:
|
|
|
|
```xml
|
|
<available_skills>
|
|
<skill>
|
|
<name>git-release</name>
|
|
<description>Create consistent releases and changelogs</description>
|
|
</skill>
|
|
</available_skills>
|
|
```
|
|
|
|
Agent ucitava skill pozivom alata:
|
|
|
|
```
|
|
skill({ name: "git-release" })
|
|
```
|
|
|
|
---
|
|
|
|
## Konfigurisite dozvole
|
|
|
|
Kontrolisite kojim skills agenti mogu pristupiti pomocu dozvola baziranih na obrascima u `opencode.json`:
|
|
|
|
```json
|
|
{
|
|
"permission": {
|
|
"skill": {
|
|
"*": "allow",
|
|
"pr-review": "allow",
|
|
"internal-*": "deny",
|
|
"experimental-*": "ask"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
| Dozvola | Ponasanje |
|
|
| ------- | ------------------------------------------- |
|
|
| `allow` | Skill se ucitava odmah |
|
|
| `deny` | Skill je skriven od agenta, pristup odbijen |
|
|
| `ask` | Korisnik mora odobriti prije ucitavanja |
|
|
|
|
Obrasci podrzavaju wildcard znakove: `internal-*` poklapa `internal-docs`, `internal-tools` itd.
|
|
|
|
---
|
|
|
|
## Nadjacajte po agentu
|
|
|
|
Dajte odredenim agentima drugacije dozvole od globalnih defaulta.
|
|
|
|
**Za prilagodene agente** (u frontmatter-u agenta):
|
|
|
|
```yaml
|
|
---
|
|
permission:
|
|
skill:
|
|
"documents-*": "allow"
|
|
---
|
|
```
|
|
|
|
**Za ugradene agente** (u `opencode.json`):
|
|
|
|
```json
|
|
{
|
|
"agent": {
|
|
"plan": {
|
|
"permission": {
|
|
"skill": {
|
|
"internal-*": "allow"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Iskljucite skill alat
|
|
|
|
Potpuno iskljucite skills za agente koji ih ne bi trebali koristiti:
|
|
|
|
**Za prilagodene agente**:
|
|
|
|
```yaml
|
|
---
|
|
tools:
|
|
skill: false
|
|
---
|
|
```
|
|
|
|
**Za ugradene agente**:
|
|
|
|
```json
|
|
{
|
|
"agent": {
|
|
"plan": {
|
|
"tools": {
|
|
"skill": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Kada je iskljuceno, sekcija `<available_skills>` se potpuno izostavlja.
|
|
|
|
---
|
|
|
|
## Rjesavanje problema s ucitavanjem
|
|
|
|
Ako se skill ne pojavi:
|
|
|
|
1. Provjerite da je naziv `SKILL.md` napisan velikim slovima
|
|
2. Provjerite da frontmatter sadrzi `name` i `description`
|
|
3. Potvrdite da su nazivi skill-ova jedinstveni na svim lokacijama
|
|
4. Provjerite dozvole - skills sa `deny` su skriveni od agenata
|