---
title: Vještine 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`.

---

## Pisanje frontmatter-a

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]+)*$
```

---

## Pravila dužine

`description` mora imati 1-1024 karaktera.
Neka bude dovoljno precizan da agent moze pravilno odabrati.

---

## 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.
```

---

## 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" })
```

---

## Konfiguracija dozvola

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.

---

## Nadjačavanje 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"
        }
      }
    }
  }
}
```

---

## Isključivanje skill alata

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.

---

## Rješavanje problema s učitavanjem

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
