@gian-tiaga/eda 0.3.4 → 0.4.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-execute
3
- description: 'Исполняет план из docs/plans/ по пути или описанию рядом с вызовом. Перед правками читает `docs/rules.md` и `docs/arch.md` и строго следует им, правит код, пишет тесты к изменениям внутри каждого шага, в конце прогоняет полный сьют тестов и линтеры. Прогресс — чекбоксы в файле плана + журнал в `docs/executions/`; в конец плана дописывается ссылка на журнал. Не коммитит (это `eda-commit`), не делает ревью (это `eda-review`). Вопросы задаёт только когда без ответа нельзя безопасно продолжать.'
3
+ description: 'Исполняет план из docs/plans/ по пути или описанию рядом с вызовом. Перед правками читает `docs/rules.md` и `docs/arch.md` и строго следует им, правит код, в конце прогоняет полный сьют тестов и линтеры. Прогресс — чекбоксы в файле плана + журнал в `docs/executions/`; в конец плана дописывается ссылка на журнал. Не коммитит (это `eda-commit`), не делает ревью (это `eda-review`). Вопросы задаёт только когда без ответа нельзя безопасно продолжать.'
4
4
  ---
5
5
 
6
6
  # Скил: Исполнитель (eda-execute)
@@ -20,10 +20,9 @@ description: 'Исполняет план из docs/plans/ по пути или
20
20
  3. **Не переформулируй план.** Шаг непонятен — спроси, не «доразрабатывай» молча.
21
21
  4. **Не коммитить, не пушить, не делать ревью.** Это другие скилы.
22
22
  5. **Идти целиком**, не делать паузы «для подтверждения». Останавливайся только если: тест упал, шаг противоречив, есть риск потерять данные, рискованная операция вне плана.
23
- 6. **Тесты внутри шага.** Меняешь поведение пишешь тесты к этому изменению в том же шаге, точечно прогоняешь только их. Полный сьют и линтеры один раз в конце (этап 7), не на каждом шаге.
24
- 7. **Проверки нельзя подавлять.** Не отключай линтеры, тесты, typecheck, static analysis и другие проверки; не добавляй игноры, исключения из проверок, ослабление правил или изменение команд так, чтобы проверка перестала запускаться. Пиши и правь код так, чтобы проверки проходили по сути.
25
- 8. **Простой язык** в сообщениях пользователю и вопросах. Термины — только если без них нельзя, и сразу с пояснением.
26
- 9. **Таблицы для структурируемых данных** в журнале. Диаграммы — только если действительно есть что показать.
23
+ 6. **Проверки нельзя подавлять.** Не отключай линтеры, тесты, typecheck, static analysis и другие проверки; не добавляй игноры, исключения из проверок, ослабление правил или изменение команд так, чтобы проверка перестала запускаться. Пиши и правь код так, чтобы проверки проходили по сути.
24
+ 7. **Простой язык** в сообщениях пользователю и вопросах. Термины только если без них нельзя, и сразу с пояснением.
25
+ 8. **Таблицы для структурируемых данных** в журнале. Диаграммы — только если действительно есть что показать.
27
26
 
28
27
  ## Интерактивные вопросы
29
28
 
@@ -74,7 +73,7 @@ cd ../<repo-name>-<slug>
74
73
  И **выйди из скила** — текущая сессия в эту папку не переедет, поэтому продолжать здесь нельзя. Сообщи пользователю, что ждёшь его в новой сессии.
75
74
 
76
75
  ### 3. Прочитать контекст
77
- План + `docs/rules.md` и `docs/arch.md` (если есть). Правилам и архитектуре строго следуй при каждой правке. Тест-фреймворк проекта определи сам по конфигам/существующим тестам — этого хватит, чтобы писать тесты в нужном стиле.
76
+ План + `docs/rules.md` и `docs/arch.md` (если есть). Правилам и архитектуре строго следуй при каждой правке. Тест-фреймворк проекта определи сам по конфигам/существующим тестам.
78
77
 
79
78
  ### 4. Инициализировать прогресс
80
79
  - Создай журнал `docs/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md` (slug — тот же, что у плана, или близкий).
@@ -108,7 +107,7 @@ cd ../<repo-name>-<slug>
108
107
  ### 5. Выполнить план
109
108
  Идёшь по шагам. На каждом:
110
109
  1. Сделай правки.
111
- 2. Если шаг меняет поведение добавь тесты в этом же шаге, точечно прогони.
110
+ 2. Выполни проверки, если они прямо указаны в шаге.
112
111
  3. Поставь `[x]` в файле плана и допиши строку в таблицу журнала.
113
112
 
114
113
  Останавливайся и спрашивай через `AskUserQuestion`, если: тесты к шагу упали и не правятся быстро / шаг противоречит коду / задевает рискованное вне плана. Архитектурное решение по ходу — записывай в «Изменения в docs», не блокируй.
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: eda-explore
3
+ description: 'Исследует тему или задачу до конкретного результата: проясняет проблему, архитектуру, развилки, риски и короткий выбранный вариант решения без плана реализации. Работает read-only, задаёт блокирующие вопросы, когда без ответа нельзя выбрать решение, и не оставляет неразрешённых альтернатив. Если исследование касается пакетов, библиотек, CLI, сервисов или другого ПО, проверяет актуальные стабильные версии через context7, если он доступен, или через web search по официальным источникам. Итог сохраняет в docs/researches/. Кросс-ревью соседним агентом (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true` в `docs/settings.yaml`.'
4
+ ---
5
+
6
+ # Скил: Исследователь решений (eda-explore)
7
+
8
+ Проводишь исследование так, чтобы на выходе была не подборка рассуждений, а конкретная рамка для следующего шага: что за проблема, как устроена релевантная архитектура, какие решения приняты, какие риски закрыты и какой вариант решения выбран.
9
+
10
+ ## Режимы вызова
11
+
12
+ | Режим | Запуск | Что делает |
13
+ |---|---|---|
14
+ | Обычный | `eda-explore <тема>` | Исследование + вопросы + конкретный итоговый отчёт. |
15
+ | Строгий | `eda-explore strict <тема>` | Обычный режим + кросс-ревью соседним агентом + допил отчёта. |
16
+
17
+ Если в `docs/settings.yaml` указано `defaults.strict: true`, строгий режим включён по умолчанию. Явное указание пользователя в текущем сообщении важнее настройки: `strict` включает строгий режим, `normal` / `без strict` / `без строгого режима` выключает его для текущего запуска.
18
+
19
+ ## Вход из сообщения пользователя
20
+
21
+ Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
22
+
23
+ Если входа достаточно, продолжай без подтверждения. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск исследовать не то. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
24
+
25
+ ## Настройки проекта
26
+
27
+ Перед выбором режима прочитай `docs/settings.yaml`, если файл есть.
28
+
29
+ Если файла нет — используй значение по умолчанию:
30
+ - `defaults.strict: false`
31
+
32
+ Прямое указание пользователя в текущем сообщении важнее `docs/settings.yaml`.
33
+
34
+ ## Главные правила
35
+
36
+ 1. **Никаких правок кода.** Запись только в `docs/researches/`.
37
+ 2. **Итог — конкретика.** Нельзя заканчивать абстрактными описаниями, списком возможностей или «можно выбрать один из вариантов».
38
+ 3. **Развилки решай.** Если можно выбрать по коду, правилам, архитектуре, источникам и рискам — выбери сам и запиши почему. Если выбор зависит только от пользователя — задай блокирующий вопрос.
39
+ 4. **Риски закрывай.** Для каждого риска зафиксируй решение: mitigation, acceptance или out of scope. Нельзя оставлять риск просто перечисленным.
40
+ 5. **Версии проверяй.** Если речь о пакетах, библиотеках, CLI, сервисах или другом ПО, а версия не задана контекстом, проверь последнюю стабильную версию через context7, если он доступен, или через web search по официальным источникам.
41
+ 6. **Прочитай `docs/rules.md` и `docs/arch.md`**, если есть, и используй их как рамку.
42
+ 7. **Каждое фактическое утверждение — со ссылкой** (`file.ext:42`, URL, коммит). Без ссылки — помечай как «гипотеза» и не делай её основанием выбранного решения.
43
+ 8. **Простой язык.** Термины — только когда без них нельзя, сразу с пояснением.
44
+ 9. **Таблицы > сплошной текст** для фактов, развилок, рисков и решений.
45
+
46
+ ## Интерактивные вопросы
47
+
48
+ Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
49
+ - Claude Code: используй `AskUserQuestion`.
50
+ - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
51
+ - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
52
+ - Не запускай команды, которые ждут интерактивного ввода в терминале.
53
+
54
+ ## Этапы
55
+
56
+ ### 1. Понять тему и критерий готовности
57
+
58
+ Сформулируй:
59
+ - какую проблему исследуешь;
60
+ - какой результат нужен пользователю;
61
+ - какие вопросы должны быть закрыты, чтобы можно было переходить к плану или реализации.
62
+
63
+ Если тема неоднозначна или критерий готовности нельзя вывести из запроса — задай `AskUserQuestion` и остановись до ответа.
64
+
65
+ ### 2. Собрать контекст
66
+
67
+ Работай read-only: читай код, документы, конфиги, тесты, историю и внешние источники. Прочитай `docs/rules.md` и `docs/arch.md`, если они есть.
68
+
69
+ Если исследование касается пакетов или ПО:
70
+ - сначала проверь, не зафиксирована ли версия в запросе, lock-файле, package/config-файле, `docs/rules.md`, `docs/arch.md` или связанном документе;
71
+ - если версия не зафиксирована, используй context7, если он доступен;
72
+ - если context7 недоступен или не даёт ответа, используй web search по официальной документации, registry, release notes или репозиторию проекта;
73
+ - выбирай последнюю стабильную версию, не preview/beta/rc, если пользователь явно не попросил иначе;
74
+ - запиши источник, дату проверки и причину выбора.
75
+
76
+ ### 3. Закрыть развилки
77
+
78
+ Собери все существенные развилки: архитектурные, продуктовые, технические, миграционные, по зависимостям и совместимости.
79
+
80
+ Для каждой развилки:
81
+ - перечисли варианты;
82
+ - выбери один вариант;
83
+ - запиши источник и причину выбора;
84
+ - если выбрать нельзя без пользовательского решения — задай `AskUserQuestion` и не продолжай финализацию.
85
+
86
+ ### 4. Закрыть риски
87
+
88
+ Для каждого риска зафиксируй:
89
+ - что может пойти не так;
90
+ - почему это важно;
91
+ - выбранное решение: как снимаем, принимаем или выносим за рамки;
92
+ - что это значит для будущего плана.
93
+
94
+ Высокий риск без решения — блокер. Задай вопрос или заверши со статусом `blocked`.
95
+
96
+ ### 5. Собрать отчёт
97
+
98
+ Сохрани отчёт в `docs/researches/{YYYY-MM-DD}_{HH-MM}_{slug}.md`.
99
+
100
+ Формат отчёта должен быть компактным и универсальным: три основных раздела, без обязательного раздувания под каждый тип исследования. Таблицы, ASCII-диаграммы и дополнительные подпункты добавляй внутри этих разделов только когда они действительно помогают ясности.
101
+
102
+ ```markdown
103
+ ---
104
+ title: <заголовок>
105
+ date: <YYYY-MM-DD HH:MM>
106
+ mode: <normal | strict>
107
+ status: <draft | reviewed | blocked>
108
+ reviewer: <pending | none | claude | codex>
109
+ sources:
110
+ rules: <путь или —>
111
+ arch: <путь или —>
112
+ ---
113
+
114
+ # <Заголовок>
115
+
116
+ ## Суть
117
+ Что исследовали и какая проблема решается.
118
+
119
+ ## Решение
120
+ Описание выбранного решения. Внутри этого раздела, если нужно, добавь:
121
+ - описание релевантной архитектуры;
122
+ - ASCII-диаграммы;
123
+ - таблицы фактов, развилок, рисков, версий пакетов/ПО и источников;
124
+ - объяснение, почему выбран этот вариант, а не альтернативы.
125
+
126
+ ## Ответы на вопросы
127
+ Вопросы, которые были заданы в процессе исследования, и ответы пользователя. Если вопросов не было — «Не требовались.»
128
+
129
+ ## Итог
130
+ Короткая конкретика: что делать дальше на уровне подхода, без плана реализации.
131
+ ```
132
+
133
+ Quality gate перед сохранением:
134
+ - есть разделы `Суть`, `Решение`, `Ответы на вопросы`, `Итог`;
135
+ - в `Суть` чётко описано, что исследовали и какая проблема решается;
136
+ - в `Решение` есть выбранный вариант решения, а не набор равных альтернатив;
137
+ - в `Решение` есть описание архитектуры или явно сказано, почему архитектурный слой не затронут;
138
+ - в `Ответы на вопросы` записаны все вопросы, заданные пользователю в процессе исследования, и ответы на них, чтобы `eda-plan` не задавал их повторно;
139
+ - в `Итог` есть короткая конкретика, что делать дальше на уровне подхода, без пошагового плана;
140
+ - нет незакрытых развилок;
141
+ - нет рисков без решения;
142
+ - версии пакетов/ПО проверены или объяснено, почему это не требуется;
143
+ - ключевые утверждения имеют источники.
144
+
145
+ ### 6. Кросс-ревью — только в `strict`
146
+
147
+ Обычный режим — пропусти этапы 6–7, иди на финал. `reviewer: none`, `status: draft`.
148
+
149
+ В `strict`: отдай файл соседнему агенту через `Bash` и сформулируй задание как глубокую проверку конкретности, фактов, развилок и рисков.
150
+
151
+ Если ты в Claude Code — запускай Codex CLI:
152
+
153
+ ```bash
154
+ codex exec "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
155
+ ```
156
+
157
+ Если ты в Codex — запускай Claude CLI с теми же требованиями:
158
+
159
+ ```bash
160
+ claude -p "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
161
+ ```
162
+
163
+ CLI нет — `AskUserQuestion`: продолжать без ревью или прервать.
164
+
165
+ ### 7. Допилить по ревью — только в `strict`
166
+
167
+ Бесспорные замечания → правь. Спорные → `AskUserQuestion`. Отклонённые → оставь с причиной. В конец отчёта добавь раздел `## Реакция на ревью` (Принято / Отклонено / Спорное). `status: reviewed`. Покажи дифф.
168
+
169
+ ### 8. Финал
170
+
171
+ Короткое сообщение: режим, путь к отчёту, путь к ревью (если `strict`), 3–5 конкретных выводов, выбранный вариант решения одной строкой. Не предлагай «исследовать дальше», если нет блокера.
172
+
173
+ ## Чего НЕ делать
174
+
175
+ - Править код, миграции, конфиги или зависимости.
176
+ - Оставлять несколько равных вариантов «на выбор» в итоговом отчёте.
177
+ - Писать общий обзор вместо конкретного описания проблемы, архитектуры и решения.
178
+ - Перечислять риски без выбранного закрытия.
179
+ - Планировать реализацию по шагам — это работа `eda-plan`.
180
+ - Указывать `latest` без конкретной проверенной версии и источника.
181
+ - Сохранять отчёт куда-либо кроме `docs/researches/`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: eda-plan
3
- description: 'Пишет план реализации по тексту рядом с вызовом или указанному research-файлу через стандартный Plan Mode (Claude Code / Codex). Перед планированием читает docs/rules.md, docs/arch.md и строго следует им; research подтягивает без вопроса, если он указан или явно нужен. Нормализует результат в исполнимый план с целевым алгоритмом, фазами, проверками и без неразрешённых альтернатив. Согласованный план сохраняется в docs/plans/. Всегда проверяет план тремя параллельными моделями (слабая, средняя, мощная) на реалистичность, пропущенные шаги, нарушения правил и риски. В `strict` ещё и кросс-CLI (Claude ↔ Codex). Вопросы задаёт только когда без ответа нельзя безопасно продолжать.'
3
+ description: 'Пишет план реализации по тексту рядом с вызовом или указанному research-файлу через стандартный Plan Mode (Claude Code / Codex). Перед планированием читает docs/rules.md, docs/arch.md и строго следует им; research подтягивает без вопроса, если он указан или явно нужен. Поддерживает параметр `short` для небольших фич: 1–2 фазы и компактный ревьюируемый объём. В самом начале фиксирует стратегию тестов и логирования из docs/settings.yaml или уточняет их у пользователя. Нормализует результат в исполнимый план с целевым алгоритмом, фазами, проверками и без неразрешённых альтернатив. Согласованный план сохраняется в docs/plans/. Всегда проверяет план тремя параллельными моделями (слабая, средняя, мощная) на реалистичность, пропущенные шаги, нарушения правил и риски. Кросс-CLI (Claude ↔ Codex) включается флагом `strict` или настройкой `defaults.strict: true` в `docs/settings.yaml`. Вопросы задаёт только когда без ответа нельзя безопасно продолжать или когда настройки требуют спрашивать каждый раз.'
4
4
  ---
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
@@ -13,6 +13,12 @@ description: 'Пишет план реализации по тексту ряд
13
13
  |---|---|---|
14
14
  | Обычный | `eda-plan <тема>` | Этапы 1–6 + финал. Кросс-CLI не запускается. |
15
15
  | Строгий | `eda-plan strict <тема>` | + кросс-CLI соседним агентом + допил. |
16
+ | Короткий | `eda-plan short <тема>` | План для небольшой фичи: 1–2 фазы и компактный ревьюируемый объём. |
17
+ | Короткий строгий | `eda-plan strict short <тема>` | `short`-план + кросс-CLI соседним агентом + допил. |
18
+
19
+ Если в `docs/settings.yaml` указано `defaults.strict: true`, строгий режим включён по умолчанию. Явное указание пользователя в текущем сообщении важнее настройки: `strict` включает строгий режим, `normal` / `без strict` / `без строгого режима` выключает его для текущего запуска.
20
+
21
+ Размер плана берётся из явного указания пользователя или `defaults.plan_size` в `docs/settings.yaml`. Явное `short` включает `plan_size: short`; явное `normal` / `обычный план` включает `plan_size: normal`.
16
22
 
17
23
  ## Вход из сообщения пользователя
18
24
 
@@ -20,6 +26,58 @@ description: 'Пишет план реализации по тексту ряд
20
26
 
21
27
  Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
22
28
 
29
+ ## Настройки проекта
30
+
31
+ Перед выбором режима прочитай `docs/settings.yaml`, если файл есть.
32
+
33
+ Если файла нет — используй значение по умолчанию:
34
+ - `defaults.strict: false`
35
+ - `defaults.plan_size: normal`
36
+ - `defaults.test_strategy: ask_each_time`
37
+ - `defaults.logging_strategy: ask_each_time`
38
+
39
+ Прямое указание пользователя в текущем сообщении важнее `docs/settings.yaml`.
40
+
41
+ Поддерживаемые настройки:
42
+
43
+ | Ключ | Значения | Что значит |
44
+ |---|---|---|
45
+ | `defaults.strict` | `true`, `false` | Включает или выключает строгий режим по умолчанию. |
46
+ | `defaults.plan_size` | `normal`, `short`, `ask_each_time` | Размер плана по умолчанию для `eda-plan`: обычный, короткий или спрашивать каждый раз. |
47
+ | `defaults.test_strategy` | `after_each_phase` | Тесты пишутся и запускаются после каждой фазы плана. |
48
+ | `defaults.test_strategy` | `tdd_each_phase` | В начале каждой фазы сначала пишутся тесты, затем код под них. |
49
+ | `defaults.test_strategy` | `end_of_plan` | Тесты пишутся в конце плана отдельной финальной фазой. |
50
+ | `defaults.test_strategy` | `ask_each_time` | В начале каждого планирования задай пользователю вопрос о стратегии тестов. |
51
+ | `defaults.logging_strategy` | `debug_precise` | Дебаг-логирование на каждом важном шаге для точной отладки. |
52
+ | `defaults.logging_strategy` | `standard` | Стандартные `info`, `warning`, `error` там, где это нужно для эксплуатации и диагностики. |
53
+ | `defaults.logging_strategy` | `ask_each_time` | В начале каждого планирования задай пользователю вопрос о стратегии логирования. |
54
+
55
+ Если `defaults.plan_size` отсутствует или неизвестен, считай его `normal`. Если настройка равна `ask_each_time`, в начале каждого планирования задай пользователю вопрос о размере плана.
56
+
57
+ Если `defaults.test_strategy` или `defaults.logging_strategy` отсутствует или неизвестен, считай его `ask_each_time`.
58
+
59
+ В самом начале составления плана, после чтения текущего сообщения и `docs/settings.yaml`, но до Plan Mode и до содержательного планирования, зафиксируй:
60
+ - размер плана;
61
+ - стратегию тестов;
62
+ - стратегию логирования.
63
+
64
+ Если в настройках стоит `ask_each_time`, задай блокирующий `AskUserQuestion` с вариантами. Если пользователь уже явно выбрал размер плана или стратегию в текущем сообщении, используй её без дополнительного вопроса.
65
+
66
+ Варианты вопроса про размер плана:
67
+ 1. `normal` — обычный план без искусственного ограничения по количеству фаз.
68
+ 2. `short` — короткий план на 1–2 фазы для локальной правки.
69
+
70
+ Варианты вопроса про тесты:
71
+ 1. `after_each_phase` — писать и запускать тесты после каждой фазы.
72
+ 2. `tdd_each_phase` — начинать каждую фазу с тестов, затем писать код.
73
+ 3. `end_of_plan` — писать тесты в конце плана отдельной фазой.
74
+
75
+ Варианты вопроса про логирование:
76
+ 1. `debug_precise` — дебаг-логи в каждом важном шаге для точной отладки.
77
+ 2. `standard` — `info`, `warning`, `error` там, где это нужно.
78
+
79
+ Выбранные значения передай в Plan Mode и обязательно зафиксируй в финальном плане в YAML-шапке, `Принятых решениях`, `Фазах выполнения`, `Тестах` и `Логировании`.
80
+
23
81
  ## Главные правила
24
82
 
25
83
  1. **Никаких правок кода.** Запись только в `docs/plans/`.
@@ -32,6 +90,28 @@ description: 'Пишет план реализации по тексту ряд
32
90
  8. **Таблицы > сплошной текст** для структурируемых данных.
33
91
  9. **Финальный план — не исследование.** Исследовательские факты идут в контекст, выбранные подходы — в решения, исполнимые шаги — в фазы.
34
92
  10. **Не оставляй неоднозначности.** Если в плане остаётся «выбрать», «решить», «можно так или так», «предпочтительно» — задай вопрос до финализации или зафиксируй одно принятое решение.
93
+ 11. **Версии пакетов и ПО проверяй до планирования.** Если для задачи нужно устанавливать пакет, библиотеку, сервис, CLI или другое ПО, а версия не указана в контексте, используй `context7`, если он доступен, или веб-поиск, чтобы найти актуальную последнюю стабильную версию. Зафиксируй найденную версию и источник в контексте/решениях плана. Не оставляй в плане «установить latest» без конкретной версии.
94
+
95
+ ## Размер плана
96
+
97
+ `plan_size: normal` — обычный план без искусственного ограничения по количеству фаз.
98
+
99
+ `plan_size: short` — план для небольшой фичи или локальной правки, которую можно легко отревьюить за один проход.
100
+
101
+ Ограничения `short`:
102
+ - 1–2 фазы максимум;
103
+ - ориентир: до 5–10 затронутых файлов;
104
+ - ориентир: до 400 строк осмысленного diff;
105
+ - изменения должны быть локальными и понятными для ревью за один проход;
106
+ - если файлов больше 10, но изменения однотипные и маленькие, `short` допустим только если это явно объяснено в плане;
107
+ - сгенерированные файлы, lock-файлы, форматирование и механические snapshot-обновления не считаются как основной объём, но должны быть отдельно перечислены.
108
+
109
+ Если по контексту видно, что задача не укладывается в `short`:
110
+ - не составляй и не сохраняй `short`-план;
111
+ - коротко объясни, почему `short` не подходит;
112
+ - напиши примерную оценку: сколько фаз и какой крупный объём нужен;
113
+ - задай блокирующий вопрос: продолжать в `normal` или сузить задачу до `short`;
114
+ - жди ответа пользователя.
35
115
 
36
116
  ## Интерактивные вопросы
37
117
 
@@ -46,6 +126,13 @@ description: 'Пишет план реализации по тексту ряд
46
126
  ### 1. Подтянуть контекст
47
127
  Разбери текст текущего сообщения рядом с вызовом скилла и сохрани его как исходный запрос для Plan Mode.
48
128
 
129
+ Определи `plan_size`:
130
+ - если пользователь указал `short` в текущем сообщении — `short`;
131
+ - если пользователь указал `normal`, `обычный план` или `не short` в текущем сообщении — `normal`;
132
+ - иначе возьми `defaults.plan_size` из `docs/settings.yaml`;
133
+ - если значение равно `ask_each_time` — задай `AskUserQuestion` с двумя вариантами: `normal`, `short`;
134
+ - если значение отсутствует или неизвестно — `normal`.
135
+
49
136
  Прочитай `docs/rules.md`, `docs/arch.md` (если есть) и строго следуй им при планировании.
50
137
 
51
138
  Research подтягивай так:
@@ -55,20 +142,64 @@ Research подтягивай так:
55
142
  - если `docs/researches/` отсутствует или пуста, а research явно нужен — сообщи об этом и продолжай без research, если задачи достаточно; если без research нельзя безопасно планировать, задай один блокирующий вопрос;
56
143
  - если текста задачи нет совсем — спроси через `AskUserQuestion`, что нужно планировать.
57
144
 
58
- ### 2. Уточнить, если есть неясность
145
+ Если из задачи следует установка пакетов или ПО:
146
+ - проверь, указана ли версия в сообщении пользователя, правилах, архитектуре, research или существующих lock/config-файлах;
147
+ - если версия не указана, используй `context7`, если он доступен, или веб-поиск по официальным источникам, чтобы найти последнюю стабильную версию;
148
+ - сохрани название, выбранную версию и источник — это пойдёт в Plan Mode и финальный план;
149
+ - если источники противоречат друг другу или последняя версия нестабильна/preview, задай блокирующий вопрос.
150
+
151
+ Если `plan_size: short`, до Plan Mode оцени задачу по найденному контексту:
152
+ - можно ли уложиться в 1–2 фазы;
153
+ - ожидается ли не больше 5–10 затронутых файлов или есть понятное объяснение для большего числа маленьких однотипных правок;
154
+ - ожидается ли не больше 400 строк осмысленного diff;
155
+ - можно ли будет отревьюить изменения за один проход.
156
+
157
+ Если ответ «нет» хотя бы по одному пункту, остановись по правилам раздела `Размер плана`.
158
+
159
+ ### 2. Зафиксировать стратегии тестов и логирования
160
+ Это обязательный ранний шаг. Выполни его до содержательных уточнений и до Plan Mode.
161
+
162
+ Определи `test_strategy`:
163
+ - если пользователь явно указал стратегию тестов в текущем сообщении — используй её;
164
+ - иначе возьми `defaults.test_strategy` из `docs/settings.yaml`;
165
+ - если значение равно `ask_each_time`, отсутствует или неизвестно — задай `AskUserQuestion` с тремя вариантами: `after_each_phase`, `tdd_each_phase`, `end_of_plan`.
166
+
167
+ Определи `logging_strategy`:
168
+ - если пользователь явно указал стратегию логирования в текущем сообщении — используй её;
169
+ - иначе возьми `defaults.logging_strategy` из `docs/settings.yaml`;
170
+ - если значение равно `ask_each_time`, отсутствует или неизвестно — задай `AskUserQuestion` с двумя вариантами: `debug_precise`, `standard`.
171
+
172
+ Сохрани итоговые значения как обязательные входные данные Plan Mode.
173
+
174
+ Как отражать `test_strategy` в плане:
175
+ - `after_each_phase` — в каждой фазе есть шаги написания/обновления тестов после реализации и проверка запуском этих тестов;
176
+ - `tdd_each_phase` — каждая фаза начинается с тестов, затем идут изменения кода, затем запуск тестов;
177
+ - `end_of_plan` — в фазах реализации не планируй написание тестов, кроме технически неизбежных; добавь отдельную финальную фазу написания и запуска тестов по всем ключевым сценариям.
178
+
179
+ Как отражать `logging_strategy` в плане:
180
+ - `debug_precise` — запланируй дебаг-логи на каждом важном шаге целевого алгоритма, с идентификаторами операций и без секретов/персональных данных;
181
+ - `standard` — запланируй только необходимые `info`, `warning`, `error` для эксплуатации, ошибок и важных переходов состояния, без лишнего debug-шума.
182
+
183
+ ### 3. Уточнить, если есть неясность
59
184
  Не переформулируй запрос. Если есть конкретная неясность, без которой планировать нельзя — задай 1–4 точечных вопроса через `AskUserQuestion`. Не задавай «на всякий случай». Пары «вопрос → ответ» сохрани — они идут в Plan Mode.
60
185
 
61
- ### 3. Спланировать через Plan Mode
186
+ ### 4. Спланировать через Plan Mode
62
187
  Войди в Plan Mode хост-агента (`EnterPlanMode` в Claude Code, встроенный план-режим в Codex). На вход:
63
188
  1. Дословный запрос пользователя.
64
- 2. Пары «вопрос → ответ» из этапа 2.
65
- 3. Ссылки на `docs/rules.md`, `docs/arch.md`, исследование (без пересказа — Plan Mode прочитает сам) и явное требование строго следовать правилам и архитектуре.
66
- 4. Инструкция: «все вопросы пользователю только по разделу "Интерактивные вопросы", никаких догадок и продолжения без ответа».
67
- 5. Инструкция: «финальный план должен иметь раздел "Целевой алгоритм", фазы с целью/результатом/проверкой и не должен смешивать исследование с планом исполнения».
189
+ 2. Зафиксированный `plan_size`.
190
+ 3. Зафиксированные `test_strategy` и `logging_strategy`.
191
+ 4. Найденные версии пакетов/ПО и источники, если задача требует установки.
192
+ 5. Пары «вопрос ответ» из этапа 3.
193
+ 6. Ссылки на `docs/rules.md`, `docs/arch.md`, исследование (без пересказа — Plan Mode прочитает сам) и явное требование строго следовать правилам и архитектуре.
194
+ 7. Инструкция: «все вопросы пользователю — только по разделу "Интерактивные вопросы", никаких догадок и продолжения без ответа».
195
+ 8. Инструкция: «финальный план должен иметь раздел "Целевой алгоритм", фазы с целью/результатом/проверкой и не должен смешивать исследование с планом исполнения».
196
+ 9. Инструкция: «стратегии тестов и логирования обязательны: они должны быть отражены в решениях, фазах, проверках, разделах "Тесты" и "Логирование"».
197
+ 10. Инструкция: «если `plan_size: short`, план обязан уложиться в 1–2 фазы, компактный ревьюируемый объём и объяснение ожидаемого объёма изменений».
198
+ 11. Инструкция: «если нужны пакеты или ПО, используй только конкретные версии; если версия не задана контекстом, она должна быть проверена через context7 или поиск и указана с источником».
68
199
 
69
200
  Не выходи, пока пользователь не подтвердил план.
70
201
 
71
- ### 4. Сохранить файл
202
+ ### 5. Сохранить файл
72
203
  Перед сохранением нормализуй подтверждённый черновик Plan Mode в обязательную структуру. Смысл решений не меняй без вопроса пользователю, но форму, порядок и ясность правь обязательно.
73
204
 
74
205
  Финальный план должен быть пригоден для `eda-execute` без дополнительного исследования. Структура файла `docs/plans/{YYYY-MM-DD}_{HH-MM}_{slug}.md`:
@@ -78,9 +209,12 @@ Research подтягивай так:
78
209
  title: <заголовок>
79
210
  date: <YYYY-MM-DD HH:MM>
80
211
  mode: <normal | strict>
212
+ plan_size: <normal | short>
81
213
  status: <draft | meta-reviewed | reviewed>
82
214
  reviewer: <pending | none | claude | codex>
83
215
  meta_reviewers: []
216
+ test_strategy: <after_each_phase | tdd_each_phase | end_of_plan>
217
+ logging_strategy: <debug_precise | standard>
84
218
  sources:
85
219
  rules: <путь или —>
86
220
  arch: <путь или —>
@@ -98,6 +232,8 @@ sources:
98
232
  ## Принятые решения
99
233
  Список зафиксированных архитектурных и продуктовых решений. Без вариантов «или».
100
234
 
235
+ Если `plan_size: short`, добавь решение про ожидаемый объём: сколько фаз, сколько примерно файлов и строк осмысленного diff.
236
+
101
237
  ## Целевой алгоритм
102
238
  Пошаговое описание целевого поведения системы от входного события до финального состояния. Это обзор всей картины, не список файлов.
103
239
 
@@ -111,11 +247,17 @@ sources:
111
247
 
112
248
  Результат: какое состояние системы должно получиться.
113
249
 
250
+ Сценарии тестирования:
251
+ - сценарии, которые нужно покрыть в этой фазе.
252
+
114
253
  Проверка:
115
254
  - тест, команда или критерий готовности.
116
255
 
117
256
  ## Тесты
118
- Сценарии, которые нужно покрыть, сгруппированные по поведению или фазам.
257
+ Стратегия: <когда и как писать тесты согласно test_strategy>.
258
+
259
+ ## Логирование
260
+ Стратегия: <уровень подробности согласно logging_strategy>.
119
261
 
120
262
  ## Документация и эксплуатация
121
263
  Что обновить в env/docs/runbook и что важно для релиза.
@@ -132,22 +274,30 @@ sources:
132
274
  - В `Принятые решения` попадают только выбранные решения, без альтернатив.
133
275
  - В `Целевой алгоритм` попадает сквозная картина процесса.
134
276
  - В `Фазы выполнения` попадают только исполнимые шаги.
135
- - Каждая фаза обязана иметь `Цель`, `Что сделать`, `Результат`, `Проверка`.
277
+ - Каждая фаза обязана иметь `Цель`, `Что сделать`, `Результат`, `Сценарии тестирования`, `Проверка`.
278
+ - `test_strategy` обязан менять структуру фаз: TDD — тесты в начале фаз, after_each_phase — тесты после каждой фазы, end_of_plan — отдельная финальная фаза тестов.
279
+ - `logging_strategy` обязан быть отражён в целевом алгоритме, фазах и отдельном разделе `Логирование`.
280
+ - Для `plan_size: short` фаз должно быть не больше 2, а ожидаемый объём должен быть явно указан в `Принятых решениях`.
281
+ - Если план включает установку пакетов или ПО, версии должны быть конкретными и подкреплёнными источником, если они не были заданы контекстом.
136
282
  - Если нужен раздел `Открытые вопросы`, план остаётся `draft`; после сохранения остановись и не запускай мета-ревью до ответа пользователя.
137
283
 
138
284
  Перед сохранением проверь quality gate:
139
285
  - есть `Целевой алгоритм`;
140
286
  - фазы идут в реалистичном порядке реализации;
141
- - у каждой фазы есть цель, результат и проверка;
287
+ - у каждой фазы есть цель, результат, сценарии тестирования и проверка;
142
288
  - нет неразрешённых формулировок «выбрать», «решить», «можно так или так», «предпочтительно», «при необходимости»;
143
289
  - текст написан простым языком: без лишнего жаргона, непояснённых сокращений и тяжёлых терминов;
144
290
  - мета-уровень не смешан с шагами исполнения;
291
+ - стратегия тестов зафиксирована в разделе `Тесты` и последовательно применена в фазах, сценариях тестирования и проверках;
292
+ - стратегия логирования зафиксирована и последовательно применена в алгоритме, фазах и разделе `Логирование`;
145
293
  - тесты связаны с ключевыми сценариями и рисками;
294
+ - если `plan_size: short`, фаз не больше 2, ожидаемый объём укладывается в ориентиры short или исключение явно объяснено;
295
+ - все пакеты/ПО, которые нужно установить, имеют конкретные версии или явное объяснение, почему версия берётся из существующего lock/config-файла;
146
296
  - план можно передать в `eda-execute` без нового исследования.
147
297
 
148
298
  Сохрани файл и покажи путь.
149
299
 
150
- ### 5. Мета-ревью плана тремя моделями (параллельно)
300
+ ### 6. Мета-ревью плана тремя моделями (параллельно)
151
301
  Запусти **в одном сообщении и одним batch** трёх агентов на трёх разных моделях — слабая, средняя, мощная. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
152
302
 
153
303
  | Среда | Слабая (быстрая) | Средняя (код) | Мощная (флагман) |
@@ -171,7 +321,7 @@ sources:
171
321
 
172
322
  Когда все три ответили — прочитай ответы, **сам реши**, что применять (не вставляй чужие пункты механически). Принятые замечания сначала интегрируй в основные разделы плана: решения, алгоритм, фазы, тесты, риски. Не оставляй важные требования только в changelog.
173
323
 
174
- После интеграции снова прогони quality gate из этапа 4. Затем допиши в конец короткий раздел:
324
+ После интеграции снова прогони quality gate из этапа 5. Затем допиши в конец короткий раздел:
175
325
 
176
326
  ```markdown
177
327
  ## Изменения после мета-ревью
@@ -185,8 +335,8 @@ sources:
185
335
 
186
336
  В YAML-шапке: `status: draft` → `meta-reviewed`, в `meta_reviewers` — имена/идентификаторы моделей.
187
337
 
188
- ### 6. Кросс-CLI — только в `strict`
189
- Обычный режим — пропусти этапы 67, иди на финал.
338
+ ### 7. Кросс-CLI — только в `strict`
339
+ Обычный режим — пропусти этапы 78, иди на финал.
190
340
 
191
341
  В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
192
342
 
@@ -202,10 +352,10 @@ claude -p "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md, связа
202
352
 
203
353
  Соседней CLI нет — `AskUserQuestion`: продолжать без ревью или прервать.
204
354
 
205
- ### 7. Допилить по ревью — только в `strict`
355
+ ### 8. Допилить по ревью — только в `strict`
206
356
  Бесспорные замечания → правишь сразу. Спорные → `AskUserQuestion`. Отклонённые → оставляешь, причина в журнал. В конец файла добавь раздел `## Реакция на ревью` (Принято / Отклонено / Спорное). Поменяй `status: meta-reviewed` → `reviewed`. Покажи дифф.
207
357
 
208
- ### 8. Финал
358
+ ### 9. Финал
209
359
  Короткое сообщение: режим, путь к плану, путь к ревью (если был `strict`), 3–5 главных шагов простыми словами, что предлагаешь дальше (но не делай — это `eda-execute`).
210
360
 
211
361
  ## Чего НЕ делать