05 / 06 · Best Practices

🦸 obra / Superpowers

Система Skills для CC — набор дисциплинарных протоколов, которые предотвращают ключевые ошибки AI-разработки: пропуск тестов, ложные "готово", непоследовательные решения, пропущенные шаги планирования.

🦸
obra (Jesse Vincent)
Creator of Superpowers Skills System for Claude Code
🦸 Ключевой принцип Superpowers
"Если есть 1% шанс что скилл применим к текущей задаче — ты ОБЯЗАН его вызвать." Это не рекомендация — это жёсткое правило системы. Скилл стоит несколько секунд, а предотвращает часы переделки. Неиспользование применимого скилла = нарушение протокола.
⚠️
Частая ошибка новичков: пишут правила в CLAUDE.md вместо Skills-скиллов и удивляются что CC их нарушает. CLAUDE.md — это пассивные инструкции которые CC читает и может «забыть» в середине сложной задачи. Skills — это активные протоколы: CC вызывает скилл и обязан пройти каждый шаг. Если ваши правила критичны (запуск тестов, проверка безопасности) — оформите их как скилл, а не просто как текст в CLAUDE.md.
Что такое Skills система

Скилл — это markdown-файл с набором правил и пошаговым процессом. При вызове через Skill tool Claude обязан следовать каждому шагу. Это обеспечивает дисциплину, которую невозможно получить простыми промптами: Claude не может "забыть" написать тест или пропустить верификацию.

💡
Тонкость для опытных: Skills особенно мощны когда они содержат чеклисты с явными проверками — не «убедись что тесты проходят», а «выполни npm test и покажи вывод, только продолжай если все тесты зелёные». Разница между описанием и обязательным действием критична: CC с удовольствием «помнит» что должен проверить тесты, но пропускает этот шаг под давлением сложного контекста. Обязательный шаг в скилле — не пропускается.

Практика 1: Философия Skills системы

Традиционный подход — написать правила в CLAUDE.md и надеяться что Claude их соблюдёт. Проблема: Claude читает правила, но в сложных задачах может "забыть" применить их, особенно в середине длинной цепочки действий.

Superpowers решает это иначе: вместо пассивных правил — активные протоколы. Скилл не просто описывает правила, он создаёт обязательную последовательность действий которую Claude должен пройти перед, во время и после задачи.

npm install -g superpowers-dev

# Или добавить скилл вручную в настройки Claude Code:
# Settings → Skills → Add Skill → вставить URL репозитория

Скилл вызывается через инструмент Skill в начале сессии:

// Перед реализацией фичи:
Skill: brainstorming
args: "новая система подписок для SaaS"

// Перед написанием кода:
Skill: writing-plans

// При написании кода с тестами:
Skill: test-driven-development
2
brainstorming — Socratic диалог перед любой работой

Самый частый источник плохих результатов с AI: разработчик не до конца продумал что хочет построить, а Claude строит не то. Скилл brainstorming решает это через Socratic questioning — один вопрос за раз.

"brainstorming обязателен перед любой реализацией. Он существует чтобы понять, что именно ты строишь, прежде чем начать строить это."

Как работает скилл:

  1. Claude задаёт уточняющие вопросы по одному — не все сразу
  2. Каждый ответ определяет следующий вопрос
  3. Диалог продолжается пока дизайн решения полностью не согласован
  4. Claude формулирует итоговый spec и просит подтверждения
  5. Только после явного user approval переходит к writing-plans

Результат сессии brainstorming автоматически записывается в файл:

docs/superpowers/specs/YYYY-MM-DD-feature-name.md

Этот файл становится основой для плана. Он хранится в проекте и может быть прочитан в будущих сессиях для восстановления контекста.

3
writing-plans — задачи по 2–5 минут с верификацией

После согласования дизайна скилл writing-plans создаёт детальный план выполнения. Ключевое ограничение: каждый шаг = 2–5 минут работы. Шаги не должны быть абстрактными.

## Фаза 1: База данных

### Шаг 1.1: Миграция subscriptions (3 мин)
Файл: database/migrations/2026_05_10_170000_create_subscriptions_table.php
Создать таблицу: id, user_id, plan, status, stripe_id, trial_ends_at, ends_at, timestamps

Верификация:
- [ ] php artisan migrate --pretend | grep subscriptions
- [ ] Нет конфликтов с существующими таблицами

### Шаг 1.2: Модель Subscription (2 мин)
Файл: app/Models/Subscription.php
Добавить: $fillable, $casts, belongsTo(User)

Верификация:
- [ ] php artisan tinker --execute="Subscription::query()->toSql()"

## Фаза 2: Сервисный слой

### Шаг 2.1: SubscriptionService (5 мин)
...

Требования к хорошему плану:

  • Точные file paths — не "создай сервис", а "создай app/Services/SubscriptionService.php"
  • Чекбоксы [ ][x] при выполнении — визуальный прогресс
  • Конкретная верификация — исполняемая команда, не "проверь что работает"
  • Зависимости явные — "только после завершения шага 2.1"
4
test-driven-development — RED-GREEN-REFACTOR обязательно

Скилл test-driven-development делает TDD не опциональным, а обязательным. Claude не может написать реализацию без красного теста.

🔴
RED
Написать тест который явно падает. Запустить — убедиться что красный. Нельзя пропустить этот шаг.
🟢
GREEN
Написать минимальную реализацию которая делает тест зелёным. Только минимальную — не оптимизировать.
🔵
REFACTOR
Только после зелёного теста — улучшить код. Тест должен оставаться зелёным после рефакторинга.

Что скилл предотвращает:

  • Написание "тестов" которые проверяют тривиальные вещи задним числом
  • Пропуск красной фазы ("тест явно упадёт, зачем проверять")
  • Преждевременную оптимизацию вместо прохождения теста
  • Рефакторинг без защитной сетки тестов
# RED: Написать тест который падает
test('subscription can be created for user', function () {
    $user = User::factory()->create();
    $service = app(SubscriptionService::class);

    $subscription = $service->subscribe($user, 'pro');

    expect($subscription)->toBeInstanceOf(Subscription::class)
        ->and($subscription->plan)->toBe('pro')
        ->and($subscription->user_id)->toBe($user->id);
});
# Запустить: КРАСНЫЙ (SubscriptionService не существует)

# GREEN: Создать минимальную реализацию
# Запустить: ЗЕЛЁНЫЙ

# REFACTOR: Улучшить не нарушая тест
5
verification-before-completion — блокирует ложные "готово"

Один из главных антипаттернов AI-разработки: Claude объявляет "готово" без реальной проверки. Скилл verification-before-completion создаёт жёсткий барьер.

"Claude не может объявить задачу завершённой без запуска верификации. 'всё работает' без proof — workflow заблокирован."

Что требует скилл перед завершением:

  • Тесты: реальный вывод npm test или php artisan test — не "тесты должны пройти"
  • Типы: вывод tsc --noEmit или phpstan analyse
  • Lint: вывод eslint / pint
  • Build: вывод npm run build если применимо

Если проверка показывает ошибки — Claude обязан их исправить перед объявлением завершения. Нельзя объявить "в целом работает, но есть несколько ошибок".

// Обязательный вывод перед "задача готова":

$ php artisan test --filter=Subscription
PASS  Tests\Feature\SubscriptionTest
✓ subscription can be created (45ms)
✓ subscription can be cancelled (32ms)
✓ active subscription status is correct (18ms)

Tests: 3 passed
Duration: 95ms

// Только после этого вывода — "задача завершена"
6
subagent-driven-development — two-stage independent review

Для сложных фич скилл subagent-driven-development запускает двухэтапную независимую проверку через отдельные sub-агенты. Это решает проблему "конфирмационного байеса" — когда агент, написавший код, видит его как правильный.

Первый sub-агент: проверка соответствия spec

  • Получает spec (из docs/superpowers/specs/) и реализацию
  • Отвечает на вопрос: "соответствует ли реализация spec?"
  • Не смотрит на качество кода — только на соответствие требованиям
  • Создаёт список расхождений

Второй sub-агент: проверка качества кода

  • Получает реализацию и примеры паттернов проекта
  • Отвечает на вопрос: "соответствует ли код конвенциям проекта?"
  • Не смотрит на spec — только на качество и стиль
  • Создаёт список нарушений паттернов

Два независимых взгляда с разными фокусами дают значительно более полную картину чем одна общая проверка.

Полная таблица ключевых скиллов

Скилл Когда вызывать Что предотвращает
brainstorming Перед любой новой фичей или значительным изменением Реализацию не того что нужно
writing-plans После согласования spec, перед кодом Хаотичную реализацию без структуры
test-driven-development При написании любого кода с тестами Код без тестовой защиты
systematic-debugging При поиске трудновоспроизводимого бага Случайные правки без понимания причины
verification-before-completion Перед объявлением "задача готова" Ложные "готово" без proof
subagent-driven-development После реализации сложной фичи Неполный или предвзятый code review
dispatching-parallel-agents При 2+ независимых задачах без shared state Последовательное выполнение независимых задач
using-git-worktrees При параллельных ветках разработки Смешение незавершённого кода разных фич
Главное отличие от CLAUDE.md правил

Правила в CLAUDE.md — это рекомендации. Claude их читает, но в длинных задачах может не применить. Скиллы — это обязательные протоколы: Claude не может перейти к следующему шагу без прохождения текущего. Разница между "знаю что надо написать тест" и "система не позволит пропустить тест".

Источник

Система Superpowers разработана и публично открыта в репозитории obra/superpowers. Репозиторий содержит полные исходники всех скиллов, документацию по установке и примеры использования. Система активно развивается и принимает contributions. Скиллы могут использоваться напрямую через CC или как основа для создания собственных дисциплинарных протоколов.