# Skills

Источник: https://docs.kodik.ru/customization/skills

Skills — это директории с файлом `SKILL.md`, которые обучают агента выполнению специализированных задач. Kodik автоматически обнаруживает skills при запуске и предоставляет их агенту. Агент самостоятельно решает, когда skill релевантен, и применяет его. Пользователи могут явно вызывать skills через slash-команды.

## Формат файла SKILL.md

Каждый skill — это папка, содержащая файл `SKILL.md`. Метаданные skill задаются в YAML-фронтматтере:

```
---
name: my-skill
description: Что делает этот skill и когда его использовать.
user-invocable: true
disable-model-invocation: false
---

## Обзор

Опишите назначение skill. Пишите как инструкции для агента.

## Рекомендации

- Предпочитай X
- Всегда делай Y
- Избегай Z
```

### Поля фронтматтера

| Поле                       | Обязательно | Описание                                                                                                                                                        |
| -------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                     | Да          | Уникальный идентификатор skill (строчные буквы, дефисы вместо пробелов, максимум 64 символа). Используется для поиска skill и в имени slash-команды.            |
| `description`              | Да          | Описание того, что делает skill и когда его использовать. Агент использует описание для решения о релевантности (максимум 1024 символа).                        |
| `user-invocable`           | Нет         | Отображается ли skill как slash-команда в меню `/`. По умолчанию `true`. При `false` skill скрыт из меню, но агент всё равно может загрузить его автоматически. |
| `disable-model-invocation` | Нет         | Запрещает агенту загружать skill автоматически. По умолчанию `false`. При `true` skill доступен только через явную slash-команду.                               |

## Расположение skills

Kodik обнаруживает skills из следующих мест (перечислены в порядке убывания приоритета; при совпадении имён побеждает источник с более высоким приоритетом):

| Расположение                    | Область                  | Приоритет |
| ------------------------------- | ------------------------ | --------- |
| `.kodik/skills/` в репозитории  | Проект                   | 4         |
| `.agents/skills/` в репозитории | Проект (универсальный)   | 2         |
| `~/Documents/Kodik/Skills/`     | Пользователь (глобально) | 1         |
| `~/.agents/skills/`             | Пользователь (universal) | 0         |
| Skills из плагинов              | Плагин                   | 0         |

Skills из [плагинов](https://docs.kodik.ru/customization/plugins) имеют имена с префиксом в виде идентификатора плагина (`<plugin-id>:<name>`).

## Как агент применяет skills

При каждом запросе агенту предоставляется список доступных skills (имя + описание). Агент самостоятельно решает, какие skills релевантны, и загружает их содержимое. Если у skill установлен флаг `disable-model-invocation: true`, агент его не загружает автоматически — skill доступен только по явному вызову пользователя.

### Вызов skill пользователем

Если skill имеет `user-invocable: true` (значение по умолчанию), его можно вызвать, введя `/имя-skill` в поле ввода чата. Все доступные user-invocable skills отображаются в меню `/`. Подробнее — в [обзоре slash-команд](https://docs.kodik.ru/customization/slash-commands/overview).

## Создание skill

Чтобы создать skill через агента, введите `/create-skill` (или `/createskill`) в поле ввода чата. Команда запросит имя и описание, затем создаст папку с файлом `SKILL.md` в нужном расположении.

Структура skill минимальна — достаточно одной папки с `SKILL.md`:

```
.kodik/skills/
└── deploy-app/
    └── SKILL.md
```

Опционально можно добавить дополнительные файлы:

```
.kodik/skills/
└── deploy-app/
    ├── SKILL.md
    ├── scripts/
    │   └── deploy.sh
    └── references/
        └── REFERENCE.md
```

## Пример skill

```
---
name: webapp-testing
description: Руководство по тестированию веб-приложений с Playwright. Использовать при написании или запуске браузерных тестов.
---

# Тестирование веб-приложений с Playwright

## Создание тестов

1. Определите пользовательский сценарий
2. Создайте файл теста в директории `tests/`
3. Используйте локаторы Playwright (предпочитайте role-based)
4. Добавьте assertions

## Запуск тестов

\`\`\`bash
npx playwright test
npx playwright test --debug
\`\`\`
```

## Связанные темы

- [Обзор slash-команд](https://docs.kodik.ru/customization/slash-commands/overview)
- [Плагины](https://docs.kodik.ru/customization/plugins)
