name: dwrb description: Runs the development cycle with bmad-cis-problem-solving instead of task-decomposer: problem-solving (diagnosis, root cause, solutions, implementation plan) → task-worker → work-reviewer with fix loop. Use when the user wants systematic problem analysis before implementation, or when they say "dwrb", "цикл с problem solving".
DWRB: Цикл разработки с Problem Solving
Запускает полный цикл, где вместо task-decomposer используется bmad-cis-problem-solving. Пользователь проходит диагностику проблемы, root cause analysis, генерацию решений и план реализации. Результат (problem-solution-{date}.md) становится источником подзадач для воркеров.
Подзадачи из problem-solving выполняются параллельно по волнам (аналогично DWR). Fix loop использует task-decomposer (превращение замечаний ревью в задачи).
Роль оркестратора: только управление (строго)
Оркестратор выполняет только:
- Создаёт/обновляет
session.md,task.md. - Запускает problem-solving workflow (шаг 1) или суб-агентов (шаги 2–4).
- Извлекает подзадачи из
problem-solution-{date}.mdи формируетdecomp_r0.md. - Читает артефакты и мержит их в
session.md.
ЗАПРЕЩЕНО оркестратору
- Читать файлы кодовой базы (кроме parsing problem-solution)
- Искать код или символы
- Анализировать архитектуру
- Писать реализацию
- Проводить ревью кода
Когда применять
- Пользователь хочет «цикл с аналитикой» / «dwrb» / «problem solving перед кодом»
- Задача сложная или неясная — нужна диагностика перед реализацией
- Нужно пройти: problem-solving → реализация → ревью
Порядок выполнения
Шаг 0: Создание директории сессии
Аналогично DWR:
- Определить следующий номер:
task/→ max(NNN) + 1 (или 001). - Создать
task/{NNN}_{YYYY-MM-DD_HHmmss}/. - Записать
task.mdс исходной задачей пользователя. - Создать
session.md:
# Session {NNN}_{datetime}
## Task
[исходная формулировка]
## Status
in_progress
## Round
0
Шаг 1: Запуск «bmad-cis-problem-solving» — систематический анализ проблемы
Выполнить workflow problem-solving (в текущем контексте агента):
- Загрузить полностью
@{project-root}/_bmad/core/tasks/workflow.xml. - Прочитать его содержимое.
- Передать
workflow-config=@{project-root}/_bmad/cis/workflows/problem-solving/workflow.yaml. - Передать data attribute =
task/{NNN}_{datetime}/task.md— контекст задачи для первого шага workflow (workflow загрузит его при «Load any context data provided via the data attribute»). - Следовать инструкциям workflow.xml для выполнения problem-solving workflow.
Вход для workflow: Исходная задача из task.md — начальная формулировка проблемы. При вопросе «What problem are you trying to solve?» использовать её (при наличии data — контекст уже загружен).
Результат: файл _bmad-output/problem-solution-{date}.md (дата в формате YYYY-MM-DD).
Чекпоинты workflow: После каждого template-output workflow.xml предлагает:
- [a] Advanced Elicitation — углубить секцию через elicitation-методы (
_bmad/core/workflows/advanced-elicitation/workflow.xml). - [c] Continue — продолжить к следующему шагу.
- [p] Party-Mode — обсуждение с несколькими BMAD-агентами (
_bmad/core/workflows/party-mode/workflow.md). - [y] YOLO — пропустить все подтверждения до конца workflow, завершить автоматически (режим неинтерактивный/быстрый).
Дождаться завершения workflow. Сохранять вывод после каждого шага. После шага 9 или при завершении — перейти к шагу 1б.
Шаг 1б: Извлечение подзадач из problem-solution
Оркестратор читает _bmad-output/problem-solution-{date}.md и формирует task/{NNN}_{datetime}/decomp_r0.md в формате, совместимом с DWR.
Источники подзадач (по приоритету):
- Implementation Plan > Action Steps — каждый пункт списка = подзадача.
- Implementation Plan > Changes Made — каждая строка таблицы (Task + Change) = подзадача.
- Recommended Solution — если Action Steps / Changes Made пусты, каждый пункт списка = подзадача.
Формат decomp_r0.md:
## Complexity
lite | full
Причина: из problem-solving; {N} подзадач, {F} файлов
- lite: ≤5 подзадач, 1–2 файла.
- full: 6+ подзадач или 3+ файлов.
## Подзадачи
**Подзадача 1: [название из Action Step / Changes Made]**
- Зависимости: нет
- Критерий: [из Success Criteria или сформулировать по контексту]
- Файлы: [из Problem Context / Implementation Plan]
**Подзадача 2: ...**
...
## Волны
**Волна 1 (параллельно):** Подзадачи 1, 2, ... — [все без зависимостей или одна волна по умолчанию]
По умолчанию: одна волна со всеми подзадачами, если в документе не указаны явные зависимости. Если разные подзадачи затрагивают один файл — группировать в одну волну (один воркер получает список изменений для файла).
После формирования decomp_r0.md:
- Добавить в
session.mdсекцию## Decomposition Round 0(краткое резюме). - Обновить
Status→in_progress.
Routing Gate (после decomp_r0.md — обязательно)
Читать ## Complexity из decomp_r0.md и выбрать ветку:
| Complexity | Ветка | Модель | Fix loop |
|---|---|---|---|
| nano | Шаг 2-nano + Шаг 3-adversarial | fast | нет |
| lite | Шаг 2 + Шаг 3-lite + Шаг 3-adversarial | fast | max 1, только CRITICAL |
| full | Шаг 2 + Шаг 3 + Шаг 3-adversarial | default | до 3 раундов |
Если ## Complexity отсутствует — считать full.
Single-file downgrade: Если full, но все подзадачи в одном файле → понизить до lite.
Шаг 2-nano: Выполнение с adversarial review (только для nano)
Запустить 1 воркера (model: fast) с единственной подзадачей. После завершения — обновить session, перейти к Шаг 3-adversarial (model: fast), затем к Завершению цикла (без work-reviewer).
Шаг 2: Параллельный запуск «task-worker» — реализация по волнам
Аналогично DWR: для каждой волны из decomp_r0.md — запустить воркеры одновременно, ждать завершения, применить Wave Gate (BLOCKED, NOT MET, Discoveries, merge → session.md).
При BLOCKED: Запустить task-decomposer с задачей уточнения (max 1 mid-cycle re-decomposition).
При NOT MET: Передать в fix loop.
Передавать воркерам:
- Подзадачу, критерий, файлы из decomp_r0.md.
- Директорию сессии, путь к артефакту
impl_r0_w{W}_t{K}.md.
Шаг 3: Запуск «work-reviewer» — проверка результата
Аналогично DWR. Суб-агент: .cursor/agents/work-reviewer.md. Результат → review_r0.md.
Шаг 3-adversarial: Adversarial Review (все уровни сложности)
После work-reviewer (или после шага 2-nano) запустить дополнительный adversarial pass через команду /bmad-review-adversarial-general:
- Запустить команду
/bmad-review-adversarial-generalв отдельном суб-агенте (без контекста кодовой базы, только контент для ревью). - Вход:
content= дифф/изменённые файлы из реализации;also_consider= «исходная задача: [task.md], критерии из problem-solution». - Результат: список находок (минимум 10). Добавить в
review_r0.mdсекцию## Adversarial Findings.
Adversarial findings НЕ идут автоматически в fix loop. Оркестратор принимает решение вручную:
- Видит оба отчёта (
work-reviewer+ adversarial). - Сам решает, какие adversarial findings передать в fix loop.
- Передаёт выбранные findings в task-decomposer с флагом
Режим: adversarial(см. Fix loop ниже).
Задача adversarial — скептический взгляд «со стороны», находит скрытые проблемы. Не заменяет work-reviewer, дополняет его.
Шаг 3-lite: Ревью для lite
При Complexity: lite — work-reviewer с model: fast, затем Шаг 3-adversarial (model: fast). Fix loop только при CRITICAL, max 1 раунд.
Fix loop (при критичных/важных замечаниях)
Применяется для Complexity: full (и lite при CRITICAL, 1 раунд).
Шаг 3а: Запустить task-decomposer с замечаниями на исправление. Результат → decomp_r{N+1}.md.
Источники замечаний (передавать вместе):
- Замечания
work-reviewerизreview_r{N}.md(всегда). - Adversarial findings, которые оркестратор решил включить (передавать с флагом
Режим: adversarial).
Когда adversarial findings переданы с флагом Режим: adversarial, task-decomposer активирует специальный режим обработки: фильтрует шум, локализует в коде, группирует по файлу (одна подзадача = один файл = один воркер).
Шаг 3б: Запустить воркеров по волнам из decomp_r{N+1}.md.
Далее — снова Шаг 3 (work-reviewer) и при full — Шаг 3-adversarial. Повторять до прохождения или лимита раундов (3).
Завершение цикла
- Если замечаний нет или достигнут лимит: обновить
Status→completed/awaiting_next/escalated. - Итог: что выполнено, путь к сессии
task/{NNN}_{datetime}/.
Краткая схема
[Запрос пользователя]
↓
[0. Создать task/{NNN}_{datetime}/, task.md, session.md]
↓
[1. bmad-cis-problem-solving workflow] → _bmad-output/problem-solution-{date}.md
↓
[1б. Извлечь подзадачи → decomp_r0.md]
↓
[Routing Gate: Complexity]
↓
[2. task-worker по волнам] → impl_r0_w*_t*.md
↓
[3. work-reviewer] → review_r0.md
↓
[3-adversarial] → /bmad-review-adversarial-general → ## Adversarial Findings в review_r0.md
↓
Оркестратор: вручную выбирает findings для fix loop
↓
→ [3а. task-decomposer (Режим: adversarial + work-reviewer)] → [3б. workers] → [3. reviewer] (fix loop)
↓
[Завершение]
Важно
- Шаг 1 — problem-solving выполняется интерактивно в текущем агенте. Передать
data=task/{NNN}_{datetime}/task.mdдля предзагрузки контекста. На чекпоинтах доступны [a] Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO. - Шаг 1б — оркестратор парсит problem-solution и создаёт decomp_r0.md вручную.
- Шаг 3-adversarial — для всех уровней сложности; запускает
/bmad-review-adversarial-generalв отдельном суб-агенте. Дополняет work-reviewer скептическим взглядом. Оркестратор вручную решает, какие adversarial findings идут в fix loop. - Fix loop использует task-decomposer. Adversarial findings передаются с флагом
Режим: adversarial— декомпозитор фильтрует шум, локализует в коде, группирует по файлу (минимум воркеров). - Остальные правила (Wave Gate, артефакты, session.md) — как в DWR.