@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.
- package/MIGRATION.md +23 -2
- package/README.md +131 -223
- package/agents/eda-aim-executor/prompt.md +2 -0
- package/agents/eda-aim-verifier/prompt.md +2 -0
- package/agents/eda-review-api/prompt.md +4 -4
- package/agents/eda-review-architecture/prompt.md +4 -4
- package/agents/eda-review-business/prompt.md +5 -12
- package/agents/eda-review-code-quality/prompt.md +4 -4
- package/agents/eda-review-correctness/prompt.md +3 -3
- package/agents/eda-review-database/prompt.md +4 -4
- package/agents/eda-review-documentation/prompt.md +4 -4
- package/agents/eda-review-frontend/prompt.md +4 -4
- package/agents/eda-review-infra/agent.json +14 -0
- package/agents/eda-review-infra/prompt.md +36 -0
- package/agents/eda-review-performance/prompt.md +7 -7
- package/agents/eda-review-plan-alignment/prompt.md +4 -4
- package/agents/eda-review-previous-reviews/prompt.md +5 -4
- package/agents/eda-review-references/prompt.md +4 -4
- package/agents/eda-review-rules/prompt.md +4 -4
- package/agents/eda-review-security/prompt.md +4 -4
- package/agents/eda-review-seo/agent.json +14 -0
- package/agents/eda-review-seo/prompt.md +36 -0
- package/agents/eda-review-tests/prompt.md +4 -4
- package/agents/eda-review-triage/agent.json +14 -0
- package/agents/eda-review-triage/prompt.md +38 -0
- package/lib/catalog.js +28 -1
- package/lib/install.js +221 -590
- package/lib/prompts.js +53 -0
- package/lib/renderers/codex-agent.js +3 -1
- package/lib/renderers/codex-skill.js +21 -1
- package/lib/renderers/opencode-skill.js +2 -2
- package/package.json +2 -3
- package/skills/_shared/done.md +15 -0
- package/skills/_shared/questions.md +9 -0
- package/skills/eda-aim/SKILL.md +2 -3
- package/skills/eda-business/SKILL.md +5 -6
- package/skills/eda-commit/SKILL.md +2 -3
- package/skills/eda-discover-automations/SKILL.md +6 -7
- package/skills/eda-explore/SKILL.md +28 -15
- package/skills/eda-fix/SKILL.md +7 -7
- package/skills/eda-fix-by-review/SKILL.md +4 -3
- package/skills/eda-just-do-it/SKILL.md +4 -4
- package/skills/eda-manual-test/SKILL.md +7 -5
- package/skills/eda-merge-worktree/SKILL.md +2 -3
- package/skills/eda-new-project/SKILL.md +3 -5
- package/skills/eda-orhestra/SKILL.md +3 -4
- package/skills/eda-plan/SKILL.md +126 -168
- package/skills/eda-plan-execute/SKILL.md +72 -92
- package/skills/eda-plan-polish/SKILL.md +14 -14
- package/skills/eda-plan-review/SKILL.md +25 -10
- package/skills/eda-plan-review-fix/SKILL.md +10 -7
- package/skills/eda-polish/SKILL.md +9 -6
- package/skills/eda-prepare-ai/SKILL.md +35 -15
- package/skills/eda-prod-check/SKILL.md +129 -0
- package/skills/eda-review/SKILL.md +92 -64
- package/skills/eda-review/references/checks/api.md +18 -0
- package/skills/eda-review/references/checks/architecture.md +16 -0
- package/skills/eda-review/references/checks/business.md +13 -0
- package/skills/eda-review/references/checks/code-quality.md +18 -0
- package/skills/eda-review/references/checks/correctness.md +19 -0
- package/skills/eda-review/references/checks/database.md +17 -0
- package/skills/eda-review/references/checks/documentation.md +13 -0
- package/skills/eda-review/references/checks/frontend.md +19 -0
- package/skills/eda-review/references/checks/infra.md +16 -0
- package/skills/eda-review/references/checks/performance.md +21 -0
- package/skills/eda-review/references/checks/plan-alignment.md +16 -0
- package/skills/eda-review/references/checks/previous-reviews.md +9 -0
- package/skills/eda-review/references/checks/references.md +11 -0
- package/skills/eda-review/references/checks/rules.md +16 -0
- package/skills/eda-review/references/checks/security.md +26 -0
- package/skills/eda-review/references/checks/seo.md +16 -0
- package/skills/eda-review/references/checks/tests.md +18 -0
- package/skills/eda-review/references/defects.md +24 -0
- package/skills/eda-review/references/triage.md +23 -0
- package/skills/eda-roadmap/SKILL.md +2 -4
- package/skills/eda-send-review/SKILL.md +3 -5
- package/skills/eda-worktree/SKILL.md +2 -3
- 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` передавай `без проверок`, чтобы
|
|
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
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- Codex exec: не читай stdin; заверши `blocked: нужен ответ пользователя` и перечисли варианты.
|
|
103
|
+
- интерактивный запуск: `AskUserQuestion`, затем остановись до ответа;
|
|
104
|
+
- неинтерактивный запуск: не читай stdin; заверши `blocked: нужен ответ пользователя` и перечисли варианты.
|
|
106
105
|
|
|
107
106
|
После ответа продолжай тот же шаг с его полным предыдущим результатом, а не запускай цепочку сначала.
|
|
108
107
|
|
package/skills/eda-plan/SKILL.md
CHANGED
|
@@ -5,119 +5,100 @@ description: 'Создаёт понятный исполнимый план ре
|
|
|
5
5
|
|
|
6
6
|
# Скил: Планировщик (eda-plan)
|
|
7
7
|
|
|
8
|
-
Собираешь контекст,
|
|
8
|
+
Собираешь контекст, закрываешь решения с пользователем, показываешь полный план на подтверждение и сохраняешь подтверждённый текст в `docs/artifacts/plans/`. Полировку плана не запускаешь: её делает `eda-plan-polish` или этап `eda-orhestra`. В strict добавляешь кросс-CLI проверку.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
План готов, когда исполнитель выполнит его фазу за фазой без нового исследования и вопросов, а всё, что он обязан соблюдать из правил, архитектуры, эталонов и бизнес-карточек, уже выписано в разделе `Рамка`.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Настройки
|
|
13
13
|
|
|
14
|
-
Поддерживается только `version: 3
|
|
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` | `
|
|
22
|
-
| `plan.test_strategy` | `
|
|
23
|
-
| `plan.logging_strategy` | `
|
|
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
|
-
|
|
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
|
-
|
|
26
|
+
Имя `test_strategy` сохраняется для совместимости, но настройка управляет и написанием тестов, и моментом запуска автоматических проверок:
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
- `phase_tests_final_checks` — тесты пишутся в фазе реализации; `Проверка` фазы запускает только добавленные или изменённые в ней тесты, полный набор тестов, линтеры, typecheck и остальные обязательные проверки — в финальной проверке плана;
|
|
29
|
+
- `tdd_each_phase` — фаза начинается с тестов, после реализации запускаются они и все применимые проверки фазы;
|
|
30
|
+
- `after_each_phase` — после реализации фаза добавляет тесты и запускает их вместе со всеми применимыми проверками фазы;
|
|
31
|
+
- `end_of_plan` — тесты и первый запуск автоматических проверок в отдельной финальной фазе; предыдущие фазы подтверждаются неавтоматическими критериями.
|
|
30
32
|
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
|
|
56
|
+
Блокирующий вопрос — `AskUserQuestion`: задав его, остановись до ответа. В неинтерактивном запуске не читай stdin и заверши `blocked: нужен ответ пользователя`.
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
<!-- include: skills/_shared/questions.md -->
|
|
51
59
|
|
|
52
|
-
|
|
60
|
+
## Этапы
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
### 1. Собрать контекст
|
|
55
63
|
|
|
56
|
-
|
|
64
|
+
Разбери вход и настройки, прочитай рамку по правилу 2 и код затронутых мест. Research подтягивай без вопроса, если путь указан. Описание задачи без research-файла — достаточный вход: не спрашивай research автоматически. Если пользователь просит research без пути, предложи последние файлы из `docs/artifacts/researches/` и вариант «нет». Проверь версии нужных пакетов.
|
|
57
65
|
|
|
58
|
-
|
|
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
|
-
|
|
70
|
+
### 3. Показать полный план
|
|
78
71
|
|
|
79
|
-
|
|
80
|
-
- лимит глубины вложения — не повторяй запуск и не выполняй этап сам; заверши `blocked: достигнут лимит глубины субагентов`, указав наблюдаемую и требуемую глубину;
|
|
81
|
-
- исчерпана usage-квота — не делай автоматических повторов; заверши `blocked: исчерпана квота`, сохрани время reset или условие продолжения, если хост его сообщил;
|
|
82
|
-
- не хватает разрешения — запроси одно конкретное разрешение по правилам текущей среды и после ответа продолжи того же агента; в неинтерактивной среде заверши `blocked: нужно разрешение пользователя`;
|
|
83
|
-
- временная API-, server-, overload- или network-ошибка — один раз продолжи того же агента; если resume недоступен, один раз запусти ту же роль с исходным входом, полным частичным результатом и требованием сначала сверить текущее состояние; повторный такой сбой заверши как `blocked` с исходной ошибкой;
|
|
84
|
-
- неизвестная техническая ошибка — не угадывай причину и не зацикливай retry; заверши `blocked: техническая ошибка субагента` с полным исходным текстом.
|
|
72
|
+
Составь план по шаблону ниже и проверь его по разделу «Проверка перед показом». Покажи полный текст плана — front matter, все разделы по порядку, фазы со всеми полями. Резюме, список шагов или ссылка на файл не заменяют план.
|
|
85
73
|
|
|
86
|
-
|
|
74
|
+
- Claude Code — в Plan Mode; выйди из него с полным текстом плана и дождись подтверждения.
|
|
75
|
+
- Codex, OpenCode и другие среды — полным текстом в чате; остановись до подтверждения.
|
|
87
76
|
|
|
88
|
-
|
|
77
|
+
После правок пользователя покажи план снова целиком. Без подтверждения план не сохраняй.
|
|
89
78
|
|
|
90
|
-
###
|
|
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
|
-
###
|
|
83
|
+
### 5. Strict: кросс-CLI
|
|
100
84
|
|
|
101
|
-
|
|
85
|
+
Обычный режим этап пропускает. В `strict` отдай файл соседнему CLI:
|
|
102
86
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
91
|
+
Если ты в Codex — запускай `claude -p` с тем же заданием. Если соседней CLI нет, спроси, продолжать без ревью или прервать. Бесспорные замечания внеси, спорные вынеси вопросом, отклонённые зафиксируй с причиной в `## Реакция на ревью`. Поставь `status: reviewed` и покажи дифф.
|
|
113
92
|
|
|
114
|
-
###
|
|
93
|
+
### 6. Финал
|
|
115
94
|
|
|
116
|
-
|
|
95
|
+
Сообщи режим, выполнялся ли strict, путь к плану, итоговый статус, 3–5 главных шагов и что дальше: `eda-plan-polish` или `eda-plan-execute`.
|
|
117
96
|
|
|
118
|
-
|
|
97
|
+
## Шаблон
|
|
119
98
|
|
|
120
|
-
|
|
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
|
-
|
|
148
|
+
Для каждой новой или изменяемой таблицы:
|
|
149
|
+
|
|
150
|
+
#### `<таблица>` — <новая | изменяется>
|
|
151
|
+
| Поле | Тип | Null | По умолчанию | Назначение |
|
|
152
|
+
|---|---|---|---|---|
|
|
153
|
+
|
|
154
|
+
Индексы и ограничения, связи, миграция существующих данных и откат — коротко под таблицей.
|
|
153
155
|
|
|
154
156
|
### API и внешние контракты
|
|
155
|
-
|
|
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
|
-
Стратегия, сценарии по
|
|
181
|
+
Стратегия, сценарии по поведению — включая каждую ветку «Если …» и каждую ошибку алгоритма, — фазовые и финальные команды в одном месте.
|
|
182
182
|
|
|
183
183
|
## Логирование
|
|
184
184
|
Стратегия, уровни, обязательные поля и что писать запрещено.
|
|
@@ -187,86 +187,44 @@ sources:
|
|
|
187
187
|
Что обновить в env, docs, runbook и что важно для релиза.
|
|
188
188
|
|
|
189
189
|
## Принятые решения
|
|
190
|
-
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
-
|
|
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
|
+
- размер в пределах потолка.
|