@gian-tiaga/eda 3.10.1 → 3.10.2
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
|
@@ -59,7 +59,7 @@ eda update-all ~/Code
|
|
|
59
59
|
| `eda-manual-test` | Делает ручную проверку после изменений. По умолчанию проверка полная: разбирает план или другой артефакт по разделам, дополняет его фактическим `git diff HEAD` и закрывает матрицу областей — API, база данных, консольные команды, интерфейс, алгоритмы, фон и интеграции, права и роли, конфигурация, логи, регрессии рядом. Область нельзя закрыть чтением кода или зелёными автотестами; незакрытая область даёт `blocked`. Быстрый smoke включается настройкой `manual-test.depth` или словом в запросе. Применимая business-карточка может добавить только относящийся к задаче инвариант или сценарий. Не правит код, не пишет автотесты и не коммитит | `docs/artifacts/manual-tests/` |
|
|
60
60
|
| `eda-polish` | Оркестрирует доводку изменений: запускает полное `eda-review`, затем `eda-fix-by-review` и повторяет цикл до `clean` и отсутствия находок либо до лимита 5 итераций. В `main` оба контракта выполняет основной агент без субагентов, в `subagents` каждый шаг получает отдельный изолированный контекст. Все находки исправляются, score остаётся справочным. Не коммитит | `docs/artifacts/reviews/`, `docs/artifacts/review-fixes/` |
|
|
61
61
|
| `eda-send-review` | На `sonnet` / `gpt-5.6-terra` отправляет ревью на GitHub PR через `gh` всегда в едином формате: общий комментарий-сводка плюс комментарии к строкам кода. Без явно указанного типа использует `comment`; `approve` и `request-changes` берёт только из контекста текущего вызова. По настройке может скрыть предыдущие сводки eda-send-review и зарезолвить их inline-треды. По умолчанию шлёт все пункты. Claude-модель закрепляется при установке; Codex-модель хранится как рекомендуемый будущий override | (комментарий в PR) |
|
|
62
|
-
| `eda-commit` | Работает как лёгкий оркестратор одного `sonnet` / `gpt-5.6-terra` агента: тот сам собирает git-контекст, делит выбранный состав на логические коммиты, пишет сообщения и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет явно заданные push/PR/merge-действия. Для PR использует шаблон репозитория, отражает все группы изменений и указывает только реально выполненные проверки. С явным контекстом охватывает указанный состав; без контекста
|
|
62
|
+
| `eda-commit` | Работает как лёгкий оркестратор одного `sonnet` / `gpt-5.6-terra` агента: тот сам собирает git-контекст, делит выбранный состав на логические коммиты, пишет сообщения и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет явно заданные push/PR/merge-действия. Для PR использует шаблон репозитория, отражает все группы изменений и указывает только реально выполненные проверки. С явным контекстом охватывает указанный состав; без контекста коммитит всё — все tracked-изменения и все untracked-файлы независимо от авторства и связи с текущей задачей, кроме очевидных кэшей и локальных служебных артефактов вроде `.DS_Store`. В Claude Code сам оркестратор закреплён за `sonnet`; в Codex остаётся на активной модели сессии из-за отсутствия per-skill override. При вероятном секрете агент блокируется до индексации затронутой группы. После любого push всегда возвращает ссылку — на существующий PR или на его создание — и спрашивает, создавать ли PR, если его нет. Если продолжение не задано, предлагает применимые варианты | (git, опционально GitHub PR) |
|
|
63
63
|
| `eda-worktree` | На `haiku` / `gpt-5.6-luna` создаёт через пакетного агента git worktree рядом с основным проектом в папке `{name}-work-{n}` и одноимённую ветку. Базу берёт из аргумента или спрашивает | соседняя папка `{name}-work-{n}` |
|
|
64
64
|
| `eda-merge-worktree` | На `haiku` / `gpt-5.6-luna` мержит через пакетного агента ветку из соседнего worktree в текущую ветку. Принимает номер `1`, короткое имя `work-1` или полное имя `{name}-work-1`. Worktree и ветку после merge не удаляет | (git) |
|
|
65
65
|
| `eda-prepare-ai` | Выполняет технический bootstrap нового или существующего проекта: проектирует архитектуру, строгие правила и профиль инструментов, проходит полный каталог автоматических проверок, подбирает применимые AI-скилы, роли и MCP, затем создаёт AI-документацию. Один факт хранит у одного владельца: `docs/rules.md` содержит рабочие действия, запреты и команды проверок, а `docs/arch.md` — топологию исходного кода, ownership, зависимости и потоки без рабочих инструкций. Подтверждённые требования, стек и архитектурные драйверы из `eda-new-project` принимает как обязательный вход и не переоткрывает без обнаруженного конфликта. Для пустого проекта не выдумывает reference-карточки и не выдаёт неустановленные инструменты за доступные | `docs/rules.md`, `docs/arch.md`, `docs/references.md`, `docs/references/`, `AGENTS.md`, `CLAUDE.md` |
|
|
@@ -471,7 +471,7 @@ discover-automations может запускаться от review, fix-by-revie
|
|
|
471
471
|
|
|
472
472
|
Использовать всю цепочку не обязательно — каждый скил самодостаточен. Для полного прохода одной задачи можно вызвать `eda-orhestra automatic <задача>` или `eda-orhestra manual <задача>`. Разовые варианты: `eda-orhestra main <задача>`, `eda-orhestra main_propagated <задача>`, `eda-orhestra automatic без полировки плана <задача>`, `eda-orhestra полировка кода 2 итерации <задача>`, `eda-orhestra без ручных тестов <задача>`. Постоянный режим исполнения задаётся в `orhestra.execution`, порядок и аргументы — в `orhestra.steps`. Для прямой задачи без отдельного процесса вызови `eda-just-do-it <задача>`: скил сам выберет необходимый контекст, выполнит работу и сохранит отчёт. Новый проект можно начать с `eda-new-project`; существующий — с `eda-prepare-ai`, `eda-roadmap`, `eda-explore`, или сразу с `eda-plan-execute` на готовом плане, или просто `eda-commit`, когда правки уже сделаны. Для параллельной работы есть `eda-worktree`, а для возврата ветки из worktree в текущую ветку — `eda-merge-worktree`.
|
|
473
473
|
|
|
474
|
-
Вызов `eda-commit` без контекста охватывает все незакоммиченные tracked-изменения и
|
|
474
|
+
Вызов `eda-commit` без контекста охватывает все незакоммиченные tracked-изменения и все untracked-файлы, в том числе чужие и не относящиеся к текущей задаче; очевидные кэши, временные и локальные служебные артефакты вроде `.DS_Store` остаются вне коммитов. Executor сам делит полный состав на необходимое число логически цельных коммитов — один, три или больше. Например, запрос `eda-commit сразу отправь ветку, создай PR и дай ссылку` использует тот же полный состав и выполняет всю указанную цепочку без отдельного вопроса после серии коммитов.
|
|
475
475
|
|
|
476
476
|
---
|
|
477
477
|
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
5. Проверяй существующий PR текущей ветки, когда `USER_REQUEST` или `REQUESTED_ACTIONS` упоминает PR или push. Если предстоит создание или обновление PR, найди применимый шаблон PR в репозитории и прочитай его целиком.
|
|
41
41
|
6. Определи состав коммита:
|
|
42
42
|
- если `COMMIT_SCOPE` непустой, выбери соответствующий ему логический набор и отдели несвязанные пользовательские изменения;
|
|
43
|
-
- если `COMMIT_SCOPE` пустой,
|
|
43
|
+
- если `COMMIT_SCOPE` пустой, коммить всё: все незакоммиченные tracked-изменения — staged, unstaged и удаления — и все untracked-файлы во всём репозитории, кроме исключений пункта 7. Авторство, происхождение и связь с текущей задачей значения не имеют: чужие, посторонние, старые, частичные и незавершённые изменения входят в состав наравне с остальными. Не отбрасывай изменение как «не наше», «не по задаче», «сделано не мной» или «непонятно зачем» и не спрашивай про него. Несколько задач или несвязанных изменений в этом режиме охватываются одной серией коммитов и не требуют вопроса;
|
|
44
44
|
- не считай `push`, PR, merge и другие действия после коммита ограничением его состава.
|
|
45
|
-
7. В полном дефолтном наборе не включай очевидные локальные артефакты: кэши зависимостей и
|
|
45
|
+
7. В полном дефолтном наборе не включай очевидные локальные артефакты: кэши зависимостей и инструментов (`node_modules/`, `__pycache__/`, `.venv/`, `.turbo/`, `coverage/`), временные и swap-файлы (`*.tmp`, `*.bak`, `*.orig`, `*.swp`, `*~`), runtime-логи (`*.log`), системный мусор (`.DS_Store`, `._*`, `Thumbs.db`, `desktop.ini`) и локальное состояние IDE (`.idea/`, `.vscode/`). Список — ориентир, а не полный перечень: такой же очевидный локальный артефакт вне списка тоже исключай. Сгенерированный build/coverage-файл исключай только когда он untracked и правила или структура проекта явно показывают, что это локальный артефакт. Изменение уже tracked-файла считай намеренным и включай, даже если путь похож на generated; вероятный секрет обрабатывай отдельно как блокер.
|
|
46
46
|
8. Проверь выбранные изменения на вероятные секреты, токены, `.env` и другие приватные локальные данные. В `remaining_changes` перечисли все исключённые служебные артефакты.
|
|
47
47
|
|
|
48
|
-
Если изменений нет, верни `empty`. При непустом `COMMIT_SCOPE` верни `blocked`, если состав нельзя определить безопасно. При пустом `COMMIT_SCOPE` не блокируйся из-за нескольких задач, большого diff или отсутствия общей логической связности: распредели весь дефолтный набор по коммитам самостоятельно. Найденный вероятный секрет, конфликт с правилами или реальная небезопасность по-прежнему требуют `blocked` с одним вопросом и 2–3 вариантами. Сделай это до индексации затронутой группы.
|
|
48
|
+
Если изменений нет, верни `empty`. При непустом `COMMIT_SCOPE` верни `blocked`, если состав нельзя определить безопасно. При пустом `COMMIT_SCOPE` не блокируйся из-за нескольких задач, чужого авторства, большого diff или отсутствия общей логической связности: распредели весь дефолтный набор по коммитам самостоятельно. Найденный вероятный секрет, конфликт с правилами или реальная небезопасность по-прежнему требуют `blocked` с одним вопросом и 2–3 вариантами. Сделай это до индексации затронутой группы.
|
|
49
49
|
|
|
50
50
|
## Разбить состав на коммиты
|
|
51
51
|
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ description: 'Коммитит выбранные или все незакомм
|
|
|
13
13
|
|
|
14
14
|
Извлеки `$REQUESTED_ACTIONS`: ограничения и цепочку действий после коммита — `push`, отправить ветку, создать или обновить PR, вернуть ссылку, merge, переключить или удалить ветку. Поздний общий вопрос не отменяет конкретную команду из более ранней части того же сообщения.
|
|
15
15
|
|
|
16
|
-
Извлеки `$COMMIT_SCOPE`: явно названные файлы, каталоги, задача или другое ограничение состава коммита. Само имя `eda-commit` и действия после коммита не задают scope. Если такого контекста нет, оставь `$COMMIT_SCOPE` пустым: это означает
|
|
16
|
+
Извлеки `$COMMIT_SCOPE`: явно названные файлы, каталоги, задача или другое ограничение состава коммита. Само имя `eda-commit` и действия после коммита не задают scope. Если такого контекста нет, оставь `$COMMIT_SCOPE` пустым: это означает закоммитить всё незакоммиченное независимо от авторства и связи с текущей задачей, а не вопрос о выборе файлов.
|
|
17
17
|
|
|
18
18
|
Пример: `eda-commit сразу отправь ветку и создай PR и дай ссылку` означает `commit → push → create-or-find PR → return URL`. После коммита не спрашивай, что делать дальше.
|
|
19
19
|
|
|
@@ -75,7 +75,7 @@ COMMIT_SCOPE:
|
|
|
75
75
|
Верни результат строго по YAML-контракту агента.
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Агент сам собирает git-контекст, читает правила и историю, формирует сообщения коммитов и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет разрешённое продолжение. Форму этих текстов — язык, вид заголовка, префиксы, части тела — он берёт из `AGENTS.md`, `CLAUDE.md` и `docs/rules.md`, а если там о сообщениях ничего нет — из последних коммитов. Содержание берётся из фактического diff. При непустом `$COMMIT_SCOPE` он выбирает соответствующий состав. При пустом `$COMMIT_SCOPE` включает все tracked-изменения и
|
|
78
|
+
Агент сам собирает git-контекст, читает правила и историю, формирует сообщения коммитов и тексты PR по исходному запросу и фактическому diff, точечно коммитит и выполняет разрешённое продолжение. Форму этих текстов — язык, вид заголовка, префиксы, части тела — он берёт из `AGENTS.md`, `CLAUDE.md` и `docs/rules.md`, а если там о сообщениях ничего нет — из последних коммитов. Содержание берётся из фактического diff. При непустом `$COMMIT_SCOPE` он выбирает соответствующий состав. При пустом `$COMMIT_SCOPE` включает все tracked-изменения и все untracked-файлы, исключая только очевидные кэши, временные, системные и локальные служебные артефакты вроде `.DS_Store`, `Thumbs.db`, `node_modules/`, `.idea/` или `*.log`. Чужие, посторонние и не относящиеся к текущей задаче изменения он тоже коммитит и не спрашивает про них. Выбранный состав он сам делит на необходимое число логически цельных коммитов и создаёт их по порядку; несколько задач в полном дефолтном наборе не являются причиной для вопроса. При вероятном секрете или другой реальной небезопасности он обязан вернуть `blocked` до индексации затронутой группы.
|
|
79
79
|
|
|
80
80
|
Явная команда пользователя разрешает обычные ожидаемые действия и безопасные предпосылки в её рамках. Например, «создай PR» разрешает обычный push текущей ветки, если без него PR создать нельзя. Она не разрешает force-push, публикацию секретов или другое не названное рискованное действие.
|
|
81
81
|
|
|
@@ -124,6 +124,7 @@ COMMIT_SCOPE:
|
|
|
124
124
|
- Делить сбор контекста и коммит между разными агентами или выполнять повторный модельный проход без блокера.
|
|
125
125
|
- Пересказывать предыдущий результат вместо передачи полного YAML при продолжении.
|
|
126
126
|
- Терять начало `$USER_REQUEST` из-за последующего вопроса или ответа.
|
|
127
|
+
- Пропускать изменения при пустом `$COMMIT_SCOPE` из-за того, что они чужие, не по задаче или выглядят незаконченными.
|
|
127
128
|
- Спрашивать про push или PR, если пользователь уже явно приказал выполнить их.
|
|
128
129
|
- Заканчивать выполненный push без ссылки на PR или на его создание.
|
|
129
130
|
- Отключать hooks, использовать `--amend`, делать force-push в `main`/`master` или создавать дубликат PR.
|