Схема файла SKILL.md
Эта страница описывает формат Skills, который читает текущая версия Veai. Общие сведения и создание навыка через интерфейс собраны на странице «Skills (Навыки)».
Где Veai ищет навыки
Каждый навык находится в отдельном каталоге:
<корень конфигурации>/skills/<имя-навыка>/SKILL.md
Основные корни конфигурации:
<корень проекта>/.veaiдля проектных навыков;~/.veaiдля глобальных навыков, доступных во всех проектах;- распознанные dot-каталоги других инструментов, например
.claude, если в них есть каталогskills.
Veai читает только один уровень каталогов внутри skills. Файл skills/team/refactor/SKILL.md не считается навыком, потому что между skills и SKILL.md находится два каталога.
Минимальный файл
SKILL.md состоит из YAML front matter и Markdown-инструкции:
---
name: refactor
description: Проверяет план рефакторинга и выполняет его небольшими шагами
---
Сначала изучи объявления и использования изменяемых символов.
После каждого шага запускай подходящую проверку и просматривай diff.
Обязательные поля:
| Поле | Тип | Ограничения |
|---|---|---|
name | строка | От 1 до 50 символов; допустимы латинские буквы, цифры, _ и -: [A-Za-z0-9_-]{1,50} |
description | строка | Кратко объясняет агенту, для каких задач нужен навык |
name нужен для ручного запуска через /имя-навыка и для разрешения коллизий. Выберите короткое стабильное имя, если навык будут вызывать вручную или на него будут ссылаться из рабочих инструкций. После создания файла введите / в чате и убедитесь, что навык находится по этому имени.
description агент читает при автоматическом выборе навыка. Опишите в нём не только действие, но и ситуацию запуска, например: «Проверяет миграции базы данных перед merge». После сохранения задайте агенту подходящую задачу и проверьте, что он предлагает или вызывает нужный навык. Общие способы создания и запуска навыков описаны на странице «Skills (Навыки)».
Поле schemaVersion необязательно. Если его нет, Veai использует версию v0.1.
schemaVersion: v0.1
name: refactor
description: Проверяет и выполняет рефакторинг
Распознаваемые поля
Парсер также знает следующие поля. Не рассчитывайте на одно лишь наличие поля: часть из них нужна для совместимости с форматами других инструментов и пока не меняет поведение Veai.
| Поле | Формат или состояние в Veai |
|---|---|
schemaVersion | Строка; необязательно, значение по умолчанию v0.1 |
allowed-tools | Строка или список; читается, но сейчас не ограничивает инструменты навыка |
argument-hint | Принимается для совместимости, поведение игнорируется |
disable-model-invocation | Принимается для совместимости, поведение игнорируется |
user-invocable | Принимается для совместимости, поведение игнорируется |
model | Принимается для совместимости, поведение игнорируется |
context | Принимается для совместимости, поведение игнорируется |
hooks | Принимается для совместимости, поведение игнорируется |
tags | Принимается для совместимости, поведение игнорируется |
content | Распознаётся парсером, но поведение поля игнорируется; инструкцию пишите в Markdown-теле файла |
agent | Расширение Veai: режим агента для ручного запуска навыка из каталога или через /имя-навыка |
used-by | Расширение Veai: список режимов, которым разрешён автоматический вызов навыка |
Для переносимого навыка достаточно name, description и Markdown-тела. Не используйте поля без опубликованного поведения для ограничений доступа или других критичных настроек. Доступные действия определяют режим и разрешения инструментов.
Расширения Veai: agent и used-by
agent: режим для ручного запуска
Поле agent действует при запуске навыка из каталога или через /имя-навыка в чате.
- Не указывайте
agent, если навык должен запускаться стандартным агентом Code. Это подходит для универсальной короткой процедуры, которой не нужна специализация другого режима. - Укажите конкретный режим, если для ручного запуска всегда нужна его специализация. Например, задайте
agent: Orchestratorдля многошагового сценария: Orchestrator проконтролирует последовательность и подключит специализированных субагентов.
Чтобы проверить настройку, запустите навык через /имя-навыка и убедитесь, что Veai открыл ожидаемый режим.
used-by: автоматический выбор навыка
Поле used-by управляет только автоматическим выбором навыка агентами. Ручной запуск из каталога или через /имя-навыка остаётся доступным.
- Не указывайте поле, если навык должен автоматически получать стандартный агент Code. Используйте этот вариант для общей процедуры повседневной разработки.
- Укажите пустой список
used-by: [], если навык должен запускаться только вручную. Это подходит для опасной или дорогой процедуры, которую нельзя выбирать без явной команды пользователя. - Перечислите режимы, если автоматический запуск допустим только для них. Например, разрешите
OrchestratorиGeneralвыбирать многошаговый навык, но не добавляйте режимы с более узкой задачей.
После сохранения проверьте оба пути: задайте подходящую задачу разрешённому агенту, затем вызовите навык вручную через /имя-навыка.
---
name: multi-step-workflow
description: Выполняет многошаговый сценарий с помощью специализированных субагентов
agent: Orchestrator
used-by:
- Orchestrator
- General
---
Поля agent и used-by относятся к расширению Veai. Другие инструменты, поддерживающие базовый стандарт Skills, могут их игнорировать. Общие сведения о создании, хранении и запуске навыков смотрите на странице «Skills (Навыки)».
Как разрешаются одинаковые имена
Если несколько источников содержат навык с одинаковым name, Veai оставляет вариант из источника с более высоким приоритетом. Источники загружаются в таком порядке, от низкого приоритета к высокому:
- встроенные навыки;
- глобальные навыки из распознанных сторонних dot-каталогов, каталоги сортируются по имени;
- глобальные навыки из
~/.veai; - проектные навыки из распознанных сторонних dot-каталогов;
- проектные навыки из
<проект>/.veai.
Таким образом, проектный навык перекрывает глобальный, а .veai имеет приоритет над другими dot-каталогами в той же области. При коллизии интерфейс не объединяет содержимое двух навыков.
Используйте совпадающий name осознанно, когда для одного проекта нужна локальная версия глобального или встроенного навыка. Скопируйте навык в <проект>/.veai/skills/<каталог>/SKILL.md, сохраните исходное name и измените инструкцию под соглашения репозитория. Затем вызовите /имя-навыка и проверьте, что выполняется проектная версия. В остальных случаях выбирайте уникальные имена, чтобы источник навыка был очевиден.
Ошибки загрузки
Навык не загружается, если:
- в
SKILL.mdнет YAML front matter; - YAML содержит синтаксическую ошибку или имеет неверную структуру;
- отсутствует обязательное поле;
- значение поля не проходит проверку схемы, например
nameдлиннее 50 символов; - файл лежит глубже одного каталога внутри
skills.
Veai сообщает путь проблемного поля. Для ошибок YAML и структуры сообщение также может содержать строку и столбец. Откройте группу Error в списке навыков и наведите указатель на ошибку, затем исправьте файл и повторите вызов /имя-навыка.