@gian-tiaga/eda 1.0.5 → 2.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 (48) hide show
  1. package/MIGRATION.md +58 -80
  2. package/README.md +113 -32
  3. package/agents/eda-plan-review-api/agent.json +9 -0
  4. package/agents/eda-plan-review-api/prompt.md +34 -0
  5. package/agents/eda-plan-review-architecture/agent.json +9 -0
  6. package/agents/eda-plan-review-architecture/prompt.md +34 -0
  7. package/agents/eda-plan-review-database/agent.json +9 -0
  8. package/agents/eda-plan-review-database/prompt.md +34 -0
  9. package/agents/eda-plan-review-execution/agent.json +9 -0
  10. package/agents/eda-plan-review-execution/prompt.md +34 -0
  11. package/agents/eda-plan-review-feasibility/agent.json +9 -0
  12. package/agents/eda-plan-review-feasibility/prompt.md +34 -0
  13. package/agents/eda-plan-review-frontend/agent.json +9 -0
  14. package/agents/eda-plan-review-frontend/prompt.md +34 -0
  15. package/agents/eda-plan-review-performance/agent.json +9 -0
  16. package/agents/eda-plan-review-performance/prompt.md +34 -0
  17. package/agents/eda-plan-review-previous/agent.json +9 -0
  18. package/agents/eda-plan-review-previous/prompt.md +28 -0
  19. package/agents/eda-plan-review-requirements/agent.json +9 -0
  20. package/agents/eda-plan-review-requirements/prompt.md +34 -0
  21. package/agents/eda-plan-review-rules/agent.json +9 -0
  22. package/agents/eda-plan-review-rules/prompt.md +34 -0
  23. package/agents/eda-plan-review-security/agent.json +9 -0
  24. package/agents/eda-plan-review-security/prompt.md +34 -0
  25. package/agents/eda-plan-review-verification/agent.json +9 -0
  26. package/agents/eda-plan-review-verification/prompt.md +34 -0
  27. package/agents/eda-review-business/agent.json +15 -0
  28. package/agents/eda-review-business/prompt.md +46 -0
  29. package/bin/cli.js +2 -2
  30. package/lib/install.js +524 -368
  31. package/package.json +3 -2
  32. package/skills/eda-aim/SKILL.md +1 -1
  33. package/skills/eda-business/SKILL.md +147 -0
  34. package/skills/eda-discover-automations/SKILL.md +4 -2
  35. package/skills/eda-explore/SKILL.md +7 -6
  36. package/skills/eda-fix/SKILL.md +5 -4
  37. package/skills/eda-fix-by-review/SKILL.md +5 -4
  38. package/skills/eda-manual-test/SKILL.md +13 -5
  39. package/skills/eda-orhestra/SKILL.md +13 -10
  40. package/skills/eda-plan/SKILL.md +46 -38
  41. package/skills/eda-plan-execute/SKILL.md +8 -6
  42. package/skills/eda-plan-polish/SKILL.md +53 -169
  43. package/skills/eda-plan-review/SKILL.md +188 -0
  44. package/skills/eda-plan-review-fix/SKILL.md +105 -0
  45. package/skills/eda-prepare-ai/SKILL.md +7 -2
  46. package/skills/eda-review/SKILL.md +13 -5
  47. package/skills/eda-roadmap/SKILL.md +6 -3
  48. package/skills/eda-send-review/SKILL.md +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gian-tiaga/eda",
3
- "version": "1.0.5",
3
+ "version": "2.0.0",
4
4
  "description": "Пакет скилов и специализированных агентов eda-* для Claude Code и Codex CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,6 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@inquirer/checkbox": "^4.3.2",
43
- "@inquirer/select": "^5.1.5"
43
+ "@inquirer/select": "^5.1.5",
44
+ "yaml": "^2.9.0"
44
45
  }
45
46
  }
@@ -9,7 +9,7 @@ description: 'Согласует одну или несколько провер
9
9
 
10
10
  ## Настройки
11
11
 
12
- Прочитай только раздел `aim` из `docs/settings.yaml`, если файл есть. Применяй только `version: 2`.
12
+ Прочитай только раздел `aim` из `docs/settings.yaml`, если файл есть. Применяй только `version: 3`.
13
13
 
14
14
  ```yaml
15
15
  aim:
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: eda-business
3
+ description: 'Создаёт и обновляет согласованное описание проекта, требований и бизнес-логики по тематическим карточкам.'
4
+ ---
5
+
6
+ # Скил: Бизнес-логика (eda-business)
7
+
8
+ Создаёшь и поддерживаешь согласованную бизнес-документацию проекта: короткое оглавление `docs/business.md` и самостоятельные тематические карточки в `docs/business/`. Документы отвечают на вопросы «что должен делать продукт», «для кого», «по каким правилам» и «какой результат считается правильным», но не проектируют техническую реализацию.
9
+
10
+ ## Вход из сообщения пользователя
11
+
12
+ Текст рядом с вызовом скилла в текущем сообщении — главный вход. Извлеки названную тему, требования, ограничения, ответы на бизнес-вопросы и прямые указания по существующим карточкам.
13
+
14
+ - Если пользователь назвал тему, работай только с ней. Не расширяй вызов до полного аудита проекта.
15
+ - Если тема не названа, проанализируй проект и предложи упорядоченный список тем, которые действительно стоит описать. Для полного каталога первой предлагай `about`, затем только доказанные проектом домены и сценарии.
16
+ - Явные требования из текущего сообщения считай подтверждёнными. Выводы из кода, тестов и других документов сначала показывай как предложения.
17
+
18
+ Старое обсуждение не считай входом, если пользователь явно не связал его с текущим вызовом.
19
+
20
+ ## Главные правила
21
+
22
+ 1. **Только business-документация.** Меняй лишь `docs/business.md` и Markdown-файлы непосредственно в `docs/business/`. Не правь код, настройки, правила, архитектуру, планы, тесты или другие документы.
23
+ 2. **Целевое поведение.** Карточки фиксируют согласованные требования и бизнес-логику, даже если код пока им не соответствует. Фактические отличия вынеси в последний раздел `Расхождения с реализацией`.
24
+ 3. **Никаких догадок как фактов.** Код помогает найти существующие сценарии и вопросы, но не подтверждает продуктовые решения сам по себе.
25
+ 4. **Одна тема за раз.** После согласования общего списка полностью проработай текущую тему и получи подтверждение её содержания до записи, затем переходи к следующей.
26
+ 5. **В индекс — только готовое.** Не записывай предложенные, незавершённые или спорные темы в `docs/business.md` и не создавай для них черновые карточки.
27
+ 6. **Самодостаточные карточки.** Основной текст не должен требовать чтения исходного кода, плана или внешнего материала, чтобы понять бизнес-правило.
28
+ 7. **Не проектируй реализацию.** Не назначай классы, таблицы, endpoints, очереди, библиотеки, модули или порядок технических изменений.
29
+ 8. **Сохраняй подтверждённое.** При обновлении не удаляй и не ослабляй существующее правило, не переименовывай и не удаляй карточку без явного решения пользователя.
30
+
31
+ ## Интерактивные вопросы
32
+
33
+ Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
34
+
35
+ - Claude Code: используй `AskUserQuestion`.
36
+ - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос с 2–3 вариантами, рекомендацией и остановись до ответа.
37
+ - Codex exec / неинтерактивный запуск: не читай stdin. Если требуется решение или подтверждение, заверши `blocked: нужен ответ пользователя`, перечисли варианты и не записывай неподтверждённые файлы.
38
+ - Не запускай команды, ожидающие интерактивный ввод в терминале.
39
+
40
+ Задавай пакетами не больше трёх связанных вопросов. Не спрашивай факты, которые можно надёжно выяснить из проекта.
41
+
42
+ ## Процесс
43
+
44
+ ### 1. Прочитать существующий контекст
45
+
46
+ Прочитай `docs/business.md` и только карточки, которые относятся к текущей теме. Затем изучи релевантные README, стартовые документы, правила, архитектуру, пользовательские сценарии, routes, модели, тесты и историю, достаточные для понимания фактического поведения.
47
+
48
+ Не загружай все карточки и весь код без необходимости. Разделяй:
49
+
50
+ - подтверждённые требования пользователя;
51
+ - уже записанные бизнес-правила;
52
+ - наблюдаемое поведение реализации;
53
+ - гипотезы и вопросы.
54
+
55
+ ### 2. Выбрать темы при пустом вызове
56
+
57
+ Если тема не задана, составь короткий список только из реально применимых тем. Для каждой укажи, что именно будет описано и почему тема нужна проекту. Не используй обязательный универсальный набор: `auth`, `posts`, `payments` и другие названия допустимы только при наличии соответствующего поведения.
58
+
59
+ Покажи список через `AskUserQuestion` и попроси подтвердить его или изменить. До подтверждения ничего не записывай. После ответа прорабатывай темы последовательно. Если работа прервана, следующий пустой вызов заново анализирует индекс и предлагает только отсутствующие или требующие актуализации темы.
60
+
61
+ ### 3. Согласовать текущую тему
62
+
63
+ Собери достаточную бизнес-спецификацию:
64
+
65
+ - назначение и границы темы;
66
+ - участники, роли и значимые термины;
67
+ - требования, правила и инварианты;
68
+ - основные сценарии и порядок бизнес-действий;
69
+ - состояния, переходы, ограничения и исключения;
70
+ - ошибки и пограничные случаи, видимые пользователю или внешнему потребителю;
71
+ - проверяемые критерии приёмки.
72
+
73
+ Для `about` вместо детального алгоритма зафиксируй назначение проекта, аудиторию, решаемую проблему, границы, ключевые возможности, основные пользовательские сценарии и общие бизнес-ограничения.
74
+
75
+ Сравни целевое поведение с реализацией. Подготовь отдельный список подтверждённых расхождений с точными путями и строками, когда они доступны. Отсутствие реализации также является расхождением, если требование уже подтверждено.
76
+
77
+ Покажи человеку собранное содержание и запроси итоговое подтверждение через `AskUserQuestion`. Если остаётся спорное решение, сначала закрой его отдельным вопросом. Не записывай карточку до подтверждения.
78
+
79
+ ### 4. Записать карточку и индекс
80
+
81
+ Используй стабильное имя файла в lowercase ASCII kebab-case: `docs/business/<topic>.md`.
82
+
83
+ Обычная тематическая карточка:
84
+
85
+ ```markdown
86
+ # <Название темы>
87
+
88
+ ## Назначение и границы
89
+ <что покрывает тема и что не покрывает>
90
+
91
+ ## Участники и термины
92
+ <роли и доменные понятия>
93
+
94
+ ## Требования и правила
95
+ <согласованные требования и инварианты>
96
+
97
+ ## Сценарии и алгоритмы
98
+ <пошаговое бизнес-поведение без технической реализации>
99
+
100
+ ## Состояния и исключения
101
+ <переходы, ограничения, ошибки и пограничные случаи>
102
+
103
+ ## Критерии приёмки
104
+ <наблюдаемые условия корректного поведения>
105
+
106
+ ## Расхождения с реализацией
107
+ <подтверждённые отличия с доказательствами либо «Известных расхождений не обнаружено.»>
108
+ ```
109
+
110
+ Для `about.md` используй подходящие смысловые разделы из шага 3, но всегда оставляй последним `## Расхождения с реализацией`.
111
+
112
+ Создай или обнови `docs/business.md` как короткое оглавление только существующих согласованных карточек:
113
+
114
+ ```markdown
115
+ # Бизнес-логика проекта
116
+
117
+ | Описание | Карточка |
118
+ |---|---|
119
+ | Назначение проекта, аудитория и основные возможности | [О проекте](business/about.md) |
120
+ | Регистрация, вход, восстановление доступа и права пользователей | [Авторизация](business/auth.md) |
121
+ ```
122
+
123
+ Описание должно позволять другому скилу решить, нужна ли карточка для текущей задачи, не открывая её. В индексе не должно быть статусов, планов будущих тем или содержания самих карточек.
124
+
125
+ ### 5. Проверить результат
126
+
127
+ Убедись, что:
128
+
129
+ - индекс содержит только существующие согласованные карточки и ровно две колонки `Описание` и `Карточка`;
130
+ - новая или обновлённая карточка соответствует подтверждённому содержанию;
131
+ - каждое правило однозначно и проверяемо на уровне поведения;
132
+ - техническая реализация не выдана за бизнес-требование;
133
+ - раздел `Расхождения с реализацией` последний и отделяет целевое состояние от текущего;
134
+ - существующие несвязанные карточки сохранены без изменений.
135
+
136
+ ### 6. Финал
137
+
138
+ Коротко сообщи путь к карточке и индексу, какие решения зафиксированы и какие расхождения с реализацией обнаружены. Если после пустого вызова остались подтверждённые темы, переходи к следующей; дополнительное разрешение продолжить не спрашивай.
139
+
140
+ ## Чего НЕ делать
141
+
142
+ - Записывать неподтверждённые темы или черновики в индекс.
143
+ - Выводить бизнес-правило только из текущего кода и сразу считать его целевым.
144
+ - Подменять карточку исследованием, roadmap, архитектурой или планом реализации.
145
+ - Создавать ссылки из индекса на отсутствующие файлы.
146
+ - Молча удалять, переименовывать или ослаблять подтверждённые требования.
147
+ - Сохранять business-документацию вне `docs/business.md` и `docs/business/`.
@@ -11,7 +11,7 @@ description: 'Аудирует автоматические проверки п
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `discover-automations.include_plans: false`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолт: `discover-automations.include_plans: false`.
15
15
 
16
16
  Если актуального раздела `discover-automations` нет, но есть прежний раздел `automate`, используй `automate.include_plans` как совместимый fallback и сообщи, что настройку следует переименовать. Если присутствуют оба раздела, применяй только `discover-automations`.
17
17
 
@@ -55,6 +55,7 @@ description: 'Аудирует автоматические проверки п
55
55
  - Все выбранные ревью, отчёты о фиксах по ревью и обычные фиксы.
56
56
  - В режиме `plans`: все выбранные планы из `docs/plans/`.
57
57
  - `docs/rules.md`, `docs/arch.md` (если есть) — прочитай и строго следуй им.
58
+ - Сначала определи затронутые историей и текущим аудитом доменные области. Затем через `docs/business.md` выбери только карточки этих областей; если подходящих нет, продолжай без business-контекста. Используй карточки лишь для поиска автоматизируемых инвариантов и acceptance-сценариев, не расширяй аудит на несвязанные темы.
58
59
  - Какие языки и фреймворки в проекте — определи сам.
59
60
  - Какие инструменты качества уже установлены и работают: линтеры, форматтеры, статанализаторы, typecheck, все виды тестов, coverage, архитектурные проверки, валидаторы конфигов, security/supply-chain сканеры, performance budgets, pre-commit, CI, release/post-deploy проверки и npm/composer/make-скрипты.
60
61
  - Какие агентные усиления уже есть: `.claude/skills/`, `.codex/skills/`, MCP-конфиги, локальные скилы, команды для ревью/планирования. Не предлагай дубль уже установленному.
@@ -107,7 +108,7 @@ description: 'Аудирует автоматические проверки п
107
108
  ```markdown
108
109
  ---
109
110
  date: <YYYY-MM-DD HH:MM>
110
- sources: [docs/reviews/..., docs/review-fixes/..., docs/fixes/...]
111
+ sources: [docs/reviews/..., docs/review-fixes/..., docs/fixes/..., docs/business/...]
111
112
  mode: <normal | plans>
112
113
  status: draft
113
114
  ---
@@ -119,6 +120,7 @@ status: draft
119
120
  - Стек проекта: <по конфигам>
120
121
  - Уже работающие инструменты: <список>
121
122
  - Уже найденные скилы/MCP/агентные проверки: <список или «не найдены»>
123
+ - Применимые business-карточки: <пути или «нет»>
122
124
 
123
125
  ## Покрытие экстремального каталога
124
126
  | Группа | Уже есть | Пробелы | Статус | Причина N/A |
@@ -11,7 +11,7 @@ description: 'Исследует техническую тему или зада
11
11
 
12
12
  Прочитай `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `explore.strict: false`, `explore.decision_mode: recommend_and_ask`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем разделе или неизвестном значении используй дефолт; настройки старого формата не применяй. Дефолты: `explore.strict: false`, `explore.decision_mode: recommend_and_ask`.
15
15
 
16
16
  | Настройка | Значения | Аргументы в сообщении |
17
17
  |---|---|---|
@@ -43,8 +43,8 @@ description: 'Исследует техническую тему или зада
43
43
  3. **Развилки закрывай по `decision_mode`.** Значимые развилки подтверждай до финализации, мелкие локальные решения выбирай сам и не создавай шум.
44
44
  4. **Риски вплетай в исследование.** Не создавай отдельный обязательный раздел или этап рисков. Если риск влияет на выбор, источник, ограничение или будущую проверку, фиксируй его рядом с соответствующим решением: что может пойти не так и как это учитывается — снимаем, принимаем или выносим за рамки.
45
45
  5. **Версии проверяй.** Если речь о пакетах, библиотеках, CLI, сервисах или другом ПО, а версия не задана контекстом, проверь последнюю стабильную версию через context7, если он доступен, или через web search по официальным источникам.
46
- 6. **Прочитай рамку проекта.** Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Если существует `docs/references.md`, прочитай индекс, выбери только карточки, применимые к исследуемым компонентам, и прочитай их целиком; нерелевантные карточки не загружай.
47
- 7. **Соблюдай приоритеты.** Подтверждённое решение пользователя важнее `docs/rules.md`, затем идёт `docs/arch.md`, затем релевантные карточки. Не рекомендуй отклонение от эталона без явной причины и подтверждения пользователя.
46
+ 6. **Прочитай рамку проекта.** Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Сначала определи исследуемую задачу, затем через `docs/business.md` выбери только карточки затронутого поведения, а через `docs/references.md` — только карточки затронутых компонентов. Нерелевантные карточки не загружай.
47
+ 7. **Разделяй источники.** Текущий запрос задаёт область исследования; применимые business-карточки — требования к затронутому поведению; rules, architecture и references — техническая рамка. Если запрос противоречит business-карточке, остановись и через `AskUserQuestion` спроси, изменить задачу или пересогласовать правило через `eda-business`. Не рекомендуй отклонение от технического эталона без явной причины и подтверждения пользователя.
48
48
  7. **Каждое фактическое утверждение — со ссылкой** (`file.ext:42`, URL, коммит). Без ссылки — помечай как «гипотеза» и не делай её основанием выбранного решения.
49
49
  8. **Простой язык.** Термины — только когда без них нельзя, сразу с пояснением.
50
50
  9. **Таблицы > сплошной текст** для фактов, развилок, сравнений, версий и источников.
@@ -70,7 +70,7 @@ description: 'Исследует техническую тему или зада
70
70
 
71
71
  ### 2. Собрать контекст
72
72
 
73
- Работай read-only: читай код, документы, конфиги, тесты, историю и внешние источники. Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Если есть `docs/references.md`, выбери по индексу только применимые карточки и используй их кодовые примеры как эталон ожидаемой формы решения.
73
+ Работай read-only: читай код, документы, конфиги, тесты, историю и внешние источники. Прочитай `docs/rules.md` и `docs/arch.md`, если они есть. Если есть `docs/business.md`, выбери по описаниям только карточки, непосредственно относящиеся к исследуемому поведению; если подходящих нет, продолжай без них. Если есть `docs/references.md`, выбери по индексу только применимые технические карточки и используй их кодовые примеры как эталон ожидаемой формы решения.
74
74
 
75
75
  Если исследование касается пакетов или ПО:
76
76
  - сначала проверь, не зафиксирована ли версия в запросе, lock-файле, package/config-файле, `docs/rules.md`, `docs/arch.md` или связанном документе;
@@ -102,6 +102,7 @@ reviewer: <pending | none | claude | codex>
102
102
  sources:
103
103
  rules: <путь или —>
104
104
  arch: <путь или —>
105
+ business: [<пути к применимым карточкам или пусто>]
105
106
  references: [<пути к применимым карточкам или пусто>]
106
107
  ---
107
108
 
@@ -148,13 +149,13 @@ Quality gate перед сохранением:
148
149
  Если ты в Claude Code — запускай Codex CLI:
149
150
 
150
151
  ```bash
151
- codex exec "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, карточки из sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
152
+ codex exec "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, применимые карточки из sources.business и sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, применимые бизнес-требования учтены, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, нарушения бизнес-требований, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
152
153
  ```
153
154
 
154
155
  Если ты в Codex — запускай Claude CLI с теми же требованиями:
155
156
 
156
157
  ```bash
157
- claude -p "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, карточки из sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
158
+ claude -p "Прочитай $RESEARCH_FILE, docs/rules.md, docs/arch.md, применимые карточки из sources.business и sources.references при наличии и все источники, на которые ссылается исследование. Проверь, что проблема описана конкретно, применимые бизнес-требования учтены, архитектура не выдумана, применимые эталоны учтены, все развилки решены, риски закрыты, версии пакетов/ПО проверены по актуальным источникам, а вариант решения не является планом или абстрактным рассуждением. Критическое ревью на русском: фактические ошибки, пропущенные развилки, нарушения бизнес-требований, незакрытые риски, слабые источники, неверные версии, неконкретный итог. Формат: '- [тип] описание — что исправить'." > "${RESEARCH_FILE%.md}_review.md"
158
159
  ```
159
160
 
160
161
  CLI нет — `AskUserQuestion`: продолжать без ревью или прервать.
@@ -37,10 +37,10 @@ description: 'Вносит изменения в код по плану или
37
37
  Определи `$FIX_CONTEXT`: путь к файлу прочитай, план из `docs/plans/` используй как план фикса, текст используй как контекст. Если входа нет или он неоднозначен — спроси через `AskUserQuestion`.
38
38
 
39
39
  ### 2. Прочитать рамку проекта
40
- Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Если существует `docs/references.md`, выбери по индексу только применимые карточки и используй их примеры как ожидаемую форму реализации. Если `$FIX_CONTEXT` ссылается на план с `sources.references`, прочитай перечисленные карточки; если ссылается на research, review, issue или другой файл — прочитай и его.
40
+ Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Сначала определи задачу фикса и затронутое поведение. Если связанный план содержит `sources.business`, прочитай только перечисленные применимые карточки; иначе через `docs/business.md` выбери по описаниям только карточки этой темы. Если подходящих карточек нет, продолжай без business-контекста. Если существует `docs/references.md`, выбери по индексу только применимые технические карточки и используй их примеры как ожидаемую форму реализации. Если `$FIX_CONTEXT` ссылается на research, review, issue или другой файл — прочитай и его.
41
41
 
42
42
  ### 3. Сделать фикс
43
- Найди релевантный код и внеси минимальные правки. Следуй применимому примеру; отклоняйся только по причине, подтверждённой пользователем или уже записанной во входном плане. Если задача состоит из нескольких пунктов, иди по ним последовательно. Останавливайся и спрашивай, если пункт противоречит коду или документации, требует необоснованного отклонения от карточки, продуктового решения, рискованной операции, миграции, удаления данных или затрагивает секреты.
43
+ Найди релевантный код и внеси минимальные правки. Текущая задача задаёт scope, применимая business-карточка — требования к затронутому поведению, reference-карточка — форму реализации. Если задача противоречит business-карточке, остановись, покажи конфликт и через `AskUserQuestion` спроси: изменить задачу или сначала пересогласовать правило через `eda-business`. Следуй применимому техническому примеру; отклоняйся только по причине, подтверждённой пользователем или уже записанной во входном плане. Если задача состоит из нескольких пунктов, иди по ним последовательно. Останавливайся и спрашивай также при рискованной операции, миграции, удалении данных или работе с секретами.
44
44
 
45
45
  ### 4. Добавить или обновить тесты
46
46
  Если фикс меняет поведение — добавь тест рядом с изменением или обнови существующий. Если тесты не нужны, в отчёте коротко объясни почему.
@@ -61,7 +61,7 @@ status: done
61
61
  # Фикс: <краткий заголовок>
62
62
 
63
63
  ## Контекст
64
- <что было передано на вход и какие правила, архитектура и карточки учтены>
64
+ <что было передано на вход и какие правила, архитектура, business- и reference-карточки учтены>
65
65
 
66
66
  ## Что изменено
67
67
  | # | Файл | Что изменено | Зачем |
@@ -86,4 +86,5 @@ status: done
86
86
  - Выполнять большой план с чекбоксами и журналом `docs/executions/` — это `eda-plan-execute`.
87
87
  - Применять замечания из готового ревью — это `eda-fix-by-review`.
88
88
  - Сохранять отчёт куда-либо кроме `docs/fixes/`.
89
- - Игнорировать применимую карточку или молча отклоняться от её примера.
89
+ - Загружать несвязанные business-карточки или расширять ими scope фикса.
90
+ - Игнорировать применимую карточку или молча отклоняться от её требований либо примера.
@@ -21,7 +21,7 @@ description: 'Исправляет код по готовому ревью из
21
21
 
22
22
  ## Главные правила
23
23
 
24
- 1. **Перед правкой кода** прочитай `docs/rules.md` и `docs/arch.md`. Если есть `docs/references.md`, выбери по индексу только карточки для затронутых замечаниями компонентов и прочитай их целиком. Приоритет: подтверждённое решение пользователя → правила → архитектура → карточки. Сделай это один раз в начале.
24
+ 1. **Перед правкой кода** прочитай `docs/rules.md` и `docs/arch.md`. Сначала определи замечания и затронутое ими поведение; затем через `sources.business` связанного плана или `docs/business.md` выбери только применимые business-карточки, а через `docs/references.md` — только карточки затронутых компонентов. Если подходящих business-карточек нет, продолжай без них. Сделай это один раз в начале.
25
25
  2. **Интерактивные вопросы** — по разделу ниже.
26
26
  3. **Не переформулируй замечания.** Применяй то, что написано в ревью. Если непонятно — спроси через `AskUserQuestion`.
27
27
  4. **Не делаешь само ревью и не коммитишь.** Только применяешь замечания и пишешь отчёт.
@@ -47,7 +47,7 @@ description: 'Исправляет код по готовому ревью из
47
47
  Если найдено ровно одно ревью — используй режим `$REVIEW_SOURCE=review_file` и продолжай без вопроса. Если замечания даны текстом — используй режим `$REVIEW_SOURCE=review_text` и продолжай без вопроса. Если найдено несколько одинаково подходящих ревью — `AskUserQuestion` со списком вариантов. Если входа нет — `AskUserQuestion` со списком последних файлов из `docs/reviews/`. Если `docs/reviews/` отсутствует или пуста и вход не содержит замечания — остановись с понятным вопросом или статусом `blocked: нужно ревью`.
48
48
 
49
49
  ### 2. Прочитать контекст
50
- Прочитай `docs/rules.md`, `docs/arch.md`, если они есть. Через `docs/references.md` выбери только применимые карточки. Если связанный план содержит `sources.references`, прочитай перечисленные карточки и не загружай остальные.
50
+ Прочитай `docs/rules.md`, `docs/arch.md`, если они есть. Если связанный план содержит `sources.business`, прочитай только перечисленные карточки, относящиеся к исправляемым замечаниям; иначе выбери их по описаниям через `docs/business.md`. Отсутствие подходящей карточки не является блокером. Через `docs/references.md` выбери только применимые технические карточки. Если связанный план содержит `sources.references`, прочитай перечисленные карточки и не загружай остальные.
51
51
 
52
52
  Если `$REVIEW_SOURCE=review_file`, прочитай сам файл ревью. Если ревью ссылается на план/research — прочитай и их.
53
53
 
@@ -59,7 +59,7 @@ description: 'Исправляет код по готовому ревью из
59
59
  - **На усмотрение автора** → в обычном режиме собери в один-два раунда `AskUserQuestion`, применяй по решению пользователя; в режиме `apply-optional` сам реши по каждому пункту, применяй только принятые решения без вопроса, а отклонённые фиксируй с причиной.
60
60
  - **Не править** → пропусти.
61
61
 
62
- Останавливайся и спрашивай, если замечание непонятно, противоречит коду или проектной документации, требует необоснованного отклонения от карточки либо задевает рискованное вне ревью (удаление, миграции, секреты). Подтверждённое отклонение зафиксируй в отчёте.
62
+ Останавливайся и спрашивай, если замечание непонятно, противоречит коду или проектной документации либо задевает рискованное вне ревью (удаление, миграции, секреты). Если исправление противоречит применимой business-карточке, покажи конфликт и спроси: изменить состав исправлений или сначала пересогласовать правило через `eda-business`. Не разрешай такой конфликт автоматически даже в `apply-optional`. Подтверждённое отклонение от технической карточки зафиксируй в отчёте.
63
63
 
64
64
  ### 4. Финальная проверка
65
65
  Прогони полный сьют тестов и линтеры. Команды — стандартные для стека; непонятно — `AskUserQuestion`. Свои поломки — правишь и повторяешь. Чужие/несвязанные — `AskUserQuestion`.
@@ -116,4 +116,5 @@ status: done
116
116
  - Гонять полный сьют и линтеры на каждой правке — только в конце.
117
117
  - Пропускать финальную проверку.
118
118
  - Сохранять отчёт куда-либо кроме `docs/review-fixes/`.
119
- - Игнорировать применимую карточку или молча отклоняться от её примера.
119
+ - Загружать несвязанные business-карточки или расширять ими состав исправлений.
120
+ - Игнорировать применимую карточку или молча отклоняться от её требований либо примера.
@@ -24,6 +24,7 @@ description: 'Проводит ручную smoke/acceptance-проверку и
24
24
  7. **Разрушительное подтверждай.** Реальные платежи, удаление данных, отправку email/SMS/push, изменение production/staging-данных, миграции, очистку БД и похожие действия выполняй только после `AskUserQuestion`.
25
25
  8. **Проверяй фактическое поведение.** Не ограничивайся чтением кода. Если сценарий нельзя выполнить, зафиксируй `blocked` и конкретную причину.
26
26
  9. **Отчёт обязателен.** Сохрани результат в `docs/manual-tests/`, даже если проверка заблокирована или нашла баги.
27
+ 10. **Задача важнее дополнительного контекста.** Основной чеклист строй по выполненной задаче: текущему сообщению и явно связанному плану, issue, review или fix-отчёту. Business-карточки подключай только после определения target и только для непосредственно затронутого поведения.
27
28
 
28
29
  ## Интерактивные вопросы
29
30
 
@@ -36,25 +37,29 @@ description: 'Проводит ручную smoke/acceptance-проверку и
36
37
  ## Этапы
37
38
 
38
39
  ### 1. Определить цель проверки
39
- Разбери вход пользователя. Если указан файл плана, ревью, research, issue или другой артефакт — прочитай его. Если входа нет, изучи `git diff HEAD`, изменённые файлы, README и релевантные роуты/страницы/компоненты.
40
+ Разбери вход пользователя и зафиксируй `$TASK_CONTEXT`: что было сделано и какие результаты пользователь ожидает проверить. Если указан файл плана, ревью, research, issue, fix-отчёт или другой артефакт — прочитай его. Это главный источник сценариев и критериев. Если входа нет, изучи `git diff HEAD`, изменённые файлы, README и релевантные роуты/страницы/компоненты.
40
41
 
41
42
  Определи `$TEST_TARGET`: `api`, `frontend`, `fullstack` или `other`. Если цель всё ещё неоднозначна и можно проверить не то окружение или не тот сценарий — спроси через `AskUserQuestion`.
42
43
 
43
44
  ### 2. Прочитать рамку проекта
44
45
  Прочитай `docs/rules.md` и `docs/arch.md`, если есть. Найди команды запуска, тестовые URL, API-контракты, seed/test users и ограничения окружения в README, package scripts, docker compose, Makefile, OpenAPI/Swagger/Postman-файлах и существующих e2e-тестах.
45
46
 
47
+ После определения `$TASK_CONTEXT` и фактически изменённого поведения прочитай `docs/business.md`, если индекс существует. По описаниям выбери только карточки, которые прямо относятся к проверяемой задаче. Если таких карточек нет, продолжай без business-контекста и без предупреждения. Не открывай остальные карточки и не расширяй ими smoke-проверку.
48
+
49
+ Если ожидаемый результат задачи противоречит применимой business-карточке, не выбирай правильный вариант самостоятельно. До неоднозначного сценария покажи конфликт и через `AskUserQuestion` спроси: проверять изменённую задачу как новое правило или сначала пересогласовать карточку через `eda-business`. В неинтерактивном режиме зафиксируй `blocked` с этим вопросом.
50
+
46
51
  Не устанавливай Playwright, браузеры, пакеты, docker images или системные зависимости молча. Если без этого проверка невозможна — спроси через `AskUserQuestion` или зафиксируй `blocked` в неинтерактивном режиме.
47
52
 
48
53
  ### 3. Составить smoke-чеклист
49
54
  Составь короткий чеклист:
50
55
  - запуск приложения или API;
56
+ - явные acceptance criteria и сценарии выполненной задачи;
51
57
  - основной happy path изменённой области;
52
- - 1–2 негативных или edge-сценария;
53
- - явные acceptance criteria из плана или входа пользователя;
58
+ - 1–2 негативных или edge-сценария, которые следуют из задачи;
54
59
  - для фронта: console errors, network errors и видимые regressions на основной странице;
55
60
  - для API: status code, схема/ключевые поля ответа, обработка неверного ввода или прав доступа, если это относится к задаче.
56
61
 
57
- Не расширяй проверку до полного exploratory QA, если пользователь не попросил.
62
+ Применимая business-карточка может добавить важный инвариант, ожидаемый результат или один релевантный негативный сценарий, который задача не сформулировала явно. Она не заменяет критерии задачи и не требует тестировать всю предметную область. Не расширяй проверку до полного exploratory QA, если пользователь не попросил.
58
63
 
59
64
  ### 4. Запустить окружение
60
65
  Если приложение ещё не запущено и команды очевидны, запусти нужные dev/API-серверы. Дождись готовности по логам, healthcheck, открытому порту или успешному запросу. Если порт занят, проверь, подходит ли уже запущенный сервис; если нет — спроси или выбери очевидный альтернативный порт только когда проект это поддерживает.
@@ -98,6 +103,9 @@ status: <passed | failed | blocked>
98
103
  ## Контекст
99
104
  <что проверялось и откуда взяты сценарии>
100
105
 
106
+ ## Business-контекст
107
+ <только если использовался: применимые карточки и какие сценарии или ожидания они добавили>
108
+
101
109
  ## Окружение
102
110
  | Что | Значение |
103
111
  |---|---|
@@ -117,7 +125,7 @@ status: <passed | failed | blocked>
117
125
  <ссылки на скриншоты, логи или «Нет»>
118
126
 
119
127
  ## Итог
120
- <passed / failed / blocked и короткое объяснение>
128
+ <passed / failed / blocked и короткое объяснение относительно выполненной задачи>
121
129
  ```
122
130
 
123
131
  Если найден баг, статус отчёта `failed`. Если проверка невозможна из-за окружения, авторизации, отсутствующих зависимостей или непонятного риска, статус `blocked`.
@@ -5,13 +5,13 @@ description: 'Выполняет настраиваемую цепочку `eda-
5
5
 
6
6
  # Скил: Оркестра полного цикла (eda-orhestra)
7
7
 
8
- Выполняй настроенные `eda-*`-скилы по порядку. По умолчанию цепочка остаётся полной: `eda-plan` → `eda-plan-execute` → `eda-polish` → `eda-manual-test`; failed-отчёт ручной проверки передаётся в `eda-fix`, после чего повторяются включённые polish и manual-test.
8
+ Выполняй настроенные `eda-*`-скилы по порядку. По умолчанию цепочка: `eda-plan` без проверок → `eda-plan-polish` → `eda-plan-execute` → `eda-polish` → `eda-manual-test`. Failed-отчёт ручной проверки передавай в `eda-fix`, затем возвращайся к `eda-manual-test` до `passed` или лимита QA-циклов.
9
9
 
10
10
  ## Настройки
11
11
 
12
12
  Прочитай только раздел `orhestra` из `docs/settings.yaml`, если файл есть. Прямое указание пользователя в текущем сообщении важнее любого поля настроек.
13
13
 
14
- Поддерживается только `version: 2`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй. Дефолт режима: `orhestra.mode: automatic`.
14
+ Поддерживается только `version: 3`. При другой версии, отсутствующем `orhestra.steps` или невалидном значении используй дефолты ниже; настройки старого формата не применяй. Дефолт режима: `orhestra.mode: automatic`.
15
15
 
16
16
  ```yaml
17
17
  orhestra:
@@ -20,6 +20,10 @@ orhestra:
20
20
  - id: plan
21
21
  skill: eda-plan
22
22
  enabled: true
23
+ args: "без проверок"
24
+ - id: plan-polish
25
+ skill: eda-plan-polish
26
+ enabled: true
23
27
  args: ""
24
28
  - id: execute
25
29
  skill: eda-plan-execute
@@ -37,7 +41,6 @@ orhestra:
37
41
  skill: eda-fix
38
42
  args: ""
39
43
  then:
40
- - polish
41
44
  - manual-test
42
45
  max_cycles: 5
43
46
  ```
@@ -48,13 +51,13 @@ orhestra:
48
51
  - `steps`: упорядоченный непустой список. Выполняй сверху вниз только элементы с `enabled: true`; отсутствующий `enabled` считай `true`.
49
52
  - `id`: уникальное непустое имя шага для ссылок из `on_failure.then`.
50
53
  - `skill`: имя установленного `eda-*`-скила. Не разрешай `eda-orhestra`, `eda-aim`, `eda-commit`, `eda-send-review`, `eda-worktree` и `eda-merge-worktree`.
51
- - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для `eda-polish` здесь же задавай штатные `threshold N` и `limit N`; дефолт — `limit 5`.
54
+ - `args`: строка, которую нужно дословно добавить к входу этого скилла. Отсутствующее значение считай пустой строкой. Для дефолтного `eda-plan` передавай `без проверок`, чтобы оба вида ревью выполнил следующий `eda-plan-polish`. Для `eda-polish` здесь же задавай штатные `threshold N` и `limit N`; дефолт — `limit 5`.
52
55
  - `on_failure`: опциональный обработчик `failed` у шага `eda-manual-test`. Если поля нет, сохрани failed-отчёт и остановись без исправлений.
53
56
  - `on_failure.skill` и `on_failure.args`: разрешённый установленный скил исправления и его аргументы; дефолты `eda-fix` и пустая строка. Для `skill` действуют те же запреты, что для `steps[].skill`.
54
57
  - `on_failure.then`: id шагов, которые после исправления нужно повторить в указанном порядке. Пропускай отключённые шаги. Список должен содержать id активного `eda-manual-test`, иначе исправление нельзя подтвердить.
55
58
  - `on_failure.max_cycles`: положительное целое число, дефолт `5`.
56
59
 
57
- Старый v2 только с `orhestra.mode` означает полную дефолтную цепочку. Настройки проекта не переписывай во время запуска.
60
+ Если в v3 есть только `orhestra.mode`, используй полную дефолтную цепочку. Настройки проекта не переписывай во время запуска.
58
61
 
59
62
  Для совместимости старое значение `steps[].skill: eda-execute` нормализуй в памяти в `eda-plan-execute`. Файл настроек не переписывай; остальные неизвестные или удалённые скилы не заменяй автоматически.
60
63
 
@@ -62,7 +65,7 @@ orhestra:
62
65
 
63
66
  Сохрани весь текст рядом с вызовом в `$USER_REQUEST`. Извлеки задачу, пути к готовым артефактам, режим и разовые изменения цепочки.
64
67
 
65
- Поддерживай естественные overrides: `без полировки`, `полировка 2 итерации`, `без ручных тестов`, `только plan и execute`, `после plan запусти plan-polish strict`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка N итераций` нормализуй в `limit N` внутри `args` шага. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
68
+ Поддерживай естественные overrides: `без полировки плана`, `без полировки кода`, `полировка кода 2 итерации`, `без ручных тестов`, `только plan и execute`, `plan-polish threshold 95 limit 3`, `для manual-test <args>`. Явное перечисление порядка заменяет порядок из настроек; локальное включение, отключение или параметры меняют только названный шаг. Фразу `полировка кода N итераций` нормализуй в `limit N` внутри `args` шага `eda-polish`; аналогичную фразу о плане — в `args` шага `eda-plan-polish`. Не принимай слово из описания самой задачи за override без явной связи с цепочкой.
66
69
 
67
70
  Если передан готовый план, а включённый `eda-plan` должен создать тот же план, пропусти этот шаг как уже выполненный и запиши причину. Остальные шаги не додумывай и не подменяй: если им не хватает входного артефакта, обработай их вопрос по выбранному режиму.
68
71
 
@@ -83,7 +86,7 @@ orhestra:
83
86
  - Для вопроса `eda-plan-execute` о месте выполнения выбирай текущую ветку, если пользователь явно не запросил ветку или worktree.
84
87
  - Не спрашивай о переходе между успешными шагами.
85
88
 
86
- Автоматический режим не разрешает необратимые внешние действия, расширение scope, публикацию, расходы, удаление данных, ослабление проверок или изменение production/staging. Подтверждение из-за такого риска передай человеку; в неинтерактивной среде остановись с `blocked: нужен ответ пользователя`. Обратимые решения плана, включая БД/API-контракты и подтверждение готового плана, выбирай сам.
89
+ Автоматический режим не разрешает необратимые внешние действия, расширение scope, публикацию, расходы, удаление данных, ослабление проверок вне настроенной цепочки или изменение production/staging. Дефолтное `без проверок` у `eda-plan` не считай ослаблением: следующий обязательный `eda-plan-polish` выполняет проверку и доводку плана. Подтверждение из-за риска передай человеку; в неинтерактивной среде остановись с `blocked: нужен ответ пользователя`. Обратимые решения плана, включая БД/API-контракты и подтверждение готового плана, выбирай сам.
87
90
 
88
91
  ### Manual
89
92
 
@@ -123,18 +126,18 @@ orhestra:
123
126
 
124
127
  1. Если у этого шага нет `on_failure`, остановись с результатом `manual-test: failed`.
125
128
  2. Запусти `on_failure.skill` с manual-test-отчётом, `$USER_REQUEST`, предыдущими артефактами и `on_failure.args`.
126
- 3. После успешного fix увеличь счётчик и выполни активные шаги из `on_failure.then` в заданном там порядке. Их собственные `args` сохраняются.
129
+ 3. После успешного fix увеличь счётчик и выполни активные шаги из `on_failure.then` в заданном там порядке. Их собственные `args` сохраняются. В дефолтной цепочке здесь только `manual-test`: после QA-фикса вернись к ручной проверке, не запускай полировку кода повторно.
127
130
  4. Если повторный manual-test снова `failed`, начни следующий QA-цикл.
128
131
  5. Остановись с `blocked: QA не сходится`, если достигнут `on_failure.max_cycles`, два fix-цикла подряд не меняют результат того же сценария, нужен выход за scope или окружение не позволяет проверить.
129
132
  6. После `passed` продолжи линейную цепочку со шага, следующего за исходным manual-test.
130
133
 
131
- Если manual-test отключён или отсутствует, failure-цикл не запускай и не изображай ручную проверку. Если polish отключён, не требуй review score и не запускай его после fix через `on_failure.then`.
134
+ Если manual-test отключён или отсутствует, failure-цикл не запускай и не изображай ручную проверку. Если шаг `eda-polish` отключён, не требуй review score. Если `eda-plan-polish` отключён, не требуй оценку плана. Не запускай ни одну из полировок после fix, если её id нет в `on_failure.then`.
132
135
 
133
136
  ## Финал
134
137
 
135
138
  Сообщи режим, фактически выполненную цепочку с args и лимитами, пропущенные шаги и причины, пути ко всем артефактам, последний review score при наличии, результат manual-test при наличии, число QA-циклов и состояние git «не закоммичено».
136
139
 
137
- Успех означает, что все включённые шаги завершились по собственным контрактам. Если manual-test был включён, после последних изменений обязателен `passed`; если он отключён, явно напиши «ручные тесты пропущены настройкой». Если polish отключён, явно напиши «полировка пропущена настройкой».
140
+ Успех означает, что все включённые шаги завершились по собственным контрактам. Если manual-test был включён, после последних изменений обязателен `passed`; если он отключён, явно напиши «ручные тесты пропущены настройкой». Если отключён `eda-plan-polish`, явно напиши «полировка плана пропущена настройкой». Если отключён `eda-polish`, явно напиши «полировка кода пропущена настройкой».
138
141
 
139
142
  ## Чего НЕ делать
140
143