@gian-tiaga/eda 0.8.5 → 1.0.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.
Files changed (86) hide show
  1. package/MIGRATION.md +117 -0
  2. package/README.md +324 -71
  3. package/agents/eda-aim-executor/agent.json +15 -0
  4. package/agents/eda-aim-executor/prompt.md +61 -0
  5. package/agents/eda-aim-planner/agent.json +15 -0
  6. package/agents/eda-aim-planner/prompt.md +43 -0
  7. package/agents/eda-aim-verifier/agent.json +15 -0
  8. package/agents/eda-aim-verifier/prompt.md +57 -0
  9. package/agents/eda-commit-context/agent.json +15 -0
  10. package/agents/eda-commit-context/prompt.md +58 -0
  11. package/agents/eda-commit-executor/agent.json +15 -0
  12. package/agents/eda-commit-executor/prompt.md +87 -0
  13. package/agents/eda-merge-worktree-executor/agent.json +15 -0
  14. package/agents/eda-merge-worktree-executor/prompt.md +57 -0
  15. package/agents/eda-review-api/agent.json +15 -0
  16. package/agents/eda-review-api/prompt.md +34 -0
  17. package/agents/eda-review-architecture/agent.json +15 -0
  18. package/agents/eda-review-architecture/prompt.md +34 -0
  19. package/agents/eda-review-code-quality/agent.json +15 -0
  20. package/agents/eda-review-code-quality/prompt.md +34 -0
  21. package/agents/eda-review-correctness/agent.json +15 -0
  22. package/agents/eda-review-correctness/prompt.md +34 -0
  23. package/agents/eda-review-database/agent.json +15 -0
  24. package/agents/eda-review-database/prompt.md +34 -0
  25. package/agents/eda-review-documentation/agent.json +15 -0
  26. package/agents/eda-review-documentation/prompt.md +34 -0
  27. package/agents/eda-review-frontend/agent.json +15 -0
  28. package/agents/eda-review-frontend/prompt.md +34 -0
  29. package/agents/eda-review-performance/agent.json +15 -0
  30. package/agents/eda-review-performance/prompt.md +34 -0
  31. package/agents/eda-review-plan-alignment/agent.json +15 -0
  32. package/agents/eda-review-plan-alignment/prompt.md +34 -0
  33. package/agents/eda-review-previous-reviews/agent.json +15 -0
  34. package/agents/eda-review-previous-reviews/prompt.md +44 -0
  35. package/agents/eda-review-references/agent.json +15 -0
  36. package/agents/eda-review-references/prompt.md +34 -0
  37. package/agents/eda-review-rules/agent.json +15 -0
  38. package/agents/eda-review-rules/prompt.md +34 -0
  39. package/agents/eda-review-security/agent.json +15 -0
  40. package/agents/eda-review-security/prompt.md +34 -0
  41. package/agents/eda-review-tests/agent.json +15 -0
  42. package/agents/eda-review-tests/prompt.md +34 -0
  43. package/agents/eda-worktree-executor/agent.json +15 -0
  44. package/agents/eda-worktree-executor/prompt.md +49 -0
  45. package/bin/cli.js +4 -4
  46. package/lib/catalog.js +118 -0
  47. package/lib/install.js +782 -110
  48. package/lib/renderers/claude-agent.js +24 -0
  49. package/lib/renderers/claude-skill.js +11 -0
  50. package/lib/renderers/codex-agent.js +24 -0
  51. package/lib/renderers/codex-skill.js +3 -0
  52. package/package.json +5 -3
  53. package/skills/eda-aim/SKILL.md +212 -0
  54. package/skills/eda-commit/SKILL.md +124 -0
  55. package/skills/eda-commit/skill.json +6 -0
  56. package/skills/eda-discover-automations/SKILL.md +184 -0
  57. package/skills/{eda-explore.md → eda-explore/SKILL.md} +11 -8
  58. package/skills/{eda-fix.md → eda-fix/SKILL.md} +7 -6
  59. package/skills/{eda-fix-by-review.md → eda-fix-by-review/SKILL.md} +5 -4
  60. package/skills/{eda-manual-test.md → eda-manual-test/SKILL.md} +1 -1
  61. package/skills/eda-merge-worktree/SKILL.md +72 -0
  62. package/skills/eda-merge-worktree/skill.json +7 -0
  63. package/skills/eda-new-project/SKILL.md +163 -0
  64. package/skills/eda-orhestra/SKILL.md +146 -0
  65. package/skills/{eda-plan.md → eda-plan/SKILL.md} +39 -29
  66. package/skills/eda-plan-execute/SKILL.md +186 -0
  67. package/skills/{eda-plan-polish.md → eda-plan-polish/SKILL.md} +14 -13
  68. package/skills/eda-polish/SKILL.md +80 -0
  69. package/skills/eda-prepare-ai/SKILL.md +227 -0
  70. package/skills/eda-review/SKILL.md +212 -0
  71. package/skills/eda-send-review/SKILL.md +178 -0
  72. package/skills/eda-send-review/skill.json +7 -0
  73. package/skills/eda-worktree/SKILL.md +73 -0
  74. package/skills/eda-worktree/skill.json +7 -0
  75. package/skills/eda-automate.md +0 -185
  76. package/skills/eda-commit.md +0 -91
  77. package/skills/eda-docs.md +0 -123
  78. package/skills/eda-execute.md +0 -140
  79. package/skills/eda-merge-worktree.md +0 -116
  80. package/skills/eda-polish.md +0 -113
  81. package/skills/eda-review-check.md +0 -149
  82. package/skills/eda-review.md +0 -173
  83. package/skills/eda-send-review.md +0 -105
  84. package/skills/eda-start.md +0 -233
  85. package/skills/eda-worktree.md +0 -113
  86. /package/skills/{eda-roadmap.md → eda-roadmap/SKILL.md} +0 -0
@@ -1,149 +0,0 @@
1
- ---
2
- name: eda-review-check
3
- description: 'Проверяет готовое ревью из `docs/reviews/...` специализированными субагентами и, в strict-режиме, соседним CLI. Не делает первичное ревью и не правит код. Читает ревью, target/plan из front matter, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml` и связанный research при наличии. Запускает architecture-check, rules-check, plan-check только при указанном plan-файле и опциональный quality-check, затем сам применяет подтверждённые замечания к файлу ревью: добавляет, убирает или переформулирует пункты, обновляет score/status/meta_reviewers и раздел изменений после мета-ревью.'
4
- ---
5
-
6
- # Скил: Проверка ревью (eda-review-check)
7
-
8
- Берёшь уже сохранённое ревью из `docs/reviews/`, проверяешь его специализированными субагентами, затем сам правишь файл ревью по подтверждённым замечаниям. Этот скил переиспользуется обычным `eda-review` после draft-этапа и может запускаться отдельно.
9
-
10
- ## Режим запуска
11
-
12
- Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
-
14
- Дефолты: `defaults.strict: false`, `review.include_code_quality: true`.
15
-
16
- | Настройка | Значения | Аргументы в сообщении |
17
- |---|---|---|
18
- | `defaults.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
- | `review.include_code_quality` | `true`, `false` | «проверь качество кода»; выключение: «без quality», «без проверки качества» |
20
-
21
- `strict` добавляет кросс-CLI соседним агентом. `review.include_code_quality: true` добавляет `quality-check` в обычное мета-ревью.
22
-
23
- ## Вход из сообщения пользователя
24
-
25
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: путь к ревью, название или часть названия, «последнее ревью», режим, ограничения и прямые указания.
26
-
27
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск проверить не то ревью. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
28
-
29
- ## Главные правила
30
-
31
- 1. **Не делаешь первичное ревью.** Входом всегда является готовый файл `docs/reviews/...`.
32
- 2. **Не правишь код.** Можно менять только выбранный файл ревью и вспомогательный файл `${REVIEW_FILE%.md}_cli_meta.md` в strict-режиме.
33
- 3. **Мета-ревью специализированными агентами обязательно.** Базовые роли: `architecture-check`, `rules-check`. `plan-check` запускай только если в front matter ревью `plan` указывает на конкретный файл. Если включена проверка качества кода — добавь `quality-check` в тот же batch.
34
- 4. **Главный редактор ревью — ты.** Субагенты дают предложения; решение добавить, убрать или переформулировать пункт принимаешь сам.
35
- 5. **Ревью остаётся ревью только по проблемам.** Не добавляй выполненные пункты, похвалу, нейтральный отчёт о diff или общие рассуждения.
36
- 6. **Каждое принятое изменение фиксируй в `## Изменения после мета-ревью`.** Отклонённые предложения тоже запиши коротко с причиной.
37
- 7. **Оценку пересчитывай после правок.** Если изменился набор или тяжесть замечаний, обнови `score` в front matter и текст в разделе `## Оценка`.
38
-
39
- ## Интерактивные вопросы
40
-
41
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
42
- - Claude Code: используй `AskUserQuestion`.
43
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
44
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
45
- - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
46
-
47
- ## Этапы
48
-
49
- ### 1. Выбрать ревью и прочитать контекст
50
-
51
- Определи `$REVIEW_FILE`:
52
- - если пользователь указал путь к ревью — используй его;
53
- - если указал название или часть названия — найди совпадение в `docs/reviews/`;
54
- - если написал «последнее ревью» — возьми самый новый файл из `docs/reviews/`;
55
- - если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`;
56
- - если `docs/reviews/` отсутствует или пуста — остановись со статусом `blocked: нужно ревью`.
57
-
58
- Прочитай `$REVIEW_FILE` целиком. Из front matter и текста извлеки `$TARGET`, `$PLAN_FILE`, текущие `mode`, `score`, `status`, `meta_reviewers`. Если `plan: none` или план явно помечен как пропущенный, установи `$PLAN_FILE=none`. Если target указывает на diff-команду, получи актуальный diff. Если target указывает на файл, папку или PR — прочитай достаточно кода, чтобы проверить замечания. Прочитай `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, если они есть. Если ревью ссылается на `docs/researches/...`, прочитай связанный research.
59
-
60
- Если `$PLAN_FILE=none` или отсутствует, не угадывай план и не запускай `plan-check`. В разделе изменений после мета-ревью коротко зафиксируй: «plan-check не запускался: план не указан в ревью».
61
-
62
- ### 2. Запустить специализированных субагентов
63
-
64
- Запусти **в одном сообщении и одним batch** агентов с выбранными ролями. В интерактивном Codex это означает субагентов, а не отдельные процессы `codex exec`. Не запускай сначала часть агентов, не жди их ответы и не запускай остальных позже: все выбранные проверки должны стартовать до чтения любого результата.
65
-
66
- Роли агентов:
67
- - `plan-check`: запускай только если `$PLAN_FILE` указывает на существующий файл. Проверяет, что реализация действительно выполнила `$PLAN_FILE`, включая частичные пункты, пропущенные требования, лишние отклонения и недостающие проверки.
68
- - `architecture-check`: проверяет следование `docs/arch.md`, границы модулей, контракты, зависимости и соответствие существующим архитектурным решениям.
69
- - `rules-check`: проверяет следование `docs/rules.md`, локальным запретам, обязательным командам, требованиям к тестам, миграциям, документации и процессу.
70
- - `quality-check`: запускай только если `review.include_code_quality: true` или пользователь явно попросил качество кода. Проверяет качество реализации: читаемость, сложность, дублирование, имена, размер и ответственность функций/классов, сцепление модулей, поддерживаемость и соответствие локальному стилю. Quality-замечания помечай типом `quality`; по умолчанию рекомендация `на усмотрение автора`, кроме случаев, где сложность, дублирование или неясная структура реально создают риск багов, тестовых пробелов или дорогого сопровождения.
71
-
72
- Модели:
73
- - Claude Code: запускай все роли через `Agent` tool на `model: "sonnet"`.
74
- - Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), запускай все роли через него на `gpt-5.3-codex`; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны.
75
- - Codex exec / неинтерактивный fallback: если инструмента субагентов нет, запускай роли через параллельные `codex exec --model gpt-5.3-codex` одной Bash-командой с `&` и общим `wait`.
76
- - Если нужный идентификатор недоступен, возьми ближайшую code-capable модель того же уровня. Не используй быструю слабую модель для этих проверок: они должны читать diff, план при наличии, правила, архитектуру и релевантный код.
77
-
78
- Каждому агенту дай путь к `$REVIEW_FILE`, `$TARGET`, `docs/rules.md`, `docs/arch.md`, `docs/settings.yaml`, связанный research при наличии. `plan-check` дополнительно получает `$PLAN_FILE`, если он есть. Каждый агент должен читать не только ревью, но и фактический diff/код, достаточный для проверки своей роли.
79
-
80
- Формат ответа агентов:
81
- - `+` какую проблему добавить в ревью;
82
- - `−` что убрать как неверное или недоказанное;
83
- - `~` что переформулировать;
84
- - `?` что невозможно проверить и почему.
85
-
86
- Если `$PLAN_FILE` не передан, равен `none` или файл не найден, `plan-check` не запускай.
87
-
88
- ### 3. Применить результаты обычного мета-ревью
89
-
90
- Когда все агенты ответили: прочитай ответы, **сам реши**, что применять. Добавляй только подтверждённые проблемы; предложения вида «добавить, что пункт выполнен» отклоняй как неформат ревью. Внеси правки в файл ревью.
91
-
92
- В разделе `## Изменения после мета-ревью` запиши:
93
-
94
- ```markdown
95
- ### После plan-check / architecture-check / rules-check / quality-check
96
- - **+ Добавлено:** <короткий список>
97
- - **~ Изменено:** <короткий список>
98
- - **− Убрано:** <короткий список>
99
- - **Отклонено:** <короткий список с причиной>
100
- ```
101
-
102
- Поменяй `status: draft` → `meta-reviewed`, если статус был draft. В `meta_reviewers` добавь только фактически запущенные роли: `architecture-check`, `rules-check`, `plan-check` при наличии `$PLAN_FILE`, а если запускался — `quality-check`, и фактические модели, например `gpt-5.3-codex` или `sonnet`. Если оценка после корректировок изменилась — обнови `score`.
103
-
104
- ### 4. Кросс-CLI: отдать соседнему агенту — только в `strict`
105
-
106
- Обычный режим — пропусти этап 4, иди на финал. `status: meta-reviewed` оставь как есть.
107
-
108
- В `strict`: отдай файл соседнему агенту через `Bash`. Если ты в Claude Code — запускай Codex CLI:
109
-
110
- ```bash
111
- codex exec "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
112
- ```
113
-
114
- Если ты в Codex — запускай Claude CLI с теми же требованиями глубины:
115
-
116
- ```bash
117
- claude -p "Прочитай $REVIEW_FILE, $TARGET, $PLAN_FILE, docs/rules.md, docs/arch.md, связанный research при наличии. Затем глубоко проверь ревью по плану, правилам, архитектуре и релевантному коду: открой файлы, модули, API и тесты, которые следуют из diff и замечаний, и оцени фактическую корректность. Мета-ревью на русском: какие проблемы добавить, убрать, переформулировать; какие баги, риски для смежного кода и недостающие тесты пропущены. Не предлагай перечислять выполненную работу. Формат: '+', '−', '~', '?'." > "${REVIEW_FILE%.md}_cli_meta.md"
118
- ```
119
-
120
- Если `$PLAN_FILE=none`, в промпте соседнему CLI явно напиши: «План не указан; не проверяй выполнение плана и не угадывай файл плана, проверь только правила, архитектуру и код».
121
-
122
- Соседней CLI нет — `AskUserQuestion`: завершить как есть или прервать.
123
-
124
- Прочитай ответ, **сам реши**, что применять. Допиши в `## Изменения после мета-ревью`:
125
-
126
- ```markdown
127
- ### После соседнего CLI (codex|claude)
128
- - **+ Добавлено:** ...
129
- - **− Убрано:** ...
130
- - **Отклонено:** ...
131
- ```
132
-
133
- Добавь в `meta_reviewers` имя CLI. `status: meta-reviewed` → `final`.
134
-
135
- ### 5. Финал
136
-
137
- Короткое сообщение: режим (`normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение», какие meta-reviewers запускались. Не пересказывай выполненную работу. Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review-check strict <review>`».
138
-
139
- ## Чего НЕ делать
140
-
141
- - Делать первичное ревью. Это `eda-review`.
142
- - Править код. Это `eda-fix-by-review`.
143
- - Пропускать мета-ревью специализированными агентами.
144
- - Запускать мета-ревьюеров частями: сначала 1–2 агента, потом остальных. Все выбранные обязательные проверки стартуют сразу.
145
- - Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
146
- - Вставлять чужие предложения механически — каждое решение принимай ты.
147
- - Задавать вопросы без блокировки и продолжать работу до ответа.
148
- - Сохранять или редактировать ревью вне `docs/reviews/`.
149
- - Перечислять выполненные пункты плана или давать общий отчёт о проделанной работе.
@@ -1,173 +0,0 @@
1
- ---
2
- name: eda-review
3
- description: 'Ревью изменений (незакоммиченный diff, ветка, PR, папка/файл) с оценкой и сверкой с планом работ из `docs/plans/`, когда план указан или однозначно найден. Если план не указан и не найден однозначно, ревьюит без сверки с планом и не спрашивает про него. Без аргументов ревьюит незакоммиченный `git diff HEAD`. Перед ревью читает `docs/rules.md` и `docs/arch.md`. Формирует ревью только по проблемам, сохраняет в `docs/reviews/` и в обычном режиме передаёт файл в `eda-review-check` для мета-проверки субагентами. Флаг `draft` сохраняет только черновое ревью без субагентов. Кросс-CLI включается флагом `strict` или настройкой `defaults.strict: true`. Не правит код — это `eda-fix-by-review`.'
4
- ---
5
-
6
- # Скил: Ревьюер (eda-review)
7
-
8
- Делаешь ревью изменений: сверяешь diff с планом работ, правилами и архитектурой, пишешь только найденные проблемы, ставишь оценку, сохраняешь файл. Если скилл вызван без аргументов, ревьюишь незакоммиченный `git diff HEAD`. План сверяешь, только если он указан или однозначно найден; иначе ревьюишь без сверки с планом и про план не спрашиваешь. Каждый пункт начинаешь с короткого человеческого объяснения риска, без технической перегрузки; файлы, строки, детали кода и способ исправления даёшь ниже в блоке «Технические детали». Не перечисляешь, что выполнено хорошо или без замечаний. Затем в обычном режиме запускаешь `eda-review-check`, который проверяет ревью параллельными специализированными агентами; в `strict` он добавляет соседний CLI. В `draft` останавливаешься сразу после сохранения черновика.
9
-
10
- ## Режим запуска
11
-
12
- Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
-
14
- Дефолты: `defaults.strict: false`, `review.include_code_quality: true`.
15
-
16
- | Настройка | Значения | Аргументы в сообщении |
17
- |---|---|---|
18
- | `defaults.strict` | `true`, `false` | `strict`; выключение: `normal`, `без strict`, `без строгого режима` |
19
- | `review.include_code_quality` | `true`, `false` | «проверь качество кода»; выключение: «без quality», «без проверки качества» |
20
-
21
- `strict` добавляет кросс-CLI соседним агентом. `review.include_code_quality: true` добавляет `quality-check` в обычное мета-ревью.
22
-
23
- Флаг `draft` отключает весь этап `eda-review-check`: сохрани ревью со `status: draft`, `meta_reviewers: []`, покажи путь и оценку, затем остановись. `draft` важнее `strict`: если пользователь написал оба режима, задай `AskUserQuestion`, потому что требования противоречат друг другу.
24
-
25
- ## Вход из сообщения пользователя
26
-
27
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
28
-
29
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
30
-
31
- ## Главные правила
32
-
33
- 1. **Перед ревью** прочитай `docs/rules.md` и `docs/arch.md`, если есть, и строго следуй им. Замечания должны опираться на правила и архитектуру проекта, а не на твои общие представления.
34
- 2. **Интерактивные вопросы** — по разделу ниже. Если контекст понятен, не спрашивай.
35
- 3. **Не правишь код.** Только ревью. Запись только в `docs/reviews/`.
36
- 4. **Сверка с планом — только если план есть.** Используй план, если пользователь указал путь к нему или его можно однозначно определить из diff/ссылок/существующего review-файла. Если плана нет или вариантов несколько — не спрашивай: делай ревью без сверки с планом и отметь это в ревью. Не подставляй «последний план» наугад.
37
- 5. **Мета-ревью специализированными агентами — обязательно в normal/strict**, но выполняется отдельным скиллом `eda-review-check`. В `draft` мета-ревью не запускается.
38
- 6. **Главный ревьюер — ты.** Мета-ревьюеры дают подсказки; решение — добавить, убрать или оставить пункт — за тобой. Не вставляй чужие пункты механически.
39
- 7. **Простой язык** в формулировках замечаний и рекомендаций. Технические термины — только если без них нельзя, и сразу с пояснением.
40
- 8. **Ревью содержит только проблемы.** Не пиши отчёт о выполненной работе, список успешно сделанных пунктов, похвалу или нейтральное перечисление изменений. В файл попадают только ошибки, недоделки, неточности, спорные решения, нарушения правил/архитектуры, риски и недостающие проверки. Если проблем нет, напиши коротко: «Явных проблем не найдено», без пересказа diff.
41
- 9. **Формат файла ревью — Markdown-блоки по шаблону из этапа 2.** Проблемы сверки с планом, каждое замечание и рекомендации пиши отдельными блоками с подзаголовками. Внутри каждого пункта сначала идёт основная часть простым языком, затем блок `Технические детали`.
42
- 10. **Основная часть замечания — главный ответ.** Пиши 1–3 коротких абзаца, и в эти же абзацы включай весь человеческий верх пункта: короткий контекст, понятный без чтения плана, diff и истории задачи; что происходит или что не подтверждено; почему это важно, какой практический риск и когда он проявится. Не начинай с имён классов, методов, строк, SQL, DTO, конфигов и внутренних деталей.
43
- 11. **Технические детали — ниже основной части.** Там укажи тип, рекомендацию, файлы/строки, что в коде подтверждает проблему, общий подход к исправлению и конкретные шаги. Если деталь не помогает понять или исправить проблему — не пиши её.
44
-
45
- ## Стиль замечаний
46
-
47
- Пиши так, чтобы первый экран пункта можно было прочитать без глубокого знания кода и без знания плана, diff или истории задачи: в 1–3 коротких абзацах объясни контекст, ситуацию, риск и когда он проявится; затем дай `Технические детали`. Не растягивай пункт, не пересказывай весь diff и не начинай с имён классов, методов, строк, SQL, DTO, конфигов.
48
-
49
- ## Интерактивные вопросы
50
-
51
- Если цель ревью понятна из запроса или текущего состояния репозитория, **не задавай вопрос о цели ревью**. Вопрос о плане не задавай никогда: если план не указан и не найден однозначно, ревьюй без сверки с планом. Примеры понятного контекста:
52
- - пользователь указал файл, папку, PR, ветку или тип diff;
53
- - в запросе есть «ревью незакоммиченных изменений», «ревью текущей ветки», «проверь PR #N»;
54
- - в рабочем дереве есть незакоммиченные изменения и пользователь просит «сделай ревью» без других целей.
55
-
56
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
57
- - Claude Code: используй `AskUserQuestion`.
58
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
59
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
60
- - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
61
-
62
- ## Этапы
63
-
64
- ### 1. Выбрать вход и прочитать контекст
65
- Сначала попробуй определить цель ревью без вопроса:
66
- - если пользователь указал файл, папку, PR, ветку или тип diff — используй это;
67
- - если пользователь просит ревью без уточнений и есть незакоммиченные изменения — используй `git diff HEAD`;
68
- - если незакоммиченных изменений нет, но текущая ветка не `main`/`master` и отличается от базовой ветки — используй `git diff <base>...HEAD`, где `<base>` выбери из существующих `main`, `master`, `origin/main`, `origin/master`;
69
- - если цель всё ещё неоднозначна или diff пустой — только тогда через `AskUserQuestion` спроси, что ревьюим: незакоммиченный diff (`git diff HEAD`) / diff ветки от main (`git diff main...HEAD`) / конкретный файл или папка / номер PR.
70
-
71
- Получи diff/исходник в `$TARGET`. Прочитай `docs/rules.md`, `docs/arch.md` и строго следуй им.
72
-
73
- Определи `$PLAN_FILE`, не задавая вопросов о плане:
74
- - если пользователь указал путь к плану — используй его;
75
- - если в diff, описании задачи или уже существующем review-файле есть однозначная ссылка на `docs/plans/...` — используй её;
76
- - иначе (план не указан, не найден или вариантов несколько) — установи `$PLAN_FILE=none` и ревьюй без сверки с планом. Не подставляй «последний план» наугад.
77
-
78
- Если в diff видно отсылки к исследованию из `docs/researches/` — прочитай его тоже.
79
-
80
- ### 2. Сделать первичное ревью и сохранить
81
- Пройдись по изменениям. Если `$PLAN_FILE` указывает на файл, сначала проверь, выполнен ли план, но в ревью выноси только проблемы: что сделано частично, что не сделано, какие отклонения создают риск, какие проверки отсутствуют. Если `$PLAN_FILE=none`, не делай проверку плана и не пытайся восстановить план из последних файлов. Не перечисляй выполненные пункты плана. Затем проверь нарушения правил, архитектуры, баги, тестовые пробелы, безопасность, производительность и документацию. Если `review.include_code_quality: true` или пользователь явно попросил качество кода, отдельно проверь качество реализации: читаемость, сложность, дублирование, имена, границы ответственности, связность модулей, поддерживаемость и соответствие стилю уже существующего кода.
82
-
83
- Каждое замечание должно быть самостоятельным блоком:
84
- - заголовок с номером и коротким смыслом;
85
- - основная часть простым языком: 1–3 коротких абзаца, которые включают контекст, проблему и риск без привязки к конкретному коду;
86
- - `Технические детали`: тип, рекомендация, конкретные файлы/строки, что именно в коде подтверждает проблему, как исправить и какие тесты добавить или обновить.
87
-
88
- Поставь оценку 0–100 (100 — идеально, 0 — переделывать).
89
-
90
- Сохрани в `docs/reviews/{YYYY-MM-DD}_{HH-MM}_{slug}.md`. Соблюдай этот формат буквально: каждый пункт сначала читается как короткий человеческий ответ, а технические детали идут ниже отдельным блоком.
91
-
92
- ```markdown
93
- ---
94
- title: <заголовок>
95
- date: <YYYY-MM-DD HH:MM>
96
- target: <git diff HEAD | main...HEAD | path | PR#>
97
- plan: <docs/plans/... | none>
98
- mode: <draft | normal | strict>
99
- score: <0..100>
100
- status: draft
101
- meta_reviewers: []
102
- ---
103
-
104
- # Ревью: <заголовок>
105
-
106
- ## Оценка
107
-
108
- **<N>/100.** <одно-два предложения почему>
109
-
110
- ## Проблемы сверки с планом
111
-
112
- <Если `$PLAN_FILE=none`: «Проверка плана пропущена: план не указан и не найден.» Если проблем по плану нет: «Явных проблем по плану не найдено.»>
113
-
114
- ### 1. <недоделка, отклонение или непроверенный пункт>
115
-
116
- <1–3 коротких абзаца: короткий контекст, понятный без плана, diff и истории задачи; что требовал план; что не сделано или не подтверждено; почему это важно, какой риск и когда он проявится. Без имён файлов, строк и внутренних деталей в начале пункта.>
117
-
118
- Технические детали:
119
-
120
- - **Статус:** <частично | не выполнено | не проверялось | отклонение>
121
- - **Где:** `<path/file.ts:42>` — <что смотреть>
122
- - **Что подтверждает проблему:** <конкретная деталь по коду, diff или плану>
123
- - **Как исправить:** <общий подход и конкретные шаги по коду/тестам>
124
-
125
- ## Замечания
126
-
127
- <Если замечаний нет: «Явных проблем в коде не найдено.»>
128
-
129
- ### 1. <короткий заголовок проблемы>
130
-
131
- <1–3 коротких абзаца: короткий контекст, понятный без плана, diff и истории задачи; что происходит; почему это проблема; какой практический риск и когда он проявится. Без технической перегрузки и без пересказа diff.>
132
-
133
- Технические детали:
134
-
135
- - **Тип:** `bug | security | performance | architecture | rules | tests | quality | docs`
136
- - **Рекомендация:** `править обязательно | на усмотрение автора`
137
- - **Где:** `<path/file.py:42>` — <что смотреть>
138
- - **Что подтверждает проблему:** <конкретное объяснение по коду>
139
- - **Как исправить:** <общий подход, затем конкретные шаги по файлам>
140
- - **Тесты:** <какой тест добавить или обновить; если тест не нужен, почему>
141
-
142
- ## Рекомендации
143
-
144
- - **Править обязательно:** <номера>
145
- - **На усмотрение автора:** <номера>
146
-
147
- ## Изменения после мета-ревью
148
-
149
- <заполняется на этапах 3 и 4>
150
- ```
151
-
152
- Покажи путь.
153
-
154
- Если режим `draft` — не запускай субагентов и не вызывай `eda-review-check`; сразу переходи к финалу draft.
155
-
156
- ### 3. Проверить ревью через `eda-review-check`
157
- В normal/strict запусти `eda-review-check` для `$REVIEW_FILE` и передай выбранный режим (`normal` или `strict`). Именно `eda-review-check` запускает `architecture-check`, `rules-check`, а если `plan` в front matter указывает на файл — ещё и `plan-check`; при включённой настройке `quality-check` тоже запускается. Затем `eda-review-check` обновляет `status`, `meta_reviewers`, `score` и раздел `## Изменения после мета-ревью`.
158
-
159
- Требования к средам остаются частью контракта ревью: Codex interactive: если доступен инструмент субагентов (`spawn_agent` или аналог), используй его; не используй отдельные `codex exec` для обычного мета-ревью, когда субагенты доступны. Codex exec / неинтерактивный fallback допустим только как fallback и описан в `eda-review-check`. Кросс-CLI выполняет только `eda-review-check strict`.
160
-
161
- ### 4. Финал
162
- Короткое сообщение: режим (`draft`, `normal` или `strict`), путь к файлу ревью, итоговая оценка, сколько пунктов «править обязательно» / «на усмотрение». Не пересказывай выполненную работу. Если режим был `draft` — добавь строку «мета-ревью не запускалось; для проверки — `eda-review-check <review>`». Если режим был обычный — добавь строку «кросс-CLI не запускался; для проверки соседним агентом — `eda-review-check strict <review>`». Что предлагаешь дальше — `eda-fix-by-review` для применения или `eda-commit` если оценка приемлема.
163
-
164
- ## Чего НЕ делать
165
- - Править код. Это `eda-fix-by-review`.
166
- - Пропускать `eda-review-check` в normal/strict. Исключение — явный режим `draft`.
167
- - Запускать мета-ревьюеров частями: сначала 1–2 агента, потом остальных. Все обязательные проверки стартуют сразу.
168
- - Пропускать кросс-CLI молча в `strict` (если соседней CLI нет — спроси через `AskUserQuestion`).
169
- - Вставлять чужие предложения механически — каждое решение принимай ты.
170
- - Задавать вопросы без блокировки и продолжать работу до ответа.
171
- - Сохранять ревью куда-либо кроме `docs/reviews/`.
172
- - Оформлять замечания без контекста перед конкретикой.
173
- - Перечислять выполненные пункты плана или давать общий отчёт о проделанной работе.
@@ -1,105 +0,0 @@
1
- ---
2
- name: eda-send-review
3
- description: 'Отправляет ревью из `docs/reviews/...`, выбранное по тексту рядом с вызовом, на GitHub PR через `gh` — как review (comment/approve/request-changes) или как обычный комментарий. Перед отправкой читает `docs/rules.md` и `docs/arch.md` и строго следует им. Целевой PR определяется из текста или автоматически по текущей ветке; если PR нет — предлагает создать. После отправки в конец файла ревью дописывает ссылку на PR-комментарий. Не правит код, не делает само ревью. Вопросы задаёт только когда без ответа нельзя безопасно продолжать.'
4
- ---
5
-
6
- # Скил: Отправитель ревью (eda-send-review)
7
-
8
- Берёшь готовое ревью из `docs/reviews/`, отправляешь его на GitHub PR через `gh`. В конец файла ревью дописываешь, куда отправил.
9
-
10
- ## Вход из сообщения пользователя
11
-
12
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: тему, задачу, путь к файлу, режим, ограничения и прямые указания.
13
-
14
- Если этого входа достаточно, продолжай без вопроса. `AskUserQuestion` задавай только если входа нет, он противоречивый, найдено несколько равных вариантов или есть риск выполнить не ту задачу. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
15
-
16
- ## Главные правила
17
-
18
- 1. **Интерактивные вопросы** — по разделу ниже.
19
- 2. **Прочитай `docs/rules.md` и `docs/arch.md`**, если есть, и строго следуй им при выборе способа отправки и финальной отметке.
20
- 3. **Не правишь код, не делаешь само ревью.** Только переупаковка и отправка.
21
- 4. **Никаких самостоятельных оценок.** Тип отправки определяется на основе ревью и текста пользователя. `comment` означает обычный комментарий PR, `review-comment` — review без статуса. `approve` и `request-changes` всегда подтверждаются пользователем.
22
- 5. **Простой язык.** В сообщениях пользователю и комментарии PR без лишних терминов.
23
-
24
- ## Интерактивные вопросы
25
-
26
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
27
- - Claude Code: используй `AskUserQuestion`.
28
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
29
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
30
- - Не запускай команды, которые ждут интерактивного ввода в терминале; перед такими командами спроси в хост-интерфейсе или остановись с `blocked`.
31
- - Для отправки ревью это правило важнее продолжения: не создавай PR, не отправляй approve/request-changes и не меняй тип отправки вместо ответа пользователя.
32
-
33
- ## Этапы
34
-
35
- ### 1. Проверить инструменты
36
- `gh --version` + `gh auth status`. Если `gh` отсутствует или не авторизован — остановись, сообщи и выйди (это пользователю нужно решить).
37
-
38
- ### 2. Выбрать ревью
39
- Сначала разбери текст рядом с вызовом: путь к ревью, название или часть названия, «последнее ревью», PR (`PR 12`, `#12`) и тип отправки (`comment`, `review-comment`, `approve`, `request-changes`).
40
-
41
- Если найдено ровно одно ревью — продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста — остановись с понятным вопросом или статусом `blocked: нужно ревью`. Прочитай файл целиком: оценку, замечания, рекомендации.
42
-
43
- ### 3. Найти целевой PR
44
- Если номер PR указан в тексте пользователя — используй его. Иначе попробуй `gh pr view --json number,url,headRefName` — если у текущей ветки уже есть PR, возьми его номер.
45
-
46
- Если PR нет — `AskUserQuestion`: «PR ещё нет: создать PR из текущей ветки / указать номер существующего PR / прервать». При создании используй `gh pr create` (заголовок и тело — по последним коммитам ветки).
47
-
48
- ### 4. Выбрать тип отправки
49
- Предложи вариант по оценке: score ≥ 80 → **approve** с комментарием; score < 50 → **request-changes**; иначе → **review-comment**.
50
-
51
- Если тип отправки указан в тексте и это `comment` или `review-comment`, используй его без дополнительного выбора, если нет противоречий с ревью. `approve` и `request-changes` всегда подтверждай через `AskUserQuestion`, даже если они указаны inline. Если тип не указан или противоречит ревью — `AskUserQuestion`: подтвердить предложенный тип / выбрать другой / отправить как обычный комментарий PR (вне review).
52
-
53
- ### 5. Сформировать тело
54
- Структура комментария:
55
-
56
- ```markdown
57
- ## Ревью: <заголовок>
58
-
59
- **Оценка:** N/100. <одно-два предложения почему>
60
-
61
- ### Замечания
62
- 1. **[тип]** `path/file.py:42` — <что не так>. → <что предлагаешь>
63
- 2. ...
64
-
65
- ### Рекомендации
66
- - **Править обязательно:** 1, 3, 5
67
- - **На усмотрение автора:** 2, 4
68
- - **Не править:** —
69
-
70
- _Сгенерировано из `<путь к docs/reviews/...>`_
71
- ```
72
-
73
- ### 6. Отправить
74
- По выбранному типу:
75
-
76
- | Тип | Команда |
77
- |---|---|
78
- | comment (PR comment) | `gh pr comment <num> --body-file <tmpfile>` |
79
- | review-comment | `gh pr review <num> --comment --body-file <tmpfile>` |
80
- | approve | `gh pr review <num> --approve --body-file <tmpfile>` |
81
- | request-changes | `gh pr review <num> --request-changes --body-file <tmpfile>` |
82
-
83
- Тело пиши во временный файл (`mktemp`) и передавай через `--body-file` — иначе спецсимволы и переносы поедут не туда.
84
-
85
- Если команда упала — покажи вывод пользователю и спроси через `AskUserQuestion` (повторить / другой тип / прервать).
86
-
87
- ### 7. Дописать ссылку в файл ревью
88
- В конец `$REVIEW_FILE` добавь:
89
-
90
- ```markdown
91
- ## Отправлено
92
- - PR: <URL из ответа gh>
93
- - Тип: <comment | review-comment | approve | request-changes>
94
- - Дата: <YYYY-MM-DD HH:MM>
95
- ```
96
-
97
- ### 8. Финал
98
- Короткое сообщение: PR-номер и URL, тип отправки, путь к файлу ревью.
99
-
100
- ## Чего НЕ делать
101
- - Делать само ревью или править замечания — это `eda-review` / `eda-fix-by-review`.
102
- - Отправлять `approve` без явного подтверждения через `AskUserQuestion`, даже если оценка ≥ 80.
103
- - Передавать тело комментария через `-b "..."` со спецсимволами без `--body-file` — поломает форматирование.
104
- - Создавать PR молча, если его нет — только через `AskUserQuestion`.
105
- - Сохранять копии отправленного в отдельные файлы — связь через ссылку в файле ревью.