Files
opencode/packages/web/src/content/docs/bs/skills.mdx
2026-02-10 07:11:19 -06:00

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