@zrg-sh/studio 0.1.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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/ONBOARDING.html +270 -0
  3. package/README.md +82 -0
  4. package/bin/zrg-studio.mjs +67 -0
  5. package/package.json +29 -0
  6. package/src/commands/doctor.mjs +60 -0
  7. package/src/commands/init.mjs +44 -0
  8. package/src/lib/copy-template.mjs +42 -0
  9. package/src/lib/merge-claude-settings.mjs +54 -0
  10. package/template/.claude/agents/studio-analyst.md +109 -0
  11. package/template/.claude/agents/studio-designer.md +172 -0
  12. package/template/.claude/agents/studio-domain-framer.md +109 -0
  13. package/template/.claude/agents/studio-domain-merger.md +264 -0
  14. package/template/.claude/agents/studio-pm.md +169 -0
  15. package/template/.claude/agents/studio-reviewer.md +156 -0
  16. package/template/.claude/agents/studio-scenario-writer.md +152 -0
  17. package/template/.claude/commands/studio-analyst.md +45 -0
  18. package/template/.claude/commands/studio-designer.md +34 -0
  19. package/template/.claude/commands/studio-domain-framer.md +30 -0
  20. package/template/.claude/commands/studio-onboard.md +98 -0
  21. package/template/.claude/commands/studio-pm.md +39 -0
  22. package/template/.claude/commands/studio-scenario-writer.md +44 -0
  23. package/template/product-specs/CLAUDE.md +53 -0
  24. package/template/product-specs/agents/studio-analyst.md +109 -0
  25. package/template/product-specs/agents/studio-codebase-mapper.md +217 -0
  26. package/template/product-specs/agents/studio-conflict-resolver.md +169 -0
  27. package/template/product-specs/agents/studio-designer.md +172 -0
  28. package/template/product-specs/agents/studio-domain-extractor.md +365 -0
  29. package/template/product-specs/agents/studio-domain-framer.md +109 -0
  30. package/template/product-specs/agents/studio-domain-interviewer.md +246 -0
  31. package/template/product-specs/agents/studio-domain-merger.md +264 -0
  32. package/template/product-specs/agents/studio-god.md +779 -0
  33. package/template/product-specs/agents/studio-meta-god.md +335 -0
  34. package/template/product-specs/agents/studio-pm.md +169 -0
  35. package/template/product-specs/agents/studio-reviewer.md +156 -0
  36. package/template/product-specs/agents/studio-scenario-writer.md +152 -0
  37. package/template/product-specs/agents/studio-verifier.md +222 -0
  38. package/template/product-specs/docs/_meta/capability-map.example.md +103 -0
  39. package/template/product-specs/docs/_meta/doc-schema.md +134 -0
  40. package/template/product-specs/docs/_meta/domain-map.example.md +106 -0
  41. package/template/product-specs/docs/_meta/glossary.example.md +72 -0
  42. package/template/product-specs/docs/_meta/onboarding.example.md +142 -0
  43. package/template/product-specs/docs/_meta/product-vision.example.md +136 -0
  44. package/template/product-specs/hooks/studio-conflict-detect.sh +59 -0
  45. package/template/product-specs/hooks/studio-context-monitor.js +37 -0
  46. package/template/product-specs/hooks/studio-domain-guard.sh +40 -0
  47. package/template/product-specs/hooks/studio-prompt-guard.js +36 -0
  48. package/template/product-specs/hooks/studio-session-state.sh +55 -0
  49. package/template/product-specs/hooks/studio-stage-gate.sh +180 -0
  50. package/template/product-specs/references/checkpoints.md +27 -0
  51. package/template/product-specs/references/ddd-conventions.md +38 -0
  52. package/template/product-specs/references/gates.md +50 -0
  53. package/template/product-specs/references/model-profiles.md +28 -0
  54. package/template/product-specs/references/obsidian-conventions.md +51 -0
  55. package/template/product-specs/references/stage-pipeline.md +65 -0
  56. package/template/product-specs/rules/change-management.md +159 -0
  57. package/template/product-specs/rules/docs-conventions.md +81 -0
  58. package/template/product-specs/rules/domain-conventions.md +69 -0
  59. package/template/product-specs/rules/id-numbering.md +51 -0
  60. package/template/product-specs/rules/obsidian-conventions.md +51 -0
  61. package/template/product-specs/templates/change/01-intent.md +40 -0
  62. package/template/product-specs/templates/change/02-scenarios.md +66 -0
  63. package/template/product-specs/templates/change/03-analysis.md +64 -0
  64. package/template/product-specs/templates/change/04-domain.md +47 -0
  65. package/template/product-specs/templates/change/05-ux.md +46 -0
  66. package/template/product-specs/templates/change/metadata.yaml +26 -0
  67. package/template/product-specs/templates/config.json +19 -0
  68. package/template/product-specs/templates/domain/README.md +31 -0
  69. package/template/product-specs/templates/domain/aggregates.md +37 -0
  70. package/template/product-specs/templates/domain/api-contracts.md +29 -0
  71. package/template/product-specs/templates/domain/business-rules.md +30 -0
  72. package/template/product-specs/templates/domain/changelog.md +25 -0
  73. package/template/product-specs/templates/domain/data-model.md +34 -0
  74. package/template/product-specs/templates/domain/events.md +24 -0
  75. package/template/product-specs/templates/domain/integrations.md +27 -0
  76. package/template/product-specs/templates/domain/invariants.md +14 -0
  77. package/template/product-specs/templates/domain/links.yaml +20 -0
  78. package/template/product-specs/templates/domain/operational-sla.md +32 -0
  79. package/template/product-specs/templates/domain/ownership.md +13 -0
  80. package/template/product-specs/templates/domain/scenarios.md +65 -0
  81. package/template/product-specs/templates/domain/surfaces.md +51 -0
  82. package/template/product-specs/templates/domain/ubiquitous-language.md +12 -0
  83. package/template/product-specs/templates/meta/capability-map.md +55 -0
  84. package/template/product-specs/templates/meta/doc-schema.md +134 -0
  85. package/template/product-specs/templates/meta/domain-map.md +67 -0
  86. package/template/product-specs/templates/meta/glossary.md +30 -0
  87. package/template/product-specs/templates/meta/onboarding.md +108 -0
  88. package/template/product-specs/templates/state.md +19 -0
  89. package/template/product-specs/workflows/conflict-resolution.md +10 -0
  90. package/template/product-specs/workflows/domain-update.md +15 -0
  91. package/template/product-specs/workflows/map-codebase.md +17 -0
  92. package/template/product-specs/workflows/onboard-project.md +575 -0
  93. package/template/product-specs/workflows/pipeline-full.md +258 -0
  94. package/template/product-specs/workflows/pipeline-resume.md +21 -0
  95. package/template/product-specs/workflows/verify-change.md +12 -0
@@ -0,0 +1,575 @@
1
+ # Workflow: Onboard Project — Deep Codebase Analysis
2
+
3
+ Архитектор-консультант переводит существующий проект на documentation-first фреймворк. Работает с кодовыми базами ЛЮБОГО размера через стратегию "scan → chunk → analyze → synthesize".
4
+
5
+ ## Input
6
+ Путь к проекту и режим работы: $ARGUMENTS
7
+
8
+ ### Режимы работы
9
+ Определи режим из аргументов:
10
+ - **Interactive (по умолчанию):** $ARGUMENTS = путь к проекту. Между фазами делай СТОП и жди подтверждения.
11
+ - **Autonomous (ночной):** $ARGUMENTS содержит `--auto` или `--autonomous`. Между фазами НЕ останавливайся, принимай решения самостоятельно используя best practices. Логируй все решения в `product-specs/docs/_onboard/synthesis/decisions-log.md`.
12
+
13
+ В автономном режиме:
14
+ 1. НЕ задавай вопросов пользователю — решай сам
15
+ 2. Все решения записывай в decisions-log.md с обоснованием
16
+ 3. Зоны разбивай по принципу "лучше больше мелких чем мало крупных"
17
+ 4. Домены создавай все найденные с confidence >= Medium
18
+ 5. Если что-то непонятно — записывай в Notes & uncertainties, не блокируй процесс
19
+ 6. Обновляй progress.md после КАЖДОГО шага
20
+
21
+ ## Agents used
22
+ - **studio-codebase-mapper** — анализирует отдельные зоны кодовой базы (Phase 2)
23
+ - **studio-domain-extractor** — создаёт domain docs из промежуточных данных (Phase 4)
24
+
25
+ ## Ключевой принцип: промежуточное хранилище
26
+
27
+ Контекстное окно ограничено. Поэтому:
28
+ 1. **Никогда** не пытайся прочитать весь проект за раз
29
+ 2. Все находки записываются в `product-specs/docs/_onboard/` — это рабочая директория онбординга
30
+ 3. Каждая зона анализируется отдельным sub-agent (studio-codebase-mapper)
31
+ 4. Синтез происходит из файлов в `_onboard/`, а не из кода напрямую
32
+ 5. После завершения `_onboard/` остаётся как артефакт (можно удалить позже)
33
+
34
+ ```
35
+ docs/_onboard/
36
+ ├── 00-codebase-map.md → структура + стек + статистика
37
+ ├── 01-zones.md → карта зон для анализа
38
+ ├── zones/ → промежуточные находки по зонам
39
+ │ ├── zone-auth.md
40
+ │ ├── zone-api.md
41
+ │ ├── zone-models.md
42
+ │ └── ...
43
+ ├── 02-domain-hypotheses.md → гипотезы доменов (синтез из зон)
44
+ ├── 03-entity-registry.md → все найденные сущности
45
+ ├── 04-event-registry.md → все найденные события
46
+ ├── 05-api-surface.md → все найденные API endpoints
47
+ ├── 06-integration-map.md → внешние зависимости и интеграции
48
+ ├── 07-context-stack.md → стек и архитектурные паттерны
49
+ └── synthesis/ → финальный синтез
50
+ ├── domain-plan.md → план доменов (утверждённый пользователем)
51
+ ├── decisions-log.md → решения (автономный режим)
52
+ └── progress.md → прогресс онбординга
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Phase 0: Bootstrap
58
+
59
+ ### Step 0.1: Создай рабочую директорию
60
+ ```bash
61
+ mkdir -p product-specs/docs/_onboard/zones product-specs/docs/_onboard/synthesis
62
+ ```
63
+
64
+ ### Step 0.2: Создай decisions log (для автономного режима)
65
+ Если режим autonomous — создай `product-specs/docs/_onboard/synthesis/decisions-log.md`:
66
+ ```markdown
67
+ # Autonomous Decisions Log
68
+
69
+ Все решения, принятые автоматически в ночном режиме.
70
+
71
+ | # | Phase | Decision | Rationale | Confidence |
72
+ |---|-------|----------|-----------|------------|
73
+ ```
74
+
75
+ ### Step 0.3: Создай progress tracker
76
+ Запиши в `product-specs/docs/_onboard/synthesis/progress.md`:
77
+ ```markdown
78
+ # Onboarding Progress
79
+
80
+ ## Status: Phase 0 — Bootstrap
81
+ ## Project: $ARGUMENTS
82
+ ## Started: [date]
83
+
84
+ ### Phases
85
+ - [x] Phase 0: Bootstrap
86
+ - [ ] Phase 1: Codebase Map
87
+ - [ ] Phase 2: Zone Analysis
88
+ - [ ] Phase 3: Synthesis
89
+ - [ ] Phase 4: Domain Creation
90
+ - [ ] Phase 5: Contexts & PRDCTs
91
+ - [ ] Phase 6: Validation
92
+
93
+ ### Zone Analysis Progress
94
+ | Zone | Status | Findings file |
95
+ |------|--------|---------------|
96
+ ```
97
+
98
+ Этот файл обновляется после каждого шага. Если сессия прервётся — следующая сессия читает progress.md и продолжает с места остановки.
99
+
100
+ ---
101
+
102
+ ## Phase 1: Codebase Map (высокоуровневый обзор)
103
+
104
+ Цель: понять размер, стек, и определить зоны для глубокого анализа. НЕ читай содержимое файлов — только структуру.
105
+
106
+ ### Step 1.1: Статистика проекта
107
+ ```bash
108
+ # Размер проекта
109
+ find $ARGUMENTS -type f -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" -o -name "*.py" -o -name "*.go" -o -name "*.rs" -o -name "*.java" | grep -v node_modules | grep -v .git | grep -v dist | grep -v build | wc -l
110
+
111
+ # Строки кода по типам файлов
112
+ find $ARGUMENTS -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.py" -o -name "*.go" \) | grep -v node_modules | grep -v .git | xargs wc -l 2>/dev/null | tail -1
113
+
114
+ # Структура верхнего уровня
115
+ find $ARGUMENTS -maxdepth 2 -type d | grep -v node_modules | grep -v .git | grep -v dist | sort
116
+ ```
117
+
118
+ ### Step 1.2: Определи стек
119
+ Прочитай ТОЛЬКО конфиг-файлы (они маленькие):
120
+ - `package.json` (только dependencies секцию)
121
+ - `docker-compose.yml`
122
+ - `.env.example`
123
+ - `tsconfig.json` / `go.mod` / `requirements.txt`
124
+ - CI config (`.github/workflows/`, `.gitlab-ci.yml`)
125
+
126
+ ### Step 1.3: Определи зоны
127
+ Раздели кодовую базу на **зоны** — логически изолированные части для анализа. Каждая зона должна помещаться в контекст одного sub-agent (~500 файлов max).
128
+
129
+ Стратегия разбиения (в порядке приоритета):
130
+ 1. **По сервисам** (если monorepo/microservices): каждый сервис = зона
131
+ 2. **По модулям/features** (если modular monolith): каждый модуль = зона
132
+ 3. **По слоям** (если layered): models, controllers, services, utils = отдельные зоны
133
+ 4. **По размеру** (fallback): группы по ~200-300 файлов
134
+
135
+ Для КАЖДОЙ зоны определи:
136
+ - Имя (kebab-case)
137
+ - Путь(и) в проекте
138
+ - Примерное количество файлов
139
+ - Что искать (модели? API? события? UI?)
140
+
141
+ ### Step 1.4: Запиши Codebase Map
142
+ Запиши в `product-specs/docs/_onboard/00-codebase-map.md`:
143
+ ```markdown
144
+ # Codebase Map
145
+
146
+ ## Project: [name]
147
+ ## Date: [date]
148
+
149
+ ## Stats
150
+ - Total source files: [N]
151
+ - Total LOC: [N]
152
+ - Languages: [list]
153
+
154
+ ## Stack
155
+ - Language: [X]
156
+ - Backend framework: [X]
157
+ - Frontend framework: [X]
158
+ - Database: [X]
159
+ - ORM: [X]
160
+ - Message broker: [X]
161
+ - Cache: [X]
162
+ - CI/CD: [X]
163
+
164
+ ## Directory Structure
165
+ [tree вывод]
166
+
167
+ ## Infrastructure
168
+ [из docker-compose, env, CI]
169
+ ```
170
+
171
+ ### Step 1.5: Запиши карту зон
172
+ Запиши в `product-specs/docs/_onboard/01-zones.md`:
173
+ ```markdown
174
+ # Zone Map
175
+
176
+ ## Zones for analysis
177
+
178
+ | # | Zone | Path(s) | Files (~) | Focus |
179
+ |---|------|---------|-----------|-------|
180
+ | 1 | zone-models | src/models/, src/entities/ | ~50 | Entities, schemas, types |
181
+ | 2 | zone-api | src/controllers/, src/routes/ | ~80 | API endpoints, validation |
182
+ | ... | ... | ... | ... | ... |
183
+
184
+ ## Analysis order
185
+ 1. zone-models (фундамент: сущности)
186
+ 2. zone-api (API surface)
187
+ 3. zone-services (бизнес-логика)
188
+ 4. zone-events (события, async)
189
+ 5. zone-frontend (UI, если есть)
190
+ ```
191
+
192
+ **Interactive:** СТОП. Покажи пользователю codebase map и карту зон. Спроси:
193
+ 1. "Правильно ли я разбил проект? Нужно ли добавить/убрать/объединить зоны?"
194
+ 2. "Есть ли зоны которые можно пропустить?"
195
+
196
+ **Autonomous:** Не останавливайся. Запиши в decisions-log: "Определил N зон, разбивка по [стратегия]. Confidence: [X]." Продолжай.
197
+
198
+ Обнови progress.md: Phase 1 done.
199
+
200
+ ---
201
+
202
+ ## Phase 2: Zone Analysis (глубокое чтение кода по частям)
203
+
204
+ Цель: прочитать ВСЮ кодовую базу по зонам, извлечь знания, записать в промежуточные файлы.
205
+
206
+ ### Для КАЖДОЙ зоны выполни:
207
+
208
+ #### Step 2.1: Запусти studio-codebase-mapper agent для зоны
209
+ Для каждой зоны запускай отдельный studio-codebase-mapper agent. Передай агенту:
210
+ - Имя зоны
211
+ - Путь(и) зоны
212
+ - Фокус анализа
213
+ - Релевантный контекст из product-specs/docs/_onboard/00-codebase-map.md
214
+
215
+ Agent должен:
216
+ 1. Прочитать ВСЕ файлы в указанных путях (используя Glob + Read)
217
+ 2. Найти и записать:
218
+
219
+ **Entities/Models:**
220
+ - Имя, поля, типы
221
+ - Relations (FK, references)
222
+ - Enums/статусы (кандидаты в state machines)
223
+ - Constraints/validation
224
+
225
+ **Business Rules:**
226
+ - Валидации (что проверяется, когда)
227
+ - Guards/middleware (кто имеет доступ)
228
+ - Условная логика (if/switch по бизнес-состояниям)
229
+
230
+ **Events:**
231
+ - Event names, producers, consumers
232
+ - Payload structure
233
+ - Async vs sync
234
+
235
+ **API Endpoints:**
236
+ - Method, path, handler
237
+ - Request/response types
238
+ - Auth requirements
239
+ - Error codes
240
+
241
+ **Dependencies:**
242
+ - Imports из ДРУГИХ зон (потенциальные интеграции между доменами)
243
+ - Внешние API calls
244
+ - Database queries (какие таблицы читает/пишет)
245
+
246
+ **Patterns:**
247
+ - Repository/Service/Controller
248
+ - Event sourcing / CQRS
249
+ - State machines
250
+ - Saga/orchestration patterns
251
+
252
+ Результат записывается в `product-specs/docs/_onboard/zones/[zone-name].md`.
253
+
254
+ #### Step 2.2: Проверь результат
255
+ После завершения studio-codebase-mapper:
256
+ 1. Прочитай `product-specs/docs/_onboard/zones/[zone-name].md`
257
+ 2. Проверь что файл не пустой и содержит конкретные находки
258
+ 3. Если зона оказалась слишком большой (agent не прочитал всё):
259
+ - Раздели зону на подзоны
260
+ - Добавь подзоны в `01-zones.md`
261
+ - Запусти studio-codebase-mapper для каждой подзоны
262
+
263
+ #### Step 2.3: Обнови прогресс
264
+ После каждой зоны обнови `product-specs/docs/_onboard/synthesis/progress.md` — отметь зону как done.
265
+
266
+ ### Параллельный запуск
267
+ Если зоны независимы — запускай до 3 studio-codebase-mapper agents параллельно для ускорения. Зависимые зоны (zone-services зависит от zone-models) — последовательно.
268
+
269
+ ### Шаблон zone файла
270
+
271
+ Каждый `product-specs/docs/_onboard/zones/zone-*.md` должен следовать структуре:
272
+
273
+ ```markdown
274
+ # Zone: [name]
275
+ ## Path(s): [paths]
276
+ ## Analyzed: [date]
277
+ ## Files read: [count]
278
+
279
+ ## Entities found
280
+ | Entity | File | Fields | Relations | Status enum |
281
+ |--------|------|--------|-----------|-------------|
282
+
283
+ ## Business rules found
284
+ | Rule | File:Line | Description | Validation type |
285
+ |------|-----------|-------------|-----------------|
286
+
287
+ ## Events found
288
+ | Event | Producer file | Consumer file(s) | Payload | Sync/Async |
289
+ |-------|--------------|-------------------|---------|------------|
290
+
291
+ ## API endpoints found
292
+ | Method | Path | Handler file | Auth | Request type | Response type |
293
+ |--------|------|-------------|------|-------------|---------------|
294
+
295
+ ## Cross-zone dependencies
296
+ | This zone imports | From zone | Type (model/service/util) |
297
+ |-------------------|-----------|--------------------------|
298
+
299
+ ## Patterns observed
300
+ - [pattern]: [where and how used]
301
+
302
+ ## Domain hypotheses
303
+ Из анализа этой зоны, эти файлы могут принадлежать доменам:
304
+ | File/Entity | Hypothesized domain | Confidence | Evidence |
305
+ |-------------|-------------------|------------|----------|
306
+
307
+ ## Notes & uncertainties
308
+ - [что не удалось понять, что требует уточнения у человека]
309
+ ```
310
+
311
+ **Interactive:** СТОП после всех зон. Покажи сводку: сколько зон проанализировано, сколько entities/events/endpoints найдено суммарно. Спроси есть ли пропущенные зоны.
312
+
313
+ **Autonomous:** Запиши сводку в progress.md и продолжай к Phase 3.
314
+
315
+ ---
316
+
317
+ ## Phase 3: Synthesis (агрегация из зон в единую картину)
318
+
319
+ Цель: прочитать ВСЕ zone-файлы (НЕ код!) и собрать единую картину.
320
+
321
+ ### Step 3.1: Собери реестр сущностей
322
+ Прочитай ВСЕ `product-specs/docs/_onboard/zones/zone-*.md`. Извлеки все entities. Запиши в `product-specs/docs/_onboard/03-entity-registry.md`:
323
+ ```markdown
324
+ # Entity Registry
325
+ | Entity | Source zone | File | Fields count | Relations | Status enum | Hypothesized domain |
326
+ ```
327
+ Дедупликация: если одна сущность встречается в нескольких зонах — объединяй, отмечай "shared".
328
+
329
+ ### Step 3.2: Собери реестр событий
330
+ Из всех zone-файлов. Запиши в `product-specs/docs/_onboard/04-event-registry.md`:
331
+ ```markdown
332
+ # Event Registry
333
+ | Event | Producer zone | Consumer zone(s) | Payload | Domain boundary? |
334
+ ```
335
+ Пометь события между зонами как "domain boundary candidates" — они указывают на границы доменов.
336
+
337
+ ### Step 3.3: Собери API surface
338
+ Из всех zone-файлов. Запиши в `product-specs/docs/_onboard/05-api-surface.md`:
339
+ ```markdown
340
+ # API Surface
341
+ | Method | Path | Zone | Auth | Domain? |
342
+ ```
343
+
344
+ ### Step 3.4: Собери карту интеграций
345
+ Из cross-zone dependencies всех зон. Запиши в `product-specs/docs/_onboard/06-integration-map.md`:
346
+ ```markdown
347
+ # Integration Map
348
+
349
+ ## Internal dependencies (between zones)
350
+ | From | To | Type | Indicates |
351
+ ```
352
+ Нарисуй Mermaid graph зависимостей между зонами.
353
+
354
+ ### Step 3.5: Определи стек и паттерны
355
+ Из patterns всех зон. Запиши в `product-specs/docs/_onboard/07-context-stack.md`:
356
+ ```markdown
357
+ # Stack & Architecture Patterns
358
+ ## Observed patterns
359
+ ## Frameworks & libraries used
360
+ ## Testing infrastructure
361
+ ## CI/CD pipeline
362
+ ```
363
+
364
+ ### Step 3.6: Сформулируй гипотезы доменов
365
+ Это ключевой шаг. На основе:
366
+ - Entity registry (группировка сущностей)
367
+ - Event registry (boundaries = events между зонами)
368
+ - Integration map (слабо связанные кластеры)
369
+ - Domain hypotheses из каждой зоны
370
+
371
+ Запиши в `product-specs/docs/_onboard/02-domain-hypotheses.md`:
372
+ ```markdown
373
+ # Domain Hypotheses
374
+
375
+ ## Methodology
376
+ Домены определены на основе:
377
+ 1. Кластеризации сущностей по связям
378
+ 2. Границ событий (events между зонами)
379
+ 3. API namespace groups
380
+ 4. Cross-zone dependency analysis
381
+
382
+ ## Hypothesized domains
383
+
384
+ ### Domain: [name]
385
+ - **Responsibility:** что делает этот домен
386
+ - **Core entities:** [list] (из entity registry)
387
+ - **Events produced:** [list] (из event registry)
388
+ - **Events consumed:** [list]
389
+ - **API endpoints:** [list] (из API surface)
390
+ - **Source zones:** [list] — из каких зон собран
391
+ - **Source files:** [key files]
392
+ - **Confidence:** High / Medium / Low
393
+ - **Evidence:** [почему считаем это отдельным доменом]
394
+ - **Open questions:** [что непонятно]
395
+
396
+ ### Domain: [name]
397
+ ...
398
+
399
+ ## Domain relationship diagram
400
+ [Mermaid graph: домены, стрелки = events/dependencies]
401
+
402
+ ## Entities not assigned to any domain
403
+ | Entity | Source | Reason |
404
+ ```
405
+
406
+ **Interactive:** СТОП. Покажи пользователю гипотезы доменов с evidence, diagram, не-распределённые entities. Спроси:
407
+ - "Правильно ли определены домены?"
408
+ - "Какие 3-5 создать первыми?"
409
+ - "Есть ли implicit домены которых нет в коде?"
410
+
411
+ **Autonomous:** Создай все домены с confidence >= Medium. Запиши в decisions-log: какие домены создаёшь и почему, какие пропустил (Low confidence). Приоритет: домены с наибольшим количеством entities.
412
+
413
+ Запиши подтверждённый/автоматический план в `product-specs/docs/_onboard/synthesis/domain-plan.md`.
414
+
415
+ ---
416
+
417
+ ## Phase 4: Domain Creation (из промежуточных файлов, не из кода)
418
+
419
+ Цель: создать domain docs из entity/event/api registries + zone files.
420
+
421
+ ### Для КАЖДОГО подтверждённого домена:
422
+
423
+ #### Step 4.1: Собери контекст
424
+ Прочитай ТОЛЬКО:
425
+ - `product-specs/docs/_onboard/synthesis/domain-plan.md` (какие entities/events в этом домене)
426
+ - Конкретные zone-файлы указанные в "Source zones"
427
+ - Entity registry (строки для этого домена)
428
+ - Event registry (строки для этого домена)
429
+
430
+ НЕ читай код напрямую — все знания уже в zone-файлах.
431
+
432
+ #### Step 4.2: Создай домен через studio-domain-extractor
433
+ Запусти studio-domain-extractor agent для каждого домена. Agent получает:
434
+ - Имя домена и responsibility из domain-plan.md
435
+ - Релевантные zone-файлы
436
+ - Entity registry (строки для этого домена)
437
+ - Event registry (строки для этого домена)
438
+
439
+ Agent создаёт полную структуру домена в `product-specs/docs/domains/[name]/`:
440
+ 1. Копирует шаблоны: `cp product-specs/docs/domains/_template/* product-specs/docs/domains/[name]/`
441
+ 2. Заполняет каждый файл из промежуточных данных:
442
+ - README.md — из domain hypothesis description
443
+ - ubiquitous-language.md — из entity names, field names, event names
444
+ - aggregates.md — из entities + relations + status enums → state machine
445
+ - business-rules.md — из business rules в zone-файлах
446
+ - events.md — из event registry
447
+ - invariants.md — из validation rules + DB constraints в zone-файлах
448
+ - integrations.md — из cross-zone dependencies + API endpoints
449
+ - ownership.md — оставь TBD, спросить пользователя
450
+
451
+ Правила:
452
+ - Заголовки на English, содержимое на Russian
453
+ - YAML frontmatter обязателен
454
+ - Используй Mermaid для state machines и ER diagrams
455
+ - НЕ копируй код — описывай бизнес-логику своими словами
456
+ - Domain docs содержат ТОЛЬКО бизнес-знание, НЕ реализацию
457
+
458
+ #### Step 4.3: Обнови meta-документы
459
+ После создания всех доменов:
460
+ 1. Обнови `product-specs/docs/_meta/domain-map.md` — добавь все новые домены и связи
461
+ 2. Обнови `product-specs/docs/_meta/capability-map.md`
462
+ 3. Обнови `product-specs/docs/_meta/glossary.md`
463
+
464
+ **Interactive:** СТОП. Покажи созданные домены, количество файлов, completeness. Спроси подтверждение.
465
+
466
+ **Autonomous:** Запиши в decisions-log: "[N] доменов создано, completeness [X]%". Продолжай.
467
+
468
+ ---
469
+
470
+ ## Phase 5: Contexts & Baseline PRDCTs
471
+
472
+ ### Step 5.1: Заполни контексты
473
+ Прочитай `product-specs/docs/_onboard/07-context-stack.md` и заполни `product-specs/docs/contexts/`:
474
+
475
+ **Backend:** architecture.md, service-map.md, data-ownership.md, async-flows.md, integration-patterns.md
476
+ **Frontend:** architecture.md, routing.md, state-management.md, permissions-model.md
477
+ **QA:** test-strategy.md, quality-gates.md
478
+ **Analytics:** event-taxonomy.md
479
+
480
+ Заполняй ТОЛЬКО из промежуточных файлов `_onboard/`. НЕ заполняй файл если данных нет.
481
+
482
+ ### Step 5.2: Создай ретроспективные PRDCT
483
+ Для топ 3-5 ключевых фич (определяются из крупнейших entity clusters):
484
+
485
+ 1. Определи PRDCT-ID
486
+ 2. Создай облегчённый change package:
487
+ - `metadata.yaml` — status: done, retroactive: true
488
+ - `change-draft.md` — что и зачем
489
+ - `01-discovery.md` — актёры, основной сценарий
490
+ - `02-product-spec.md` — AC (фактическое поведение)
491
+ - `03-domain-impact.md` — затронутые домены
492
+ - `index.md`, `release-notes.md`
493
+ 3. 04-08 НЕ заполняй — избыточно для ретроспективных PRDCT
494
+
495
+ > [!warning] Лимит: максимум 5 ретроспективных PRDCT
496
+
497
+ ---
498
+
499
+ ## Phase 6: Validation
500
+
501
+ ### Step 6.1: Проверь домены
502
+ Для каждого домена:
503
+ - [ ] Все 8 файлов существуют и не placeholder
504
+ - [ ] ubiquitous-language не конфликтует между доменами
505
+ - [ ] invariants корректны
506
+ - [ ] events имеют producer И consumers
507
+
508
+ ### Step 6.2: Проверь целостность
509
+ - [ ] Все entities из registry распределены по доменам
510
+ - [ ] Все events из registry описаны в domain events
511
+ - [ ] API surface покрыт доменами
512
+
513
+ ### Step 6.3: Итоговый отчёт
514
+
515
+ ```markdown
516
+ ## Onboarding Report
517
+
518
+ ### Project: [name]
519
+ ### Duration: [phases completed]
520
+
521
+ ### Codebase analyzed
522
+ - Files scanned: [N]
523
+ - Zones analyzed: [N]
524
+ - LOC processed: [N]
525
+
526
+ ### Domains created
527
+ | Domain | Entities | Events | Invariants | Completeness |
528
+ |--------|----------|--------|------------|-------------|
529
+
530
+ ### Contexts filled
531
+ | Context | Files filled | Files skipped |
532
+
533
+ ### Retrospective PRDCTs
534
+ | PRDCT | Title | Domains |
535
+
536
+ ### Knowledge captured
537
+ - Entities documented: [N]
538
+ - Events documented: [N]
539
+ - Business rules extracted: [N]
540
+ - API endpoints mapped: [N]
541
+
542
+ ### Known gaps
543
+ - [что НЕ удалось извлечь из кода]
544
+ - [что требует уточнения с людьми]
545
+
546
+ ### Recommended next steps
547
+ 1. Проверить ubiquitous language с domain experts
548
+ 2. Дополнить business rules которые в головах (не в коде)
549
+ 3. Создать ADR для ключевых архитектурных решений
550
+ 4. `/review PRDCT-XXXX` для каждого ретроспективного PRDCT
551
+ 5. Удалить `product-specs/docs/_onboard/` когда больше не нужен
552
+ ```
553
+
554
+ ---
555
+
556
+ ## Resume protocol
557
+
558
+ Если сессия прервалась:
559
+
560
+ 1. Прочитай `product-specs/docs/_onboard/synthesis/progress.md`
561
+ 2. Определи текущую фазу и шаг
562
+ 3. Прочитай готовые промежуточные файлы
563
+ 4. Продолжи с точки остановки
564
+
565
+ Для пользователя: "Я вижу что онбординг начат ранее. Фаза [X] завершена, зоны [list] проанализированы. Продолжаю с [следующий шаг]."
566
+
567
+ ---
568
+
569
+ ## Tone
570
+ Методичный архитектор-консультант:
571
+ - Никогда не торопится
572
+ - Предпочитает записать находку в файл, чем держать в голове
573
+ - Показывает промежуточные результаты и ждёт подтверждения
574
+ - Честно говорит "этой зоны не хватило, нужна ещё одна итерация"
575
+ - Рекурсивно дробит то что не помещается в контекст