Студия ITSalt весь прошлый год переводила разработку на агентов и параллельно строила собственный фреймворк NaCl. Побочным продуктом этой работы стал скилл pepper-prompt-engineer — инструмент, который берёт произвольное описание задачи и собирает из него промпт по фиксированной структуре. Скилл реализован в формате Anthropic Agent Skills: папка с файлом SKILL.md и ресурсами, которую Claude подгружает автоматически, когда задача подходит под описание.
Главная идея — разделить два действия, которые люди обычно смешивают. Скилл не решает задачу. Он готовит промпт, который вы передадите другой модели, и уже та модель пишет код, генерирует слоганы или составляет программу праздника. Это разделение важно: хороший промпт требует одного типа мышления, выполнение задачи — другого.
| # | Блок | Содержание |
|---|---|---|
| 1 | Роль | Кем модель должна себя считать и для кого пишет ответ |
| 2 | Задача | Что сделать — одним коротким предложением |
| 3 | Контекст | Фон, входные данные, область работы |
| 4 | Критерии готовности | 3–5 проверяемых признаков готового результата |
| 5 | Шаги | Что делать по порядку |
| 6 | Ограничения | Чего не делать и что делать при нехватке данных |
| 7 | Способ рассуждения | Как модели думать над задачей |
| 8 | Формат ответа | Точная структура, длина, тон |
| 9 | Примеры | 1–3 образца желаемого ответа |
| 10 | Самопроверка | Что модель обязана проверить перед ответом |
Никитин выделил пять типичных проблем промптов, написанных второпях. Размытая цель — когда модель не понимает, что считать готовым результатом. Игнорирование особенностей конкретной модели — промпт под Claude хуже работает на Gemini и наоборот. Отсутствие инструкций по проверке фактов и расчётов. Нет защиты от галлюцинаций — когда данных не хватает, модель придумывает вместо того, чтобы спросить. И наконец, модель не сверяется с заданием перед ответом.
Под каждую из этих проблем в структуре промпта есть конкретный блок. Фреймворк вырос из публичного CRAFT (Context, Role, Action, Format, Target) и расширен до десяти позиций. Роль и аудитория, задача одним предложением, контекст и входные данные, критерии готовности, шаги, ограничения, способ рассуждения, формат ответа, примеры и самопроверка — в таком порядке, всегда. Восемь блоков обязательны даже если внутри одна строка. Исключение — шаги (на совсем простой задаче) и примеры (если формат очевиден без образцов).
Два блока заслуживают отдельного объяснения, потому что именно они закрывают самые частые провалы. Критерии готовности должны быть проверяемыми как тест: «текст должен быть интересным» не подходит, «не длиннее 280 символов, без хэштегов, с одним вопросом в конце» — подходит. Блок самопроверки — это тот же список критериев, повёрнутый к модели как чеклист: прежде чем выдать ответ, модель обязана пройтись по нему и переделать, если что-то не сошлось.
Перед выдачей промпт проходит через Python-скрипт с 18 автоматическими проверками. Скрипт смотрит, все ли обязательные блоки на месте, есть ли правило «не выдумывай при нехватке данных», уложился ли промпт в лимит длины, нет ли расплывчатого «сделай качественно» без метрики. Для Claude отдельно проверяется отсутствие капса и конструкций вроде «КРИТИЧЕСКИ ВАЖНО» — они снижают качество ответа. Среди тестов есть и обратная проверка: на простую просьбу «напиши факториал» скилл не должен реагировать вовсе.
Есть и логика обработки крупных задач. Если пользователь просит «собери CRM с аналитикой и биллингом», скилл не пытается упаковать это в один промпт. Он предлагает три варианта: собрать промпт под урезанную первую версию, разбить задачу на части самостоятельно или собрать как есть — с явной пометкой, что результат будет поверхностным. Вопросы скилл задаёт только тогда, когда без ответа промпт не собрать — например, если пользователь ссылается на код, которого скилл не видел. Всё остальное — роль, тон, длину — он решает сам и фиксирует в секции «что я решил за тебя».
Промпты генерируются на английском: инструкции на нём модели исполняют стабильнее, и они короче в токенах. Язык ответа жёстко задаётся первой строкой — «Respond to the user in Russian». Автор приводит два примера из реальной практики: программа для детского палаточного лагеря на Селигере (целевая модель — Claude) и рекламные концепции для детского бренда одежды под ИИ-видеопайплайн (целевая модель — GPT). Оба промпта опубликованы без купюр.
