Автор: Валерий Курземнек, CMO Zerocoder. Команда использует самописные скиллы Claude Code в продакшене с весны 2026. Обновлено: июль 2026.
Skill (навык) в Claude Code — это папка с файлом SKILL.md: YAML-шапка с описанием плюс инструкции в Markdown. Claude подгружает скилл сам, когда ваш запрос совпадает с полем description, либо вы вызываете его вручную командой /имя-скилла. Минимум для рабочего скилла — одна папка в ~/.claude/skills/ и десять строк текста. Программировать не нужно. Часть скиллов уже встроена в Claude Code — например, автоматический код-ревью.
Главное в двух минутах:
- Скилл = SKILL.md + опционально скрипты, шаблоны и справочники в той же папке.
- Обязательных полей в шапке нет, рекомендовано одно —
description: по нему Claude решает, когда применить скилл. - Личные скиллы лежат в
~/.claude/skills/, проектные — в.claude/skills/репозитория. - В контекст постоянно попадает только описание; тело грузится при вызове, поэтому длинная инструкция почти ничего не стоит.
- Слэш-команды и скиллы объединены в одну сущность: файл
.claude/commands/deploy.mdи скиллdeployдают одинаковую команду/deploy.
Что такое skill в Claude Code и когда он нужен
По официальной документации Anthropic, скилл стоит заводить в двух случаях: вы раз за разом вставляете в чат одну и ту же инструкцию или чек-лист, либо секция CLAUDE.md разрослась из фактов в процедуру. В отличие от CLAUDE.md, который загружается целиком в каждую сессию, тело скилла попадает в контекст только при вызове.
Skills в Claude Code следуют открытому стандарту Agent Skills — тот же формат понимают и другие ИИ-инструменты, так что папка скилла переносима. Скиллы к тому же можно паковать в плагины и раздавать команде или всей организации.
Рабочий критерий из практики: если задача формулируется одной фразой «сделай X», а под капотом всегда одна и та же процедура из нескольких шагов — нужен скилл. «Поправь опечатку» — не скилл. «Подготовь пост в канал: цепляющая первая строка, лимит знаков, проверка по чек-листу» — скилл.
Скилл — это упакованная процедура, а не заметка. Процедуры — в скиллы, факты о проекте — в CLAUDE.md.
Структура SKILL.md: из чего состоит скилл
Каждый скилл — директория, где SKILL.md обязателен, остальное опционально:
my-skill/
├── SKILL.md # инструкции — единственный обязательный файл
├── reference.md # справочник, грузится только при необходимости
├── examples/ # образцы выходного формата
└── scripts/
└── helper.py # скрипт: выполняется, в контекст не грузится
Сам SKILL.md состоит из YAML-шапки между маркерами --- и Markdown-тела. Это трёхуровневая прогрессивная загрузка: описание из шапки видно Claude всегда, тело загружается при вызове, вспомогательные файлы — только когда реально понадобились.
У листинга описаний есть бюджет, о котором молчат все гайды: связка description + when_to_use обрезается на 1536 символах, а суммарный листинг всех скиллов занимает около 1% контекстного окна (документация Claude Code, раздел Troubleshooting). Практический вывод: главный сценарий использования — в первую фразу description, иначе при десятках скиллов ключевые слова срежутся. Команда /doctor показывает, чьи описания уже урезаны.
Совет из той же доки: держите SKILL.md короче 500 строк, детали выносите в соседние файлы и ссылайтесь на них из тела.
Как создать свой первый skill: 4 шага
Шаги ниже соответствуют разделу Getting started официальной инструкции. Для примера соберём скилл, который пишет пост для Telegram-канала по фиксированным правилам.
Шаг 1. Создайте папку скилла. Личный скилл (виден во всех проектах):
mkdir -p ~/.claude/skills/tg-post
На Windows это C:\Users\<имя>\.claude\skills\tg-post. Для проектного скилла — .claude/skills/tg-post внутри репозитория.
Шаг 2. Запишите SKILL.md. Файл целиком, имя строго SKILL.md:
---
name: tg-post
description: Пишет пост для Telegram-канала по шаблону редакции. Использовать, когда просят пост, анонс, текст в канал или «оформи это для Телеграма».
argument-hint: [тема поста]
---
Напиши пост для Telegram на тему: $ARGUMENTS
Правила:
1. Первая строка — хук до 80 знаков, без кликбейта.
2. Объём 400–800 знаков, абзацы по 1–2 предложения.
3. В конце — один вывод и один вопрос читателю.
4. Запрещены канцелярит, восклицания и обороты вроде «в современном мире».
Перед выдачей проверь текст по правилам 1–4 и молча исправь несоответствия.
$ARGUMENTS — плейсхолдер: при вызове /tg-post запуск нового курса он заменится на «запуск нового курса».
Шаг 3. Убедитесь, что скилл виден. Рестарт не нужен: Claude Code следит за папками скиллов и подхватывает изменения в текущей сессии (если сама папка skills/ существовала на старте). Спросите: «какие скиллы доступны?» — tg-post должен быть в списке.
Шаг 4. Протестируйте оба способа вызова. Автоматический: «напиши пост про наш вебинар» — Claude сопоставит запрос с description и подгрузит скилл. Ручной: /tg-post анонс вебинара.
Имя команды берётся из имени папки, а не из поля name — переименовали папку, поменялась команда.
Настройка скилла: поля frontmatter, которых нет в гайдах
База работает и с одним description. Управляемость дают остальные поля:
| Поле | Что делает |
|---|---|
description |
По нему Claude решает, когда применить скилл. Ключевой сценарий — в первую фразу |
disable-model-invocation: true |
Claude не запустит скилл сам — только вы через /имя. Обязательно для деплоя, коммитов, рассылок |
user-invocable: false |
Обратная ситуация: скилл-справочник виден только Claude, из /-меню скрыт |
allowed-tools |
Список инструментов, которые скилл использует без запроса разрешения, например Bash(git add *) |
context: fork + agent |
Скилл выполняется в изолированном субагенте, не засоряя основной контекст |
model, effort |
Переопределяют модель и уровень усилия на время работы скилла |
paths |
Glob-паттерны: скилл активируется только при работе с подходящими файлами |
Второй механизм без освещения в рунете — динамическая инъекция. Строка вида !`git diff HEAD` в теле скилла выполняется до того, как Claude увидит текст, и заменяется выводом команды. Скилл «суммаризуй мои изменения» получает живой diff прямо в промпт — Claude не гадает по открытым файлам.
Опыт нашей команды. В Зерокодере в скилл упакована транскрибация вебинаров: yt-dlp тянет аудио, ffmpeg режет на чанки, Whisper через Groq отдаёт текст и субтитры. Два урока из прода. Первый: скилл не срабатывал на «расшифруй вебинар», пока в description стояло сухое «транскрибация» — добавили формулировки, которыми реально пользуются люди, и автовызов стал стабильным. Второй: скрипт пришлось сделать резюмируемым — бесплатный тариф Groq пропускает около 7200 секунд аудио в час, полуторачасовой вебинар в лимит не помещается с первого прохода.
Skill, subagent, MCP или слэш-команда: что выбрать
Четыре механизма расширения Claude Code решают разные задачи:
| Механизм | Что это | Когда брать |
|---|---|---|
| Skill | Инструкции + файлы, грузятся по требованию в текущий контекст | Повторяемая процедура, стиль, шаблон, чек-лист |
| Subagent | Отдельный контекст со своим системным промптом; возвращает только результат | Многошаговая изолированная задача: ресёрч, ревью, чтобы не жечь основной контекст |
| MCP-сервер | Внешний процесс с инструментами: API, база данных, браузер | Доступ к внешним системам, которых у Claude нет из коробки |
| Слэш-команда | Объединена со скиллами: .claude/commands/x.md = скилл /x |
Легаси-формат; новое пишите как скиллы — у них есть папка и frontmatter |
Механизмы комбинируются: context: fork в шапке запускает скилл внутри субагента. Скилл отвечает на вопрос «что делать», субагент — «где и чьими руками», MCP — «какими внешними инструментами».
Если осваиваете Claude Code с нуля, связка «скиллы + субагенты» — самый быстрый путь собрать личную ИИ-команду без единой строки кода; на курсе Зерокодера по вайб-кодингу этому посвящён отдельный модуль.
Skill-creator: скилл, который делает скиллы
Для генерации и проверки скиллов у Anthropic есть плагин skill-creator из официального маркетплейса:
/plugin install skill-creator@claude-plugins-official
Он собирает структуру папки по вашему описанию, а главное — гоняет оценку: хранит тест-промпты в evals/evals.json, запускает каждый в чистом субагенте с включённым и выключенным скиллом, сравнивает pass-rate, время и токены, и предлагает правки description, если скилл срабатывает не на тех запросах. Смысл проверки — сравнение с базовой линией: скилл, который триггерится, но не меняет результат, — это только расход токенов.
Готовые примеры скиллов Anthropic выложила в открытый репозиторий anthropics/skills — удобная стартовая точка вместо пустого файла.
Типичные ошибки при создании скиллов
- Скилл не срабатывает. В 9 случаях из 10 — description без слов, которыми формулирует задачу человек. Перепишите описание под реальные фразы, проверьте
/doctor: не урезан ли листинг. - Срабатывает, когда не просили. Сузьте description или поставьте
disable-model-invocation: trueи вызывайте вручную. - SKILL.md на 800 строк. После вызова тело висит в контексте всю сессию и стоит токенов каждый ход. Больше 500 строк — выносите в reference.md.
- Сломанный YAML в шапке. Скилл продолжит работать через
/имя, но останется без description — автовызов молча умирает. Диагностика: запуск с флагом--debug. - Ожидание, что скилл «помнит». Содержимое попадает в контекст один раз при вызове и не перечитывается; правила формулируйте как постоянные инструкции, а не разовые шаги.
Чек-лист перед сдачей скилла: папка в правильном месте → файл называется SKILL.md → description с реальными формулировками задач → тело короче 500 строк → протестированы автовызов и /имя → для опасных действий стоит disable-model-invocation: true.
Частые вопросы
Нужно ли уметь программировать, чтобы создать skill?
Нет. Минимальный скилл — текстовый файл SKILL.md с YAML-шапкой и инструкциями на русском. Скрипты — опциональный уровень для продвинутых сценариев.
Чем skill отличается от CLAUDE.md?
CLAUDE.md грузится целиком в каждую сессию и подходит для фактов о проекте. Скилл загружается только при вызове и подходит для процедур: длинная инструкция в скилле не тратит контекст, пока не нужна.
Работают ли скиллы в Claude.ai и API?
Да, Agent Skills — общий механизм: тот же формат SKILL.md поддерживается в Claude.ai, Claude Code и Claude API, папка скилла переносится между ними.
Как заставить Claude всегда спрашивать перед запуском скилла?
Поставьте в шапку disable-model-invocation: true — тогда скилл запускается только вручную командой /имя-скилла.