Skip to main content
Зміст гайду

Зміст гайду

Час на вивчення: 16 хв
#ai_agents#claude#code#skills#hooks#prompting#mcp
Середній16 хв

Як правильно створювати Skills для Claude Code: від архітектури до тестування

Вичерпне інженерне керівництво зі створення Skills для Claude Code: анатомія папок і SKILL.md, поетапне завантаження (progressive disclosure), відмінності від хуків та evaluation-driven підхід.

Опубліковано:

1. Що таке Skill і чому це повноцінний програмний артефакт

Skill (навичка) у Claude Code — це стандартизований модульний пакет знань, що містить опис робочого процесу (workflow), набір доменних правил, процедур або виконуваних скриптів, які ШІ-агент автоматично підвантажує для вирішення конкретного класу завдань. Замість того щоб інженер щоразу вручну копіював довгі інструкції у кожну нову сесію, агент самостійно розпізнає намір користувача та активує відповідний Skill.

Головна відмінність Skill від традиційного програмного коду полягає в тому, що рішення про його активацію приймає сама мовна модель на основі семантичного зіставлення опису навички із запитом користувача. Це рішення є ймовірнісним: тут немає компілятора чи строгої типізації, тому точність формулювання метаданих безпосередньо визначає, чи буде навичка активована в потрібний момент.

mermaid
flowchart TD subgraph Invocation ["Активація навички"] Prompt["Запит користувача"] --> Matcher{"Семантичне зіставлення (LLM)"} Meta["Frontmatter name + description<br><i>(~100 токенів на старті)</i>"] --> Matcher Matcher -->|Збіг наміру| Load["Підвантаження SKILL.md у контекст"] Matcher -->|Немає збігу| Normal["Стандартне виконання без навички"] end subgraph Execution ["Пайплайн виконання"] Load --> Steps["Виконання покрокових інструкцій"] Steps --> Scripts["Запуск локальних скриптів (bash/python)"] Steps --> Refs["Читання довідкових файлів (references/)"] Scripts & Refs --> Result["Фінальний артефакт / код"] end

Чому Skill є інженерним артефактом, а не звичайним текстом

  1. Версіонування та модульність: Навичка складається зі стандартних файлів репозиторію, зберігається в git і розвивається за тими ж законами, що й прикладний код.
  2. Розподіл інтерфейсу та реалізації: Поле description у frontmatter виступає публічним інтерфейсом навички, тоді як тіло SKILL.md та вкладені скрипти є її внутрішньою реалізацією.
  3. Композиційність: Навичка може викликати зовнішні інструменти через MCP, запускати консольні утиліти та делегувати підзадачі іншим навичкам чи субагентам.
  4. Вразливість до регресій: Неграмотно змінений опис може призвести до "мовчазної відмови" (skill перестає активуватися) або до галюцинацій при виконанні кроків.
Примітка

Специфікація Agent Skills, запропонована Anthropic, є відкритим форматом. Навички, оформлені відповідно до цього стандарту, сумісні не лише з Claude Code, а й з іншими передовими інструментами автоматизації розробки.


2. Структура файлів і директорій: SKILL.md, скрипти та довідкові ресурси

Навичка являє собою структуровану папку у файловій системі, обов'язковим ядром якої є файл SKILL.md. Залежно від складності завдання навичка може доповнюватися допоміжними скриптами, довідниками та шаблонами.

Архітектура навички: інтерфейс, реалізація, ресурси в комплекті та зовнішні інструменти ЗбільшитиАрхітектура навички: інтерфейс, реалізація, ресурси в комплекті та зовнішні інструментиАрхітектура навички: інтерфейс, реалізація, ресурси в комплекті та зовнішні інструменти

Рівні зберігання навичок у Claude Code

  • Глобальні навички (~/.claude/skills/): Доступні розробнику в усіх проєктах на поточній машині. Ідеально для персональних утиліт, персональних шаблонів комітів чи аналітичних скриптів.
  • Проєктні навички (.claude/skills/): Зберігаються безпосередньо в репозиторії проєкту та комітяться в git. Доступні всім членам команди, гарантуючи єдині стандарти архітектури та тестування.

Рекомендована структура складної навички

text
.claude/skills/release-notes/ ├── SKILL.md # Обов'язковий: метадані та інструкції ├── changelog-style.md # Ресурс: правила оформлення списку змін └── scripts/ └── gather-prs.py # Виконуваний скрипт: збір злитих PR через API

Мінімальна навичка може складатися лише з одного файлу SKILL.md. Більші системи упаковують у директорію навички власні скрипти автоматизації та документацію, що дозволяє тримати логіку компактною та самодостатньою.


3. Правила оформлення Frontmatter: name та description

Файл SKILL.md обов'язково починається з блоку метаданих у форматі YAML Frontmatter. Це єдина частина навички, яку Claude зчитує під час ініціалізації сесії для побудови каталогу доступних дій.

yaml
--- name: release-notes description: Drafts release notes from merged pull requests between two git tags. Use when cutting a release or updating the changelog. ---

Формальні обмеження на ім'я (name)

  • Довжина не більше 64 символів.
  • Дозволені лише малі латинські літери, цифри та дефіси ([a-z0-9-]).
  • Заборонено використання будь-яких XML/HTML-тегів.
  • Заборонено використовувати зарезервовані назви компанії (claude, anthropic).

Формальні обмеження на опис (description)

  • Обов'язкове непорожнє поле.
  • Довжина не більше 1024 символів.
  • Заборонено використання XML-тегів.
  • Має чітко описувати як функціонал навички, так і контекстні тригери для її активації.
ПолеДопустимий прикладНеприпустимий прикладЧому заборонено
namedb-migrate-helperClaude-DB-Helper!Великі літери, спецсимволи та зарезервоване слово claude
namedeploy-stagingdeploy_<staging>Заборонені символи підкреслення та кутові дужки
descriptionGenerates API documentation from Express routes. Use when updating docs.A tool for APIЗанадто короткий і неконкретний опис, відсутні тригери запуску
Увага

Якщо навичка повинна запускатися виключно за явною командою користувача і не повинна спрацьовувати автоматично, її автоматичний виклик можна обмежити, перетворивши навичку на детерміновану слеш-команду.


4. Поетапне завантаження (Progressive Disclosure) та контекстне вікно

Skills не завантажуються в контекстне вікно моделі повністю під час запуску сесії. Claude Code використовує принцип поетапного завантаження (Progressive Disclosure), розбитий на три чіткі рівні.

Лінійний пайплайн обробки запиту моделлю та контекстне вікно ЗбільшитиЛінійний пайплайн обробки запиту моделлю та контекстне вікноЛінійний пайплайн обробки запиту моделлю та контекстне вікно
mermaid
flowchart LR L1["Рівень 1: Метадані<br><i>(~100 токенів, читається завжди)</i>"] -->|Тригер збігу| L2["Рівень 2: Тіло SKILL.md<br><i>(~1-3k токенів, читається за потреби)</i>"] L2 -->|Посилання у кроках| L3["Рівень 3: Ресурси та скрипти<br><i>(0 токенів до виклику або запуску)</i>"]

Три рівні завантаження

  1. Рівень 1 — Метадані (Metadata): Імена та описи всіх доступних навичок завантажуються в системний контекст на початку сесії. Витрати становлять близько 100 токенів на навичку. Це дозволяє підключати десятки навичок до проєкту без ризику вичерпати ліміт контексту.
  2. Рівень 2 — Тіло файлу (Body): Коли модель вирішує, що запит користувача відповідає опису навички, вона зчитує вміст SKILL.md. Рекомендований розмір тіла — до 500 рядків, щоб не витісняти робочу історію діалогу.
  3. Рівень 3 — Вкладені файли та скрипти (Resources): Довідкові файли (references/) зчитуються лише тоді, коли інструкція безпосередньо посилається на них. Скрипти здебільшого запускаються через bash-інтерпретатор: їхній код взагалі не потрапляє в контекстне вікно, повертається лише фінальний результат виконання.

5. Формулювання description: створення надійних тригерів активації

Оскільки description є головним тригером ймовірнісного спрацювання, його формулюванню слід приділяти особливу увагу.

Правила побудови ефективного опису

  • Тільки третя особа: Пишіть опис від третьої особи (Generates, Performs, Audits). Модель сприймає опис як системну специфікацію інструменту; займенники першої чи другої особи (I will, You can) погіршують якість зіставлення.
  • Формула «Що + Коли»: Опис повинен чітко відповідати на два питання: що саме робить навичка і в яких ситуаціях її необхідно застосовувати.
  • Реальні ключові слова: Включайте специфічні технічні терміни, назви файлів або команд, які користувач гарантовано згадає у своєму запиті.

6. Анатомія еталонного Skill: покроковий розбір пайплайну release-notes

Розглянемо практичну архітектуру навички автоматизації релізної документації release-notes.

Покроковий пайплайн виконання навички release-notes з аргументами та ресурсами ЗбільшитиПокроковий пайплайн виконання навички release-notes з аргументами та ресурсамиПокроковий пайплайн виконання навички release-notes з аргументами та ресурсами

Складові елементи робочого процесу

  • Вхідні параметри: Аргументи користувача (діапазон тегів v1.2.0..v1.3.0), довідковий посібник зі стилю changelog-style.md, допоміжний скрипт gather-prs.py.
  • Покрокова послідовність у SKILL.md:
    1. Визначити діапазон релізних тегів у git.
    2. Запустити скрипт python scripts/gather-prs.py для отримання структурованого списку комітів.
    3. Згрупувати зміни за категоріями (Features, Fixes, Performance, Breaking Changes).
    4. Підготувати драфт відповідно до стилю в changelog-style.md.
    5. Записати оновлений блок у CHANGELOG.md та вивести коротке резюме.
  • Вихідні артефакти: Оновлений файл CHANGELOG.md та стисле повідомлення для команди.

Архітектурні правила для тіла файлу

  1. Не повторюйте загальновідомі речі: Вважайте, що Claude вже є кваліфікованим інженером. Описуйте лише специфіку вашого проєкту та суворі корпоративні вимоги.
  2. Глибина посилань — лише один рівень: Довідкові файли не повинні посилатися ланцюжком на інші файли. Всі матеріали мають бути безпосередньо прив'язані до SKILL.md.
  3. Кросплатформні шляхи: Завжди використовуйте прямі слеші (/) у всіх шляхах до файлів та конфігурацій.

7. Ландшафт кастомізацій: Skills, CLAUDE.md, Slash-команди, MCP, хуки та плагіни

У Claude Code існує кілька інструментів керування поведінкою агента. Помилковий вибір механізму — найпоширеніша причина ненадійності системи.

Матриця механізмів кастомізації Claude Code: хто визначає запуск проти сили впливу ЗбільшитиМатриця механізмів кастомізації Claude Code: хто визначає запуск проти сили впливуМатриця механізмів кастомізації Claude Code: хто визначає запуск проти сили впливу
МеханізмХто ініціює запускСила впливуОптимальний сценарій використання
CLAUDE.md (Memory)Рантайм (завжди в контексті)РекомендаційнаКороткі загальні правила проєкту, стек технологій, базові команди
SkillМодель (семантично) або людинаРекомендаційнаСкладні доменні процедури, робочі процеси з вкладеними скриптами
Slash-командаКористувач (через /команда)РекомендаційнаЗбережені інтерактивні шаблони промптів, які викликаються вручну
SubagentМодель або користувачІзольованаДелегування незалежної об'ємної задачі в окреме контекстне вікно
MCP ToolМодель (через Tool Call)ВиконавчаПряма взаємодія із зовнішніми базами даних та хмарними API
HookРантайм (детерміновано)БлокувальнаЖорсткі перевірки безпеки, лінтери перед комітом, валідація дій
PluginКористувач (інсталяція)КомплекснаПакетне поширення набору навичок, MCP-серверів та хуків для команди
Важливо

Лише механізми, керовані безпосередньо рантаймом (наприклад, хуки), здатні надати абсолютну гарантію виконання та блокування небажаних дій. Текстова інструкція всередині Skill залишається рекомендацією, якої модель дотримується ймовірнісно.


8. Skills проти Hooks: баланс між рекомендаціями та гарантіями рантайму

Початківці часто намагаються використати Skills для завдань безпеки чи примусового форматування коду. Це концептуальна помилка: навичка не гарантує виконання, вона лише навчає модель правильному підходу.

Життєвий цикл виконання сесії Claude Code та точки інтеграції хуків і навичок ЗбільшитиЖиттєвий цикл виконання сесії Claude Code та точки інтеграції хуків і навичокЖиттєвий цикл виконання сесії Claude Code та точки інтеграції хуків і навичок

Точки життєвого циклу виконання

  • SessionStart (Хук): Спрацьовує під час відкриття сесії. Гарантує ініціалізацію змінних середовища чи попередню перевірку гілки git.
  • Розмірковування моделі (Можливе читання Skill): Модель аналізує завдання та приймає рішення щодо завантаження тіла SKILL.md.
  • PreToolUse (Хук, блокувальний): Виконується безпосередньо перед викликом будь-якого інструменту. Може перевірити команду bash і заблокувати її виконання (код повернення 2), якщо вона порушує правила безпеки.
  • PostToolUse (Хук): Аналізує результат виконання команди або модифікації файлу (наприклад, автоматично запускає Prettier після запису файлу).
  • Stop (Хук): Спрацьовує після завершення генерації відповіді моделлю.
text
Золоте правило вибору: - Якщо дія вимагає гнучкого інженерного мислення та контексту ──► Створюйте SKILL - Якщо дія повинна виконуватися безумовно і без винятків ──► Налаштовуйте HOOK

9. Процес розробки через оцінку (Evaluation-Driven Development)

Створення надійної навички вимагає ітеративного тестування на реальних сценаріях ще до написання фінального тексту інструкцій.

Чотири етапи створення навички

  1. Фіксація базового рівня (Baseline): Запустіть Claude Code на типових робочих завданнях без навички. Зафіксуйте, де саме модель помиляється, пропускає кроки або вимагає додаткових роз'яснень.
  2. Створення тестових кейсів (Eval Suite): Перетворіть зафіксовані помилки на перелік контрольних завдань із чітко визначеними очікуваними результатами.
  3. Написання мінімального тексту (MVP): Сформулюйте мінімальний набір інструкцій у SKILL.md, достатній для успішного проходження тестів.
  4. Ітеративне шліфування: Додавайте правила та винятки лише у відповідь на конкретні провали тестових кейсів, уникаючи роздування контексту.

Робочий процес із двома екземплярами моделі

Під час проєктування навички рекомендується використовувати два паралельні термінали:

  • Екземпляр-редактор: Сесія, де ви спільно з Claude формулюєте, доповнюєте та структуруєте текст нової навички.
  • Екземпляр-тестувальник: Чиста сесія, де ви запускаєте тестові запити та перевіряєте: чи підхоплюється навичка автоматично, чи правильно інтерпретуються кроки і чи валідні результуючі файли.

10. Типові патерни проектування та антипатерни при створенні Skills

Практичний досвід спільноти виділив низку перевірених шаблонів та типових помилок, яких слід уникати.

Ефективні інженерні патерни

  • Пронумеровані детерміновані послідовності: Для складних багатоетапних дій завжди структуруйте кроки у вигляді 1. ..., 2. ..., 3. ....
  • Вбудовані чек-листи валідації: Для критичних операцій додавайте чек-лист, який модель повинна скопіювати у відповідь та відмічати за мірою виконання.
  • Цикли самоперевірки (Verify & Fix): Задавайте правило: «Запустити лінтер -> виправити помилки -> перевірити повторно до чистого виводу».
  • Планування перед деструктивними діями: Для операцій пакетного видалення чи перезапису файлів вимагайте спочатку сформувати план змін у markdown-таблиці та запросити підтвердження.

Поширені антипатерни

  • Параліч вибору: Опис надмірної кількості альтернативних бібліотек чи підходів без зазначення варіанту за замовчуванням.
  • Неоголошені системні залежності: Використання сторонніх CLI-утиліт або npm-пакетів без попередньої інструкції щодо їх встановлення чи перевірки наявності.
  • Зворотні слеші у шляхах: Використання бекслешів у стилі Windows (src\utils\), що спричиняє збої на Linux та macOS.
  • Непояснені магічні числа: Використання констант або тайм-аутів без коментаря щодо їхньої природи.

11. Безпека та аудит сторонніх Skills перед встановленням

Будь-яка стороння навичка — це виконуваний код у вашому робочому середовищі. Оскільки Claude Code має доступ до файлової системи, терміналу та мережі, неперевірений Skill несе серйозні ризики безпеки.

Чек-лист аудиту сторонньої навички перед використанням

  • Аналіз тіла SKILL.md: Перевірте текст на наявність прихованих інструкцій із prompt injection, спроб викрадення .env файлів чи відключення захисних механізмів.
  • Аудит вкладених скриптів: Уважно вивчіть усі файли в каталозі scripts/. Переконайтеся, що скрипти не здійснюють підозрілих мережевих запитів на сторонні сервери.
  • Перевірка зовнішніх URL: Зверніть увагу на будь-які посилання на завантаження зовнішніх бінарних файлів або динамічних конфігурацій.
  • Ізольоване тестування: Перший запуск сторонньої навички завжди здійснюйте у тестовому репозиторії або пісочниці без доступу до продакшн-секретів.
Цей гайд повністю безкоштовний. Якщо він зекономив вам вечір — ви можете підтримати розвиток проєкту.
Підтримати автора