/ai / claude

skill-triggering

Чому скіл не спрацьовує, коли треба, і спрацьовує, коли не треба. Анатомія description, прогресивне розкриття, skill sprawl і як це тестувати.

Чому скіл не тригериться

Скіл — це не функція, яку викликають. Це опис, за яким модель вирішує сама, чи він зараз доречний. Тому 90 % проблем зі скілами — це проблеми одного поля: description.


Що насправді потрапляє в контекст

Частина скіла Коли вантажиться Скільки коштує
name + description завжди, на старті сесії ~30–80 токенів на скіл
тіло SKILL.md тільки після виклику повний обсяг файлу
references/*.md, скрипти, ассети тільки коли модель їх сама прочитає за фактом читання

Із цього все й випливає:

Окремо: при компакції тіла викликаних скілів реінжектяться з лімітом ~5k токенів на скіл і ~25k загалом, обрізка згори. Найважливіше має стояти на початку файлу.


Анатомія робочого description

Три обов'язкові частини:

  1. Що робить — одне речення, конкретно. Не «допомагає з документами», а «конвертує хоткеї зі скріна чи PDF у двомовну UA+ES шпаргалку для термопринтера».
  2. Коли тригерити — дослівні фрази, якими це просять. Українською, англійською, суржиком — як реально пишуть. Плюс /slash-name.
  3. Коли НЕ тригерити — і чим це відрізняється від сусіднього скіла. Це найчастіше пропускають, і саме звідси беруться помилкові спрацювання.
description: >
  Слайсить STL/3MF під принтер Primex 1 (320×320×320, PLA Mint дефолт),
  повертає gcode і час друку.
  Trigger: "слайсни", "наріж", "підготуй до друку", "хочу надрукувати",
  "/kiri-slicer", посилання на MakerWorld/Printables/Thingiverse,
  або вкладений файл .stl / .3mf.
  НЕ trigger: правки самого слайсер-сервера (там kiri-update),
  загальний шеринг файлів (kiri-files), моделювання в Blender.

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


Коли тригер має бути тільки ручний

disable-model-invocation: true тримає скіл повністю поза контекстом, поки його не викличуть як /name.

Ситуація Автотригер?
Скіл із сайд-ефектами (пише в прод, постить, шле повідомлення) Ні. Тільки /name.
Скіл, який тригериться на слово-омонім («карта», «атлас», «старт») Ні, або дуже вузький опис.
Довідковий/стильовий скіл, який має підхоплюватись сам Так.
Скіл, який Mark кличе рівно тоді, коли вимовляє його назву Ні — сенсу тримати опис у контексті нема.

Чому скіл не спрацьовує: діагностика

Симптом Причина Лікування
Не тригериться ніколи В описі нема тих слів, якими це реально просять Дописати дослівні фрази з реальних запитів
Тригериться замість сусіднього Описи перетинаються, нема «НЕ trigger» Розвести межу явно, з обох боків
Тригериться на пів чату Опис занадто загальний («допомагає з текстом») Звузити до конкретної ситуації
Спрацював, але зробив не те Проблема не в тригері, а в тілі Найважливіше — на початок SKILL.md
Працював, зламався після компакції Лістинг скілів компакцію не переживає Викликати явно /name після компакції
Ламається тільки в сабагенті Сабагент стартує холодним, без скілів батька Скоупити через skills: у фронтметрі агента

Skill sprawl

Типова картина: бібліотека на 40–80 скілів, з яких топ-5 дають більшість викликів, а решта — це податок на контекст у кожній сесії плюс шум, у якому модель обирає не те.

Що з цим робити:


Як це тестувати

Не «здається, тепер має працювати», а:

  1. Виписати 5 реальних формулювань, якими цю задачу просять. Своїми словами, з помилками, як пишеться о другій ночі.
  2. Виписати 3 формулювання сусідньої задачі, на які цей скіл спрацьовувати не повинен.
  3. Прогнати всі 8 у свіжій сесії й подивитись, що підхопилось.
  4. Правити тільки description, тіло не чіпати, поки тригер не стане чистим.

Ключове: свіжа сесія. У поточній модель уже знає, про що мова, і підхопить скіл навіть із поганим описом — тест буде брехливий.


Чекліст перед тим, як зберігати скіл

P.S. — закон збереження скілів

Скіли розмножуються за тією ж механікою, що й баш-аліаси. Спершу один, потім три, потім «ну це ж інший випадок», і от у тебе article, article-v2, article-podelu, article-podelu-short і article-final-REAL.

Різниця з аліасами в тому, що аліаси мовчать, поки їх не покликали, а скіли платять за себе оренду в кожній сесії. Це не інструменти в ящику — це підписки.

Найчесніший спосіб зробити ревізію: відкрити список і на кожному пункті вголос сказати, коли він спрацьовував востаннє. Пункти, на яких стає ніяково, — і є відповідь. Приблизно як із папкою «Прочитати пізніше».