summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/bs/skills.mdx
blob: 655dc9d107bddfc747a8d27490f0005d835d56d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
---
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