@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.
- package/README.md +48 -23
- package/lib/install.js +143 -14
- package/package.json +4 -3
- package/skills/eda-automate.md +15 -3
- package/skills/eda-docs.md +40 -66
- package/skills/eda-execute.md +6 -7
- package/skills/eda-explore.md +181 -0
- package/skills/eda-plan.md +167 -17
- package/skills/eda-review.md +43 -20
- package/skills/eda-research.md +0 -119
package/skills/eda-execute.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eda-execute
|
|
3
|
-
description: 'Исполняет план из docs/plans/ по пути или описанию рядом с вызовом. Перед правками читает `docs/rules.md` и `docs/arch.md` и строго следует им, правит код,
|
|
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.
|
|
24
|
-
7.
|
|
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/`.
|
package/skills/eda-plan.md
CHANGED
|
@@ -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/. Всегда проверяет план тремя параллельными моделями (слабая, средняя, мощная) на реалистичность, пропущенные шаги, нарушения правил и риски.
|
|
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
|
-
|
|
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
|
-
###
|
|
186
|
+
### 4. Спланировать через Plan Mode
|
|
62
187
|
Войди в Plan Mode хост-агента (`EnterPlanMode` в Claude Code, встроенный план-режим в Codex). На вход:
|
|
63
188
|
1. Дословный запрос пользователя.
|
|
64
|
-
2.
|
|
65
|
-
3.
|
|
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
|
-
###
|
|
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
|
-
###
|
|
300
|
+
### 6. Мета-ревью плана тремя моделями (параллельно)
|
|
151
301
|
Запусти **в одном сообщении и одним batch** трёх агентов на трёх разных моделях — слабая, средняя, мощная. Не запускай сначала одного-двух, не жди их ответы и не запускай третьего позже: все три проверки должны стартовать до чтения любого результата.
|
|
152
302
|
|
|
153
303
|
| Среда | Слабая (быстрая) | Средняя (код) | Мощная (флагман) |
|
|
@@ -171,7 +321,7 @@ sources:
|
|
|
171
321
|
|
|
172
322
|
Когда все три ответили — прочитай ответы, **сам реши**, что применять (не вставляй чужие пункты механически). Принятые замечания сначала интегрируй в основные разделы плана: решения, алгоритм, фазы, тесты, риски. Не оставляй важные требования только в changelog.
|
|
173
323
|
|
|
174
|
-
После интеграции снова прогони quality gate из этапа
|
|
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
|
-
###
|
|
189
|
-
Обычный режим — пропусти этапы
|
|
338
|
+
### 7. Кросс-CLI — только в `strict`
|
|
339
|
+
Обычный режим — пропусти этапы 7–8, иди на финал.
|
|
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
|
-
###
|
|
355
|
+
### 8. Допилить по ревью — только в `strict`
|
|
206
356
|
Бесспорные замечания → правишь сразу. Спорные → `AskUserQuestion`. Отклонённые → оставляешь, причина в журнал. В конец файла добавь раздел `## Реакция на ревью` (Принято / Отклонено / Спорное). Поменяй `status: meta-reviewed` → `reviewed`. Покажи дифф.
|
|
207
357
|
|
|
208
|
-
###
|
|
358
|
+
### 9. Финал
|
|
209
359
|
Короткое сообщение: режим, путь к плану, путь к ревью (если был `strict`), 3–5 главных шагов простыми словами, что предлагаешь дальше (но не делай — это `eda-execute`).
|
|
210
360
|
|
|
211
361
|
## Чего НЕ делать
|