Анатомия файла SKILL.md
Updated Jul 2026
Двухчастная структура
Каждый навык — это один markdown-файл с YAML-метаданными и markdown-телом:
┌─────────────────────────────┐
│ --- │ ← Начало YAML-метаданных
│ name: my-skill │
│ description: ... │ ← Метаданные (сигнал для выбора)
│ allowed-tools: Bash,Read │
│ --- │ ← Конец YAML-метаданных
│ │
│ # Instructions │
│ Step 1: Do this... │ ← Тело в формате Markdown (инструкции выполнения)
│ Step 2: Then this... │
└─────────────────────────────┘
YAML-метаданные: Сигнал для выбора
Обязательные поля
name (строка, макс. 64 символа)
- Только строчные буквы, цифры, дефисы
- Становится командой вызова:
/my-skillилиskill: "my-skill" - Должно быть уникальным среди всех установленных навыков
name: vibe-check # Хорошо
name: Vibe Check # Плохо — без пробелов и заглавных букв
name: vibe_check # Плохо — без подчёркиваний
description (строка)
- КЛЮЧЕВОЕ поле. Claude читает описания всех навыков, чтобы решить, какой навык соответствует намерению пользователя
- Должно быть достаточно конкретным, чтобы отличаться от других навыков
- Должно описывать возможность, а не реализацию
# Хорошо — сообщает Claude, когда использовать этот навык
description: |
Browser automation via CLI. Navigate pages, click elements,
fill forms, take screenshots, extract text from web pages.
# Плохо — слишком расплывчато, пересекается с другими навыками
description: "Helps with web stuff"
# Плохо — описывает реализацию, а не возможность
description: "Runs vibe-check commands using the Bash tool"
Необязательные поля
allowed-tools (строка через запятую)
- Инструменты, которые навык может использовать, временно предоставляются на время выполнения
- Без этого навык наследует текущие разрешения сессии
- Поддерживает подстановочные знаки:
Bash(git:*)разрешает только команды git
allowed-tools: Bash # Может запускать любые shell-команды
allowed-tools: Read,Write # Только чтение и запись файлов
allowed-tools: Bash,Read,Write,Glob,Grep # Полный доступ
model (строка)
- Переопределяет, какая модель Claude выполняет навык
- Полезно для оптимизации затрат (использовать Haiku для простых навыков)
model: claude-haiku-4-5-20251001 # Дешевле, быстрее
model: claude-sonnet-4-5-20250929 # Сбалансировано
version (строка)
version: "1.0.0"
disable-model-invocation (булево значение)
- Когда
true, навык может быть вызван только явно (через/skill-name), никогда автоматически
disable-model-invocation: true
Тело Markdown: Инструкции по выполнению
Тело — это то, что Claude читает при вызове навыка. Оно должно быть структурировано для ИИ-агента, а не для человека-читателя.
Лучшие практики
- Начинайте с краткого описания в одну строку — Что делает этот навык?
- Перечисляйте команды в справочной таблице — Формат быстрого поиска
- Показывайте типовые паттерны — 80% случаев использования
- Включайте подсказки — Нюансы, которые агенту нужно знать
- Не более 500 строк — Длинные навыки раздувают контекст; выносите детали в
/references/
Пример: Структура SKILL.md навыка vibe-check
# Vibium Browser Automation — CLI Reference
The `vibe-check` CLI automates Chrome via the command line.
The browser auto-launches on first use.
## Commands
### Navigation
- `vibe-check navigate <url>` — go to a page
- `vibe-check url` — print current URL
...
### Common Patterns
**Read a page:**
```sh
vibe-check navigate https://example.com
vibe-check text
```
## Tips
- All click/type/hover actions auto-wait for the element
- Use `vibe-check find` to inspect before interacting
Эта структура работает, потому что:
- Агент может просканировать таблицу команд, чтобы найти нужное
- Секция паттернов предоставляет готовые рабочие процессы
- Подсказки предотвращают типичные ошибки
Прикреплённые ресурсы (необязательные каталоги)
Навыки могут включать дополнительные каталоги наряду с SKILL.md:
/scripts/ — Исполняемый код
my-skill/
├── SKILL.md
└── scripts/
├── setup.sh # Запускается один раз при установке
├── validate.py # Вызывается агентом через Bash
└── generate-report.sh
Агент вызывает скрипты через Bash: bash {baseDir}/scripts/validate.py
/references/ — Документация, которую агент может прочитать
my-skill/
├── SKILL.md
└── references/
├── api-schema.json # Загружается в контекст по требованию
├── selector-patterns.md # Шпаргалка по CSS-селекторам
└── error-codes.md # Справочник по устранению проблем
Агент загружает справочники через инструмент Read: Read {baseDir}/references/error-codes.md
Это прогрессивное раскрытие — SKILL.md загружается всегда, но справочники загружаются только при необходимости.
/assets/ — Шаблоны и статические файлы
my-skill/
├── SKILL.md
└── assets/
├── report-template.html # Ссылка по пути, не загружается в контекст
└── logo.png
Навык vibe-check в частности
Навык vibe-check намеренно минималистичен — только один файл SKILL.md без прикреплённых ресурсов:
skills/vibe-check/
└── SKILL.md # ~100 строк. Это всё.
Это осознанное проектное решение:
- CLI-бинарник Vibium берёт на себя всю сложность (управление браузером, интерактивность, BiDi-прокси)
- Навыку нужно лишь научить агента интерфейсу команд
- Скрипты не нужны, потому что
vibe-checkи есть скрипт - Справочники не нужны, потому что сам SKILL.md достаточно лаконичен
Это золотой стандарт для навыков-обёрток CLI: тонкий слой инструкций поверх мощного бинарника.
Как агент использует навык во время выполнения
Вот что происходит, когда вы говорите «Перейди на example.com и сделай скриншот»:
1. Пользователь: "Go to example.com and take a screenshot"
2. Claude читает доступные навыки → находит, что описание vibe-check совпадает
3. Claude вызывает: Skill(skill="vibe-check")
4. Система внедряет содержимое SKILL.md в контекст разговора
5. Claude теперь знает все 22 команды vibe-check
6. Claude выполняет через Bash:
→ vibe-check navigate https://example.com
→ vibe-check screenshot -o screenshot.png
7. Claude отвечает: "Done. Screenshot saved to screenshot.png"
Ключевое понимание: шаги 1-5 происходят прозрачно. Пользователь никогда не видит SKILL.md. Он видит только агента, управляющего браузером.
Тезис для собеседования
«Agent skills — это фундаментально другой архитектурный выбор по сравнению с MCP-серверами. Там, где MCP добавляет схемы инструментов в контекстное окно — часто тысячи токенов на каждый сервер — навыки внедряют процедурные знания как markdown. Навык vibe-check — это примерно 100 строк, которые обучают агента 22 браузерным командам. Те же возможности через MCP потребовали бы предоставления 22 отдельных определений инструментов с JSON-схемами, валидацией входных данных и форматами ответов. Skills — это "рецепты"; MCP — это "кухонное оборудование".»