@gian-tiaga/eda 3.5.0 → 3.7.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 +3 -0
- package/README.md +27 -19
- package/agents/eda-commit-executor/agent.json +4 -4
- package/agents/eda-commit-executor/prompt.md +12 -3
- package/lib/install.js +87 -17
- package/package.json +1 -1
- package/skills/eda-commit/SKILL.md +2 -2
- package/skills/eda-commit/skill.json +2 -1
- package/skills/eda-orhestra/SKILL.md +16 -12
- package/skills/eda-plan-execute/SKILL.md +18 -18
- package/skills/eda-polish/SKILL.md +12 -13
- package/skills/eda-prepare-ai/SKILL.md +20 -7
- package/skills/eda-review/SKILL.md +42 -17
- package/skills/eda-review/references/review-matrix.md +70 -0
- package/skills/eda-review/skill.json +0 -7
|
@@ -23,7 +23,7 @@ description: 'Коммитит выбранные или все незакомм
|
|
|
23
23
|
|
|
24
24
|
| Агент | Claude Code | Codex | Доступ |
|
|
25
25
|
|---|---|---|---|
|
|
26
|
-
| `eda-commit-executor` | `
|
|
26
|
+
| `eda-commit-executor` | `sonnet` | `gpt-5.6-terra` | git-write |
|
|
27
27
|
|
|
28
28
|
- В Claude Code запускай установленный custom agent через `Agent` tool по имени.
|
|
29
29
|
- В Codex запускай установленный custom agent через `spawn_agent` или аналог по имени.
|
|
@@ -75,7 +75,7 @@ COMMIT_SCOPE:
|
|
|
75
75
|
Верни результат строго по YAML-контракту агента.
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Агент сам собирает git-контекст, читает правила и историю, формирует
|
|
78
|
+
Агент сам собирает git-контекст, читает правила и историю, формирует сообщения коммитов и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет разрешённое продолжение. При непустом `$COMMIT_SCOPE` он выбирает соответствующий состав. При пустом `$COMMIT_SCOPE` включает все tracked-изменения и содержательные untracked-файлы, исключая только очевидные кэши, временные, системные и локальные служебные артефакты. Выбранный состав он сам делит на необходимое число логически цельных коммитов и создаёт их по порядку; несколько задач в полном дефолтном наборе не являются причиной для вопроса. При вероятном секрете или другой реальной небезопасности он обязан вернуть `blocked` до индексации затронутой группы.
|
|
79
79
|
|
|
80
80
|
Явная команда пользователя разрешает обычные ожидаемые действия и безопасные предпосылки в её рамках. Например, «создай PR» разрешает обычный push текущей ветки, если без него PR создать нельзя. Она не разрешает force-push, публикацию секретов или другое не названное рискованное действие.
|
|
81
81
|
|
|
@@ -11,11 +11,12 @@ description: 'Выполняет настраиваемую цепочку `eda-
|
|
|
11
11
|
|
|
12
12
|
Прочитай только раздел `orhestra` из `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее любого поля настроек.
|
|
13
13
|
|
|
14
|
-
Поддерживается только `version: 3`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй.
|
|
14
|
+
Поддерживается только `version: 3`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй. Дефолты: `orhestra.mode: automatic`, `orhestra.execution: subagents`.
|
|
15
15
|
|
|
16
16
|
```yaml
|
|
17
17
|
orhestra:
|
|
18
18
|
mode: automatic
|
|
19
|
+
execution: subagents
|
|
19
20
|
steps:
|
|
20
21
|
- id: plan
|
|
21
22
|
skill: eda-plan
|
|
@@ -48,6 +49,7 @@ orhestra:
|
|
|
48
49
|
Правила схемы:
|
|
49
50
|
|
|
50
51
|
- `mode`: только `automatic` или `manual`; дефолт `automatic`.
|
|
52
|
+
- `execution`: `subagents`, `main` или `main_propagated`; дефолт `subagents`.
|
|
51
53
|
- `steps`: упорядоченный непустой список. Выполняй сверху вниз только элементы с `enabled: true`; отсутствующий `enabled` считай `true`.
|
|
52
54
|
- `id`: уникальное непустое имя шага для ссылок из `on_failure.then`.
|
|
53
55
|
- `skill`: имя установленного `eda-*`-скила. Не разрешай `eda-orhestra`, `eda-aim`, `eda-commit`, `eda-send-review`, `eda-worktree` и `eda-merge-worktree`.
|
|
@@ -63,7 +65,9 @@ orhestra:
|
|
|
63
65
|
|
|
64
66
|
## Вход из сообщения пользователя
|
|
65
67
|
|
|
66
|
-
Сохрани весь текст рядом с вызовом в `$USER_REQUEST`. Извлеки задачу, пути к готовым артефактам, режим и разовые изменения цепочки.
|
|
68
|
+
Сохрани весь текст рядом с вызовом в `$USER_REQUEST`. Извлеки задачу, пути к готовым артефактам, режим вопросов, режим исполнения и разовые изменения цепочки.
|
|
69
|
+
|
|
70
|
+
Явные `subagents`, `main` или `main_propagated` рядом с вызовом `eda-orhestra` задают `$EXECUTION` только для текущего запуска и важнее настроек. Поддерживай также формулировки «основным агентом» для `main` и «основным агентом с передачей» для `main_propagated`. Не принимай режим, явно адресованный отдельному шагу, за режим самого оркестратора.
|
|
67
71
|
|
|
68
72
|
Поддерживай естественные overrides: `без полировки плана`, `без полировки кода`, `полировка кода 2 итерации`, `без ручных тестов`, `только plan и execute`, `plan-polish threshold 95 limit 3`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка кода N итераций` нормализуй в `limit N` внутри `args` шага `eda-polish`; аналогичную фразу о плане — в `args` шага `eda-plan-polish`. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
|
|
69
73
|
|
|
@@ -71,10 +75,10 @@ orhestra:
|
|
|
71
75
|
|
|
72
76
|
## Подготовка цепочки
|
|
73
77
|
|
|
74
|
-
1.
|
|
78
|
+
1. Определи `$EXECUTION` по явному режиму оркестратора, затем по `orhestra.execution`, иначе `subagents`; нормализуй настройки и overrides в `$STEPS` с `id`, `skill`, `enabled` и `args`.
|
|
75
79
|
2. Проверь уникальность id, наличие скилов, `on_failure`-инварианты и положительные числовые лимиты. Неизвестный id в `on_failure.then`, запрещённый скилл, handler без повторного manual-test, пустая активная цепочка или отсутствующий установленный скилл — `blocked: некорректная конфигурация orhestra` с точным полем.
|
|
76
80
|
3. Не исправляй подозрительный порядок молча. Если шаг очевидно требует ещё не созданный артефакт, в automatic остановись только когда вход нельзя безопасно получить из `$USER_REQUEST` или предыдущих результатов; в manual задай один вопрос о порядке или входе.
|
|
77
|
-
4. Сформируй для каждого шага итоговый ввод: `$USER_REQUEST` + пути ко всем артефактам предыдущих шагов + `args`.
|
|
81
|
+
4. Сформируй для каждого шага итоговый ввод: задача из `$USER_REQUEST` без orchestration-only указания `$EXECUTION` + пути ко всем артефактам предыдущих шагов + `args`. Явно адресованный режим отдельного шага сохрани.
|
|
78
82
|
5. Прямые параметры текущего вызова всегда ставь выше противоречащих `args` и настроек.
|
|
79
83
|
|
|
80
84
|
## Режимы и вопросы
|
|
@@ -104,15 +108,14 @@ orhestra:
|
|
|
104
108
|
## Вызов вложенных скилов
|
|
105
109
|
|
|
106
110
|
1. Загружай установленный `SKILL.md` каждого шага как источник правды. Не копируй его процедуру в этот скилл.
|
|
107
|
-
2.
|
|
108
|
-
3.
|
|
109
|
-
4.
|
|
110
|
-
5.
|
|
111
|
-
6. Если чистый контекст, субагент этапа или нужная составному скилу вложенная делегация недоступны, остановись с `blocked: недоступна изоляция этапа`. Не выполняй этап основным агентом и не вводи новый CLI-fallback, которого нет в инструкции вызываемого скилла.
|
|
111
|
+
2. В `main_propagated` добавь `main` к итоговому вводу только совместимых шагов `eda-plan-execute`, `eda-polish` и `eda-review`, если пользователь не задал этому шагу собственный режим. Не передавай его другим скилам: `eda-polish` уже передаст режим своему `eda-review`, а остальные продолжат по собственному контракту.
|
|
112
|
+
3. В `subagents` каждый активный шаг, повтор и `on_failure.skill` запускай в отдельном изолированном субагенте. Передавай только рабочую директорию, имя скилла, итоговый ввод и пути к нужным артефактам. В Codex используй `spawn_agent` с `fork_turns: "none"` или точный аналог; в Claude Code — новый `Agent` с самодостаточным task-сообщением.
|
|
113
|
+
4. В `main` и `main_propagated` выполняй контракт каждого активного шага, повтора и `on_failure.skill` сам в текущем контексте, строго последовательно. Не создавай для них верхнеуровневых субагентов; собственные правила вложенной делегации вызываемого скилла сохраняются.
|
|
114
|
+
5. Не переключай `$EXECUTION` автоматически. В `subagents` при недоступной изоляции остановись с `blocked: недоступна изоляция этапа`; в main-режимах блокируйся только тогда, когда обязательная вложенная делегация недоступна по контракту самого шага.
|
|
112
115
|
|
|
113
116
|
## Технические остановки субагентов
|
|
114
117
|
|
|
115
|
-
|
|
118
|
+
В `subagents` техническую ошибку инструмента субагентов не смешивай со статусами `failed` и `blocked` содержательного контракта. Сохрани полный исходный текст ошибки и обработай её по причине:
|
|
116
119
|
|
|
117
120
|
- лимит параллельности или отсутствие свободного слота — дождись уже запущенного этим workflow агента, при необходимости закрой завершённые потоки и повтори тот же запуск; если управляемых активных агентов нет, заверши `blocked: заняты слоты субагентов`;
|
|
118
121
|
- лимит глубины вложения — не повторяй запуск и не выполняй этап сам; заверши `blocked: достигнут лимит глубины субагентов`, указав наблюдаемую и требуемую глубину;
|
|
@@ -148,13 +151,14 @@ orhestra:
|
|
|
148
151
|
|
|
149
152
|
## Финал
|
|
150
153
|
|
|
151
|
-
Сообщи
|
|
154
|
+
Сообщи режим вопросов, `$EXECUTION`, переданные вложенным шагам overrides, фактически выполненную цепочку с args и лимитами, пропущенные шаги и причины, пути ко всем артефактам, последний review score при наличии, результат manual-test при наличии, число QA-циклов и состояние git «не закоммичено».
|
|
152
155
|
|
|
153
156
|
Успех означает, что все включённые шаги завершились по собственным контрактам. Если manual-test был включён, после последних изменений обязателен `passed`; если он отключён, явно напиши «ручные тесты пропущены настройкой». Если отключён `eda-plan-polish`, явно напиши «полировка плана пропущена настройкой». Если отключён `eda-polish`, явно напиши «полировка кода пропущена настройкой».
|
|
154
157
|
|
|
155
158
|
## Чего НЕ делать
|
|
156
159
|
|
|
157
|
-
-
|
|
160
|
+
- Обходить или сокращать контракт настроенного скилла из-за выбранного режима исполнения.
|
|
161
|
+
- Передавать `main` скилам вне allowlist `eda-plan-execute`, `eda-polish`, `eda-review`.
|
|
158
162
|
- Запускать отключённый или отсутствующий в цепочке шаг, кроме явно настроенного `on_failure.skill`.
|
|
159
163
|
- Терять `args`, порядок или пути к артефактам при передаче.
|
|
160
164
|
- Считать автоматические тесты заменой включённого `eda-manual-test`.
|
|
@@ -16,14 +16,14 @@ plan-execute:
|
|
|
16
16
|
mode: auto
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
`plan-execute.mode` принимает `subagents`, `
|
|
19
|
+
`plan-execute.mode` принимает `subagents`, `main` или `auto`; при отсутствующем или невалидном значении используй `auto`. Файл настроек не изменяй.
|
|
20
20
|
|
|
21
21
|
## Вход из сообщения пользователя
|
|
22
22
|
|
|
23
23
|
Текст рядом с вызовом — главный вход. Разбери тему, путь к файлу, ограничения, прямые указания и режим:
|
|
24
24
|
|
|
25
25
|
- `subagents`, `субагенты`, `по фазам`, `изолированно` → `$MODE=subagents`;
|
|
26
|
-
- `
|
|
26
|
+
- `main`, `один`, `одним контекстом`, `без субагентов`, `сам` → `$MODE=main`;
|
|
27
27
|
- `auto`, `авто`, `автоматически` → `$MODE=auto`;
|
|
28
28
|
- без явного режима → `$MODE=plan-execute.mode` из валидных настроек, иначе `$MODE=auto`.
|
|
29
29
|
|
|
@@ -36,22 +36,22 @@ plan-execute:
|
|
|
36
36
|
| Режим | Кто выполняет фазу | Кто проверяет фазу и финал |
|
|
37
37
|
|---|---|---|
|
|
38
38
|
| `subagents` | отдельный изолированный субагент на каждую фазу | отдельные субагенты-проверяющие |
|
|
39
|
-
| `
|
|
40
|
-
| `auto` | решает по плану до старта: `
|
|
39
|
+
| `main` | основной агент подряд в одном контексте | сам основной агент |
|
|
40
|
+
| `auto` | решает по плану до старта: `main` или `subagents` | по выбранному режиму |
|
|
41
41
|
|
|
42
|
-
`auto` выбирай `
|
|
42
|
+
`auto` выбирай `main`, только когда весь план реально помещается в один контекст: немного фаз, небольшой объём задач и файлов, одна область кода, нет тяжёлых по контексту фаз вроде крупного рефакторинга, миграции данных или множества карточек. Иначе — `subagents`; при сомнении тоже `subagents`. Решение и его причину запиши в журнал.
|
|
43
43
|
|
|
44
|
-
В `
|
|
44
|
+
В `main` следи за собственным контекстом. Если план оказался тяжелее оценки или контекст заканчивается, переключи оставшиеся фазы на `subagents`, запиши переключение в журнал и продолжи с текущей фазы.
|
|
45
45
|
|
|
46
46
|
## Главные правила
|
|
47
47
|
|
|
48
|
-
1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `
|
|
48
|
+
1. **В `subagents` основной агент только управляет.** Ему разрешены чтение контекста, запуск и контроль субагентов, вопросы пользователю, обновление `$PLAN_FILE` и `$EXECUTION_FILE`. Код, тесты, миграции, конфиги, зависимости, документацию и git-состояние меняют только назначенные субагенты. В `main` основной агент выполняет фазы и проверки сам и остаётся единственным исполнителем.
|
|
49
49
|
2. **Фазы выполняй строго последовательно.** Не начинай следующую, пока текущая не выполнена и её проверка не прошла.
|
|
50
50
|
3. **В `subagents` одна фаза — один исполнитель.** Запускай каждую фазу целиком в новом субагенте со свежим контекстом без истории диалога. Идентификатор исполнителя сохраняй и продолжай его же для вопросов и исправлений этой фазы.
|
|
51
51
|
4. **Рамку читает тот, кто выполняет фазу.** Он целиком читает план, `docs/rules.md` и `docs/arch.md`. Для поведения своей фазы читает карточки из `sources.business`; у старого плана без поля выбирает через `docs/business.md` только непосредственно применимые карточки. Для затронутых компонентов так же выбирает технические карточки через `sources.references` или `docs/references.md`. Если выполнение фазы затрагивает компонент, для которого в `docs/references.md` указана карточка, он читает эту карточку целиком перед соответствующим изменением. Нерелевантные карточки не загружает.
|
|
52
|
-
5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `
|
|
52
|
+
5. **Исполнитель не додумывает план.** Если в фазе не хватает решения, это вопрос пользователю или возврат в `eda-plan`, но не импровизация в коде. В `subagents` исполнитель возвращает `needs_input`, в `main` основной агент останавливается и спрашивает.
|
|
53
53
|
6. **Блокируй конфликт.** План задаёт область выполняемой работы, а применимые business-карточки — требования к затронутому поведению. Если план противоречит business-карточке, `rules.md`, `arch.md` или reference-карточке, останови фазу и через `AskUserQuestion` спроси: изменить план через `eda-plan` или сначала пересогласовать правило через `eda-business`.
|
|
54
|
-
7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `
|
|
54
|
+
7. **Отмечай только подтверждённое.** Фазу закрывай только после выполнения и прошедшей проверки: в `subagents` это `completed` от исполнителя и отдельный `passed` от проверяющего, в `main` — пройденные критерии и команды проверки фазы с сохранённым выводом. При последующем опровержении верни отметку в незавершённое состояние.
|
|
55
55
|
8. **Проверки нельзя подавлять.** Не отключай и не поручай отключать линтеры, тесты, typecheck, static analysis и другие проверки, не добавляй игноры и не ослабляй команды и правила. Сначала исправляется причина падения, затем проверка повторяется.
|
|
56
56
|
9. **Не коммить, не пушь и не делай ревью.** Это другие скилы.
|
|
57
57
|
|
|
@@ -73,7 +73,7 @@ plan-execute:
|
|
|
73
73
|
|
|
74
74
|
Через `AskUserQuestion` предложи текущую ветку, новую ветку от `main`, новую ветку от текущей или worktree от `main`. Если вызывающий оркестратор уже передал подтверждённый выбор, не спрашивай повторно.
|
|
75
75
|
|
|
76
|
-
В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `
|
|
76
|
+
В `subagents` git-команды сам не выполняй: для новой ветки или worktree запусти отдельного субагента подготовки окружения; в `main` подготовь окружение сам. Передай ему только выбранный вариант, slug плана, рабочую директорию и запрет менять код. После успешного создания worktree остановись и дай команду перехода и нового запуска `eda-plan-execute <PLAN_FILE>`.
|
|
77
77
|
|
|
78
78
|
### 3. Прочитать план и проверить фазы
|
|
79
79
|
|
|
@@ -83,7 +83,7 @@ plan-execute:
|
|
|
83
83
|
|
|
84
84
|
### 4. Определить режим и инициализировать прогресс
|
|
85
85
|
|
|
86
|
-
Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `
|
|
86
|
+
Если `$MODE=auto`, сравни разобранные фазы с критериями из «Режимы выполнения» и зафиксируй итоговый режим `main` или `subagents` до первой фазы. Дальше действуй по зафиксированному режиму.
|
|
87
87
|
|
|
88
88
|
Создай `$EXECUTION_FILE` по пути `docs/artifacts/executions/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. В `$PLAN_FILE` добавь или актуализируй один раздел `## Прогресс выполнения` со ссылкой на журнал и списком фаз.
|
|
89
89
|
|
|
@@ -92,7 +92,7 @@ plan-execute:
|
|
|
92
92
|
plan: <путь>
|
|
93
93
|
started: <YYYY-MM-DD HH:MM>
|
|
94
94
|
status: in_progress
|
|
95
|
-
mode: subagents |
|
|
95
|
+
mode: subagents | main
|
|
96
96
|
current_phase: <номер>
|
|
97
97
|
---
|
|
98
98
|
|
|
@@ -111,11 +111,11 @@ current_phase: <номер>
|
|
|
111
111
|
## Финальная проверка
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Журнал и отметки прогресса в плане ведёт только основной агент. В `
|
|
114
|
+
Журнал и отметки прогресса в плане ведёт только основной агент. В `main` записывай выбор режима с причиной, а в колонке «Исполнитель» — `основной агент`; в `subagents` явно запрети субагентам менять `$PLAN_FILE` и `$EXECUTION_FILE`.
|
|
115
115
|
|
|
116
116
|
### 5. Запускать изолированных субагентов
|
|
117
117
|
|
|
118
|
-
Весь этап — только для `subagents`. В `
|
|
118
|
+
Весь этап — только для `subagents`. В `main` пропусти его и выполняй фазы сам; переключился на `subagents` — вернись к нему.
|
|
119
119
|
|
|
120
120
|
В Codex используй `spawn_agent` с `fork_turns: "none"`, в Claude Code — новый `Agent` с самодостаточным сообщением. Если изоляция или субагенты недоступны, остановись: `blocked: недоступно изолированное выполнение`. Работу основным агентом не делай и CLI-fallback не добавляй.
|
|
121
121
|
|
|
@@ -165,7 +165,7 @@ questions: [<вопросы или пусто>]
|
|
|
165
165
|
5. `blocked` — останови выполнение. Внешний блокер или изменение scope выноси вопросом; сам его не устраняй.
|
|
166
166
|
6. После `completed` запусти независимую проверку фазы.
|
|
167
167
|
|
|
168
|
-
В `
|
|
168
|
+
В `main` перед первой фазой один раз прочитай план целиком, `docs/rules.md` и `docs/arch.md`, а карточки выбирай по правилу 4 под каждую фазу. Затем для каждой фазы по порядку выполни работу фазы, запиши в журнал сделанное, изменённые файлы и результаты проверок и переходи к проверке фазы. Не хватает решения — спроси пользователя; конфликт с правилами или карточками — останови фазу как `blocked`; та же причина падения дважды подряд без содержательного изменения — остановись: `blocked: выполнение не сходится`.
|
|
169
169
|
|
|
170
170
|
### 7. Проверять каждую фазу
|
|
171
171
|
|
|
@@ -185,13 +185,13 @@ references_read: [<пути или пусто>]
|
|
|
185
185
|
|
|
186
186
|
При `failed` передай полный результат исполнителю этой фазы, поручи исправить подтверждённые проблемы и запусти нового проверяющего. Основной агент код не чинит и контекст прежнего проверяющего не переиспользует.
|
|
187
187
|
|
|
188
|
-
В `
|
|
188
|
+
В `main` сам выполни все проверки фазы и сверь результат с критериями плана, а не с собственным впечатлением. Падение исправляй и повторяй проверку заново целиком.
|
|
189
189
|
|
|
190
190
|
При `passed` отметь фазу завершённой и только тогда переходи к следующей.
|
|
191
191
|
|
|
192
192
|
### 8. Финальная проверка
|
|
193
193
|
|
|
194
|
-
После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `
|
|
194
|
+
После всех фаз прогони полный набор тестов, линтеров, typecheck, static analysis и других обязательных команд проекта. В `subagents` это делает отдельный новый субагент: он только проверяет, целиком читает план, `docs/rules.md` и `docs/arch.md` и выбирает карточки итогового изменённого поведения. В `main` тот же полный набор запускает основной агент.
|
|
195
195
|
|
|
196
196
|
Падение из-за сделанных изменений сопоставь с фазами и исправь по порядку плана: в `subagents` передай каждую группу исполнителю соответствующей фазы. Затем повтори всю финальную проверку целиком. Чужую или несвязанную поломку зафиксируй и вынеси вопросом, если без решения нельзя завершить план. Запрещено делать проверки зелёными через подавление ошибок, игноры, исключения, ослабление конфигов или изменение команд проверки.
|
|
197
197
|
|
|
@@ -205,7 +205,7 @@ references_read: [<пути или пусто>]
|
|
|
205
205
|
|
|
206
206
|
- В `subagents` самому менять код, тесты, миграции, конфиги и зависимости или самому запускать проверки проекта.
|
|
207
207
|
- В `subagents` дробить фазу между исполнителями, давать одному исполнителю несколько фаз, давать субагентам историю диалога или разрешать менять план и журнал.
|
|
208
|
-
- Выполнять большой или тяжёлый по контексту план в `
|
|
208
|
+
- Выполнять большой или тяжёлый по контексту план в `main`, если режим не задан явно.
|
|
209
209
|
- Запускать следующую фазу до успешной проверки текущей.
|
|
210
210
|
- Додумывать недостающее решение вместо вопроса.
|
|
211
211
|
- Подавлять ошибки проверок, ослаблять правила или менять команды ради зелёного результата.
|
|
@@ -5,20 +5,18 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
5
5
|
|
|
6
6
|
# Скил: Полировка изменений (eda-polish)
|
|
7
7
|
|
|
8
|
-
Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`.
|
|
8
|
+
Оркестрируй цикл `eda-review` → `eda-fix-by-review` → повторное `eda-review`. В `subagents` основной агент только управляет итерациями; в `main` он сам последовательно выполняет контракты review и fix в текущем контексте. В начале каждой итерации выполняй полное `eda-review` целевого изменения.
|
|
9
9
|
|
|
10
10
|
## Вход из сообщения пользователя
|
|
11
11
|
|
|
12
|
-
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит
|
|
12
|
+
Текст рядом с вызовом скилла в текущем сообщении — главный вход. Разбери target, путь к плану, PR/ветку/diff/файл, лимит итераций, ограничения и режим `subagents` или `main`. Явный режим важнее `review.execution` из полного `docs/settings.yaml` версии 3; при отсутствии валидного значения используй `subagents`. Передавай выбранный режим и overrides проверок и моделей в каждый `eda-review`.
|
|
13
13
|
|
|
14
14
|
Лимит по умолчанию — `5` итераций; пользователь может задать `limit N` положительным целым числом. Порога у цикла нет: устаревшие `threshold N`, `до 90` и `цель 90` не применяй и скажи об этом в финале.
|
|
15
15
|
|
|
16
16
|
## Правила
|
|
17
17
|
|
|
18
|
-
1.
|
|
19
|
-
|
|
20
|
-
- В Codex каждый вызов `eda-review` и `eda-fix-by-review` запускай через `spawn_agent` с `fork_turns: "none"`. Не оставляй `fork_turns` по умолчанию и не используй `"all"`: субагент получает только самодостаточное task-сообщение и явно указанные пути к артефактам.
|
|
21
|
-
2. Если нативные субагенты недоступны, остановись; не заменяй шаги CLI-процессами.
|
|
18
|
+
1. В `main` основной агент сам выполняет установленные контракты `eda-review` и `eda-fix-by-review` в текущем контексте. Не запускай для них верхнеуровневых или leaf-субагентов и не заменяй их отдельным CLI.
|
|
19
|
+
2. В `subagents` каждый вызов `eda-review` и `eda-fix-by-review` запускай отдельным изолированным субагентом. В Claude Code используй `Agent`, в Codex — `spawn_agent` с `fork_turns: "none"`; не оставляй `fork_turns` по умолчанию и не используй `"all"`. Если нативные субагенты недоступны, остановись без CLI-fallback.
|
|
22
20
|
3. Успех требует одновременно: полный review со статусом `reviewed` или `reviewed-with-warnings`, `result: clean` и ноль находок. Score — только справочное число, условием завершения он не является.
|
|
23
21
|
4. Любая находка обязательно исправляется. Отклонить находку может только `eda-fix-by-review` и только при её фактической неверности.
|
|
24
22
|
5. Не коммить и не отправляй ревью.
|
|
@@ -26,7 +24,7 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
26
24
|
|
|
27
25
|
## Технические остановки субагентов
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
В `subagents` техническую ошибку инструмента субагентов не смешивай со статусами `failed` и `blocked` содержательного контракта. Сохрани полный исходный текст ошибки и обработай её по причине:
|
|
30
28
|
|
|
31
29
|
- лимит параллельности или отсутствие свободного слота — дождись уже запущенного этим workflow агента, при необходимости закрой завершённые потоки и повтори тот же запуск; если управляемых активных агентов нет, заверши `blocked: заняты слоты субагентов`;
|
|
32
30
|
- лимит глубины вложения — не повторяй запуск и не выполняй этап сам; заверши `blocked: достигнут лимит глубины субагентов`, указав наблюдаемую и требуемую глубину;
|
|
@@ -39,19 +37,20 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
39
37
|
|
|
40
38
|
## Вопросы
|
|
41
39
|
|
|
42
|
-
Если target неоднозначен,
|
|
40
|
+
Если target неоднозначен, первый `eda-review` задаёт один конкретный вопрос по правилам своей среды. Если шаг вернул `blocked`, основной агент повторяет только этот вопрос и после ответа продолжает тот же шаг.
|
|
43
41
|
|
|
44
42
|
## Цикл
|
|
45
43
|
|
|
46
|
-
Сформируй `$TARGET_CONTEXT`, `$LIMIT` и журнал: номер итерации, review file, result, число открытых находок, список находок, fix report и причина продолжения.
|
|
44
|
+
Сформируй `$TARGET_CONTEXT`, `$EXECUTION`, `$LIMIT` и журнал: номер итерации, review file, result, число открытых находок, список находок, fix report и причина продолжения.
|
|
47
45
|
|
|
48
46
|
Для каждой итерации:
|
|
49
47
|
|
|
50
|
-
1.
|
|
48
|
+
1. В `main` выполни `eda-review` сам; в `subagents` запусти отдельного субагента:
|
|
51
49
|
|
|
52
50
|
```text
|
|
53
51
|
Используй eda-review для <TARGET_CONTEXT>.
|
|
54
52
|
План: <PLAN_FILE | none>.
|
|
53
|
+
Режим исполнения review: <main | subagents | из настроек>.
|
|
55
54
|
Overrides проверок и моделей: <из запроса | none>.
|
|
56
55
|
Ранее отклонённые находки: <предыдущий review file и fix report | none>.
|
|
57
56
|
Верни путь к файлу, status, result, score, находки и coverage.
|
|
@@ -59,7 +58,7 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
59
58
|
|
|
60
59
|
2. Если review остановился из-за обязательного агента, останови цикл. `reviewed-with-warnings` из-за недоступных previous reviews разрешён.
|
|
61
60
|
3. Если `result: clean` и находок нет, заверши успешно. Если `result` противоречит числу находок, считай файл невалидным и остановись.
|
|
62
|
-
4. Если находки есть, запусти отдельного субагента:
|
|
61
|
+
4. Если находки есть, в `main` выполни `eda-fix-by-review` сам; в `subagents` запусти отдельного субагента:
|
|
63
62
|
|
|
64
63
|
```text
|
|
65
64
|
Используй eda-fix-by-review для <REVIEW_FILE>.
|
|
@@ -74,11 +73,11 @@ description: 'Итеративно ревьюит и исправляет изм
|
|
|
74
73
|
|
|
75
74
|
## Финал
|
|
76
75
|
|
|
77
|
-
Сообщи результат, итоговый result и score, число итераций, счётчик находок по кругам («было 12, осталось 3»), последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
|
|
76
|
+
Сообщи `$EXECUTION`, результат, итоговый result и score, число итераций, счётчик находок по кругам («было 12, осталось 3»), последний review file и fix report, оставшиеся находки и coverage warnings. Укажи, что изменения не закоммичены. При успехе предложи `eda-commit`; при неуспехе назови конкретный блокер.
|
|
78
77
|
|
|
79
78
|
## Чего НЕ делать
|
|
80
79
|
|
|
81
|
-
-
|
|
80
|
+
- В `subagents` делать ревью или исправления основным агентом.
|
|
82
81
|
- Запускать отдельный этап проверки готового ревью.
|
|
83
82
|
- Считать цикл успешным при наличии находок или завершать его по score.
|
|
84
83
|
- Выбирать или отклонять находки основным агентом: отклонение — работа `eda-fix-by-review`.
|
|
@@ -15,7 +15,7 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
15
15
|
|
|
16
16
|
1. **Не правишь код.** Меняй только `docs/rules.md`, `docs/arch.md`, `docs/references.md`, `docs/references/*.md`, `AGENTS.md` и `CLAUDE.md`; не ставь пакеты и не меняй конфиги.
|
|
17
17
|
2. **Опирайся на проект.** Читай код, структуру, зависимости, команды, тесты, инфраструктуру, git-историю и существующие документы. Не генерируй универсальный шаблон.
|
|
18
|
-
3. **Разделяй документы по назначению.** Business-карточки задают подтверждённое целевое поведение и редактируются только через `eda-business`; `docs/rules.md` задаёт
|
|
18
|
+
3. **Разделяй документы по назначению.** Business-карточки задают подтверждённое целевое поведение и редактируются только через `eda-business`; `docs/rules.md` задаёт действия, запреты, команды проверки и требования к процессу, совместимости и безопасности; `docs/arch.md` фиксирует структуру исходного кода, назначение каталогов, модули и слои, ownership, зависимости, runtime/data-flow, данные и интеграции; references показывают уже устоявшуюся форму реализации; `AGENTS.md` объясняет, что это за проект и где читать обязательную рамку. У каждого факта должен быть ровно один документ-владелец: допустима ссылка на другой документ, но не вторая копия содержания даже в иной формулировке. Архитектурное решение не становится правилом только потому, что его удалось сформулировать как запрет.
|
|
19
19
|
4. **Обновляй осмысленно.** Сохраняй актуальное, исправляй неверное, удаляй устаревшее и перестраивай документ настолько сильно, насколько требует проект. Не спрашивай отдельно, что делать с каждым существующим файлом.
|
|
20
20
|
5. **Не выдавай предположение за факт.** Значимые неподтверждённые архитектурные решения предложи пользователю; после выбора зафиксируй принятый вариант.
|
|
21
21
|
6. **Предлагай экстремальный профиль проверок.** Не ограничивайся уже установленными командами или базовыми lint/test. Пройди весь каталог ниже, предложи все применимые проверки и объясни каждое `не применимо`; в документацию переноси только подтверждённые правила.
|
|
@@ -125,20 +125,29 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
125
125
|
В `docs/rules.md` уместны:
|
|
126
126
|
|
|
127
127
|
- обязательные команды и момент их запуска;
|
|
128
|
-
- действующие соглашения об именовании,
|
|
128
|
+
- действующие соглашения об именовании, формате и совместимости;
|
|
129
129
|
- требования к изменениям, например обязательная миграция при изменении схемы или обновление контракта при изменении публичного API;
|
|
130
130
|
- точечные запреты небезопасных конструкций, бесконтрольных подавлений, утечки секретов и персональных данных;
|
|
131
131
|
- строгие режимы уже внедрённых инструментов.
|
|
132
132
|
|
|
133
|
+
Пути допустимы в `docs/rules.md` только как операнды точных команд или указатели на конфиги и создаваемые артефакты. Не описывай в `docs/rules.md` топологию исходного кода, назначение каталогов, размещение компонентов или границы модулей.
|
|
134
|
+
|
|
133
135
|
Не помещай в `docs/rules.md`:
|
|
134
136
|
|
|
135
137
|
- выбор архитектурного подхода, слоёв, модулей и CQRS;
|
|
138
|
+
- дерево и топологию исходного кода, назначение каталогов и размещение компонентов;
|
|
136
139
|
- владение данными и ответственностью, направления зависимостей, transaction boundaries, persistence boundaries, trust boundaries и runtime/data-flow;
|
|
137
140
|
- решение, в каком слое выполняются валидация, преобразование типов, авторизация или управление транзакцией;
|
|
138
141
|
- форму controller, handler, repository, DTO, entity, теста, атрибута или другого компонента;
|
|
139
142
|
- желаемое будущее состояние, рекомендации и правила для ещё не внедрённых инструментов.
|
|
140
143
|
|
|
141
|
-
Если утверждение определяет, **где** находится ответственность или **какая часть системы** может зависеть от другой, запиши его в `docs/arch.md`, даже если его можно переписать как «не вызывай X из Y». Если утверждение показывает, **как именно выглядит код**, оно относится к применимой reference-карточке.
|
|
144
|
+
Если утверждение определяет, **где** находится ответственность или **какая часть системы** может зависеть от другой, запиши его в `docs/arch.md`, даже если его можно переписать как «не вызывай X из Y». Если утверждение показывает, **как именно выглядит код**, оно относится к применимой reference-карточке. Если утверждение задаёт **целевое поведение продукта**, оно относится к применимой business-карточке. При дубле перенеси утверждение к единственному владельцу и удали пересказ из остальных документов; не сохраняй вторую копию даже другими словами.
|
|
145
|
+
|
|
146
|
+
Пограничные случаи разделяй так:
|
|
147
|
+
|
|
148
|
+
- запрет зависимости `X → Y` хранится в `docs/arch.md`; обязательный запуск проверки границ хранится в `docs/rules.md` без пересказа самой границы;
|
|
149
|
+
- требование добавить миграцию при изменении схемы хранится в `docs/rules.md`; владение данными и расположение persistence-компонентов — в `docs/arch.md`;
|
|
150
|
+
- путь к конфигу или каталогу артефактов может быть операндом рабочего правила, но путь исходного компонента и его место в системе описываются только в `docs/arch.md`.
|
|
142
151
|
|
|
143
152
|
Используй эту границу для типичных спорных тем:
|
|
144
153
|
|
|
@@ -164,6 +173,8 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
164
173
|
|
|
165
174
|
Опиши устройство проекта, не повторяя рабочие правила из `docs/rules.md`. Документ должен позволять понять, где находится нужная часть системы, за что она отвечает и как связана с остальными.
|
|
166
175
|
|
|
176
|
+
`docs/arch.md` не должен содержать команды, чек-листы разработки, настройки линтеров и других инструментов или иные рабочие правила. Если архитектурную границу проверяет конкретная команда, в `docs/arch.md` оставь только саму границу, а требование и момент запуска команды запиши в `docs/rules.md` без пересказа границы.
|
|
177
|
+
|
|
167
178
|
Включи релевантные проекту сведения:
|
|
168
179
|
- выбранный архитектурный подход, например модульный монолит, слоистая архитектура или набор сервисов, и коротко почему он подходит проекту;
|
|
169
180
|
- дерево основных папок с назначением каждой значимой части;
|
|
@@ -193,7 +204,7 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
193
204
|
|
|
194
205
|
Индекс содержит ссылки только на карточки. В каждой карточке должны быть:
|
|
195
206
|
|
|
196
|
-
- назначение и
|
|
207
|
+
- назначение эталона и показываемая форма реализации без пересказа архитектурных границ компонента;
|
|
197
208
|
- условия, при которых пример применим;
|
|
198
209
|
- один минимальный, законченный и синтаксически цельный пример в fenced code block с указанием языка;
|
|
199
210
|
- короткий разбор элементов примера, которые нужно повторять;
|
|
@@ -237,9 +248,10 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
237
248
|
|
|
238
249
|
Убедись, что:
|
|
239
250
|
- `docs/rules.md` содержит только лаконичные действующие правила;
|
|
240
|
-
- каждое правило задаёт проверяемое действие или запрет, а архитектурные границы не продублированы в форме императива;
|
|
241
|
-
- `docs/arch.md` объясняет подход, структуру папок, части системы и их связи без повторения правил;
|
|
251
|
+
- каждое правило задаёт проверяемое действие или запрет, пути используются только как операнды команд или указатели на конфиги и артефакты, а топология исходного кода и архитектурные границы не продублированы в форме императива;
|
|
252
|
+
- `docs/arch.md` объясняет подход, структуру папок, части системы и их связи без команд, чек-листов разработки, tooling-политик и повторения правил;
|
|
242
253
|
- `docs/references.md` ссылается на все актуальные карточки и не содержит самих примеров;
|
|
254
|
+
- reference-карточки описывают форму реализации, business-карточки — целевое поведение, а архитектурные факты из `docs/arch.md` в них не пересказаны;
|
|
243
255
|
- существующий `docs/business.md` учтён как вход, не изменён этим скилом и указан в `AGENTS.md`;
|
|
244
256
|
- каждая карточка самодостаточна, содержит законченный пример кода и не содержит ссылок или неподтверждённых элементов;
|
|
245
257
|
- для нового проекта без нескольких устойчивых реализаций не созданы выдуманные reference-карточки;
|
|
@@ -250,7 +262,8 @@ description: 'Готовит проект к работе с AI: проекти
|
|
|
250
262
|
- выбранные инструменты имеют максимальный применимый строгий профиль, а каждое ослабление явно обосновано;
|
|
251
263
|
- для нового проекта требования, стек и архитектурные драйверы взяты из стартового документа, а архитектура и правила спроектированы внутри `eda-prepare-ai`;
|
|
252
264
|
- AI-скилы, роли и MCP разделены на уже доступные и требующие отдельного внедрения;
|
|
253
|
-
- документы
|
|
265
|
+
- у каждого факта есть ровно один документ-владелец, а остальные документы при необходимости только ссылаются на него без пересказа;
|
|
266
|
+
- между документами нет дублей, архитектурных путей в `docs/rules.md`, императивных рабочих инструкций в `docs/arch.md` и противоречий с проектом или друг с другом.
|
|
254
267
|
|
|
255
268
|
### 13. Финал
|
|
256
269
|
|