Adaptive post-implementation phase verification through fresh subagents with S/M/L sizing (bug-fix → feature → architecture). Multi-agent pipeline with strict role zoning: Spec + Architecture (параллель) → Quality + Security + Forward-Look (параллель) → Adversarial Skeptic → fix → Regression Sweep → final report. Auto-scales 2 → 7 агентов в зависимости от размера фазы, чтобы не жечь токены на тривиальных правках. USE WHEN: an implementation phase is done and needs validation before moving to ...
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill phase-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Phase Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-phase-review)More formats (shields.io, HTML) on the badges page.
---
name: phase-review
description: >
Adaptive post-implementation phase verification through fresh subagents with
S/M/L sizing (bug-fix → feature → architecture). Multi-agent pipeline with
strict role zoning: Spec + Architecture (параллель) → Quality + Security +
Forward-Look (параллель) → Adversarial Skeptic → fix → Regression Sweep →
final report. Auto-scales 2 → 7 агентов в зависимости от размера фазы, чтобы
не жечь токены на тривиальных правках. USE WHEN: an implementation phase is
done and needs validation before moving to the next phase. Trigger phrases
(RU/EN): «ревью фазы», «проверь фазу», «валидация фазы», «проверь что
написал», «фаза готова», «phase review», «review phase», «verify phase»,
«validate phase». NOT for: PR/diff review (use differential-review), generic
code review (use code-review-skill). Includes built-in security audit,
architecture invariants check, forward-look stress test, adversarial paranoia
filter, and post-fix regression sweep — отдельный security-review запускать
не нужно. Integrates as Шаг 7 (Review) внутри Bulletproof. Specifically for:
post-phase verification in multi-phase implementation plans (MASTER-PLAN.md,
bulletproof workflow, SPARC phases). Based on Superpowers methodology
(obra/superpowers) + multi-agent zoning + adaptive sizing.
---
# Phase Review — Адаптивная многоэтапная верификация через свежих субагентов
## Почему именно так (не менять без причины)
Один агент с историей сессии психологически некритичен к своему коду. Свежий
субагент видит код так же, как его увидит следующий разработчик — без
предположений «что я имел в виду».
**Правило 1 — fresh subagents:** все Reviewer'ы — это всегда свежие субагенты.
Текущая сессия играет только роль оркестратора + исполнителя фиксов на Шаге 3.
**Правило 2 — зонирование агентов:** разные роли = разные агенты, чтобы глубина
анализа была максимальной. Ни один агент не делает двух ролей сразу.
**Правило 3 — adaptive sizing:** S/M/L по размеру фазы. Bug-fix не должен
прогонять полный 7-агентный pipeline — это перерасход. Архитектурное изменение
должно — иначе пропустим инвариант. Размер определяется автоматически на
Шаге 0.5; пользователь может override.
**Порядок (полный, для L-размера):**
1. Шаг 0 — Context preparation (текущая сессия)
2. Шаг 0.5 — Size detection (S/M/L)
3. Шаг 1 — Declarations Gate (параллель: 1A Spec + 1B Architecture)
4. Шаг 2 — Risk Profiles (параллель: 2A Quality + 2B Security + 2C Forward-Look)
5. Шаг 2.5 — Adversarial Skeptic (sequential)
6. Шаг 3 — Fix application (текущая сессия, только REAL findings)
7. Шаг 3.5 — Regression Sweep (sequential, fresh взгляд на diff фиксов)
8. Шаг 4 — Итоговый отчёт
**Какие шаги пропускаются на S/M — см. Шаг 0.5 ниже.**
---
## Шаг 0 — Подготовка контекста (текущая сессия, всегда)
```
Перед запуском ревью собери контекст:
1. ТЗ ФАЗЫ
Прочитай исходное ТЗ (CLAUDE.md, MASTER-PLAN.md или указанный файл).
Выведи одной строкой: что должна была сделать фаза.
2. ИЗМЕНЁННЫЕ ФАЙЛЫ
git diff --name-only HEAD~1 (или указанный диапазон).
git diff --shortstat — для оценки объёма.
3. КОМАНДА ТЕСТОВ
Если есть — зафиксируй.
4. PROJECT CONTEXT
- Приоритет фазы: ЗАПУСТИТЬ / ПРОДАТЬ / МАСШТАБИРОВАТЬ
- Объём в первый месяц: десятки / сотни / тысячи
- Стадия продукта: pre-MVP / MVP / production / scale
- Чувствительные участки в diff: auth, PII, платежи, ЭЦП,
файл-аплоад, raw SQL, внешние API, фоновые задачи
5. ФАЙЛ АРХИТЕКТУРНЫХ ИНВАРИАНТОВ
architecture/.../правила-нерушимые.md, ADR/, INVARIANTS.md.
Зафиксируй путь или отметь «нет».
6. ASSUMPTION LOG (заимствовано из Superpowers)
Запиши ключевые допущения, которые делал при реализации фазы:
«я предполагал, что X», «я считал, что Y не нужно».
Они передаются Skeptic'у для проверки.
```
---
## Шаг 0.5 — Size Detection (текущая сессия, новый)
Определяет S / M / L. От размера зависит, какие агенты запускаются и сколько
токенов потратится.
### Авто-детекция
```
S — SMALL (bug-fix, копипаста, правка текста):
условие: < 4 файлов И < 100 строк diff И нет sensitive-участков
триггер-слова: «фикс», «баг», «опечатка», «правка», «hotfix»
стоимость: 2-3 агента (~25-30% от L)
M — MEDIUM (фича, новый эндпоинт, рефакторинг):
условие: 4-15 файлов ИЛИ есть sensitive-участки ИЛИ
новый компонент/слой/таблица
триггер-слова: «фича», «новый функционал», «эндпоинт», «компонент»
стоимость: 4-6 агентов (~60-70% от L)
L — LARGE (архитектура, миграция, новый домен):
условие: > 15 файлов ИЛИ затронуты ≥3 модуля/слоя ИЛИ
миграция БД ИЛИ новый bounded context
триггер-слова: «архитектура», «миграция», «новый домен»,
«переписывание», «refactor across»
стоимость: 7 агентов (100%, при > 15 файлов — батчинг по 5-8)
```
### Override
Пользователь может задать явно:
- `/phase-review --size S` (или `M` / `L`)
- В тексте задачи: «прогони S-ревью», «полное L-ревью»
### Sensitive-bump
Если в diff затронуты sensitive-участки (auth/PII/платежи/ЭЦП/файл-аплоад/
raw SQL без ORM), **минимальный размер = M**. S автоматически апгрейдится
до M, чтобы security и forward-look не пропустить.
### Матрица: какой агент на каком размере
| Шаг | Роль | Агент | S | M | L |
|-----|---------------------|--------------------|---|---|---|
| 1A | Spec Compliance | `reviewer` | ✓ | ✓ | ✓ |
| 1B | Architecture Invar. | `system-architect` | — | ✓¹| ✓ |
| 2A | Code Quality | `code-analyzer` | ✓ | ✓ | ✓ |
| 2B | Security | `security-auditor` | ✓²| ✓ | ✓ |
| 2C | Forward Look | `perf-analyzer` | — | ✓ | ✓ |
| 2.5 | Adversarial Skeptic | `analyst` | — | ✓³| ✓ |
| 3 | Fix application | session | ✓ | ✓ | ✓ |
| 3.5 | Regression Sweep | `reviewer` (fresh) | ✓⁴| ✓⁵| ✓ |
| 4 | Final report | session | ✓ | ✓ | ✓ |
¹ — только если файл инвариантов существует, иначе ARCH_SKIP без агента.
² — на S запускается только при sensitive-bump (см. выше). Иначе пропуск.
³ — на M пропускается, если суммарно < 5 находок (нечего фильтровать).
⁴ — на S запускается только если применено ≥ 3 фиксов или хотя бы один
security-фикс.
⁵ — на M запускается, если применён хотя бы один фикс.
**Если ничего не поправили — Шаг 3.5 пропускается на любом размере.**
---
## Шаг 1 — DECLARATIONS GATE
Запусти **одним сообщением** субагентов согласно матрице. На S — только 1A;
на M/L — 1A + 1B параллельно.
### 1A — SPEC COMPLIANCE (агент `reviewer`)
```
Ты — скептичный Spec Reviewer. Проверяешь, что реализация соответствует ТЗ.
Не доверяешь отчётам исполнителя — читаешь реальный код.
КОНТЕКСТ ФАЗЫ: [текст ТЗ]
ИЗМЕНЁННЫЕ ФАЙЛЫ: [список]
ASSUMPTION LOG ИСПОЛНИТЕЛЯ: [допущения из Шага 0.6]
Прочитай каждый файл. Проверь:
1. ПОКРЫТИЕ ТЗ — что не реализовано или реализовано частично?
2. OVER-BUILDING — что реализовано, чего в ТЗ не было?
3. ПРОТИВОРЕЧИЯ — где реализация делает не то, что в ТЗ?
4. ASSUMPTION CHECK — допущения исполнителя соответствуют ТЗ или
противоречат ему?
Формат:
[ФАЙЛ: путь, строка]
Тип: [НЕ РЕАЛИЗОВАНО / ЛИШНЕЕ / ПРОТИВОРЕЧИЕ / ОШИБОЧНОЕ ДОПУЩЕНИЕ]
Критичность: [БЛОКЕР / СРЕДНЕ / МЕЛКО]
Статус: SPEC_PASS / SPEC_WARN / SPEC_FAIL
```
### 1B — ARCHITECTURE INVARIANTS (агент `system-architect`, M/L only)
```
Ты — Architecture Invariants Reviewer. Сверяешь только с инвариантами.
Это НЕ code review.
ФАЙЛ ИНВАРИАНТОВ: [путь]
ИЗМЕНЁННЫЕ ФАЙЛЫ: [список]
Извлеки правила (A-01, A-02, …). Для каждого изменённого файла —
проверь соблюдение каждого правила.
Формат:
[ПРАВИЛО: A-XX]
[ФАЙЛ: путь, строка]
Нарушение: [что]
Критичность: [БЛОКЕР / СРЕДНЕ / МЕЛКО]
Фикс: [как привести в соответствие]
Статус: ARCH_PASS / ARCH_FAIL / ARCH_WARN / ARCH_SKIP
```
**Если SPEC_FAIL или ARCH_FAIL → фикс → повторить Шаг 1 целиком.**
---
## Шаг 2 — RISK PROFILES
После прохождения Шага 1 — **одним сообщением** все профили согласно матрице.
S: только 2A (+ 2B если sensitive-bump). M/L: 2A + 2B + 2C параллельно.
### 2A — CODE QUALITY (агент `code-analyzer`)
```
Spec и Architecture проверены. Безопасность и forward-look — другие
агенты параллельно, не дублируй.
ИЗМЕНЁННЫЕ ФАЙЛЫ: [список]
СТЕК / СОГЛАШЕНИЯ: [из CLAUDE.md]
A — ЛОГИКА И БАГИ:
- Off-by-one, неверные операторы
- null / undefined / 0 / NaN / пустые коллекции
- async/await без обработки ошибок
- Неосмысленные ?? и || дефолты
- Возврат не того типа, что ожидает caller
B — СОВМЕСТИМОСТЬ С ПРОЕКТОМ:
- Конфликты имён, нарушения паттернов проекта
- Циклические зависимости, импорты несуществующего
- Несоответствия типов с другими частями
C — КРАЕВЫЕ СЛУЧАИ ЗДЕСЬ-И-СЕЙЧАС:
- Race conditions в одном запросе
- Внешний сервис вернул 500 — что сейчас?
- Memory leak в одной операции
Формат:
[ФАЙЛ: путь, строка][Категория: A/B/C]
Проблема, сценарий поломки, критичность, фикс.
Статус: QUALITY_PASS / QUALITY_FAIL
```
### 2B — SECURITY (агент `security-auditor`, S при sensitive-bump, M/L всегда)
```
ИЗМЕНЁННЫЕ ФАЙЛЫ: [список]
ЧУВСТВИТЕЛЬНЫЕ КОНТЕКСТЫ: [auth, PII, платежи, ЭЦП, …]
S1 — INJECTION / UNTRUSTED INPUT (SQL/XSS/cmd/path/SSRF/proto/deserialization)
S2 — AUTH / AUTHZ (отсутствие проверок, IDOR, JWT, привилегированные операции)
S3 — СЕКРЕТЫ И КРИПТО (hardcoded, MD5, IV, секреты в логах/bundle/responses)
S4 — DATA EXPOSURE / PII (поля в ответах, PII в логах, stack traces в prod)
S5 — DOS (rate limit, ReDoS, размер парсинга, циклы по user input)
S6 — DEPENDENCIES / SUPPLY CHAIN (CVE, абандонированные, URL-imports)
S7 — КОНТЕКСТНО-СПЕЦИФИЧНОЕ (webhook signature, ЭЦП цепочка, file upload AV/тип/размер,
webhook secret header, user-controlled в job payload)
Формат:
[ФАЙЛ: путь, строка][Раздел: S1..S7]
Класс уязвимости (CWE/OWASP), сценарий эксплуатации, критичность, фикс.
Статус: SECURITY_PASS / SECURITY_WARN / SECURITY_FAIL
```
### 2C — FORWARD LOOK (агент `perf-analyzer`, M/L only)
```
Spec, Quality, Security смотрят «работает ли сейчас». Ты — что сломается
под ростом и со временем.
ИЗМЕНЁННЫЕ ФАЙЛЫ: [список]
ТЕКУЩИЙ ОБЪЁМ: [десятки/сотни/тысячи]
ПРОФИЛЬ НАГРУЗКИ: [hot path / cold]
ОСЬ A — МАСШТАБ (×10 / ×100):
- N+1, отсутствие индексов, full scan
- O(n²) на user-controlled размере
- Нет пагинации/лимитов
- Синхронные внешние API в hot path
- Кеши без TTL / unbounded growth
ОСЬ B — ВРЕМЯ (через месяц):
- Логи/temp/кеши без ротации (диск)
- Connection / file handle leaks
- Stale data, протухающие кеши/токены
- Хардкоднутые даты, истекающие лимиты
- Сертификаты с истечением
- Schema drift после миграции
ОБЯЗАТЕЛЬНО ≥3 точки даже если блокеров нет.
Формат:
[ОСЬ: A/B][ФАЙЛ: путь, строка]
Точка слома, триггер, горизонт, критичность, митигация.
Статус: FORWARD_PASS / FORWARD_WARN / FORWARD_FAIL
```
**Если QUALITY_FAIL / SECURITY_FAIL / FORWARD_FAIL → фикс → повторить Шаг 2.**
---
## Шаг 2.5 — ADVERSARIAL SKEPTIC (агент `analyst`)
Запускается на L всегда; на M — если суммарно ≥5 находок; на S — пропускается.
```
Ты — Adversarial Skeptic. Не пишешь новых находок. Фильтруешь
существующие через project context. Цель — отделить РЕАЛЬНЫЕ риски
от теоретических.
PROJECT CONTEXT:
- Приоритет: [ЗАПУСТИТЬ / ПРОДАТЬ / МАСШТАБИРОВАТЬ]
- Объём в первый месяц: [N]
- Стадия: [pre-MVP / MVP / production / scale]
- Чувствительные контексты: [список]
ASSUMPTION LOG ИСПОЛНИТЕЛЯ: [из Шага 0]
СПИСОК НАХОДОК: [мерж Quality/Security/Forward]
Для каждой находки:
1. РЕАЛЬНО — конкретный сценарий с привязкой к нашим объёмам и стадии.
2. ПАРАНОЯ — теоретически возможно, но при наших объёмах не критично.
Правила:
- «Теоретически может» без сценария на наших объёмах = ПАРАНОЯ.
- «Сломается в первый месяц при заявленной аудитории» = РЕАЛЬНО.
- Security CRITICAL/HIGH не может быть параноей — даже на 10 пользователях.
- Завышенная критичность — снижай. Заниженная — повышай.
Формат:
[№][источник][оригинальная критичность]
Вердикт: РЕАЛЬНО / ПАРАНОЯ
Сценарий или причина пропуска.
Финальная критичность.
Статус: SKEPTIC_DONE
```
**ПАРАНОЯ-финдинги уходят в WARN-секцию отчёта, не в фиксы.**
---
## Шаг 3 — VERIFICATION & FIX (текущая сессия, всегда)
```
Применяй фиксы только по REAL финдингам.
Параноя — в отчёт, не в код.
Порядок:
SECURITY CRITICAL/HIGH (REAL) →
ARCH БЛОКЕР →
QUALITY КРИТИЧНО (REAL) →
FORWARD КРИТИЧНО (REAL) →
SECURITY MEDIUM →
QUALITY СРЕДНЕ →
FORWARD СРЕДНЕ
Правила:
- Одно изменение = одна проблема
- Запрещён рефакторинг и «пока уже здесь»
- Для security-фиксов — добавь негативный тест если есть тест-инфра
- Если при фиксе появилась новая проблема — она пройдёт через Шаг 3.5
- Если fixes = 0 — переходи сразу к Шагу 4 (Шаг 3.5 пропустится)
```
---
## Шаг 3.5 — REGRESSION SWEEP (свежий `reviewer`)
Запускается:
- L: всегда
- M: если применён хотя бы один фикс
- S: если ≥3 фикса или хотя бы один security-фикс
- На любом размере, если 0 фиксов — пропуск.
```
Не делаешь полного ревью. Смотришь ТОЛЬКО diff фиксов.
DIFF ФИКСОВ: [git diff между «до» и «после»]
ИСХОДНЫЙ СПИСОК REAL: [для проверки, что закрыто]
Ищи:
1. ЧТО НОВОГО — оцени с нуля, под видом фикса могли затащить баг.
2. РЕГРЕССИИ В СОСЕДНЕМ КОДЕ — изменения задели вызывающих? Проверь
импорты и вызывающих функций.
3. ФИКТИВНЫЕ ФИКСЫ — закрыта ли исходная проблема, или косметика?
Формат:
[ФАЙЛ: путь, строка]
Тип: [НОВЫЙ БАГ / РЕГРЕССИЯ В СОСЕДНЕМ / ФИКТИВНЫЙ ФИКС]
Критичность: [КРИТИЧНО / СРЕДНЕ]
Статус: REGRESSION_PASS / REGRESSION_FAIL
```
**REGRESSION_FAIL → фикс новых проблем → повторить Шаг 3.5.**
---
## Шаг 4 — ИТОГОВЫЙ ОТЧЁТ (текущая сессия, всегда)
```
Финальный отчёт фазы [НАЗВАНИЕ]:
РАЗМЕР: S / M / L (с обоснованием авто-детекции или пометкой override)
ГЕЙТЫ (только запущенные):
- Spec: [статус]
- Architecture: [статус или SKIPPED-по-размеру / ARCH_SKIP-нет-инвариантов]
- Quality: [статус]
- Security: [статус или SKIPPED-по-размеру]
- Forward: [статус или SKIPPED-по-размеру]
- Skeptic: [статус или SKIPPED-по-размеру]
- Regression: [статус или SKIPPED-нет-фиксов]
ИСПРАВЛЕНО (REAL):
- [категория] [проблема] — [что сделано] — [файл:строка]
ПАРАНОЯ (Шаг 2.5, если был):
- [проблема] — [почему теоретическая]
НЕ ИСПРАВЛЕНО (намеренно):
- [проблема] — [причина] — [когда вернуться]
WATCH-ТОЧКИ ИЗ FORWARD (если был):
- [точка] — [горизонт] — [когда мониторить]
ЗАТРОНУТЫЕ ФАЙЛЫ ВНЕ ИСХОДНОЙ ФАЗЫ:
- [файл] — [почему]
ГОТОВНОСТЬ К СЛЕДУЮЩЕЙ ФАЗЕ: ДА / НЕТ
```
---
## ПРАВИЛА СВЕРХУ
**Нельзя:**
- Запускать Шаг 2 до прохождения Шага 1
- Запускать Шаг 2.5 до завершения всех ревью Шага 2
- Запускать Шаг 3 до SKEPTIC_DONE (или до завершения Шага 2 если Skeptic пропущен)
- Запускать Шаг 3.5 до применения всех фиксов
- Использовать текущую сессию как любого Reviewer
- Объединять две роли Reviewer'ов в один промпт одному агенту
- Запускать параллельные шаги последовательно
- Фиксить ПАРАНОЯ-финдинги
- Игнорировать sensitive-bump (auth/PII/платежи без security = NO)
- Понижать размер ниже авто-детекции без явного override от пользователя
- Говорить «готово» без Шага 4 со всеми статусами
**Зонирование агентов (фиксированное):**
| Шаг | Роль | Агент | Запускается на |
|-----|---------------------|--------------------|----------------|
| 1A | Spec | `reviewer` | S, M, L |
| 1B | Architecture | `system-architect` | M, L |
| 2A | Quality | `code-analyzer` | S, M, L |
| 2B | Security | `security-auditor` | S(если sens), M, L |
| 2C | Forward Look | `perf-analyzer` | M, L |
| 2.5 | Skeptic | `analyst` | M(если ≥5), L |
| 3 | Fix | session | S, M, L |
| 3.5 | Regression | `reviewer` (fresh) | условно (см. матрицу) |
| 4 | Final report | session | S, M, L |
**Выбор модели:**
- Все Reviewer'ы — Opus
- Skeptic — Opus обязательно
- Regression Sweep — Sonnet достаточно (узкий scope)
- На S-размере допустимо Sonnet для Spec/Quality чтобы экономить
**Если фаза очень большая (> 15 файлов):**
Раздели на блоки по 5-8 связанных файлов. Прогони Шаги 1–3.5 для каждого
блока отдельно. Шаг 4 — единый отчёт по всей фазе.
---
## ИНТЕГРАЦИЯ С BULLETPROOF
Phase-review предназначен встать **внутри** Bulletproof как Шаг 7 (Review),
не заменять Bulletproof. Сопоставление размеров:
| Размер задачи | Bulletproof | phase-review | Что запускается |
|---------------|-------------|--------------|-----------------|
| Bug-fix | S (6 этапов) | S | 2-3 агента, ~30% токенов от L |
| Feature | M (10 этапов)| M | 4-6 агентов, ~70% токенов от L |
| Architecture | L (12 этапов)| L | 7 агентов, 100% (с батчингом если > 15 файлов) |
Размер phase-review **наследуется** от размера Bulletproof по умолчанию.
Override возможен в обе стороны — например, на критичную M-фичу с PII можно
поставить L-ревью.
**Когда phase-review может работать БЕЗ Bulletproof:**
- Ad-hoc задача без полного workflow
- Внешний код / pull request на ревью
- После SPARC-фазы
**Когда Bulletproof нужен ВМЕСТО phase-review:**
- Задача начинается с нуля (нет реализации, которую можно проверить)
- Нужна спецификация / тест-план / документация — это вне scope phase-review
---
## ЧТО ЗАИМСТВОВАНО ИЗ SUPERPOWERS (obra/superpowers)
- **Fresh subagent reviewer pattern** — основа всего скилла.
- **Subagent-driven development signals** (DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED) — для интеграции с агентом-исполнителем фазы.
- **Verification before claiming done** — Шаг 4 со статусами всех гейтов.
- **Assumption Log** — допущения исполнителя как явный артефакт (Шаг 0 → Шаг 1A → Шаг 2.5).
Намеренно НЕ заимствовано:
- Brainstorm phase (вне scope верификации).
- Pair programming live (наш скилл асинхронный, fresh subagent).
- Universal slash-commands от superpowers — у нас своя slash-команда `/phase-review`.
---
## СИГНАЛЫ СУБАГЕНТА-ИСПОЛНИТЕЛЯ
Если фаза делалась через Agent tool, исполнитель возвращает один из сигналов:
- DONE → запускать Шаг 0 → Шаг 0.5 → дальше по pipeline
- DONE_WITH_CONCERNS → прочитать замечания, оценить, потом Шаг 0
- NEEDS_CONTEXT → предоставить контекст и переотправить (ревью не запускать)
- BLOCKED → эскалировать в текущую сессию (ревью не запускать)
---
## АВТОМАТИЗАЦИЯ ЧЕРЕЗ STOPHOOK
Скилл можно вызывать из StopHook — автозапуск при завершении фазы и передаче
управления пользователю. На S-размере overhead минимален (~2-3 агента),
поэтому автозапуск экономически оправдан даже для bug-fix'ов.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!