Посмотрел хорошее видео Мэтта Покока о том, как писать свои скиллы. Он выделяет четыре этапа.
Как скилл вызывается
Когда я рассказываю о том, как можно вызывать скиллы, всегда упоминаю, что обычно сам знаю, какой скилл мне нужен. Поэтому не отдаю выбор на откуп агенту, а вызываю скилл сам через
/. Мэтт предлагает пойти дальше и. явно определять это на уровне самого скилла. То есть явно задавать поле disable-model-invocation, определяющее может ли модель вызывать скилл.Как устроен скилл
Структурно скилл состоит из шагов – что и в каком порядке делать – и референсов с правилами, определениями и примерами.
При этом
SKILL.md лучше держать небольшим. То, что нужно не при каждом запуске, стоит выносить в отдельные файлы и подключать через ссылки. Особенно это полезно для скиллов с ветвлением: в основном файле остается общая логика, а детали конкретной ветки загружаются только тогда, когда они действительно понадобились.Как управлять поведением агента
Одна из проблем со скиллами – модель не всегда ведёт себя так, как вы ожидаете, даже если инструкции вроде бы написаны явно. Чтобы реже с этим сталкиваться, Мэтт советует использовать ёмкие устоявшиеся термины. Они сразу задают модели понятный паттерн поведения. В видео он приводит
vertical slice; сюда же можно добавить source of truth или red-green-refactor.Ещё одна частая проблема – преждевременное завершение шага. Например, скилл plan сначала должен подробно расспросить пользователя, а затем только писать план. Но получается так, что агент быстро задаёт несколько поверхностных вопросов и сразу переходит к планированию.
Сначала стоит сделать критерий завершения шага более чётким. Если этого недостаточно – разделить процесс на несколько скиллов, чтобы следующие шаги не отвлекали модель от текущего. У Мэтта для этого есть отдельные
grill-with-docs и to-prd: первый отвечает за подробный сбор контекста, второй – за создание PRD.Как не дать скиллу разрастись
Нужно регулярно проверять, что каждая часть скилла всё ещё относится к его задаче, а одно и то же правило хранится в одном месте. Особенно если скилл редактируют разные люди.
Ну знаете, как бывает с кодом: я принёс свою логику, вижу что-то похожее выше, но не уверен, можно ли это менять, поэтому просто добавляю ещё один кусок. Со скиллами происходит то же самое – без регулярной чистки в них накапливаются дубли и устаревшие инструкции.
Чтобы проверить эти идеи на практике, можно использовать готовый скилл writing-great-skills. Я пока не пробовал, но будем посмотреть.
#ai