File size: 7,324 Bytes
89a2873 | 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 223 | ---
title: Навыки агента
description: Определите повторно используемое поведение с помощью определений SKILL.md
---
Навыки агента позволяют opencode обнаруживать многократно используемые инструкции из вашего репозитория или домашнего каталога.
Навыки загружаются по требованию с помощью встроенного инструмента `skill`: агенты видят доступные навыки и при необходимости могут загрузить весь контент.
---
## Разместить файлы
Создайте одну папку для каждого имени навыка и поместите в нее `SKILL.md`.
opencode выполняет поиск в следующих местах:
- Конфигурация проекта: `.opencode/skills/<name>/SKILL.md`
- Глобальная конфигурация: `~/.config/opencode/skills/<name>/SKILL.md`.
- Совместимость с Project Claude: `.claude/skills/<name>/SKILL.md`
- Глобальная совместимость с Claude: `~/.claude/skills/<name>/SKILL.md`
- Совместимость с агентом проекта: `.agents/skills/<name>/SKILL.md`
- Совместимость с глобальным агентом: `~/.agents/skills/<name>/SKILL.md`
---
## Понимание обнаружения
Для локальных путей проекта opencode переходит из вашего текущего рабочего каталога, пока не достигнет рабочего дерева git.
Он загружает все соответствующие `skills/*/SKILL.md` в `.opencode/` и все соответствующие `.claude/skills/*/SKILL.md` или `.agents/skills/*/SKILL.md` по пути.
Глобальные определения также загружаются из `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` и `~/.agents/skills/*/SKILL.md`.
---
## Напишите заголовок
Каждый `SKILL.md` должен начинаться с заголовка YAML.
Распознаются только эти поля:
- `name` (required)
- `description` (required)
- `license` (необязательно)
- `compatibility` (необязательно)
- `metadata` (необязательно, преобразование строк в строки)
Неизвестные поля заголовка игнорируются.
---
## Проверка имен
`name` должен:
- Длина от 1 до 64 символов.
- Используйте строчные буквы и цифры с одинарным дефисом.
- Не начинаться и не заканчиваться на `-`.
- Не содержать последовательных `--`
- Сопоставьте имя каталога, содержащее `SKILL.md`.
Эквивалентное регулярное выражение:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## Соблюдайте правила длины
`description` должно содержать от 1 до 1024 символов.
Держите его достаточно конкретным, чтобы агент мог сделать правильный выбор.
---
## Используйте пример
Создайте `.opencode/skills/git-release/SKILL.md` следующим образом:
```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.
```
---
## Распознавание описания инструмента
opencode перечисляет доступные навыки в описании инструмента `skill`.
Каждая запись включает название и описание навыка:
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
Агент загружает навык, вызывая инструмент:
```
skill({ name: "git-release" })
```
---
## Настройка разрешений
Контролируйте, к каким навыкам агенты могут получить доступ, используя разрешения на основе шаблонов в `opencode.json`:
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
| Разрешение | Поведение |
| ---------- | ----------------------------------------- |
| `allow` | Skill loads immediately |
| `deny` | Skill hidden from agent, access rejected |
| `ask` | User prompted for approval before loading |
Шаблоны поддерживают подстановочные знаки: `internal-*` соответствует `internal-docs`, `internal-tools` и т. д.
---
## Переопределить для каждого агента
Предоставьте конкретным агентам разрешения, отличные от глобальных настроек по умолчанию.
**Для пользовательских агентов** (в заголовке агента):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**Для встроенных агентов** (в формате `opencode.json`):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## Отключить инструмент навыков
Полностью отключить навыки для агентов, которым не следует их использовать:
**Для индивидуальных агентов**:
```yaml
---
tools:
skill: false
---
```
**Для встроенных агентов**:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
Если этот параметр отключен, раздел `<available_skills>` полностью опускается.
---
## Устранение неполадок с загрузкой
Если навык не отображается:
1. Убедитесь, что `SKILL.md` написано заглавными буквами.
2. Убедитесь, что заголовок включает `name` и `description`.
3. Убедитесь, что названия навыков уникальны во всех локациях.
4. Проверьте разрешения — навыки с `deny` скрыты от агентов.
|