Test-driven development применён к написанию документации: сценарии давления через подагентов проверяют, действительно ли агенты следуют инструкциям.
npx -y skills add obra/superpowers --skill writing-skills --agent claude-codeНаписание скиллов — это TDD (разработка через тестирование), применённая к документации процессов.
Вы пишете тест-кейсы (сценарии давления с подагентами), наблюдаете их провал (базовое поведение), пишете скилл (документацию), наблюдаете прохождение тестов (агенты соблюдают правила) и рефакторите (закрываете лазейки).
Ключевой принцип: Если вы не наблюдали, как агент провалился без скилла, вы не знаете, учит ли скилл правильному.
Обязательный фон: Необходимо понимать superpowers:test-driven-development. Этот скилл адаптирует TDD к документации.
Скилл — это справочное руководство по проверенным техникам, паттернам или инструментам. Скиллы помогают будущим агентам находить и применять эффективные подходы.
Скиллы — это: многократно используемые техники, паттерны, инструменты, справочные руководства
Скиллы — это НЕ: нарративы о том, как вы однажды решили проблему
| Концепция TDD | Создание скилла |
|---|---|
| Тест-кейс | Сценарий давления с подагентом |
| Продакшн-код | Документ скилла (SKILL.md) |
| Тест провален (RED) | Агент нарушает правило без скилла (базовый уровень) |
| Тест проходит (GREEN) | Агент соблюдает правило при наличии скилла |
| Рефакторинг | Закрытие лазеек с сохранением соответствия |
Создавайте, когда:
Не создавайте для:
skills/
skill-name/
SKILL.md # Основной справочник (обязателен)
supporting-file.* # Только при необходимости
Плоское пространство имён — все скиллы в одном пространстве. Выносите в отдельные файлы тяжёлые справочники (100+ строк) и многократно используемые инструменты. Всё остальное — инлайн.
Frontmatter (YAML):
name и description (макс. 1024 символа)name: только буквы, цифры и дефисы (без скобок и спецсимволов)description: от третьего лица, описывает ТОЛЬКО когда использовать (НЕ что делает скилл). Начинать с «Use when...». Никогда не резюмировать процесс или рабочий процесс скилла---
name: Skill-Name-With-Hyphens
description: Use when [конкретные условия и симптомы]
---
# Название скилла
## Обзор
Что это? Ключевой принцип в 1–2 предложениях.
## Когда использовать
[Небольшая инлайн-блок-схема, если решение неочевидно]
## Основной паттерн
Сравнение до/после
## Быстрый справочник
Таблица или маркеры для быстрого поиска
## Реализация
Инлайн-код для простых паттернов
## Распространённые ошибки
Что идёт не так + исправления
КРИТИЧНО: Description = Когда использовать, а НЕ что делает скилл
Если description резюмирует рабочий процесс, агент может следовать описанию вместо чтения полного содержимого скилла. Тестирование показало: когда description изменили с резюме рабочего процесса на просто «Use when executing implementation plans» — агент корректно прочёл блок-схему и выполнил двухэтапный процесс ревью.
# ❌ ПЛОХО: резюмирует рабочий процесс
description: Use when executing plans - dispatches subagent per task with code review
# ✅ ХОРОШО: только условия запуска
description: Use when executing implementation plans with independent tasks in the current session
Используйте слова, которые агент мог бы искать: сообщения об ошибках, симптомы, синонимы, инструменты.
Активный залог, глагол первым: ✅ condition-based-waiting, а не async-test-helpers. Герундии хорошо работают для процессов.
Getting-started скиллы загружаются в КАЖДЫЙ разговор.
Переносите детали в --help инструментов, используйте перекрёстные ссылки на другие скиллы, сжимайте примеры.
Используйте блок-схемы только для: неочевидных точек принятия решений, цикличных процессов, выбора «A vs B».
Никогда для справочного материала → таблицы; примеров кода → блоки кода; линейных инструкций → нумерованные списки.
Один отличный пример лучше множества посредственных. Полный и рабочий код с комментариями «почему», из реального сценария. Не реализуйте на 5+ языках — вы хороши в адаптации.
НИ ОДИН СКИЛЛ БЕЗ ПРОВАЛЬНОГО ТЕСТА СНАЧАЛА
Написали скилл до теста? Удалите. Начните сначала. Отредактировали без теста? То же нарушение.
Без исключений: ни для «простых дополнений», ни для «обновлений документации». Удалить — значит удалить.
Запустите сценарий давления с подагентом БЕЗ скилла. Задокументируйте точное поведение: какие решения принял агент, какие рационализации использовал (дословно).
Напишите скилл, обращающийся к конкретным рационализациям. Запустите те же сценарии СО скиллом — агент должен соблюдать правила.
Агент нашёл новую рационализацию? Добавьте явный контраргумент. Повторяйте до пуленепробиваемости.
| Тип провала | Правильная форма | Неправильная форма |
|---|---|---|
| Нарушение правила под давлением | Запрет + таблица рационализаций + красные флаги | Мягкие рекомендации («предпочитайте...») |
| Результат неправильной формы | Позитивный рецепт или контракт: части вывода по порядку | Список запретов («не пересказывайте») |
| Отсутствует обязательный элемент | Структурный: поле REQUIRED в шаблоне | Прозаические напоминания рядом с шаблоном |
| Поведение зависит от условия | Условное на наблюдаемом предикате | Безусловное правило + исключения |
Запреты не работают для проблем формирования: под конкурирующим стимулом агенты «торгуются» с «не X». Рецепт не оставляет предмета для торга.
(Применяется только к дисциплинарным провалам — агент знает правило, но нарушает его под давлением.)
| Отговорка | Реальность |
|---|---|
| «Слишком просто для теста» | Простой код ломается. Тест занимает 30 секунд. |
| «Протестирую потом» | Тесты после = «что это делает?». Тесты сначала = «что должно делать?» |
| «Тесты после достигают тех же целей» | Нет. Разная природа. |
| Тип скилла | Метод тестирования | Критерий успеха |
|---|---|---|
| Дисциплинарный (правила) | Академические вопросы + сценарии давления + комбинация давлений | Агент соблюдает правило под максимальным давлением |
| Технический (как сделать) | Сценарии применения + варианты + тесты на пробелы | Агент успешно применяет технику |
| Паттерн (ментальные модели) | Распознавание + применение + контрпримеры | Агент верно определяет когда/как применить |
| Справочный (документация) | Поиск информации + применение + тестирование пробелов | Агент находит и правильно применяет информацию |
Фаза RED:
Фаза GREEN:
name и descriptionФаза REFACTOR:
После написания ЛЮБОГО скилла вы ДОЛЖНЫ остановиться и завершить процесс развёртывания. Не создавайте скиллы пакетами без тестирования каждого.
Создание скиллов — это TDD для документации процессов. Тот же железный закон: нет скилла без провального теста сначала. Тот же цикл: RED → GREEN → REFACTOR. Те же преимущества: лучшее качество, меньше сюрпризов, пуленепробиваемые результаты.