Навыки
Системный промпт помощника аналитика растёт: как оформлять ТЗ, какие разделы обязательны, какой шаблон у нас в агентстве для таблицы требований. Скоро он занимает тысячи токенов, и большая их часть не нужна для конкретного вопроса. Навыки (Agent Skills) решают эту проблему: инструкции лежат отдельно, а модель читает их, только когда задача этого требует. В этом уроке разберём, как навыки устроены, как использовать их через API и чем они отличаются от инструментов.
Что такое навык
Навык — это папка с файлом SKILL.md и, при необходимости, дополнительными файлами: шаблонами, скриптами, справочниками. В начале SKILL.md — короткое описание: что навык делает и когда его применять. Дальше — подробные инструкции.
Работает это через постепенное раскрытие. В контексте модели постоянно живёт только короткое описание каждого навыка. Когда пользователь просит «оформи это ТЗ по нашему шаблону», модель по описанию понимает, что навык подходит, и читает полный файл. Если просят что-то другое, полный текст не загружается и токены не тратятся.
Если вы проходили курс по навыкам в Claude Code, формат вам знаком: там та же папка и тот же SKILL.md. Разница в том, где навык живёт и кто его загружает. В Claude Code — папка в репозитории, в API — контейнер выполнения кода, куда навык подключается параметром запроса.
Навыки в Messages API
В API навыки работают внутри контейнера выполнения кода: модель читает SKILL.md и запускает скрипты навыка там же, где выполняет код. Поэтому навыки подключаются вместе с инструментом code_execution, и на момент написания это делается через бета-эндпоинт с заголовком.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const response = await client.beta.messages.create({
model: "claude-opus-5",
max_tokens: 16000,
betas: ["code-execution-2025-08-25"],
container: {
skills: [{ type: "anthropic", skill_id: "xlsx", version: "latest" }],
},
tools: [{ type: "code_execution_20260521", name: "code_execution" }],
messages: [
{
role: "user",
content:
"Собери таблицу со статусом задач спринта для клиентского портала: " +
"колонки «Задача», «Ответственный», «Статус», «Срок». Данные: ...",
},
],
});Три части, без любой из которых запрос не сработает: бета-заголовок code-execution-2025-08-25, параметр container.skills со списком навыков и инструмент code_execution актуальной версии. Обратите внимание: версия типа здесь code_execution_20260521, она отличается от той, что мы использовали в прошлом уроке без навыков. Берите версию из документации, не по памяти.
Anthropic поставляет готовые навыки для офисных форматов: pptx (презентации), xlsx (таблицы), docx (документы), pdf. Именно они делают из «модель написала текст» полноценный файл, который можно отправить заказчику. Список доступных навыков отдаёт эндпоинт GET /v1/skills.
Что приходит в ответ
Навык вместе с выполнением кода создаёт файл в контейнере, а в ответе появляется ссылка на него — file_id в блоках результатов выполнения кода. Файл скачивается через Files API.
for (const block of response.content) {
if (block.type !== "bash_code_execution_tool_result") continue;
const result = block.content;
if (result.type !== "bash_code_execution_result" || !result.content) continue;
for (const item of result.content) {
if (item.type !== "bash_code_execution_output") continue;
const download = await client.files.download(item.file_id);
const bytes = Buffer.from(await download.arrayBuffer());
// сохранить bytes на диск под безопасным именем
}
}Как и в прошлом уроке, имя файла — вывод модели: берите базовое имя, пишите в отдельную папку.
Свои навыки
Готовые навыки покрывают форматы файлов. Для правил агентства нужны свои: шаблон ТЗ, стандарт оформления отчёта по спринту, чек-лист ревью. Такие навыки загружаются через Skills API (client.skills) и подключаются в container.skills по идентификатору. Формат SKILL.md тот же, что в Claude Code, так что навык, написанный для разработчиков, можно переиспользовать в боте клиентского портала. Точные параметры загрузки и версионирования смотрите в документации по навыкам: они уточняются, и переписывать их здесь по памяти было бы неправильно.
Хороший навык пишется как инструкция для нового сотрудника: сначала одна фраза «когда это применять», потом конкретные шаги, потом примеры. Описание в начале — самое важное: по нему модель решает, загружать ли остальное. Расплывчатое «помогает с документами» не сработает, точное «оформляет техническое задание по шаблону агентства: разделы, нумерация требований, таблица приоритетов» — сработает.
Навык, инструмент или промпт
Три механизма легко перепутать, поэтому разведём их.
Системный промпт — то, что нужно всегда: роль, тон, базовые ограничения. Короткий и стабильный (стабильность важна для кэширования, об этом в уроке про контекст).
Инструмент — действие во внешнем мире: получить diff, записать в трекер, отправить письмо. Инструмент что-то делает; навык объясняет, как делать.
Навык — знание для типовой задачи, которое нужно не всегда: шаблон, регламент, последовательность шагов. Загружается по требованию, может включать скрипты, которые модель запустит в контейнере.
Помощник аналитика в итоге выглядит так: короткий системный промпт («ты помощник аналитика продуктовой студии, отвечай по-русски, ссылайся на номера требований»), навык «оформление ТЗ» и навык docx для выгрузки результата, плюс инструмент для чтения задач из трекера. Каждая часть на своём месте, и контекст не раздут.
Ограничения
Навыки в API работают только вместе с выполнением кода, а значит, только на тех платформах, где оно доступно: проверьте документацию, если вы работаете не с API Anthropic напрямую, а через облачного провайдера. Навыки не заменяют инструменты и не дают модели доступ к вашим системам. И как всё, что загружается в контекст, содержимое навыка — это инструкции, которым модель будет следовать: храните навыки в репозитории с ревью, как код.
Попробуйте сами
10–15 мин на рабочем месте- Подключите навык
xlsxи попросите модель собрать таблицу из любых обезличенных данных вашего проекта. Скачайте файл и откройте его. - Напишите
SKILL.mdдля одной типовой задачи вашей команды: шаблон отчёта, регламент оформления баг-репорта, чек-лист перед релизом. Начните с описания в одну фразу и проверьте на коллеге, понятно ли, когда навык применять. - Возьмите системный промпт из любого своего эксперимента и разложите его на три части: что должно остаться в промпте, что стать навыком, что инструментом.
Коротко
- Навык — папка с
SKILL.md; в контексте живёт только описание, полный текст загружается по требованию. - В API навыки подключаются через
container.skillsвместе сcode_executionи бета-заголовкомcode-execution-2025-08-25. - Готовые навыки Anthropic (
pptx,xlsx,docx,pdf) создают файлы; результат скачивается через Files API поfile_id. - Свои навыки загружаются через Skills API; формат тот же, что в Claude Code.
- Промпт — всегда, инструмент — действие, навык — знание для типовой задачи по требованию.
- Навык — это инструкции для модели; храните его в репозитории с ревью.
Видеоверсия
Сценарий озвучки · 457 слов, ≈ 4 мин
Системный промпт помощника аналитика растёт. Как оформлять техзадание, какие разделы обязательны, какой у нас шаблон таблицы требований. Скоро он занимает тысячи токенов, большая часть которых не нужна для конкретного вопроса. Для этого есть навыки. В этом уроке разберём, как они устроены и как подключаются через API.
Навык — это папка с файлом инструкций и, при необходимости, шаблонами и скриптами. В начале файла короткое описание: что навык делает и когда его применять. Дальше подробности. Работает это через постепенное раскрытие. В контексте модели постоянно живёт только описание. Когда пользователь просит оформить техзадание по шаблону, модель по описанию понимает, что навык подходит, и читает полный файл. Если просят что-то другое, полный текст не загружается и токены не тратятся. Если вы проходили курс по навыкам в Claude Code — формат тот же самый. Разница в том, где навык живёт и кто его загружает.
В API навыки работают внутри контейнера выполнения кода: модель читает инструкции и запускает скрипты навыка там же, где выполняет код. Поэтому запрос состоит из трёх частей, без любой из которых он не сработает. Бета-заголовок для выполнения кода. Параметр «контейнер» со списком навыков. И инструмент выполнения кода актуальной версии — обратите внимание, версия здесь отличается от той, что мы использовали в прошлом уроке, берите её из документации.
Anthropic поставляет готовые навыки для офисных форматов: презентации, таблицы, документы, PDF. Именно они превращают «модель написала текст» в файл, который можно отправить заказчику. Например, просим собрать таблицу со статусом задач спринта для клиентского портала — и получаем настоящий файл Excel. В ответе он приходит как ссылка на файл в блоках результата выполнения кода, скачивается через Files API. Имя файла — вывод модели, так что берите только базовое имя и пишите в отдельную папку.
Готовые навыки покрывают форматы. Для правил агентства нужны свои: шаблон техзадания, стандарт отчёта по спринту, чек-лист ревью. Свои навыки загружаются через Skills API и подключаются по идентификатору. Точные параметры смотрите в документации — они уточняются. Пишется навык как инструкция для нового сотрудника: одна фраза «когда применять», потом шаги, потом примеры. Описание в начале — самое важное, по нему модель решает, загружать ли остальное. Расплывчатое «помогает с документами» не сработает.
Теперь разведём три механизма, которые легко перепутать. Системный промпт — то, что нужно всегда: роль, тон, базовые ограничения. Он короткий и стабильный. Инструмент — действие во внешнем мире: получить дифф, записать в трекер. Инструмент что-то делает. Навык — знание для типовой задачи, которое нужно не всегда: шаблон, регламент, последовательность шагов. Навык объясняет, как делать. Помощник аналитика в итоге — короткий промпт, навык «оформление техзадания», навык для выгрузки в документ и инструмент для чтения задач из трекера. Каждая часть на своём месте.
И два ограничения. Навыки в API работают только вместе с выполнением кода. И содержимое навыка — это инструкции, которым модель будет следовать, поэтому храните навыки в репозитории с ревью, как код. В следующем уроке подключим агента к внешним сервисам через MCP.
