@gian-tiaga/eda 3.9.0 → 3.9.1

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 CHANGED
@@ -47,7 +47,7 @@ eda update-all ~/Code
47
47
  | `eda-business` | Совместно с человеком описывает целевое поведение проекта по тематическим карточкам: сложные темы фиксирует подробно, но без шума, соседних модулей и привязки к текущему коду. Может закрепить значимый механизм вроде JWT или серверного хранения токенов, но не язык, библиотеку или конкретную СУБД. `about` содержит лишь короткое описание проекта и основные возможности | `docs/business.md`, `docs/business/` |
48
48
  | `eda-roadmap` | Создаёт roadmap-файл: список будущих задач с короткими, понятными и недвусмысленными описаниями без деталей реализации, файлов, библиотек, API и пошагового плана | `docs/artifacts/roadmaps/` |
49
49
  | `eda-explore` | Исследует тему до конкретного результата: описание проблемы, релевантная архитектура, закрытые развилки, риски внутри решений и короткий выбранный вариант решения без плана. После определения темы читает только применимые business- и reference-карточки. В дефолтном режиме ведёт исследование как диалог; для пакетов и ПО проверяет актуальные стабильные версии | `docs/artifacts/researches/` |
50
- | `eda-plan` | Пишет план реализации через Plan Mode: фиксирует решения, БД/API-контракты и фазы, каждую из которых один агент выполняет и проверяет за один проход. Задач с идентификаторами внутри фаз нет. Реализацию не описывает — её задают `docs/rules.md`, `docs/arch.md` и карточки. Если целевое поведение ещё не описано в business-карточках, до реализации добавляет `Дополнить бизнесовые правила`; если решение противоречит правилам или архитектуре, сначала меняет сам документ. По `plan.review` запускает изолированный `eda-plan-polish` ровно на одну итерацию полировки (`limit 1`); `plan.strict` независимо включает кросс-CLI ревью | `docs/artifacts/plans/`, опционально plan-review артефакты |
50
+ | `eda-plan` | Пишет план реализации через Plan Mode: фиксирует решения, БД/API-контракты и фазы, каждую из которых один агент выполняет и проверяет за один проход. На подтверждение показывает полный план в формате скила, включая метаданные, разделы и структуру фаз; сохраняет тот же текст. Задач с идентификаторами внутри фаз нет. Реализацию не описывает — её задают `docs/rules.md`, `docs/arch.md` и карточки. Если целевое поведение ещё не описано в business-карточках, до реализации добавляет `Дополнить бизнесовые правила`; если решение противоречит правилам или архитектуре, сначала меняет сам документ. По `plan.review` запускает изолированный `eda-plan-polish` ровно на одну итерацию полировки (`limit 1`); `plan.strict` независимо включает кросс-CLI ревью | `docs/artifacts/plans/`, опционально plan-review артефакты |
51
51
  | `eda-plan-review` | Одним read-only проходом проверяет план по фиксированному чек-листу из 16 пунктов: покрытие запроса, отсутствие развилок, соответствие правилам и архитектуре, дубли, регистр текста, фазы и объём. Замечания вне списка не принимает. Оценка — доля закрытых пунктов, поэтому растёт монотонно. План не меняет | `docs/artifacts/plan-reviews/` |
52
52
  | `eda-plan-review-fix` | Закрывает проваленные пункты чек-листа минимальным изменением плана с совпадающим SHA-256. План не растёт: сначала удаление и замена, прирост объёма за один заход не больше 3%. Новое ревью не делает и код не меняет | `docs/artifacts/plan-review-fixes/` |
53
53
  | `eda-plan-polish` | Оркестрирует изолированный цикл plan-review → plan-review-fix. Хранит снапшот лучшей версии плана: как только score перестаёт расти, останавливается и восстанавливает лучшую версию, а не последнюю. По умолчанию одна итерация: проверка и исправление. Исправление проверяет ревью следующей итерации, поэтому при `limit 1` последняя правка остаётся неперепроверенной. Кросс-CLI strict не используется | `docs/artifacts/plan-reviews/`, `docs/artifacts/plan-review-fixes/` |
@@ -34,9 +34,9 @@
34
34
  До любых изменений индекса:
35
35
 
36
36
  1. Проверь `git status`, staged и unstaged diff, включая содержимое релевантных untracked-файлов.
37
- 2. Прочитай последние 5–10 коммитов и определи наблюдаемый стиль сообщений.
38
- 3. Получи текущую ветку, upstream, remotes и основную ветку из `origin/HEAD`.
39
- 4. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и связанные артефакты из `docs/**`, если они есть и применимы к изменениям.
37
+ 2. Получи текущую ветку, upstream, remotes и основную ветку из `origin/HEAD`.
38
+ 3. Прочитай `AGENTS.md`, `CLAUDE.md`, `docs/rules.md`, `docs/arch.md` и связанные артефакты из `docs/**`, если они есть и применимы к изменениям.
39
+ 4. Определи форму сообщений по разделу «Форма сообщений».
40
40
  5. Проверяй существующий PR текущей ветки, когда `USER_REQUEST` или `REQUESTED_ACTIONS` упоминает PR или push. Если предстоит создание или обновление PR, найди применимый шаблон PR в репозитории и прочитай его целиком.
41
41
  6. Определи состав коммита:
42
42
  - если `COMMIT_SCOPE` непустой, выбери соответствующий ему логический набор и отдели несвязанные пользовательские изменения;
@@ -53,6 +53,17 @@
53
53
  2. Определи порядок по зависимостям: базовые изменения раньше потребителей. Каждый выбранный файл должен попасть ровно в одну группу. Если один файл содержит изменения нескольких групп и безопасно разделить его без правки рабочего дерева нельзя, помести файл в наиболее подходящую группу и не блокируй весь дефолтный запуск только из-за этого.
54
54
  3. Зафиксируй исходное состояние индекса. Уже staged-файлы могут относиться к разным будущим группам или лежать вне `COMMIT_SCOPE`; их staging нельзя потерять или случайно включить не в тот коммит.
55
55
 
56
+ ## Форма сообщений
57
+
58
+ Форму сообщения задаёт проект, а не ты.
59
+
60
+ - Бери форму только из `AGENTS.md`, `CLAUDE.md` и `docs/rules.md`: язык текста, вид заголовка, префиксы вроде `feat:`, структуру и обязательные части тела.
61
+ - Если ни один из этих трёх файлов о сообщениях не говорит, повтори форму 2–3 последних коммитов.
62
+ - Остальные документы проекта форму не задают. Язык твоих инструкций и общения с пользователем — тоже.
63
+ - Та же форма действует для заголовка и описания PR.
64
+
65
+ Форма отвечает только на вопрос «как написано». Что написать, бери из фактического кандидата коммита: что в этой группе стало другим и зачем.
66
+
56
67
  ## Создать коммиты
57
68
 
58
69
  Для каждой группы последовательно:
@@ -60,7 +71,7 @@
60
71
  1. Непосредственно перед индексацией повторно проверь `git status` и diff оставшихся изменений. Если состояние неожиданно изменилось или при непустом `COMMIT_SCOPE` состав стал неоднозначным, верни `blocked` до `git add` этой группы.
61
72
  2. Добавляй новые файлы и подготавливай обычный изолированный индекс только точечно через `git add -- <paths>`; не используй `git add -A` или `git add .`. Если в индексе остаются файлы других групп или изменения вне scope, используй `git commit --only -- <paths>` либо эквивалентную безопасную path-limited стратегию: чужие staged-изменения не должны попасть в текущий коммит, исчезнуть из индекса или расшириться за счёт их unstaged-части.
62
73
  3. Проверь точный кандидат текущего коммита: `git diff --cached` для изолированного индекса или соответствующий path-limited diff для `--only`. Убедись, что кандидат содержит только текущую логическую группу без служебных артефактов или секретных файлов. При обнаружении проблемы не коммить и верни `blocked` с точным состоянием индекса и списком уже созданных коммитов.
63
- 4. Составь отдельное сообщение в стиле истории проекта. Заголовок до примерно 70 символов должен конкретно называть результат группы, а не повторять имя ветки, список файлов или общие слова вроде `changes`, `updates` и «правки». Если причина или важное изменение поведения не очевидны из заголовка, добавь короткое тело. Описывай только фактический кандидат коммита и не приписывай ему изменения или проверки из других групп.
74
+ 4. Составь отдельное сообщение: форма — по разделу «Форма сообщений», содержание — по фактическому кандидату. Заголовок до примерно 70 символов должен конкретно называть результат группы, а не повторять имя ветки, список файлов или общие слова вроде `changes`, `updates` и «правки». Если причина или важное изменение поведения не очевидны из заголовка, добавь короткое тело. Описывай только фактический кандидат коммита и не приписывай ему изменения или проверки из других групп.
64
75
  5. Выполни `git commit` выбранным изолированным способом без `--amend`, `--no-verify` и `--no-gpg-sign`. Проверь фактический состав нового commit, сохрани hash, subject и files, затем переходи к следующей группе.
65
76
 
66
77
  После последнего коммита проверь, что из выбранного состава ничего не осталось. Только затем выполняй действия после коммитов.
@@ -71,7 +82,7 @@
71
82
 
72
83
  Выполни `REQUESTED_ACTIONS` по порядку без повторного вопроса. Явное «создай PR» разрешает обычный push текущей ветки как необходимую предпосылку.
73
84
 
74
- Для создания или явно запрошенного обновления PR составь заголовок и описание по полному `USER_REQUEST`, фактическим коммитам текущей ветки относительно base и итоговому diff. Не своди PR к копии последнего commit message, если коммитов несколько.
85
+ Для создания или явно запрошенного обновления PR составь заголовок и описание по полному `USER_REQUEST`, фактическим коммитам текущей ветки относительно base и итоговому diff. Форму текста бери из раздела «Форма сообщений», состав разделов — из шаблона PR. Не своди PR к копии последнего commit message, если коммитов несколько.
75
86
 
76
87
  - Явно заданные пользователем заголовок, текст или обязательные разделы имеют приоритет. Иначе следуй найденному шаблону PR; если шаблона нет, дай короткое описание цели, список фактических изменений и раздел проверки.
77
88
  - Заголовок должен описывать общий результат PR конкретно и без имени ветки, номера коммита, служебных префиксов или общих формулировок вроде `updates` и «изменения».
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "3.9.0",
3
+ "version": "3.9.1",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -75,7 +75,7 @@ COMMIT_SCOPE:
75
75
  Верни результат строго по YAML-контракту агента.
76
76
  ```
77
77
 
78
- Агент сам собирает git-контекст, читает правила и историю, формирует сообщения коммитов и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет разрешённое продолжение. При непустом `$COMMIT_SCOPE` он выбирает соответствующий состав. При пустом `$COMMIT_SCOPE` включает все tracked-изменения и содержательные untracked-файлы, исключая только очевидные кэши, временные, системные и локальные служебные артефакты. Выбранный состав он сам делит на необходимое число логически цельных коммитов и создаёт их по порядку; несколько задач в полном дефолтном наборе не являются причиной для вопроса. При вероятном секрете или другой реальной небезопасности он обязан вернуть `blocked` до индексации затронутой группы.
78
+ Агент сам собирает git-контекст, читает правила и историю, формирует сообщения коммитов и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет разрешённое продолжение. Форму этих текстов — язык, вид заголовка, префиксы, части тела — он берёт из `AGENTS.md`, `CLAUDE.md` и `docs/rules.md`, а если там о сообщениях ничего нет — из последних коммитов. Содержание берётся из фактического diff. При непустом `$COMMIT_SCOPE` он выбирает соответствующий состав. При пустом `$COMMIT_SCOPE` включает все tracked-изменения и содержательные untracked-файлы, исключая только очевидные кэши, временные, системные и локальные служебные артефакты. Выбранный состав он сам делит на необходимое число логически цельных коммитов и создаёт их по порядку; несколько задач в полном дефолтном наборе не являются причиной для вопроса. При вероятном секрете или другой реальной небезопасности он обязан вернуть `blocked` до индексации затронутой группы.
79
79
 
80
80
  Явная команда пользователя разрешает обычные ожидаемые действия и безопасные предпосылки в её рамках. Например, «создай PR» разрешает обычный push текущей ветки, если без него PR создать нельзя. Она не разрешает force-push, публикацию секретов или другое не названное рискованное действие.
81
81
 
@@ -5,7 +5,7 @@ description: 'Создаёт понятный исполнимый план ре
5
5
 
6
6
  # Скил: Планировщик (eda-plan)
7
7
 
8
- Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, нормализуешь результат в файл `docs/artifacts/plans/` и делишь работу на фазы, каждую из которых один агент выполняет и проверяет за один проход. По настройкам запускаешь `eda-plan-polish`, а в strict — независимую кросс-CLI проверку.
8
+ Собираешь контекст, запускаешь стандартный Plan Mode хост-агента, приводишь план к формату скила до подтверждения пользователем и сохраняешь подтверждённый текст в `docs/artifacts/plans/`. Делишь работу на фазы, каждую из которых один агент выполняет и проверяет за один проход. По настройкам запускаешь `eda-plan-polish`, а в strict — независимую кросс-CLI проверку.
9
9
 
10
10
  ## Режим запуска
11
11
 
@@ -98,14 +98,16 @@ description: 'Создаёт понятный исполнимый план ре
98
98
  4. Найденные версии пакетов и источники.
99
99
  5. Пути к `docs/rules.md`, `docs/arch.md`, применимым карточкам и research с выпиской обязательных требований рамки.
100
100
  6. Требование: план следует правилам, архитектуре и применимым эталонам. Если нужное решение им противоречит, план сначала меняет сам документ отдельным пунктом, а не отклоняется от него.
101
- 7. Требование: план нормализуется в структуру ниже и делится на фазы, каждую из которых один агент выполняет и проверяет за один проход.
101
+ 7. Требование: уже на подтверждение пользователь получает полный план по шаблону этапа 3, включая YAML front matter, все разделы в заданном порядке и фазы с полями «Цель», «Что сделать», «Результат», «Проверка». Это формат и показа в Plan Mode, и сохраняемого файла.
102
102
  8. Требование: конкретика не равна максимальной подробности. План описывает, что и зачем меняется, а не как это написать: не пересказывать запрос и существующий код, не повторять один контракт в нескольких разделах, не выдумывать пути, символы или API ради видимости конкретики. Реализацию задают `docs/rules.md`, `docs/arch.md` и карточки.
103
103
 
104
- Не выходи из Plan Mode, пока пользователь не подтвердил план.
104
+ До запроса подтверждения нормализуй план и прогони quality gate из этапа 3. Покажи полный текст плана в формате скила; краткое резюме, список главных шагов или ссылка на файл не заменяют план на подтверждение. При правках пользователя обнови план и снова предъяви его целиком в том же формате. Не выходи из Plan Mode, пока пользователь не подтвердил план.
105
105
 
106
- ### 3. Нормализовать и сохранить
106
+ ### 3. Сохранить подтверждённый план
107
107
 
108
- Сохрани подтверждённый план в `docs/artifacts/plans/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. Смысл решений не меняй без вопроса, форму и ясность правь обязательно.
108
+ Сохрани подтверждённый план в `docs/artifacts/plans/{YYYY-MM-DD}_{HH-MM}_{slug}.md` с теми же содержанием и структурой, которые показал пользователю. Нормализация формы и ясности должна быть завершена до подтверждения.
109
+
110
+ Единый шаблон для показа на подтверждение и сохранения:
109
111
 
110
112
  ```markdown
111
113
  ---
@@ -179,7 +181,7 @@ sources:
179
181
  - Риски и порядок выполнения отдельными разделами не выносятся: закрытые риски встраиваются в решения, фазы, тесты и проверки.
180
182
  - Раздела `Открытые вопросы` в плане нет. Незакрытая развилка — это блокирующий вопрос пользователю до сохранения, а не пункт в файле.
181
183
 
182
- Quality gate перед сохранением и после каждой включённой проверки:
184
+ Quality gate перед показом на подтверждение, перед сохранением и после каждой включённой проверки:
183
185
 
184
186
  - есть `Целевой алгоритм` и `Контракты реализации` с обоими подразделами;
185
187
  - применимые business-карточки выбраны после определения scope, записаны в `sources.business` и отражены в критериях приёмки;
@@ -230,7 +232,7 @@ codex exec "Прочитай $PLAN_FILE, docs/rules.md, docs/arch.md и прим
230
232
 
231
233
  ### 6. Финал
232
234
 
233
- Коротко сообщи режим, выполнялись ли polish и strict, путь к плану, пути к последним артефактам проверок, итоговый статус, открытые вопросы, 3–5 главных шагов и что дальше делает `eda-plan-execute`.
235
+ Коротко сообщи режим, выполнялись ли polish и strict, путь к плану, пути к последним артефактам проверок, итоговый статус, открытые вопросы, 3–5 главных шагов и что дальше делает `eda-plan-execute`. Если требуется повторное подтверждение плана, предъяви полный актуальный текст по шаблону этапа 3.
234
236
 
235
237
  ## Чего НЕ делать
236
238