Скиллы в Claude Code: из чего состоят и как работают
Последнее время про скиллы говорят все. Ютуб завален туториалами: как сделать скилл, как скачать скилл, «10 скиллов, которые приносят мне три миллиона в минуту». Нельзяграм страшно открывать.
И почти везде скилл подают как волшебство: подключил — и агент пишет код без ошибок, воду превращает в вино. А вот как эта штука устроена внутри — почему-то никто не объясняет. Хотя именно от этого зависит, будет твой скилл работать или молча отвалится.
Эта статья — про механику. Разберём, из чего скилл состоит, где живёт, как попадает в контекст модели и почему иногда не срабатывает.
И сразу главная мысль, к которой всё сведётся: никакого волшебства в скиллах нет. Скилл — это способ эффективно распоряжаться контекстом модели. Не «супер-промпт», не «магия», а инструмент управления вниманием нейронки. Держите это в голове по ходу всего текста — так все детали складываются в одну картину.
Делать скиллы руками, кстати, необязательно: есть
skill-creatorот Anthropic и
writing-skillsот Superpowers — навыки, которые пишут другие навыки. Но чтобы проверить, что они там наделали, и починить, когда не работает, всё равно надо понимать, как оно устроено. Ради этого и статья.
Скилл против промпта
Начнём с вопроса, который возникает первым: чем скилл отличается от обычного промпта.
Аналогия. Если модель — это мозг агента, RAG и memory bank — долгосрочная память, контекст — краткосрочная, а MCP — руки-базуки (в смысле, и руки, и инструменты сразу), то скилл — это средне-специальное образование агента. Диплом ПТУ. Твой Клод не просто прочитал в интернете инструкцию, как пользоваться сварочным аппаратом, — он его купил, отучился на сварщика и ждёт заказы.
Применений — сколько угодно: писать код и деплоить сайты, превратить агента в маркетолога, копирайтера или аналитика, заставить готовить документы и обрабатывать лидов. Способ сделать из универсального агента узкого профи.
И тут легко заметить: это же промпт. Задаёшь роль, даёшь чёткие инструкции и примеры — получаешь то же самое.
Отчасти так и есть. Но с важной оговоркой, которую хорошо показывает один эксперимент.
Эксперимент Vercel: почему скилл не всегда лучше промпта
Vercel — те самые, кто сделал Next.js, самый модный способ собирать сайты. Они сравнили два подхода к тому, как скормить агенту документацию по Next.js: специальный скилл с этой документацией и обычный файл
AGENTS.md— то есть промпт, который агент гарантированно читает в начале сессии, и он всегда у него перед глазами.
Результаты по прохождению их тестов:
- Ничего (голая модель) — 53%
- Скилл с документацией — 53%
- Скилл + прямое указание «обязательно используй» — 79%
- Промпт AGENTS.md с коротким индексом документации — 100%
Скилл сам по себе не дал ничего — те же 53%, что и без него. Причина: в 56% случаев агент просто не догадался его открыть. А
AGENTS.mdоткрывать не надо — он всегда в контексте, проигнорировать нельзя.
Вывод из этого не «промпты лучше скиллов». Вывод точнее: скилл силён не содержанием, а тем, вызовется он или нет. Можно написать гениальную инструкцию, но если агент до неё не дошёл — толку ноль. Дальше половина статьи будет про то, как повысить шанс вызова.
Команды — предки скиллов
Проблему «где хранить промпты и как их не копипастить руками» Claude Code решил ещё до скиллов — через команды. Жмёшь косую черту, выбираешь из списка готовых действий. Под капотом никакой магии: команда — это просто заранее написанный промпт, который подставляется в диалог.
Скиллы выросли отсюда напрямую. Сегодня в Claude Code команды и скиллы фактически слились в одну сущность. Команды ещё можно создавать, но нужды в этом почти нет. Полезная деталь на будущее: если команда и скилл называются одинаково, приоритет у скилла.
CLAUDE.md — тоже промпт
Причём самый важный.
CLAUDE.md(у остальных инструментов —
AGENTS.md, разница только в названии) попадает в контекст в момент запуска агента и висит там всю сессию. Именно с ним, а не с чем-то экзотическим, конкурирует скилл.
Документация даёт простое правило, когда что использовать:
Выноси инструкцию в скилл, когда секция
CLAUDE.mdвыросла из «факта» в «процедуру».
Пара строк про стиль кода — пусть живут в
CLAUDE.md. Многошаговый процесс, длинный чек-лист, сложная последовательность — в отдельный скилл. Смысл ровно в управлении контекстом:
CLAUDE.mdзанимает место всегда, а скилл подгружается только когда реально нужен.
CLAUDE.mdдержим компактным, тяжёлое прячем в скиллы и достаём по требованию.
Вот тут и проступает стержень. Скилл выигрывает у промпта не «мощностью инструкции». Он выигрывает тем, что не засоряет контекст, пока не понадобится. А не отупевшая от переполненной памяти нейронка работает заметно лучше. Это и есть весь секрет — не магия, а гигиена контекста.
Какими бывают скиллы
С точки зрения назначения Anthropic делит скиллы на три типа:
- Справочные (Reference) — дополнительные знания: стандарты кодирования, брендбуки, API-документация.
- Процедурные / техники (Technique / Task) — пошаговые инструкции: деплой, коммит, ревью.
- Оркестраторы (Orchestrators) — сложные навыки, где главный агент дробит большую задачу на части и раздаёт их субагентам.
И отдельная категория поверх этой — мета-скиллы, то есть скиллы для работы с другими скиллами. Из тех, что не страшно рекомендовать:
- skill-creator — делает новые навыки.
- writing-skills от Superpowers — альтернатива ему.
- run-skill-generator — встроен в Claude Code. Разбирается, как запускается проект: читает README, package.json, Makefile, пытается запустить, ведёт журнал ошибок и в конце собирает скилл /run-project. Удобно и для своего проекта, и когда скачал что-то с GitHub и не хочешь разбираться руками.
Есть и другие мета-скиллы — для поиска навыков по маркетплейсам, автогенерации целых наборов под проект. Но что из этого стоит качать — тема отдельная, и о безопасности скачанных скиллов поговорим ниже, она того заслуживает.
Анатомия: скилл — это просто папка
Технически скилл — это папка на диске. Внутри обязателен один файл,
SKILL.md(именно так, капсом), — инструкция для агента. Опционально рядом лежат ещё три папки:
references(документация),
scripts(исполняемые скрипты) и
assets(шаблоны). Без них скилл работать будет; без
SKILL.md— нет.
Сама папка скилла лежит внутри папки
skills, а та — внутри папки
.claude.
Папка
.claudeпоявляется в домашней директории сразу после установки Claude Code, даже если ты его ни разу не запускал. Точка в начале имени означает «скрытая»: через Finder или Проводник её не видно. Чтобы заглянуть — либо терминал, либо редактор кода (IDE). Самый распространённый бесплатный вариант — VS Code.
Где живёт скилл: четыре уровня
От того, где лежит папка
.claude, зависит область действия скилла и его приоритет при совпадении имён. Уровней четыре.
Enterprise. Для компаний. Такие скиллы спускают сверху администраторы, и у них наивысший приоритет для всех сотрудников. Физически они не в
.claude, а подгружаются через корпоративный аккаунт в облаке Anthropic. Смысл — держать всех на утверждённых процессах: чтобы не тащили скиллы откуда попало и не занесли заразу. Можно, например, вовсе запретить выполнение команд в терминале из скиллов или принудительно включать и выключать конкретные навыки.
Personal. Скиллы в
.claudeдомашней директории. Личные, доступны в любом проекте на этой машине. Если ты не в корпорации — у них высший приоритет. Приоритет важен при коллизии имён: есть персональный
/deployи проектный
/deploy— Клод возьмёт персональный.
Персональные скиллы Claude Code видит в реальном времени: правишь тело или файлы скилла прямо во время сессии — изменения применяются сразу, перезапуск не нужен. Исключение — если во время сессии создать новую папку с новым скиллом: вот тут сессию придётся перезапустить.
Project. Скиллы конкретного проекта. Самый низкий приоритет: видны только внутри проекта и любую коллизию с персональными или Enterprise проигрывают. Их смысл — общий доступ команды, поэтому обычно их коммитят в Git вместе с кодом.
Важная тонкость: проектные скиллы загружаются не только из текущей папки, но и из всех родительских — вплоть до корня Git-репозитория. Запустил Клода в подпапке — он сначала посмотрит скиллы рядом с собой, потом поднимется уровнем выше, потом ещё, до самого корня. На практике: у всего сайта есть общий набор скиллов (правила кода, деплой), а у отдельного сложного компонента — скажем, биллинга — свой. Запускаешь Клода внутри биллинга — он видит и локальные скиллы биллинга, и общие скиллы всего проекта.
Plugin. Особняком. Плагинные скиллы в игры с коллизиями имён не играют, потому что вызываются с префиксом:
/имя-плагина:имя-скилла— например,
/superpowers:test-driven-development. Лежат они тоже в
.claude, но обособленно — внутри директорий своих плагинов, а те — внутри своих маркетплейсов. Путь к официальному скиллу Anthropic
pdfвыглядит так:
.claude/plugins/marketplaces/anthropic-agent-skills/skills/pdfУровни у самих плагинов почти те же — Enterprise, Personal, Project, — но, в отличие от скиллов, плагин ещё прописывается в конфиге проекта. Конфигов два:
.claude/settings.json(общий, его коммитят в Git) и
.claude/settings.local.json(личный, коммитить не принято).
SKILL.md: шапка (frontmatter)
Файл
SKILL.mdсостоит из двух частей: шапки (frontmatter) в формате YAML и тела — самой инструкции.
YAML — это способ записать настройки в виде «ключ: значение», удобный и человеку, и программе. Frontmatter — блок метаданных в начале файла: он говорит агенту, какие скиллы у него вообще есть, когда их применять и как выполнять.
Три стандарта и минимальные требования
Стандартов оформления скилла сегодня три:
- Claude Code — канонический, от Anthropic.
- Agent Skills — тоже от Anthropic, почти такой же, но для всех остальных инструментов.
- Superpowers — для Claude Code и ещё пары совместимых. Его механику оставлю за рамками этой статьи, она тянет на отдельный разбор.
Минимальные требования у Claude Code предельно мягкие: папка в нужном месте + файл
SKILL.md+ хоть какая-то инструкция внутри. Обязательных полей в шапке нет вообще. А вот у стандарта Agent Skills два поля обязательны —
nameи
description.
Дальше пойдём по полям. Сначала — список всех полей и их поддержки по стандартам, потом разбор каждого поля по группам.
- name — Claude Code: опционально; Agent Skills: обязательно
- description — Claude Code: рекомендуется; Agent Skills: обязательно
- when_to_use — Claude Code: опционально; Agent Skills: не предусмотрено
- allowed-tools — Claude Code: опционально; Agent Skills: опционально
- disallowed-tools — Claude Code: опционально; Agent Skills: не предусмотрено
- model — Claude Code: опционально; Agent Skills: не предусмотрено
- effort — Claude Code: опционально; Agent Skills: не предусмотрено
- context — Claude Code: опционально; Agent Skills: не предусмотрено
- agent — Claude Code: опционально; Agent Skills: не предусмотрено
- hooks — Claude Code: опционально; Agent Skills: не предусмотрено
- paths — Claude Code: опционально; Agent Skills: не предусмотрено
- shell — Claude Code: опционально; Agent Skills: не предусмотрено
- arguments — Claude Code: опционально; Agent Skills: не предусмотрено
- argument-hint — Claude Code: опционально; Agent Skills: не предусмотрено
- disable-model-invocation — Claude Code: опционально; Agent Skills: не предусмотрено
- user-invocable — Claude Code: опционально; Agent Skills: не предусмотрено
- compatibility — Claude Code: опционально; Agent Skills: опционально
- metadata — Claude Code: опционально; Agent Skills: опционально
- license — Claude Code: опционально; Agent Skills: опционально
Группа 1. Три поля, которые решают, вызовется ли скилл
Это самые важные поля. Помните вывод из эксперимента Vercel — скилл бесполезен, если агент его не открыл? За открытие отвечают ровно эти три поля.
name. У Claude Code необязательно: если не задать, именем станет имя папки. Ограничение — не больше 64 символов (в обоих стандартах); длиннее — ошибка, скилл не заработает. Имя папки должно совпадать с именем скилла. Рекомендуемый стиль —
kebab-case: нижний регистр и дефисы.
description. Формально для Claude Code лишь рекомендуется, но по факту это фундамент: именно по описанию агент решает, открывать скилл или нет. Нет описания — сам он скилл никогда не вызовет (останется только ручной вызов через слэш-команду).
Как писать описание — три правила, каждое неочевидное:
- Не «что это», а «когда применять». Плохо: «Этот скилл вызывает Nano Banana для генерации картинок». Хорошо: «Используй этот скилл, когда нужно сгенерировать картинку». Описание — это руководство к действию, а не аннотация.
- Как работает — в теле, не в описании. Если вписать в описание механику («скилл делает то-то через то-то»), модель может решить, что уже всё поняла, не полезет в тело, где расписаны детали, и начнёт выдумывать. Описание — это триггер, подробности — внутри.
- Третье лицо. Не «я помогу тебе вызвать Nano Banana», а «этот скилл использует Nano Banana». Текст уходит в системный промпт, и в третьем лице модель меньше путается.
Идеальное описание получается примерно таким: «Используй этот скилл для генерации картинки. Этот скилл использует Nano Banana».
И бонус, подтверждённый экспериментом на 650 вызовах: если начать не с «используй этот скилл», а с «ВСЕГДА используй этот скилл», шанс вызова растёт в 20,6 раза (разбор с цифрами).
when_to_use. Список конкретных триггеров — слов и фраз, при которых скилл должен подхватываться: «сгенерируй картинку», «нарисуй картинку» и так далее.
Про лимиты этих двух полей отдельно, потому что о них легко споткнуться. В стандарте Agent Skills на описание — 1024 символа. У Claude Code — 1536, но это лимит на
descriptionи
when_to_useвместе: при наличии второго поля они склеиваются и грузятся в контекст одним куском. Превысил лимит — Claude Code молча обрежет хвост. А так как обрезается конец, первыми под нож идут именно триггеры (
when_to_useстоит после описания). Мораль: самое важное — в начало описания.
Группа 2. Поля поведения и запуска
context. Одно осмысленное значение —
fork, и это едва ли не самое мощное поле во всей шапке.
Без него тело скилла просто вливается в текущий контекст: та же модель, тот же диалог, вся история на месте — Клод берёт и делает то, что написано.
С
context: forkClaude Code поднимает отдельного свежего субагента с чистым контекстным окном. Тело скилла становится для него промптом, историю основного диалога он не видит, а по завершении возвращает в главный диалог только сводку о проделанной работе. Это разгружает основной контекст и позволяет запускать тяжёлые многошаговые процессы, не засоряя главную сессию.
Покажу на своём примере — так понятнее. У меня есть большой скилл, который пишет учебные задачи для практикума по n8n. В главной сессии сидит оркестратор. Я пишу ему: «собери модуль по Data Tables». Модуль к этому моменту уже спроектирован (ресёрчи, консультации с методистами и экспертами по n8n — всё это тоже агенты), материалы для сборки готовы.
Оркестратор берёт план и форкает скилл написания задачи. Внутри форка раннер:
- изучает материалы и уже готовые задачи — готовится;
- зовёт субагента, который через MCP собирает воркфлоу в n8n и тестирует его;
- на основе воркфлоу пишет черновик задачи;
- поднимает ещё одного агента — тот открывает воркфлоу в браузере и сверяет, чтобы названия кнопок, полей и опций совпадали в задаче и в нашей версии n8n;
- следующий субагент снимает скриншоты (схема большая: отцепить цепочку от триггера, замокать данные, выполнить, запинить, снять, прицепить следующую ноду, снова выполнить и снять — и так по всей цепочке);
- под конец прогоняет результат через ревью и расставляет скрины.
Раннер возвращается к оркестратору с отчётом, тот записывает прогресс и дёргает раннер под следующую задачу. На выходе — 10–15 готовых задач за прогон.
Ключевое, что даёт форк: вместо того чтобы вручную запускать по отдельной сессии на каждую задачу, я запускаю всё одним оркестратором. Каждый форк работает в своём чистом окне и не тащит в общий контекст лишнее.
agent. Работает в связке с
context: указывает, какому агенту отдать форкнутый скилл. Можно своего, можно один из трёх встроенных:
- Explore — быстро что-то найти и понять структуру. Только чтение. Пропускает CLAUDE.md и git-статус, в детали не вникает. По умолчанию на модели Haiku, но можно назначить потяжелее.
- Plan — то же, но вдумчивее. Наследует модель основной сессии, работает внутри plan mode: собирает контекст по кодовой базе, прежде чем предложить стратегию.
- General-purpose — для сложных многошаговых задач, где нужно и читать, и писать. Уже имеет все права (Read, Write, Edit, Bash). Его Клод раскидывает по независимым подзадачам, когда их можно делать параллельно.
allowed-tools. Белый список инструментов, которые скилл вызывает без дополнительного подтверждения:
Тонкость с доверием: персональные скиллы — доверенные, разрешённый инструмент вызывается без вопросов. Проектные — нет: даже с этим списком Клод всё равно переспросит, можно ли ему запустить Python. Логика понятна — проектный скилл мог прийти от кого угодно из команды.
disallowed-tools. Зеркало предыдущего — чёрный список: что скиллу запрещено во время выполнения.
model. Модель, на которой выполняется скилл.
effort. Глубина размышлений при выполнении:
low/
medium/
high/
xhigh. Чем выше — тем вдумчивее модель и тем больше токенов и времени тратит. (В обычной сессии градаций больше, в скилле набор урезан.)
disable-model-invocation. Если
true, Клод перестаёт видеть скилл как инструмент — вызвать его сможешь только ты, вручную через слэш-команду. По умолчанию
false.
user-invocable. Наоборот: если
false, слэш-командой скилл не вызвать, только модель сама. По умолчанию
true.
arguments и argument-hint. Аргументы скилла и подсказки к ним при вызове. Например, скилл
fix-issueобъявляет два аргумента —
issue(подсказка «номер issue») и
priority(подсказка «приоритет»). При наборе
/fix-issueв интерфейсе появятся плейсхолдеры
<номер-issue> <приоритет>; подставишь
413и
critical— внутрь скилла они встанут на места
issueи
priority, и модель получит уже собранный текст.
paths. Условие автозагрузки. Скилл с
pathsподтягивается сам, только когда в работе есть файл, подходящий под шаблон (вручную через слэш-команду его всё равно можно вызвать всегда). Формат — glob-шаблоны, где
*значит «что угодно»:
*.md
— все файлы с расширением
.md;
src/**/*.ts— все
.tsвнутри
srcи любых вложенных папок.
shell. Выбор интерпретатора для инъекций вида
!`команда`(о них — следующий раздел). Значения —
bashили
powershell. Mac и Linux —
bash, Windows —
powershell.
Инъекция контекста — и почему за ней стоит следить
Поле
shellтянет за собой отдельную важную тему. В тело скилла через восклицательный знак можно вписать команду, и Claude Code выполнит её, подставив вместо строки её вывод ещё до того, как агент увидит содержимое скилла. Это и есть динамическая инъекция контекста — штука полезная.
Пример: скилл работает с кодом, и чтобы агенту не лезть в репозиторий за свежими изменениями вручную, мы подставляем их прямо в скилл. Автор пишет так:
А агент увидит уже результат выполнения
git diff HEADна месте команды:
Удобно. Но именно здесь — главная дыра безопасности скиллов. Это shell, и подставить туда можно что угодно, дотянувшись до всего, до чего дотягиваешься ты сам: украсть ключи и токены, перезаписать или удалить файлы, поставить бэкдор. А злоумышленники выкладывают такие скиллы в открытый доступ. Так что правило простое: скачал скилл из интернета — прежде чем запускать, прочитай, что у него в теле, особенно инъекции.
Группа 3. Служебные поля
compatibility (до 500 символов). Перечисляет зависимости, которые должны стоять на машине, — например, что нужен Python. Поле чисто информационное: Claude Code не блокирует запуск, если условия не выполнены, ответственность остаётся на нас с моделью.
metadata. Контейнер произвольных «ключ: значение» без жёсткого назначения — сюда складывают всё, чему не нашлось отдельного поля. Обязательным не является нигде, но по практике чаще всего пишут:
author,
version,
category(
productivity,
coding,
marketing…),
tags,
mcp-server(какие MCP-серверы нужны),
documentation/
homepage(ссылки),
support(контакты).
license. Тип лицензии, как у кода. Открытый и бесплатный скилл —
MITили
Apache-2.0; закрытый — подбираешь под свои условия.
SKILL.md: тело и прогрессивное раскрытие
Всё выше было про шапку. Теперь — тело скилла и то, как оно попадает в контекст. Это ключ к пониманию, почему скилл вообще экономит контекст: работает механизм прогрессивного раскрытия — в три уровня.
Уровень 1 — старт сессии
При запуске сессии Claude Code (программа, не модель) рекурсивно обходит все известные папки
.claude, находит все
SKILL.md, отрезает у них шапки и раскладывает по подсистемам. Склейка
name+
description+
when_to_useуходит в служебный каталог
<available_skills>, который подкладывается в запрос к модели — чтобы она со старта знала, какие навыки у неё есть и когда их звать.
Тел скиллов на этом этапе в контекст не грузится — только короткие описания. Поэтому на один скилл уходит совсем мало токенов. Но и этот каталог ограничен: по умолчанию он не может занимать больше 1% контекстного окна модели.
И вот тут — коварная деталь, на которой я обжигался лично. Когда описаний становится слишком много и они не влезают в 1%, лишние молча выкидываются, и скилл перестаёт вызываться. Никакой ошибки, никакого предупреждения — просто агент «не видит» навык и делает вид, что всё нормально.
Ловится это командой
/doctor. В её выводе появляется что-то вроде «список навыков будет сокращён; N описаний превышают лимит; M описаний удалено (для часто используемых сохранятся)». Без неё понять, что скилл отвалился из-за лимита, почти невозможно.
Как чинить:
- Проредить скиллы — убрать то, чем не пользуешься.
- Так как обрезается конец, держать ключевые сценарии и триггеры в начале description.
- Редко нужные навыки перевести в режим name-only (модель видит только имя) или вовсе off.
- Запускать нужный скилл вручную через слэш-команду.
- Крайняя мера — поднять в настройках параметр skillListingBudgetFraction (долю контекста под каталог). Но это по-хорошему временное: 3% — уже много, ориентир — тот самый 1%.
И ещё: лимит считается от окна текущей модели. Сидел на Opus с миллионом токенов — всё влезало; переключился на Sonnet с 200 тысячами — часть каталога молча выпала. И, как мы выяснили, ты об этом даже не узнаешь, пока не запустишь
/doctor.
Уровень 2 — активация скилла
Скилл активируется — сам (модель решила, что он релевантен) или вручную слэш-командой. В этот момент
SKILL.mdпрепроцессится:
- Плейсхолдеры заменяются на реальные значения: $ARGUMENTS — все переданные аргументы; $N (или $ARGUMENTS[N]) — конкретный аргумент по индексу; ${CLAUDE_SKILL_DIR} — путь к папке скилла (критично для вызова скриптов независимо от рабочей директории); ${CLAUDE_SESSION_ID}, ${CLAUDE_EFFORT}.
- Отрабатывает динамическая инъекция (те самые !`команды`).
- Готовое тело SKILL.md добавляется в контекст.
Больше на этом уровне не грузится ничего — только тело
SKILL.md. Отсюда рекомендация: держать инструкцию в пределах 500 строк или 5000 токенов. Если какой-то кусок разрастается за ~100 строк — выносим его в папку
references, отдельным файлом с внятным именем (одна документация — один файл), а в
SKILL.mdдаём относительный путь:
references/api-docs.md. Важно именно указать путь в тексте инструкции (можно отдельным разделом «Справочные материалы»): если просто положить файл и упомянуть, что он «где-то есть», модель с большой вероятностью нагаллюцинирует его содержимое.
Уровень 3 — ресурсы по требованию
Файлы из
referencesв момент активации в контекст не попадают — только на этом, третьем уровне. Агент читает конкретный файл, лишь когда он понадобился: лежит десяток документов — подтянет ровно нужный, остальные не тронет.
Здесь же в дело идут
scripts. Но с ними Клод работает иначе, чем с документацией: файлы скриптов он никогда не читает — он их запускает и берёт результат. Предпочтительные языки — три: Python и JS (если не хватит библиотеки, модель доустановит её сама) и Bash (там доп. библиотек и нет, поэтому проблем не возникает). Чтобы вызвать скрипт независимо от рабочей директории, используем
${CLAUDE_SKILL_DIR}— Claude Code подставит абсолютный путь:
Деталь для тех, кто на Windows: в путях всё равно пишем прямые слэши (
/), а не обратные (
\).
Третья папка этого уровня —
assets: статические шаблоны, не текст и не скрипты. Договоры, коммерческие предложения, таблицы, схемы, картинки, шрифты. Обращаемся к ним из инструкции так же, как к
references:
assets/template.md.
Компакт: что переживает сжатие контекста
Компакт — это сжатие предыдущего диалога, когда у модели кончается контекстное окно. Со скиллами он обходится так:
- Уровень 1 (короткие описания в каталоге) — не страдает, остаётся и до, и после компакта.
- Уровень 2 (тело активированного скилла) — переезжает, но урезанным: остаются только первые 5000 токенов, остальное отрезается.
- Если до компакта активных скиллов было несколько, на все вместе выделяется суммарно 25 000 токенов; что не влезло — обрубается. Предпочтение отдаётся самым свежим — тем, что использовались последними.
Практический вывод из этого один и тот же: чем тоньше тело скилла и чем больше тяжёлого вынесено в
referencesи
scripts, тем меньше проблем и на старте, и после компакта.
Итог
Если убрать ореол волшебства, скилл — это папка с инструкцией и грамотный режим её подачи в контекст. Три вещи, которые стоит унести из статьи:
- Скилл ценен не текстом, а тем, вызовется ли он. За вызов отвечают name, description и when_to_use — вкладывайтесь в них в первую очередь, ключевое ставьте в начало описания.
- Тело держите тонким. До 500 строк / 5000 токенов; всё тяжёлое — в references (читается по требованию) и scripts (запускается, а не читается).
- Всё это работает ради одного — гигиены контекста. Не отупевшая от мусора в памяти модель просто работает лучше. В этом весь смысл скиллов, а не в магии.