@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,233 +0,0 @@
1
- ---
2
- name: eda-start
3
- description: 'Помогает стартовать новый проект: собирает требования, критерии MVP, ограничения и риски; вместе с пользователем выбирает стек, архитектуру, инструменты качества кода, AI-скилы, агентные инструкции, MCP-серверы и правила проекта. Для пакетов всегда ищет последние стабильные версии по официальным источникам; для библиотек, CLI, сервисов и MCP проверяет актуальные стабильные версии, если они не заданы. Не пишет код и не устанавливает зависимости: сохраняет согласованный стартовый документ в docs/project-starts/ и черновики docs/rules.md / docs/arch.md / AGENTS.md, если пользователь это подтвердил.'
4
- ---
5
-
6
- # Скил: Старт проекта (eda-start)
7
-
8
- Помогаешь начать новый проект с понятной рамкой: что делаем, для кого, на каком стеке, с какой архитектурой, какими проверками качества, какими AI-скилами и MCP-серверами, и какие правила сразу внедряем. Работаешь как технический партнёр: сначала собираешь факты, затем рекомендуешь варианты и принимаешь решения вместе с пользователем.
9
-
10
- ## Вход из сообщения пользователя
11
-
12
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: идею проекта, продуктовую цель, аудиторию, ограничения, сроки, предпочтения по стеку, инфраструктуре, бюджету, команде, требованиям к качеству, безопасности и эксплуатации.
13
-
14
- Если входа достаточно для первого анализа, не спрашивай подтверждение самой темы, но всё равно задай вопросы по значимым стартовым решениям. `AskUserQuestion` до анализа задавай только если входа нет, он противоречивый, найдено несколько равных тем или есть риск стартовать не тот проект. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
15
-
16
- ## Главные правила
17
-
18
- 1. **Интерактивное совместное решение обязательно.** Нельзя молча выбрать стек, архитектуру, правила, MCP или инструменты качества, если это значимо влияет на проект.
19
- 2. **Не пишешь код и не ставишь пакеты.** Запись только в `docs/project-starts/` и, после явного подтверждения пользователя, в `docs/rules.md`, `docs/arch.md`, `AGENTS.md`.
20
- 3. **Требования раньше стека.** Сначала выясни продукт, пользователей, MVP, ограничения, данные, интеграции, безопасность, эксплуатацию и команду. Только после этого выбирай стек.
21
- 4. **Стек подбирается под задачу.** Не навязывай любимые технологии. Для каждого ключевого выбора дай 2–3 реалистичных варианта, рекомендацию и причину.
22
- 5. **Инструменты качества обязательны для выбранного стека.** Подбери форматтер, линтер, статанализатор/typecheck, тестовый стек, coverage, dependency/security audit, pre-commit и CI-проверки, если они есть и уместны в выбранной экосистеме.
23
- 6. **MCP и скилы — только по делу.** Рекомендуй MCP-сервер или скил, когда он закрывает реальную нехватку контекста, интеграцию, повторяемый процесс или качество агентной работы.
24
- 7. **Версии пакетов проверяй всегда.** Если предлагаешь npm/pip/gem/cargo/go/composer-пакет или пакет из другой экосистемы, найди последнюю стабильную версию через context7, если он доступен, или через web search по официальной документации, registry, release notes или репозиторию проекта. Не пиши `latest` без конкретной версии и источника. Если пользователь явно зафиксировал другую версию, не меняй её молча: покажи текущую стабильную, зафиксированную пользователем и причину расхождения.
25
- 8. **Версии ПО тоже проверяй.** Если предлагаешь CLI, фреймворки, сервисы или MCP-серверы, а версия не зафиксирована пользователем, проверь актуальную стабильную версию через context7, если он доступен, или через web search по официальным источникам.
26
- 9. **Архитектура должна быть объяснима.** Выбранная архитектура обязана соответствовать масштабу MVP, рискам, команде и будущему росту. Не предлагай сложность без причины.
27
- 10. **Правила должны быть применимы.** Каждое правило должно отвечать на конкретный риск проекта и иметь понятную проверку: автоматическую, ревью-проверку или договорённость в `docs/rules.md`.
28
- 11. **Простой язык. Таблицы** используй для сравнений стека, инструментов, MCP, скилов, правил и архитектурных вариантов.
29
-
30
- ## Интерактивные вопросы
31
-
32
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
33
- - Claude Code: используй `AskUserQuestion`.
34
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
35
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
36
- - Не запускай команды, которые ждут интерактивного ввода в терминале.
37
-
38
- Вопросы задавай пакетами по 1–3 за раз. Сначала спрашивай только то, без чего следующий шаг будет гаданием. После каждого пакета используй ответ, обновляй рекомендацию и продолжай.
39
-
40
- ## Этапы
41
-
42
- ### 1. Собрать требования
43
-
44
- Собери и зафиксируй:
45
- - цель проекта и аудиторию;
46
- - MVP и что точно не входит в первую версию;
47
- - основные пользовательские сценарии;
48
- - типы данных, чувствительные данные, персональные данные и требования к хранению;
49
- - интеграции, платежи, auth, уведомления, файлы, поиск, аналитика, админку;
50
- - нагрузку, SLA, бюджет, сроки, размер команды и опыт команды;
51
- - платформы: web, mobile, desktop, API, CLI, bot, internal tool;
52
- - ограничения по хостингу, лицензиям, vendor lock-in, compliance и региону.
53
-
54
- Если не хватает критичных требований, задай `AskUserQuestion` и остановись до ответа.
55
-
56
- ### 2. Выбрать стек
57
-
58
- Сравни 2–3 подходящих варианта стека. Для каждого укажи:
59
- - где он силён для этого проекта;
60
- - главный риск;
61
- - стоимость внедрения и поддержки;
62
- - зрелость экосистемы;
63
- - совместимость с командой и MVP.
64
-
65
- Рекомендуй один вариант. Если пользователь не дал режим «сам выбирай», задай `AskUserQuestion`: принять рекомендацию / выбрать альтернативу / сузить требования и пересчитать выбор.
66
-
67
- Для выбранного стека зафиксируй конкретные версии основных компонентов или источник версии: runtime, framework, БД, ORM, тестовый фреймворк, build tool, package manager, контейнеры и ключевые сервисы.
68
-
69
- Для каждого выбранного пакета отдельно зафиксируй:
70
- - последнюю стабильную версию;
71
- - источник версии и дату проверки;
72
- - если версия зафиксирована пользователем и отличается от последней стабильной — обе версии и причину, почему остаёмся на pinned-версии или почему предлагаем обновление.
73
-
74
- ### 3. Подобрать инструменты качества
75
-
76
- Для выбранного стека подбери инструменты с обоснованием:
77
- - форматирование кода;
78
- - линтеры;
79
- - статический анализ и typecheck;
80
- - unit/integration/e2e/contract-тесты;
81
- - coverage;
82
- - dependency audit и security scan;
83
- - schema/API validation;
84
- - миграции БД и проверки миграций;
85
- - pre-commit hooks;
86
- - CI pipeline;
87
- - генераторы типов или клиентов, если API/схемы это требуют.
88
-
89
- Не предлагай инструмент, если он дублирует уже выбранный инструмент того же класса без явной пользы. Если в экосистеме есть несколько нормальных вариантов, сравни их и выбери один.
90
-
91
- ### 4. Выбрать архитектуру
92
-
93
- Предложи 2–3 архитектурных варианта, соответствующих выбранному стеку и масштабу:
94
- - простой монолит / modular monolith;
95
- - API + frontend;
96
- - event-driven части;
97
- - serverless;
98
- - mobile-first / offline-first;
99
- - plugin/module architecture;
100
- - другой вариант, если он лучше подходит.
101
-
102
- Для каждого варианта покажи границы модулей, поток данных, риски и что будет сложно менять позже. Рекомендуй один вариант и задай `AskUserQuestion`, если выбор влияет на стоимость, сроки, масштабирование, данные или команду.
103
-
104
- ### 5. Решить правила проекта
105
-
106
- Сформируй набор правил, которые стоит внедрить с первого дня:
107
- - структура проекта и границы модулей;
108
- - стиль кода и naming;
109
- - работа с ошибками и логированием;
110
- - тестовая стратегия;
111
- - миграции и данные;
112
- - API-контракты;
113
- - безопасность и секреты;
114
- - доступность и UX, если есть UI;
115
- - observability;
116
- - работа с AI-агентами, планами, ревью и коммитами;
117
- - политика зависимостей и обновлений.
118
-
119
- Для каждого правила укажи: какой риск оно закрывает, как проверяется, где будет зафиксировано. Затем спроси пользователя, какие правила принять сейчас, какие оставить предложениями и какие убрать.
120
-
121
- ### 6. Подобрать AI-скилы, агентные инструкции и MCP
122
-
123
- Подбирай рабочий набор AI-инструментов только после требований, стека, инструментов качества, архитектуры и правил. Эти решения задают контекст: какие источники нужны агенту, какие проверки уже закрыты кодовыми инструментами, где нужны отдельные роли и какие права доступа допустимы.
124
-
125
- Подбери:
126
- - какие AI-скилы, slash-команды, агентные инструкции или специализированные роли нужны сразу: старт проекта, продуктовый discovery, планирование, исполнение задач, ревью, security review, проверка доступности, работа с документацией, релизный процесс, domain-expert по предметной области;
127
- - какие готовые скилы можно взять из доступных наборов, включая `eda-*`, Claude/Codex skills, командные инструкции репозитория или публичные каталоги, если они подходят;
128
- - какие проектные скилы стоит написать специально под этот проект: например для доменной модели, архитектурных границ, API-контрактов, миграций, дизайн-системы, ревью UI, работы с данными или внутренними интеграциями;
129
- - какие скилы и агентные роли отложить до появления кода, команды или повторяющейся проблемы;
130
- - какие MCP-серверы помогут агенту: файловая система, GitHub/GitLab, Postgres/SQLite, браузер, Playwright, Figma, документация, API-клиенты, issue tracker, cloud provider;
131
- - какие MCP не нужны, потому что выбранная архитектура, правила или инструменты качества уже закрывают задачу.
132
-
133
- Для каждого скила или агентной инструкции укажи: какую работу закрывает, кто запускает, на каких источниках должен основываться, какой артефакт создаёт, чем проверять результат и почему обычного промпта недостаточно. Не ограничивайся `eda-*`: они только один из возможных источников.
134
-
135
- Для каждого MCP укажи: зачем он нужен именно при выбранной архитектуре и правилах, какие данные откроет агенту, риски доступа, минимальные права и когда подключать. MCP с доступом к продакшену, секретам, платежам или персональным данным не включай по умолчанию: вынеси на отдельное подтверждение.
136
-
137
- ### 7. Сохранить стартовый документ
138
-
139
- Сохрани стартовый документ в `docs/project-starts/{YYYY-MM-DD}_{HH-MM}_{slug}.md`.
140
-
141
- Формат:
142
-
143
- ```markdown
144
- ---
145
- title: <заголовок>
146
- date: <YYYY-MM-DD HH:MM>
147
- status: draft
148
- sources:
149
- existing_rules: <путь или —>
150
- existing_arch: <путь или —>
151
- ---
152
-
153
- # Старт проекта
154
-
155
- ## Требования
156
- <цель, аудитория, MVP, ограничения, не входит>
157
-
158
- ## Принятые решения
159
- | Область | Решение | Почему | Подтверждение |
160
- |---|---|---|---|
161
- | Стек | ... | ... | ответ пользователя / рекомендация принята |
162
-
163
- ## Стек
164
- | Компонент | Выбор | Версия / источник | Обоснование |
165
- |---|---|---|---|
166
-
167
- ## Инструменты качества
168
- | Класс | Инструмент | Где запускать | Почему |
169
- |---|---|---|---|
170
-
171
- ## Архитектура
172
- <выбранный вариант, границы модулей, поток данных, важные ограничения>
173
-
174
- ## Правила
175
- | Правило | Риск | Проверка | Статус |
176
- |---|---|---|---|
177
-
178
- ## AI-скилы и агентные инструкции
179
- | Скил / инструкция | Источник | Когда использовать | Артефакт | Почему |
180
- |---|---|---|---|---|
181
-
182
- ## MCP
183
- | MCP | Когда подключать | Права доступа | Риски |
184
- |---|---|---|---|
185
-
186
- ## Открытые вопросы
187
- - <если есть>
188
-
189
- ## Следующие шаги
190
- 1. <создать/обновить docs/rules.md>
191
- 2. <создать/обновить docs/arch.md>
192
- 3. <запустить eda-plan для первого инкремента>
193
- ```
194
-
195
- Quality gate перед сохранением:
196
- - есть требования и границы MVP;
197
- - выбран один основной стек, а не список равных вариантов;
198
- - инструменты качества покрывают форматирование, lint/static analysis/typecheck, тесты и CI или объясняют, почему часть не нужна;
199
- - выбрана архитектура и описаны границы;
200
- - правила имеют риск и способ проверки;
201
- - есть список AI-скилов, агентных инструкций или ролей с назначением, источником и артефактом, подобранный под выбранную архитектуру и правила;
202
- - MCP-серверы имеют обоснование, права и риски, связанные с выбранной архитектурой, данными и интеграциями;
203
- - все значимые решения имеют подтверждение пользователя или явно помечены как автономная рекомендация;
204
- - для каждого выбранного пакета указана последняя стабильная версия и источник; если используется не последняя стабильная версия, причина явно записана;
205
- - версии другого ПО проверены или объяснено, почему это не требуется.
206
-
207
- ### 8. Создать черновики правил и архитектуры
208
-
209
- После сохранения стартового документа спроси `AskUserQuestion`: создать черновики `docs/rules.md`, `docs/arch.md` и `AGENTS.md` сейчас / только стартовый документ / выбрать отдельные документы.
210
-
211
- Если пользователь подтвердил:
212
- - не перезаписывай существующие файлы молча;
213
- - для каждого существующего файла спроси: дополнить / создать рядом / оставить как есть;
214
- - в `docs/rules.md` перенеси только принятые правила, а предложения оставь отдельным разделом;
215
- - в `docs/arch.md` перенеси выбранную архитектуру, границы модулей, поток данных, данные и интеграции;
216
- - в `AGENTS.md` добавь краткую карту проекта и ссылки на `docs/rules.md`, `docs/arch.md`, стартовый документ и команды проверки.
217
-
218
- Если пользователь отказался, не создавай эти файлы и запиши отказ в финале.
219
-
220
- ### 9. Финал
221
-
222
- Короткое сообщение: путь к стартовому документу, какие решения приняты, какие документы созданы или не созданы, какие вопросы остались открытыми, какой следующий скил логично использовать (`eda-plan` для первого инкремента или `eda-docs` для доработки правил и архитектуры).
223
-
224
- ## Чего НЕ делать
225
-
226
- - Создавать приложение, писать код, миграции, конфиги, CI или устанавливать зависимости.
227
- - Выбирать стек до требований.
228
- - Давать один вариант без объяснения альтернатив, если решение значимое.
229
- - Ставить MCP по умолчанию с широкими правами доступа.
230
- - Подменять линтеры, статанализаторы, typecheck и тесты агентными проверками.
231
- - Внедрять правила без согласия пользователя.
232
- - Перезаписывать существующие `docs/rules.md`, `docs/arch.md` или `AGENTS.md` без отдельного подтверждения.
233
- - Сохранять стартовый документ куда-либо кроме `docs/project-starts/`.
@@ -1,113 +0,0 @@
1
- ---
2
- name: eda-worktree
3
- description: 'Создаёт новый git worktree рядом с основным проектом в папке `{name}-work-{n}` и одноимённую ветку. Базовую ветку берёт из текста рядом с вызовом, если она указана, иначе спрашивает интерактивно. Не правит код, не коммитит, не мержит обратно. В финале показывает путь worktree, имя ветки и команду перехода в новую папку.'
4
- ---
5
-
6
- # Скил: Создатель worktree (eda-worktree)
7
-
8
- Создаёшь отдельный git worktree для параллельной работы. Worktree всегда появляется рядом с основным проектом, а имя выбирается автоматически.
9
-
10
- ## Вход из сообщения пользователя
11
-
12
- Текст рядом с вызовом скилла в текущем сообщении пользователя — главный вход. Сначала разбери именно его: базовую ветку или ref, ограничения и прямые указания.
13
-
14
- Если вход содержит ветку, tag, commit hash или выражение вроде `от main` / `from main` / `base main`, используй это как `$BASE_REF`. Если входа нет или база не указана, спроси через `AskUserQuestion`. Старое обсуждение в истории не считай входом, если пользователь не связал его с текущим вызовом явно.
15
-
16
- ## Главные правила
17
-
18
- 1. **Только git worktree.** Не правь код, docs, конфиги и зависимости.
19
- 2. **Имя строго по шаблону.** Папка и ветка называются `{name}-work-{n}`, где `{name}` — имя папки основного worktree проекта, а `{n}` — первый свободный положительный номер.
20
- 3. **Папка рядом с основным проектом.** Если основной worktree лежит в `/path/app`, новый путь: `/path/app-work-1`, `/path/app-work-2` и так далее.
21
- 4. **Базу не додумывай молча.** Если пользователь не указал `$BASE_REF`, спроси интерактивно.
22
- 5. **Не удаляй и не мержь.** Этот скил только создаёт worktree. Обратный merge — `eda-merge-worktree`.
23
- 6. **Простой язык** в сообщениях пользователю.
24
-
25
- ## Интерактивные вопросы
26
-
27
- Когда инструкция говорит `AskUserQuestion`, это означает блокирующий интерактивный вопрос.
28
- - Claude Code: используй `AskUserQuestion`.
29
- - Codex interactive: если доступен `request_user_input`, используй его. Если tool недоступен, задай один короткий вопрос в чат, дай варианты 1–3, напиши «Ответь номером или своим вариантом. Я продолжу только после ответа.» и остановись.
30
- - Codex exec / неинтерактивный запуск: не задавай вопросы и не пытайся читать stdin. Если без ответа нельзя безопасно продолжать, заверши работу со статусом `blocked: нужен ответ пользователя`, перечисли вопросы и варианты, не выполняй рискованные действия.
31
- - Не запускай команды, которые ждут интерактивного ввода в терминале.
32
-
33
- ## Этапы
34
-
35
- ### 1. Проверить git-репозиторий
36
-
37
- Выполни:
38
-
39
- ```bash
40
- git rev-parse --show-toplevel
41
- git worktree list --porcelain
42
- ```
43
-
44
- Если это не git-репозиторий — остановись и сообщи. Основной worktree бери из первой записи `worktree <path>` в `git worktree list --porcelain`. Если список не удалось прочитать, используй `git rev-parse --show-toplevel`.
45
-
46
- Определи `$MAIN_WORKTREE` — путь основного worktree, `$PROJECT_NAME` — basename от него, `$PROJECT_PARENT` — родительская папка.
47
-
48
- ### 2. Выбрать базу
49
-
50
- Если `$BASE_REF` указан в сообщении пользователя, проверь его:
51
-
52
- ```bash
53
- git rev-parse --verify "$BASE_REF^{commit}"
54
- ```
55
-
56
- Если ref не найден — остановись и сообщи, что база не существует.
57
-
58
- Если `$BASE_REF` не указан, спроси через `AskUserQuestion`, откуда создавать worktree. Предлагай реальные варианты:
59
- - текущая ветка или `HEAD`;
60
- - default branch из `origin/HEAD`, если она есть;
61
- - `main` или `master`, если такая ветка существует.
62
-
63
- Если пользователь выбирает свой ref, проверь его через `git rev-parse --verify "$BASE_REF^{commit}"`.
64
-
65
- Если текущий worktree содержит незакоммиченные изменения, коротко предупреди: они не попадут в новый worktree. Это не блокер, если база выбрана явно или подтверждена через вопрос.
66
-
67
- ### 3. Найти свободное имя
68
-
69
- Начиная с `n = 1`, найди первый номер, для которого одновременно свободны:
70
- - соседняя папка `$PROJECT_PARENT/$PROJECT_NAME-work-$n`;
71
- - локальная ветка `$PROJECT_NAME-work-$n`.
72
-
73
- Проверяй ветку так:
74
-
75
- ```bash
76
- git show-ref --verify --quiet "refs/heads/$BRANCH_NAME"
77
- ```
78
-
79
- Результат: `$WORKTREE_NAME=$PROJECT_NAME-work-$n`, `$BRANCH_NAME=$WORKTREE_NAME`, `$WORKTREE_PATH=$PROJECT_PARENT/$WORKTREE_NAME`.
80
-
81
- Если папка уже есть, не перезаписывай её и не удаляй. Просто бери следующий номер.
82
-
83
- ### 4. Создать worktree
84
-
85
- Выполни:
86
-
87
- ```bash
88
- git worktree add -b "$BRANCH_NAME" "$WORKTREE_PATH" "$BASE_REF"
89
- ```
90
-
91
- Если команда упала, покажи понятную причину и не пытайся чистить вручную. Если ошибка говорит, что ветка или папка уже существует, вернись к шагу 3 и выбери следующий номер.
92
-
93
- ### 5. Финал
94
-
95
- Короткое сообщение:
96
- - созданный путь worktree;
97
- - имя ветки;
98
- - выбранная база;
99
- - готовая команда:
100
-
101
- ```bash
102
- cd "$WORKTREE_PATH"
103
- ```
104
-
105
- Напомни, что обратный merge выполняет `eda-merge-worktree <n>` или `eda-merge-worktree work-<n>`.
106
-
107
- ## Чего НЕ делать
108
-
109
- - Править файлы проекта.
110
- - Создавать docs-артефакты.
111
- - Коммитить, пушить, мержить.
112
- - Удалять существующие worktree, ветки или папки.
113
- - Создавать worktree внутри текущего проекта вместо соседней папки.
File without changes