@gian-tiaga/eda 3.14.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/MIGRATION.md +23 -2
  2. package/README.md +131 -223
  3. package/agents/eda-aim-executor/prompt.md +2 -0
  4. package/agents/eda-aim-verifier/prompt.md +2 -0
  5. package/agents/eda-review-api/prompt.md +4 -4
  6. package/agents/eda-review-architecture/prompt.md +4 -4
  7. package/agents/eda-review-business/prompt.md +5 -12
  8. package/agents/eda-review-code-quality/prompt.md +4 -4
  9. package/agents/eda-review-correctness/prompt.md +3 -3
  10. package/agents/eda-review-database/prompt.md +4 -4
  11. package/agents/eda-review-documentation/prompt.md +4 -4
  12. package/agents/eda-review-frontend/prompt.md +4 -4
  13. package/agents/eda-review-infra/agent.json +14 -0
  14. package/agents/eda-review-infra/prompt.md +36 -0
  15. package/agents/eda-review-performance/prompt.md +7 -7
  16. package/agents/eda-review-plan-alignment/prompt.md +4 -4
  17. package/agents/eda-review-previous-reviews/prompt.md +5 -4
  18. package/agents/eda-review-references/prompt.md +4 -4
  19. package/agents/eda-review-rules/prompt.md +4 -4
  20. package/agents/eda-review-security/prompt.md +4 -4
  21. package/agents/eda-review-seo/agent.json +14 -0
  22. package/agents/eda-review-seo/prompt.md +36 -0
  23. package/agents/eda-review-tests/prompt.md +4 -4
  24. package/agents/eda-review-triage/agent.json +14 -0
  25. package/agents/eda-review-triage/prompt.md +38 -0
  26. package/lib/catalog.js +28 -1
  27. package/lib/install.js +221 -590
  28. package/lib/prompts.js +53 -0
  29. package/lib/renderers/codex-agent.js +3 -1
  30. package/lib/renderers/codex-skill.js +21 -1
  31. package/lib/renderers/opencode-skill.js +2 -2
  32. package/package.json +2 -3
  33. package/skills/_shared/done.md +15 -0
  34. package/skills/_shared/questions.md +9 -0
  35. package/skills/eda-aim/SKILL.md +2 -3
  36. package/skills/eda-business/SKILL.md +5 -6
  37. package/skills/eda-commit/SKILL.md +2 -3
  38. package/skills/eda-discover-automations/SKILL.md +6 -7
  39. package/skills/eda-explore/SKILL.md +28 -15
  40. package/skills/eda-fix/SKILL.md +7 -7
  41. package/skills/eda-fix-by-review/SKILL.md +4 -3
  42. package/skills/eda-just-do-it/SKILL.md +4 -4
  43. package/skills/eda-manual-test/SKILL.md +7 -5
  44. package/skills/eda-merge-worktree/SKILL.md +2 -3
  45. package/skills/eda-new-project/SKILL.md +3 -5
  46. package/skills/eda-orhestra/SKILL.md +3 -4
  47. package/skills/eda-plan/SKILL.md +126 -168
  48. package/skills/eda-plan-execute/SKILL.md +72 -92
  49. package/skills/eda-plan-polish/SKILL.md +14 -14
  50. package/skills/eda-plan-review/SKILL.md +25 -10
  51. package/skills/eda-plan-review-fix/SKILL.md +10 -7
  52. package/skills/eda-polish/SKILL.md +9 -6
  53. package/skills/eda-prepare-ai/SKILL.md +35 -15
  54. package/skills/eda-prod-check/SKILL.md +129 -0
  55. package/skills/eda-review/SKILL.md +92 -64
  56. package/skills/eda-review/references/checks/api.md +18 -0
  57. package/skills/eda-review/references/checks/architecture.md +16 -0
  58. package/skills/eda-review/references/checks/business.md +13 -0
  59. package/skills/eda-review/references/checks/code-quality.md +18 -0
  60. package/skills/eda-review/references/checks/correctness.md +19 -0
  61. package/skills/eda-review/references/checks/database.md +17 -0
  62. package/skills/eda-review/references/checks/documentation.md +13 -0
  63. package/skills/eda-review/references/checks/frontend.md +19 -0
  64. package/skills/eda-review/references/checks/infra.md +16 -0
  65. package/skills/eda-review/references/checks/performance.md +21 -0
  66. package/skills/eda-review/references/checks/plan-alignment.md +16 -0
  67. package/skills/eda-review/references/checks/previous-reviews.md +9 -0
  68. package/skills/eda-review/references/checks/references.md +11 -0
  69. package/skills/eda-review/references/checks/rules.md +16 -0
  70. package/skills/eda-review/references/checks/security.md +26 -0
  71. package/skills/eda-review/references/checks/seo.md +16 -0
  72. package/skills/eda-review/references/checks/tests.md +18 -0
  73. package/skills/eda-review/references/defects.md +24 -0
  74. package/skills/eda-review/references/triage.md +23 -0
  75. package/skills/eda-roadmap/SKILL.md +2 -4
  76. package/skills/eda-send-review/SKILL.md +3 -5
  77. package/skills/eda-worktree/SKILL.md +2 -3
  78. package/skills/eda-review/references/review-matrix.md +0 -72
@@ -53,7 +53,7 @@ orhestra:
53
53
  - `steps`: упорядоченный непустой список. Выполняй сверху вниз только элементы с `enabled: true`; отсутствующий `enabled` считай `true`.
54
54
  - `id`: уникальное непустое имя шага для ссылок из `on_failure.then`.
55
55
  - `skill`: имя установленного `eda-*`-скила. Не разрешай `eda-orhestra`, `eda-aim`, `eda-commit`, `eda-send-review`, `eda-worktree` и `eda-merge-worktree`.
56
- - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для дефолтного `eda-plan` передавай `без проверок`, чтобы оба вида ревью выполнил следующий `eda-plan-polish`. Для `eda-polish` здесь же задавай штатный `limit N`; дефолт — `limit 5`.
56
+ - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для дефолтного `eda-plan` передавай `без проверок`, чтобы отключить кросс-CLI strict: проверку плана выполняет следующий `eda-plan-polish`. Для `eda-polish` здесь же задавай штатный `limit N`; дефолт — `limit 5`.
57
57
  - `on_failure`: опциональный обработчик `failed` у шага `eda-manual-test`. Если поля нет, сохрани failed-отчёт и остановись без исправлений.
58
58
  - `on_failure.skill` и `on_failure.args`: разрешённый установленный скил исправления и его аргументы; дефолты `eda-fix` и пустая строка. Для `skill` действуют те же запреты, что для `steps[].skill`.
59
59
  - `on_failure.then`: id шагов, которые после исправления нужно повторить в указанном порядке. Пропускай отключённые шаги. Список должен содержать id активного `eda-manual-test`, иначе исправление нельзя подтвердить.
@@ -100,9 +100,8 @@ orhestra:
100
100
 
101
101
  Когда нужен человек:
102
102
 
103
- - Claude Code: используй `AskUserQuestion`;
104
- - Codex interactive: используй `request_user_input`, если доступен; иначе задай один короткий вопрос с 1–3 вариантами и остановись;
105
- - Codex exec: не читай stdin; заверши `blocked: нужен ответ пользователя` и перечисли варианты.
103
+ - интерактивный запуск: `AskUserQuestion`, затем остановись до ответа;
104
+ - неинтерактивный запуск: не читай stdin; заверши `blocked: нужен ответ пользователя` и перечисли варианты.
106
105
 
107
106
  После ответа продолжай тот же шаг с его полным предыдущим результатом, а не запускай цепочку сначала.
108
107
 
@@ -5,119 +5,100 @@ description: 'Создаёт понятный исполнимый план ре
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
7
7
 
8
- Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, приводишь план к формату скила до подтверждения пользователем и сохраняешь подтверждённый текст в `docs/artifacts/plans/`. Делишь работу на фазы, каждую из которых один агент выполняет и проверяет за один проход. По настройкам запускаешь `eda-plan-polish`, а в strict — независимую кросс-CLI проверку.
8
+ Собираешь контекст, закрываешь решения с пользователем, показываешь полный план на подтверждение и сохраняешь подтверждённый текст в `docs/artifacts/plans/`. Полировку плана не запускаешь: её делает `eda-plan-polish` или этап `eda-orhestra`. В strict добавляешь кросс-CLI проверку.
9
9
 
10
- ## Режим запуска
10
+ План готов, когда исполнитель выполнит его фазу за фазой без нового исследования и вопросов, а всё, что он обязан соблюдать из правил, архитектуры, эталонов и бизнес-карточек, уже выписано в разделе `Рамка`.
11
11
 
12
- Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
12
+ ## Настройки
13
13
 
14
- Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `plan.strict: false`, `plan.review: true`, `plan.size: normal`, `plan.decision_mode: recommend_and_ask`, `plan.test_strategy: ask_each_time`, `plan.logging_strategy: ask_each_time`.
14
+ Прочитай `docs/settings.yaml`, если файл есть. Поддерживается только `version: 3`; при другой версии, отсутствующем разделе или неизвестном значении используй дефолт. Прямое указание в текущем сообщении важнее настроек. Дефолты: `plan.strict: false`, `plan.size: normal`, `plan.decision_mode: recommend_and_ask`, `plan.test_strategy: phase_tests_final_checks`, `plan.logging_strategy: standard`.
15
15
 
16
16
  | Настройка | Значения | Аргументы в сообщении |
17
17
  |---|---|---|
18
18
  | `plan.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
- | `plan.review` | `true`, `false` | включение: `с ревью плана`, `с plan-review`; выключение: `без ревью плана`, `без plan-review` |
20
19
  | `plan.size` | `normal`, `short`, `ask_each_time` | `short`; обычный: `обычный план`, `не short` |
21
- | `plan.decision_mode` | `autonomous`, `recommend_and_ask`, `ask_each_time` | `autonomous`, `recommend_and_ask`, `ask_each_time`, «сам выбирай», «рекомендуй и спрашивай», «спрашивай всё» |
22
- | `plan.test_strategy` | `after_each_phase`, `phase_tests_final_checks`, `tdd_each_phase`, `end_of_plan`, `ask_each_time` | явное указание стратегии тестов и проверок |
23
- | `plan.logging_strategy` | `debug_precise`, `standard`, `ask_each_time` | явное указание стратегии логирования |
20
+ | `plan.decision_mode` | `recommend_and_ask`, `autonomous`, `ask_each_time` | `autonomous`, `recommend_and_ask`, `ask_each_time`, «сам выбирай», «рекомендуй и спрашивай», «спрашивай всё» |
21
+ | `plan.test_strategy` | `phase_tests_final_checks`, `tdd_each_phase`, `after_each_phase`, `end_of_plan`, `ask_each_time` | явное указание стратегии тестов и проверок |
22
+ | `plan.logging_strategy` | `standard`, `debug_precise`, `ask_each_time` | явное указание стратегии логирования |
24
23
 
25
- Если итоговое значение `plan.size`, `plan.test_strategy` или `plan.logging_strategy` равно `ask_each_time`, задай блокирующий вопрос, кроме случая, когда пользователь уже выбрал значение в текущем сообщении.
24
+ Значение `ask_each_time` у размера, тестов или логирования — блокирующий вопрос, если пользователь не выбрал значение в сообщении. Варианты: размер — `normal` / `short`; тесты — `phase_tests_final_checks` / `tdd_each_phase` / `after_each_phase` / `end_of_plan`; логирование — `standard` / `debug_precise`. `без проверок` устанавливает `plan.strict: false`.
26
25
 
27
- Варианты вопросов: размер плана — `normal` / `short`; тесты и проверки — `after_each_phase` / `phase_tests_final_checks` / `tdd_each_phase` / `end_of_plan`; логирование — `debug_precise` / `standard`.
26
+ Имя `test_strategy` сохраняется для совместимости, но настройка управляет и написанием тестов, и моментом запуска автоматических проверок:
28
27
 
29
- Имя `test_strategy` сохраняется для совместимости, но настройка управляет и написанием тестов, и моментом запуска автоматических проверок. Она обязана менять план:
28
+ - `phase_tests_final_checks` — тесты пишутся в фазе реализации; `Проверка` фазы запускает только добавленные или изменённые в ней тесты, полный набор тестов, линтеры, typecheck и остальные обязательные проверки — в финальной проверке плана;
29
+ - `tdd_each_phase` — фаза начинается с тестов, после реализации запускаются они и все применимые проверки фазы;
30
+ - `after_each_phase` — после реализации фаза добавляет тесты и запускает их вместе со всеми применимыми проверками фазы;
31
+ - `end_of_plan` — тесты и первый запуск автоматических проверок в отдельной финальной фазе; предыдущие фазы подтверждаются неавтоматическими критериями.
30
32
 
31
- - `tdd_each_phase` начинает каждую фазу с тестов, затем выполняет реализацию и запускает написанные тесты вместе со всеми применимыми проверками фазы;
32
- - `after_each_phase` сначала выполняет реализацию, затем добавляет тесты и запускает их вместе со всеми применимыми проверками фазы;
33
- - `phase_tests_final_checks` добавляет тесты в ту же фазу, что и реализацию; в `Проверке` фазы оставляет только точечный запуск добавленных или изменённых в ней тестов, а полный набор тестов, линтеры, typecheck, static analysis и остальные обязательные проверки переносит в финальную проверку всего плана;
34
- - `end_of_plan` выносит написание тестов и первый запуск всех автоматических проверок в отдельную финальную фазу; предыдущие фазы подтверждаются только указанными неавтоматическими критериями готовности.
35
-
36
- `logging_strategy` обязан отражаться в алгоритме, фазах и разделе `Логирование`.
37
-
38
- `без проверок` одновременно устанавливает `plan.review: false` и `plan.strict: false`. `plan.review` и `plan.strict` независимы.
33
+ `logging_strategy` отражается в алгоритме, фазах и разделе `Логирование`.
39
34
 
40
35
  ## Вход из сообщения пользователя
41
36
 
42
- Текст рядом с вызовом скила в текущем сообщении — главный вход. Разбери тему, задачу, путь к файлу, режим, ограничения и прямые указания.
37
+ Текст рядом с вызовом — главный вход: тема, задача, путь к research, режим, ограничения и прямые указания. Старое обсуждение входом не считай, если пользователь не связал его с вызовом. Если входа нет, он противоречив или подходят несколько равных вариантов — спроси.
43
38
 
44
- Если входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
39
+ ## Правила
45
40
 
46
- ## Вопросы и решения
41
+ 1. **Только план.** Не меняй код, миграции, конфиги и зависимости. Запись — только в `docs/artifacts/plans/`.
42
+ 2. **Рамка проекта обязательна.** Прочитай `docs/rules.md` и `docs/arch.md` полностью и по их таблицам карточек выбери карточки областей задачи. После определения scope выбери по `docs/business.md` только карточки затронутого поведения, по `docs/references.md` — только карточки затронутых компонентов. Применимые инструкции `AGENTS.md` тоже входят в рамку. Выбранные файлы читай полностью; большой файл — частями до последней строки. Обрезанный вывод не считается прочитанным файлом. Нерелевантные карточки не загружай. Всё, что задача обязана соблюдать, выпиши в `Рамку`.
43
+ 3. **Конфликт с рамкой не обходи.** Если нужное решение противоречит правилу, архитектуре или эталону, план до зависимой реализации меняет сам документ отдельной фазой `Обновить правила`, `Обновить архитектуру` или `Обновить эталон: <тема и изменение>`. Документ правится в разделе-владельце на месте, по его структуре и лимиту, без датированных дополнений. Отклонения «с причиной в докблоке» не бывает. Конфликт запроса с business-карточкой покажи пользователю и спроси: менять задачу или сначала пересогласовать правило через `eda-business`.
44
+ 4. **Недостающее бизнес-правило — до реализации.** Если нужного пункта нет в business-карточках, он описан не полностью или задача расширяет существующее business-правило, добавь до соответствующей реализации отдельную фазу или пункт `Дополнить бизнесовые правила: <конкретная тема и изменение>`. Чисто техническое изменение без изменения целевого поведения этого не требует. Карточка задаёт требования только к затронутому поведению и не добавляет в план работу, которую не просили.
45
+ 5. **Решения закрываются до показа плана.** `autonomous` — выбирай сам и записывай причину; `recommend_and_ask` — рекомендуй и спрашивай по существенным решениям; `ask_each_time` — спрашивай по каждой значимой развилке. Существенные решения: новые зависимости, БД/ORM/очереди/кэш/storage/search, миграции и схемы таблиц, API и внешние контракты, auth/permissions/payments/secrets/персональные данные, cloud/provider/cost/lock-in/SLA, архитектурные паттерны и публичные контракты. Схемы таблиц и API-контракты подтверждай явно, если их не подтвердил research. Подтверждённое в research повторно не спрашивай.
46
+ 6. **Каждый ответ пользователя — в `Принятых решениях`.** Ответ записывается так, как его дал пользователь, отдельным пунктом. Если ответ противоречит черновику, переделай черновик, а не формулировку ответа.
47
+ 7. **Без самодеятельности.** План не добавляет механизмов, которых нет в запросе, рамке или подтверждённых решениях: шифрование, повторные проверки уже типизированных ответов, новые обёртки, сервисы, классы-посредники, скрипты, контейнеры, повторы, кэши и ожидания. Если механизм кажется нужным — это вопрос пользователю.
48
+ 8. **Что, а не как.** План фиксирует поведение, границы, контракты и критерии приёмки. Формула или компактный псевдокод допустимы, если точнее прозы задают правило, контракт, инвариант или критерий приёмки, например `retryAt = now + 5 minutes`. Не фиксируй сигнатуры чужих методов, приведения типов, форму классов и внутренние вычисления без наблюдаемого смысла. Форму кода задают эталоны из `Рамки`. Конкретика не равна подробности: не пересказывай запрос и существующий код и не выдумывай пути, символы или API ради видимости конкретики.
49
+ 9. **Один факт — одно место, одно имя — одна сущность.** Требования документов — в `Рамке`, поведение — в `Целевом алгоритме`, контракты — в `Контрактах реализации`, выбор — в `Принятых решениях`. Фаза ссылается на них и не повторяет. Поле, статус, endpoint, команда и событие называются одинаково во всех разделах; всё, на что ссылаются алгоритм и фазы, определено в контрактах или уже есть в проекте.
50
+ 10. **Конкретные версии.** Версию пакета, CLI или сервиса без lock-файла найди через context7 или web search; `latest` без версии и источника не пиши. Новый проект разворачивается точной командой официального generator/scaffold CLI (`composer create-project`, `npm create`, `npx`, `cargo new` или реальный аналог); файлы, которые он создаёт, вручную не планируй.
51
+ 11. **Инфраструктура, публичные страницы, частый ввод-вывод.** Если задача их затрагивает, закрой решения, которые иначе примет исполнитель, и примени к ним правила проекта: новые переменные окружения и где они задаются во всех окружениях, порт, healthcheck, команда запуска, образ, прокси и CI — в `Документации и эксплуатации`; адреса, 301 со старых адресов, canonical, индексация, sitemap, title и description — в `API и внешних контрактах`; допустимое число запросов к БД и внешних вызовов на операцию и способ проверки — в `Тестах и проверках`.
52
+ 12. **Граница и объём.** План доводится до первой точки, где результат можно запустить и проверить целиком; дальше — следующая веха. Объём: `normal` — не больше 40 КБ, `short` — не больше 12 КБ и 2 фаз. Это потолок, а не цель. Размер проверяй командой (`wc -c`); при превышении раздели работу по вехам и предложи первую.
53
+ 13. **Без альтернатив и открытых вопросов.** В плане нет «выбрать», «можно так или так», «предпочтительно», «разумный», «TBD», «уточнить позже», качества без меры вроде «быстро», «удобно», «надёжно» и раздела `Открытые вопросы`. Незакрытая развилка — вопрос пользователю до показа плана.
54
+ 14. **Удаление — тоже изменение.** Если задача удаляет или переименовывает поведение, поле, endpoint, страницу или команду, план называет, что становится со старыми данными, адресами и клиентами, и проверку, что старого поведения больше нет, а при переименовании — что оно сохранилось.
47
55
 
48
- `decision_mode`: `autonomous` — выбирай сам и записывай причину; `recommend_and_ask` — рекомендуй вариант и спрашивай по существенным решениям; `ask_each_time` — спрашивай по каждой значимой развилке.
56
+ Блокирующий вопрос — `AskUserQuestion`: задав его, остановись до ответа. В неинтерактивном запуске не читай stdin и заверши `blocked: нужен ответ пользователя`.
49
57
 
50
- Существенные решения: новые зависимости, БД/ORM/очереди/кэш/storage/search, миграции, схемы таблиц, API и внешние контракты, auth/permissions/payments/secrets/персональные данные, cloud/provider/cost/lock-in/SLA, архитектурные паттерны и публичные контракты.
58
+ <!-- include: skills/_shared/questions.md -->
51
59
 
52
- Если research содержит подтверждённый ответ пользователя, не спрашивай повторно. Если задача меняет БД или API, проверь, подтверждены ли конкретные схемы таблиц и API-контракты; если конкретные схемы БД или API-контракты не подтверждены явно, получи подтверждение пользователя и не проектируй таблицы и маршруты молча внутри Plan Mode.
60
+ ## Этапы
53
61
 
54
- Блокирующий вопрос: Claude Code — `AskUserQuestion`; Codex interactive — `request_user_input` или короткий вопрос с вариантами; Codex exec — не читай stdin, заверши со статусом `blocked: нужен ответ пользователя`.
62
+ ### 1. Собрать контекст
55
63
 
56
- ## Обязательные правила
64
+ Разбери вход и настройки, прочитай рамку по правилу 2 и код затронутых мест. Research подтягивай без вопроса, если путь указан. Описание задачи без research-файла — достаточный вход: не спрашивай research автоматически. Если пользователь просит research без пути, предложи последние файлы из `docs/artifacts/researches/` и вариант «нет». Проверь версии нужных пакетов.
57
65
 
58
- 1. Никаких правок кода, миграций, конфигов и зависимостей. Запись только в `docs/artifacts/plans/`.
59
- 2. `docs/rules.md` и `docs/arch.md` — обязательная рамка планирования, а не справочный контекст. Прочитай их, выдели применимые правила и архитектурные ограничения, передай их в Plan Mode как обязательные требования.
60
- 3. Сначала определи задачу и затронутое поведение. Если есть `docs/business.md`, прочитай целиком только применимые карточки. Карточка задаёт требования к тому поведению, которое задача уже затрагивает; работу, которую пользователь не просил, она в план не добавляет. Если карточка описывает больше сценариев, чем затронуто задачей, остальные в план не идут.
61
- 4. Если нужный пункт в них отсутствует, описан не полностью или задача расширяет существующее business-правило, добавь до соответствующей реализации отдельную фазу или пункт `Дополнить бизнесовые правила: <конкретная тема и изменение>`. Чисто техническое изменение без изменения целевого поведения этого не требует.
62
- 5. Если есть `docs/references.md`, прочитай применимые карточки затронутых компонентов. Их кодовые примеры задают форму реализации.
63
- 6. Конфликт запроса, research или черновика плана с применимой business-карточкой не разрешай молча и не финализируй план: покажи конфликт и через `AskUserQuestion` спроси, менять задачу или сначала пересогласовать правило через `eda-business`.
64
- 7. План не отклоняется от `docs/rules.md`, `docs/arch.md` и карточек. Если нужное решение им противоречит, план сначала меняет сам документ: добавь отдельный пункт `Обновить правила` или `Обновить архитектуру: <тема и изменение>` до зависимой реализации. Отклонения «с причиной в докблоке» не бывает — она разводит код и документацию.
65
- 8. Не переформулируй запрос пользователя перед Plan Mode: передавай оригинал, ответы на вопросы и найденную рамку.
66
- 9. План сохраняется до любой включённой проверки.
67
- 10. План фиксирует решения, границы, контракты и критерии приёмки. Формулы и компактный псевдокод допустимы, когда они точнее прозы задают бизнес-правило, контракт, инвариант или критерий приёмки, например `retryAt = now + 5 minutes`. Сам формульный синтаксис не превращает контракт в деталь реализации. Не фиксируй сигнатуры чужих методов, приведения типов, порядок строк внутри метода, форму классов и внутренние вычисления, которые не задают наблюдаемое поведение. Если утверждение можно проверить только по конкретному коду, оно относится к code review, а не к плану.
68
- 11. Не пересказывай прозой то, что уже лежит рядом: правила, архитектуру и кодовые примеры карточек. Ссылайся на них.
69
- 12. Один факт — одно место. Поведение описано в `Целевом алгоритме`, контракты — в `Контрактах реализации`, фаза на них опирается и не повторяет их.
70
- 13. План доводится до первой точки, где результат можно запустить и проверить целиком. Дальше планируй следующей вехой, на фактах.
71
- 14. Если нужны пакеты, библиотеки, CLI или сервисы, а версия не указана в контексте или lock-файлах, найди последнюю стабильную версию через context7 или web search. Не пиши `latest` без конкретной версии и источника.
72
- 15. Если план разворачивает новый проект и у выбранного стека есть официальный generator/scaffold CLI, план обязан использовать точную команду этого CLI или package manager (`composer create-project`, `npm create`, `npx`, `cargo new` или реальный аналог). Не планируй ручное создание файлов, которые штатно генерирует этот инструмент; последующие целевые изменения поверх результата CLI допустимы.
73
- 16. Финальный план прост, исполним и без альтернатив вида «выбрать», «решить», «можно так или так», «предпочтительно».
66
+ ### 2. Закрыть решения
74
67
 
75
- ## Технические остановки субагентов
68
+ Собери существенные решения и развилки. Какие из них выносить на вопрос, задаёт `decision_mode`; задавай их раундами по разделу «Как задавать вопросы» и дождись ответов. Ответы запиши по правилу 6.
76
69
 
77
- Техническую ошибку инструмента субагентов не смешивай со статусами `failed` и `blocked` содержательного контракта. Сохрани полный исходный текст ошибки и обработай её по причине:
70
+ ### 3. Показать полный план
78
71
 
79
- - лимит параллельности или отсутствие свободного слота — дождись уже запущенного этим workflow агента, при необходимости закрой завершённые потоки и повтори тот же запуск; если управляемых активных агентов нет, заверши `blocked: заняты слоты субагентов`;
80
- - лимит глубины вложения — не повторяй запуск и не выполняй этап сам; заверши `blocked: достигнут лимит глубины субагентов`, указав наблюдаемую и требуемую глубину;
81
- - исчерпана usage-квота — не делай автоматических повторов; заверши `blocked: исчерпана квота`, сохрани время reset или условие продолжения, если хост его сообщил;
82
- - не хватает разрешения — запроси одно конкретное разрешение по правилам текущей среды и после ответа продолжи того же агента; в неинтерактивной среде заверши `blocked: нужно разрешение пользователя`;
83
- - временная API-, server-, overload- или network-ошибка — один раз продолжи того же агента; если resume недоступен, один раз запусти ту же роль с исходным входом, полным частичным результатом и требованием сначала сверить текущее состояние; повторный такой сбой заверши как `blocked` с исходной ошибкой;
84
- - неизвестная техническая ошибка — не угадывай причину и не зацикливай retry; заверши `blocked: техническая ошибка субагента` с полным исходным текстом.
72
+ Составь план по шаблону ниже и проверь его по разделу «Проверка перед показом». Покажи полный текст плана — front matter, все разделы по порядку, фазы со всеми полями. Резюме, список шагов или ссылка на файл не заменяют план.
85
73
 
86
- Ожидание слота и один технический retry не расходуют лимиты содержательных итераций.
74
+ - Claude Code — в Plan Mode; выйди из него с полным текстом плана и дождись подтверждения.
75
+ - Codex, OpenCode и другие среды — полным текстом в чате; остановись до подтверждения.
87
76
 
88
- ## Этапы
77
+ После правок пользователя покажи план снова целиком. Без подтверждения план не сохраняй.
89
78
 
90
- ### 1. Собрать контекст
79
+ ### 4. Сохранить
91
80
 
92
- - Разбери вход и настройки.
93
- - Прочитай `docs/rules.md` и `docs/arch.md`; выпиши применимые команды проверки, требования к тестам, границы модулей, зависимости, миграции, безопасность и локальные запреты.
94
- - Выбери и прочитай применимые карточки `docs/business.md` и `docs/references.md`. Нерелевантные не загружай.
95
- - Research подтягивай без вопроса, если путь указан; если в сообщении есть описание задачи без research-файла, используй описание как контекст и не спрашивай research автоматически. Если пользователь явно просит research, но файл не указал, предложи последние файлы из `docs/artifacts/researches/` и вариант «нет».
96
- - Проверь версии нужных пакетов, если они не зафиксированы.
97
- - Закрой существенные решения по `decision_mode`.
81
+ Сохрани подтверждённый текст без изменений в `docs/artifacts/plans/{YYYY-MM-DD}_{HH-MM}_{slug}.md`.
98
82
 
99
- ### 2. Запустить Plan Mode
83
+ ### 5. Strict: кросс-CLI
100
84
 
101
- Передай в Plan Mode:
85
+ Обычный режим этап пропускает. В `strict` отдай файл соседнему CLI:
102
86
 
103
- 1. Дословный запрос пользователя.
104
- 2. `plan_size`, `decision_mode`, `test_strategy`, `logging_strategy`.
105
- 3. Подтверждённые существенные решения и пары «вопрос → ответ».
106
- 4. Найденные версии пакетов и источники.
107
- 5. Пути к `docs/rules.md`, `docs/arch.md`, применимым карточкам и research с выпиской обязательных требований рамки.
108
- 6. Требование: план следует правилам, архитектуре и применимым эталонам. Если нужное решение им противоречит, план сначала меняет сам документ отдельным пунктом, а не отклоняется от него.
109
- 7. Требование: уже на подтверждение пользователь получает полный план по шаблону этапа 3, включая YAML front matter, все разделы в заданном порядке и фазы с полями «Цель», «Что сделать», «Результат», «Проверка». Это формат и показа в Plan Mode, и сохраняемого файла.
110
- 8. Требование: конкретика не равна максимальной подробности. План описывает, что и зачем меняется, а не как это написать: не пересказывать запрос и существующий код, не повторять один контракт в нескольких разделах, не выдумывать пути, символы или API ради видимости конкретики. Реализацию задают `docs/rules.md`, `docs/arch.md` и карточки.
87
+ ```bash
88
+ codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md и все файлы из sources. Проверь план по релевантному коду: открой файлы, модули и тесты, которые следуют из плана, и оцени фактическую реализуемость. Верни только конкретные ошибки, которые обязательно исправить: место, доказательство, риск и минимальную правку. Не предлагай расширение текста и стилистику. Список '- [тип] описание — что исправить'." > "${PLAN_FILE%.md}_review.md"
89
+ ```
111
90
 
112
- До запроса подтверждения нормализуй план и прогони quality gate из этапа 3. Покажи полный текст плана в формате скила; краткое резюме, список главных шагов или ссылка на файл не заменяют план на подтверждение. При правках пользователя обнови план и снова предъяви его целиком в том же формате. Не выходи из Plan Mode, пока пользователь не подтвердил план.
91
+ Если ты в Codex — запускай `claude -p` с тем же заданием. Если соседней CLI нет, спроси, продолжать без ревью или прервать. Бесспорные замечания внеси, спорные вынеси вопросом, отклонённые зафиксируй с причиной в `## Реакция на ревью`. Поставь `status: reviewed` и покажи дифф.
113
92
 
114
- ### 3. Сохранить подтверждённый план
93
+ ### 6. Финал
115
94
 
116
- Сохрани подтверждённый план в `docs/artifacts/plans/{YYYY-MM-DD}_{HH-MM}_{slug}.md` с теми же содержанием и структурой, которые показал пользователю. Нормализация формы и ясности должна быть завершена до подтверждения.
95
+ Сообщи режим, выполнялся ли strict, путь к плану, итоговый статус, 3–5 главных шагов и что дальше: `eda-plan-polish` или `eda-plan-execute`.
117
96
 
118
- Единый шаблон для показа на подтверждение и сохранения:
97
+ ## Шаблон
119
98
 
120
- ```markdown
99
+ Единый для показа и сохранения. Разделы идут в этом порядке; пустой контракт — строка `Не затрагивается`.
100
+
101
+ ````markdown
121
102
  ---
122
103
  title: <заголовок>
123
104
  date: <YYYY-MM-DD HH:MM>
@@ -131,8 +112,8 @@ plan_review_fix: <docs/artifacts/plan-review-fixes/... | none>
131
112
  test_strategy: <after_each_phase | phase_tests_final_checks | tdd_each_phase | end_of_plan>
132
113
  logging_strategy: <debug_precise | standard>
133
114
  sources:
134
- rules: <путь или —>
135
- arch: <путь или —>
115
+ rules: [docs/rules.md, <применимые карточки docs/rules/ или пусто>]
116
+ arch: [docs/arch.md, <применимые карточки docs/arch/ или пусто>]
136
117
  business: [<пути к применимым карточкам или пусто>]
137
118
  references: [<пути к применимым карточкам или пусто>]
138
119
  research: <путь или —>
@@ -141,44 +122,63 @@ sources:
141
122
  # План реализации
142
123
 
143
124
  ## Задача
144
- Что нужно реализовать и какой результат считается готовым. Что в план не входит, если границу легко перепутать.
125
+ Что нужно сделать и какой результат считается готовым. Что не входит, если границу легко перепутать.
126
+
127
+ ## Рамка
128
+ Только то, что эта задача обязана соблюдать. Одна строка на пункт: источник и раздел → что это значит для задачи.
129
+ - `docs/rules.md` «<раздел>» → <требование в применении к задаче>.
130
+ - `docs/arch/<область>.md` «<раздел>» → <граница или поток, который задача не нарушает>.
131
+ - `docs/references/<компонент>.md` → <какой компонент пишется по этому эталону>.
132
+ - `docs/business/<тема>.md` «<раздел>» → <правило затронутого поведения>.
145
133
 
146
134
  ## Целевой алгоритм
147
- Сквозное поведение системы от входного события до финального состояния. Единственное место, где описано поведение. Состояния и переходы — таблицей, проза только для связок.
135
+ Сценарии в том порядке, в котором они происходят: сначала то, что должно существовать или выполниться заранее (данные, синхронизация, фоновые процессы), затем действия пользователя и ответ системы.
136
+
137
+ ### <Сценарий>
138
+ 1. <Кто> <делает что> → <что видит или получает>.
139
+ 2. Система <проверяет / сохраняет / отправляет / показывает> <что именно>.
140
+ - Если <условие> — <что происходит>.
141
+ 3. ...
142
+
143
+ Ошибки: <шаг> — <что видит пользователь, в каком состоянии остаются данные и как продолжить>.
148
144
 
149
145
  ## Контракты реализации
150
146
 
151
147
  ### Данные и БД
152
- Если БД не меняется: `Не затрагивается`. Иначе таблицы, поля, типы, обязательность, default, связи, индексы, unique, миграции, совместимость со старыми данными и rollback.
148
+ Для каждой новой или изменяемой таблицы:
149
+
150
+ #### `<таблица>` — <новая | изменяется>
151
+ | Поле | Тип | Null | По умолчанию | Назначение |
152
+ |---|---|---|---|---|
153
+
154
+ Индексы и ограничения, связи, миграция существующих данных и откат — коротко под таблицей.
153
155
 
154
156
  ### API и внешние контракты
155
- Если не меняются: `Не затрагивается`. Иначе метод и путь, auth/permissions, request/query/body, response, ошибки и status codes, события, очереди и внешние сервисы.
157
+ Метод и путь, auth/permissions, запрос, ответ, ошибки и коды, события, очереди и внешние сервисы.
156
158
 
157
159
  ### Интерфейс и дизайн
158
- Если интерфейс не меняется: `Не затрагивается`. Иначе опиши состав и организацию затронутых страниц или экранов: основные области и элементы, их расположение, назначение и взаимосвязи. Используй заданные макеты или референсы; если их нет — текущий дизайн проекта. Формат выбирай по содержанию: свободный текст или таблица `Страница | Описание дизайна`.
159
-
160
- Не повторяй здесь целевой алгоритм и содержание фаз. Поведение упоминай только тогда, когда без него нельзя понять состав или организацию интерфейса.
160
+ Состав и организация затронутых экранов: области и элементы, их расположение и связи; макеты или референсы, иначе текущий дизайн проекта. Поведение здесь не повторяется.
161
161
 
162
162
  ### Консольные команды
163
- Если команды не меняются: `Не затрагивается`. Иначе перечисли точки входа и команды в таблице:
164
-
165
163
  | Команда | Аргументы и опции | Назначение |
166
164
  |---|---|---|
167
165
 
168
166
  ## Фазы выполнения
169
167
 
170
168
  ### 1. <Название фазы>
171
- Цель: одно предложение — зачем нужна фаза.
169
+ Цель: одно предложение — зачем фаза.
172
170
 
173
- Что сделать: несколько предложений — что появляется в системе и как части связаны между собой. Не как это писать.
171
+ Что сделать: связным текстом — что появляется в системе и как части связаны. Не перечень файлов и не «как писать».
172
+
173
+ Согласование: <только если пользователь просил согласовать промежуточный результат: что показать и чего ждать>.
174
174
 
175
175
  Результат: проверяемое состояние системы после фазы.
176
176
 
177
177
  Проверка:
178
- - команда или критерий готовности.
178
+ - команда с ожидаемым результатом или наблюдаемое состояние системы по `test_strategy`.
179
179
 
180
180
  ## Тесты и проверки
181
- Стратегия, сценарии по поведению, фазовые и финальные команды — в одном месте, а не дублируются внутри каждой фазы. В поле `Проверка` фазы остаётся только применимый к ней запуск или критерий согласно `test_strategy`.
181
+ Стратегия, сценарии по поведению — включая каждую ветку «Если …» и каждую ошибку алгоритма, — фазовые и финальные команды в одном месте.
182
182
 
183
183
  ## Логирование
184
184
  Стратегия, уровни, обязательные поля и что писать запрещено.
@@ -187,86 +187,44 @@ sources:
187
187
  Что обновить в env, docs, runbook и что важно для релиза.
188
188
 
189
189
  ## Принятые решения
190
- Выбранные решения без вариантов. Для существенных — источник подтверждения: ответ пользователя, research или `autonomous` с причиной.
191
- ```
190
+ - <решение> — источник: ответ пользователя «<ответ>» | research <путь> | `autonomous`: <причина>.
191
+ ````
192
192
 
193
- Правила структуры:
193
+ Формат `Целевого алгоритма`:
194
194
 
195
- - Задач с идентификаторами внутри фаз нет. Порядок фаз задаёт порядок работы.
196
- - Фаза — это цель, что сделать, результат и проверка. Ничего больше.
197
- - В `Что сделать` пиши связным текстом, а не перечнем файлов: должно быть видно, как части работают вместе. Каждое предложение говорит, что появится, как это связано с остальным или чем ограничено. Если её удаление ничего из этого не меняет, удали её из плана.
198
- - В фазах нельзя ограничиваться общими формулировками вроде «обновить UI», «добавить сервис», «реализовать логику». Для UI опиши пользовательский сценарий, состояния успеха и ошибки и видимый результат; для внутренней логики — ответственность частей, поток данных, состояния и ошибки.
199
- - Не описывай в фазе то, что уже зафиксировано в `Целевом алгоритме`, `Контрактах` или `Принятых решениях`: сошлись на них.
200
- - Риски и порядок выполнения отдельными разделами не выносятся: закрытые риски встраиваются в решения, фазы, тесты и проверки.
201
- - Раздела `Открытые вопросы` в плане нет. Незакрытая развилка — это блокирующий вопрос пользователю до сохранения, а не пункт в файле.
195
+ - шаг — одно действие и его наблюдаемый результат простым языком; сущности, поля, команды и экраны называй своими именами, внутренние классы и методы — нет;
196
+ - ветки — подпунктами «Если …», ошибки — после шагов сценария; у шага с внешним вызовом или изменением данных ошибка обязательна: что видит пользователь, что с данными и как продолжить после сбоя посередине;
197
+ - таблица допустима только для матрицы статусов (статус → разрешённые действия) и формул расчёта.
202
198
 
203
- Quality gate перед показом на подтверждение, перед сохранением и после каждой включённой проверки:
204
-
205
- - есть `Целевой алгоритм` и `Контракты реализации` с подразделами `Данные и БД`, `API и внешние контракты`, `Интерфейс и дизайн` и `Консольные команды`;
206
- - применимые business-карточки выбраны после определения scope, записаны в `sources.business` и отражены в критериях приёмки;
207
- - каждый отсутствующий, неполный или расширяемый пункт целевого поведения покрыт отдельной задачей `Дополнить бизнесовые правила` до зависимой реализации; для чисто технических изменений такая задача не добавлена;
208
- - план строго следует `docs/rules.md` и `docs/arch.md`, а также применимым reference-карточкам; там, где нужно другое поведение, есть отдельный пункт на изменение самого документа до зависимой реализации;
209
- - каждая фаза имеет цель, что сделать, результат и проверку и выполнима одним агентом за один проход;
210
- - в плане нет сигнатур, приведений типов, формы классов, внутренних вычислений без контрактного смысла и пересказа карточек; формулы, задающие обязательное поведение, не удалены только из-за формы записи;
211
- - ни один факт не описан в двух разделах;
212
- - `test_strategy` и `logging_strategy` применены;
213
- - пакеты имеют конкретные версии или ссылку на существующий lock;
214
- - bootstrap нового проекта использует существующий официальный CLI выбранного стека, а не ручное воспроизведение scaffold;
215
- - нет неподтверждённых существенных решений, неразрешённых альтернатив и открытых вопросов;
216
- - нет общих призывов, повторов и пояснений, удаление которых не меняет действия, контракты, проверки или принятые решения;
217
- - объём: `normal` — не больше 40 КБ, `short` — не больше 12 КБ и 2 фаз. Это стоп, а не цель: план настолько короткий, насколько позволяет однозначность. При превышении раздели план по вехам и предложи пользователю первую;
218
- - план можно передать в `eda-plan-execute` без нового исследования.
219
-
220
- ### 4. Полировка плана
221
-
222
- Если `plan.review: false`, пропусти этап, оставь `plan_review: none`, `plan_review_fix: none` и перейди дальше.
223
-
224
- Иначе запусти `eda-plan-polish` в отдельном изолированном субагенте с чистым контекстом. Основной планировщик не делает review или fix сам.
225
-
226
- Прогоняется ровно одна итерация полировки — `limit 1`: одна проверка и одно исправление. Второй круг здесь не нужен: план уже прошёл quality gate, и лишние итерации чаще раздувают текст, чем улучшают его. Плата за это — исправление остаётся неперепроверенным, поэтому `status: reviewed` появится только если ревью сразу вернуло `ready`.
227
-
228
- 1. Запусти один `eda-plan-polish`:
229
-
230
- ```text
231
- Используй eda-plan-polish для <PLAN_FILE> с limit 1.
232
- Прогони ровно одну итерацию полировки: проверка и исправление. Дальше не иди.
233
- Исходная задача и решения: <текущий запрос и ответы пользователя>.
234
- Верни результат, последний review/fix, score, threshold и открытые ID.
235
- ```
236
-
237
- Проверь артефакты и снова прогони quality gate. При `ready` убедись, что front matter содержит `status: reviewed` и последние пути review/fix. Содержательных правок сам не делай. При limit, отсутствии прогресса или `blocked` не выдавай план за подтверждённый.
238
-
239
- При недоступности нативных субагентов остановись; не используй CLI-fallback для этого этапа.
240
-
241
- ### 5. Strict: кросс-CLI
242
-
243
- `plan.strict` не зависит от `plan.review`. Обычный режим этап пропускает. В `strict` отдай файл соседнему CLI:
244
-
245
- ```bash
246
- codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md и применимые карточки из sources. Проверь план по релевантному коду: открой файлы, модули и тесты, которые следуют из плана, и оцени фактическую реализуемость. Верни только конкретные ошибки, которые обязательно исправить: место, доказательство, риск и минимальную правку. Не предлагай расширение текста и стилистику. Список '- [тип] описание — что исправить'." > "${PLAN_FILE%.md}_review.md"
199
+ ```markdown
200
+ ### Регистрация
201
+ 1. Пользователь отправляет `/start` в личном чате.
202
+ 2. Бот показывает кнопку «Поделиться контактом».
203
+ 3. Пользователь делится контактом.
204
+ 4. Система проверяет, что контакт его собственный, и ищет клиента в CRM по телефону.
205
+ - Если найден один — привязывает его к пользователю.
206
+ - Если не найден — создаёт клиента с именем из Telegram.
207
+ 5. Бот показывает главное меню.
208
+
209
+ Ошибки: CRM недоступна на шаге 4 — бот сообщает об этом, регистрация не завершается, повторный `/start` продолжает с шага 2.
247
210
  ```
248
211
 
249
- Если ты в Codex — запускай `claude -p` с тем же заданием. Если соседней CLI нет, спроси, продолжать без ревью или прервать.
250
-
251
- Бесспорные замечания внеси в план, спорные вынеси через `AskUserQuestion`, отклонённые зафиксируй с причиной в `## Реакция на ревью`. Поставь `status: reviewed`, покажи дифф.
252
-
253
- ### 6. Финал
254
-
255
- Коротко сообщи режим, выполнялись ли polish и strict, путь к плану, пути к последним артефактам проверок, итоговый статус, открытые вопросы, 3–5 главных шагов и что дальше делает `eda-plan-execute`. Если требуется повторное подтверждение плана, предъяви полный актуальный текст по шаблону этапа 3.
256
-
257
- ## Чего НЕ делать
258
-
259
- - Править код, миграции, конфиги или зависимости.
260
- - Считать `docs/rules.md` и `docs/arch.md` просто контекстом для ознакомления.
261
- - Писать в план сигнатуры чужих методов, приведения типов, форму классов и формулы внутренних вычислений, которые не задают бизнес-правило, контракт, инвариант или критерий приёмки.
262
- - Пересказывать прозой правила, архитектуру и кодовые примеры карточек.
263
- - Отклоняться от правил и архитектуры «с причиной» вместо того, чтобы менять сам документ.
264
- - Разбивать фазы на задачи с идентификаторами и графом зависимостей.
265
- - Повторять один факт в нескольких разделах.
266
- - Планировать дальше первой проверяемой вехи и добивать план до потолка объёма.
267
- - Переформулировать запрос пользователя перед Plan Mode.
268
- - Сохранять сырой текст Plan Mode без нормализации.
269
- - Оставлять план исследованием, списком наблюдений или журналом ревью.
270
- - Сохранять план с открытыми вопросами вместо того, чтобы задать их пользователю.
271
- - Выполнять plan-review, plan-review-fix или plan-polish основным агентом.
272
- - Пропускать кросс-CLI молча в `strict`: если CLI нет, спроси.
212
+ Фаза — только цель, что сделать, необязательное согласование, результат и проверка; задач с идентификаторами и графа зависимостей нет. В `Что сделать` не пиши общих слов вроде «обновить UI», «добавить сервис»: для UI — сценарий, состояния успеха и ошибки и видимый результат; для логики — ответственность частей, поток данных и ошибки. Каждая фаза выполнима одним агентом за один проход вместе с проверкой. Риски и порядок не выносятся в отдельные разделы: закрытый риск становится решением, шагом алгоритма или проверкой.
213
+
214
+ ## Проверка перед показом и сохранением
215
+
216
+ - разделы шаблона на месте и в порядке, front matter заполнен;
217
+ - `Рамка` содержит каждое применимое требование правил, архитектуры, эталонов, бизнес-карточек и `AGENTS.md` с источником и разделом, и ничего неприменимого;
218
+ - `sources` перечисляет все файлы, на которые ссылается `Рамка`;
219
+ - недостающие бизнес-правила и изменения рамки — отдельные фазы до зависимой реализации;
220
+ - алгоритм — сценарии из нумерованных шагов в порядке выполнения, без таблиц событий; у шагов с внешними вызовами и изменением данных есть ошибки и способ продолжить;
221
+ - каждая ветка и ошибка алгоритма есть в `Тестах и проверках`; каждый сценарий и контракт реализует какая-то фаза;
222
+ - каждое поле, статус, endpoint и команда названы одинаково во всех разделах;
223
+ - удаляемое и переименованное поведение описано по правилу 14;
224
+ - каждая изменяемая таблица БД описана своей таблицей колонок;
225
+ - каждый ответ пользователя записан в `Принятых решениях`, и план ему не противоречит;
226
+ - в плане нет механизмов вне запроса, рамки и решений;
227
+ - у каждой фазы есть цель, что сделать, результат и проверка — команда с ожидаемым результатом или наблюдаемое состояние; `test_strategy` и `logging_strategy` применены;
228
+ - нет повторов фактов между разделами, альтернатив, открытых вопросов, общих призывов и пояснений, удаление которых ничего не меняет;
229
+ - пакеты с версиями, bootstrap — через официальный CLI, решения правила 11 записаны;
230
+ - размер в пределах потолка.