* feat(memory): add OPENAI_EMBEDDING_BATCH_DELAY support * docs(memory): update SKILL.md for progressive enhancement and auto-setup * docs(memory): update AGENTS.md tool usage policy * docs(memory): fix stale snake_case tool references in skills, agents, tools * docs(handoff): add handoff + ADR for reindex-skill-update * docs(handoff): set PR number * refactor(memory): extract _embed_in_batches to satisfy xenon rank A --------- Co-authored-by: opencode-agent <agent@opencode.local>
96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
---
|
||
name: add-skill
|
||
description: Use when creating a new opencode skill. Covers file location, frontmatter format, commit, push, and post-instructions for restart. Also when user says "добавь скилл", "создай скилл", "новый навык".
|
||
---
|
||
|
||
# Add Skill
|
||
|
||
Процесс создания нового скилла в opencode.
|
||
|
||
## 1. Куда создавать
|
||
|
||
```
|
||
.opencode/skills/<skill-name>/SKILL.md
|
||
```
|
||
|
||
В корне текущего репо (`<repo-root>` = `git rev-parse --show-toplevel`),
|
||
в `.opencode/skills/`. НЕ в `~/.config/opencode/` — эта папка синхронизируется из репо.
|
||
|
||
## 2. Формат SKILL.md
|
||
|
||
```markdown
|
||
---
|
||
name: <skill-name>
|
||
description: <когда загружать. Триггеры на русском и английском. Например: Use when ... Also when user says "...">
|
||
---
|
||
|
||
# Skill Title
|
||
|
||
Содержание скилла.
|
||
```
|
||
|
||
### Правила
|
||
|
||
- `name` — kebab-case, совпадает с именем директории
|
||
- `description` — содержит конкретные триггеры (когда агент должен загрузить этот скилл)
|
||
- Язык тела — русский с английскими техническими терминами (как в существующих скиллах)
|
||
- Один скилл — одна директория с одним `SKILL.md`
|
||
|
||
### Примеры существующих скиллов
|
||
|
||
```
|
||
.opencode/skills/
|
||
├── add-skill/SKILL.md ← этот скилл
|
||
├── branch/SKILL.md
|
||
├── code-standards/SKILL.md
|
||
├── configure-opencode/SKILL.md
|
||
├── get-project-map/SKILL.md
|
||
├── issue/SKILL.md
|
||
├── memory/SKILL.md
|
||
├── python-development/SKILL.md
|
||
├── release/SKILL.md
|
||
├── repo-init/SKILL.md
|
||
├── run-pipeline/SKILL.md
|
||
├── run-tests/SKILL.md
|
||
├── spec/SKILL.md
|
||
└── tunnel/SKILL.md
|
||
```
|
||
|
||
## 3. Скиллы авто-дискаверятся
|
||
|
||
Opencode сканирует все под-директории `.opencode/skills/` и подхватывает любой `SKILL.md`. Регистрировать ничего не нужно.
|
||
|
||
Список скиллов загружается **при старте opencode**. Новый скилл станет доступен только после рестарта.
|
||
|
||
## 4. Commit и Push (для implementing agent)
|
||
|
||
Implementing agent (subagent, которому делегировано создание) после создания файла — сразу коммит и пуш по правилам `commit` tool (формат валидируется tool'ом):
|
||
|
||
```bash
|
||
cd "$(git rev-parse --show-toplevel)"
|
||
git add .opencode/skills/<skill-name>/SKILL.md
|
||
git status # проверь staged set — только SKILL.md, без лишнего
|
||
```
|
||
|
||
> `commit` tool НЕ делает `git add` — коммитит только уже staged файлы. Если
|
||
> в индексе лишнее (например `memory-save` stage'нул всё через `git add -A`)
|
||
> — не коммить: сначала `git restore --staged <file>` или не stage'и его
|
||
> изначально. Используй `git add <конкретные-пути>`, НЕ `git add -A`.
|
||
|
||
Затем через `commit` tool (НЕ raw `git commit` — заблокирован deny):
|
||
|
||
```
|
||
commit({ message: "feat(skills): add <skill-name> skill for <purpose>" })
|
||
```
|
||
|
||
Затем `git push`.
|
||
|
||
## 5. Инструкция пользователю
|
||
|
||
После push сообщить пользователю:
|
||
|
||
> Скилл создан и запушен. Чтобы он заработал:
|
||
> 1. На хосте: `git pull` в репозитории opencode
|
||
> 2. Рестарт opencode
|
||
>
|
||
> После рестарта скилл появится в `available_skills` и будет загружаться по триггерам из `description`.
|