@dzhechkov/keysarium 1.2.0 → 1.3.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.
@@ -0,0 +1,750 @@
1
+ # Архитектура @dzhechkov/skills-feature-adr
2
+
3
+ > Адаптивный 9-шаговый pipeline для разработки фич любой сложности --
4
+ > от однофайлового багфикса до кросс-доменного рефакторинга на 30+ файлов.
5
+
6
+ ---
7
+
8
+ ## 1. Обзор
9
+
10
+ `@dzhechkov/skills-feature-adr` -- пакет навыков (skill pack) для Claude Code, реализующий полный цикл разработки фич с адаптивной глубиной проработки.
11
+
12
+ Ключевые характеристики:
13
+
14
+ - **9-шаговый pipeline** с автоматическим определением сложности через Complexity Router (S/M/L/XL)
15
+ - **ADR-driven архитектура** -- каждое значимое решение документируется через Architecture Decision Records с альтернативами и decision matrix
16
+ - **DDD-моделирование** -- bounded contexts, ubiquitous language и агрегаты для сложных фич (L/XL)
17
+ - **Мульти-агентная QE** -- параллельные review-агенты для XL-фич (correctness, security, architecture)
18
+ - **DAG-based выполнение** -- шаги могут выполняться параллельно, когда зависимости позволяют
19
+ - **Standalone или экосистема** -- работает автономно через `npx` или как часть Keysarium
20
+
21
+ ```
22
+ @dzhechkov/keysarium-core (shared framework)
23
+ ^ ^ ^
24
+ | | |
25
+ peerDep peerDep peerDep
26
+ | | |
27
+ @dzhechkov/keysarium | skills-feature-adr | skills-bto
28
+ (исследования) | (фичи) | (оценка)
29
+ ```
30
+
31
+ ---
32
+
33
+ ## 2. Философия проектирования
34
+
35
+ ### 2.1 Адаптивная сложность
36
+
37
+ Центральный принцип: **не over-engineer маленькие фичи и не under-engineer большие**.
38
+
39
+ Однофайловый багфикс не требует ADR, DDD-модели и C4-диаграмм. Кросс-доменный рефакторинг на 30+ файлов без них обречён на хаос. Complexity Router анализирует фичу по 6 измерениям и автоматически активирует ровно те шаги pipeline, которые необходимы.
40
+
41
+ ### 2.2 ADR-first
42
+
43
+ Любое нетривиальное архитектурное решение (выбор технологии, паттерна, стратегии интеграции) документируется до начала кодирования. Каждый ADR содержит:
44
+
45
+ - Контекст и драйверы решения
46
+ - Минимум 2 альтернативы
47
+ - Decision matrix с взвешенными критериями
48
+ - Последствия (positive, negative, risks)
49
+
50
+ Это исключает "случайную архитектуру" и обеспечивает traceability от требований до кода.
51
+
52
+ ### 2.3 DAG-based выполнение
53
+
54
+ Шаги pipeline -- не строго линейная последовательность. Для L/XL-фич шаги 2+3 и 4+5 могут выполняться параллельно, что сокращает время проработки. Для S/M-фич DAG коллапсирует в линейную последовательность -- параллелизм не нужен.
55
+
56
+ ### 2.4 Модульная композиция скиллов
57
+
58
+ Pipeline переиспользует существующие скиллы экосистемы:
59
+
60
+ | Скилл | Где используется | Назначение |
61
+ |-------|-----------------|-----------|
62
+ | `explore` | Step 1 | Кларификация требований через адаптивные вопросы |
63
+ | `problem-solver-enhanced` | Step 3 | TRIZ-анализ для сложных trade-off в ADR |
64
+ | `frontend-design` | Step 7 | UI-реализация (если фича затрагивает интерфейс) |
65
+
66
+ Это даёт единообразие подходов и накопление экспертизы в одном месте.
67
+
68
+ ---
69
+
70
+ ## 3. Pipeline архитектура -- 9 шагов
71
+
72
+ ### Step 0: Complexity Router
73
+
74
+ | Параметр | Значение |
75
+ |----------|---------|
76
+ | Модель | haiku |
77
+ | Время | ~30 секунд |
78
+ | Тиры | Все (всегда выполняется) |
79
+ | Артефакт | `00_complexity_assessment.md` |
80
+ | Promise | `FEATURE_ADR_ROUTED` |
81
+
82
+ Оценивает фичу по 6 измерениям (1-4 балла каждое), суммирует баллы и классифицирует: S (6-8), M (9-13), L (14-19), XL (20-24). Применяет override-правила (любое измерение = 4 -> минимум L, breaking changes > 0 -> минимум M). Определяет `{ACTIVE_STEPS}` и `{TIME_BUDGET}`.
83
+
84
+ ### Step 1: Requirements
85
+
86
+ | Параметр | Значение |
87
+ |----------|---------|
88
+ | Модель | sonnet |
89
+ | Тиры | Все (light для S) |
90
+ | Артефакт | `01_requirements.md` |
91
+ | Promise | `FEATURE_ADR_REQUIREMENTS_GATHERED` |
92
+
93
+ Собирает стейкхолдеров, функциональные требования (FR) с acceptance criteria, нефункциональные требования (NFR), ограничения и scope. Для S-тира -- 3-5 bullet points без формального документа. Загружает скилл `explore` для кларификации неясных аспектов.
94
+
95
+ ### Step 2: Research
96
+
97
+ | Параметр | Значение |
98
+ |----------|---------|
99
+ | Модель | sonnet |
100
+ | Тиры | L/XL |
101
+ | Агенты | 2 параллельных (codebase patterns / external patterns) |
102
+ | Артефакт | `02_research.md` |
103
+ | Promise | (входит в `FEATURE_ADR_DESIGNED`) |
104
+
105
+ Два параллельных sonnet-агента: первый анализирует паттерны в существующей кодовой базе (аналогичные модули, соглашения, структуры); второй исследует внешние аналоги и best practices. Результаты синтезируются оркестратором.
106
+
107
+ ### Step 3: ADR (Architecture Decision Records)
108
+
109
+ | Параметр | Значение |
110
+ |----------|---------|
111
+ | Модель | opus |
112
+ | Тиры | M+ (1 ADR для M, N ADR для L/XL) |
113
+ | Артефакт | `03_adr/001-{decision}.md` |
114
+ | Promise | (входит в `FEATURE_ADR_DESIGNED`) |
115
+
116
+ Идентифицирует decision points в требованиях (выбор технологии, паттерна, стратегии интеграции, моделирования данных). Для каждого решения создаёт ADR по шаблону из `references/adr-template.md` с decision matrix. Может загружать `problem-solver-enhanced` для TRIZ-анализа сложных trade-off. Для L/XL запускается **параллельно** с Step 2.
117
+
118
+ ### Step 4: DDD (Domain-Driven Design)
119
+
120
+ | Параметр | Значение |
121
+ |----------|---------|
122
+ | Модель | opus |
123
+ | Тиры | L/XL |
124
+ | Артефакт | `04_domain_model.md`, `diagrams/domain-model.mermaid` |
125
+ | Promise | (входит в `FEATURE_ADR_DESIGNED`) |
126
+
127
+ Идентифицирует bounded contexts, определяет ubiquitous language, моделирует агрегаты, сущности, value objects и domain events. Строит context map с типизированными связями (Shared Kernel, Customer-Supplier, Anti-Corruption Layer). Валидирует совместимость с существующей кодовой базой. Может выполняться **параллельно** с Step 5.
128
+
129
+ ### Step 5: Architecture
130
+
131
+ | Параметр | Значение |
132
+ |----------|---------|
133
+ | Модель | opus |
134
+ | Тиры | M+ (light для M) |
135
+ | Артефакт | `05_architecture.md`, `diagrams/architecture-c4.mermaid`, `diagrams/sequence-*.mermaid` |
136
+ | Promise | `FEATURE_ADR_DESIGNED` |
137
+
138
+ Для M-тира: только component diagram. Для L/XL: полная C4-иерархия (System Context -> Container -> Component) + sequence diagrams для основных потоков (happy path, error path, async). Включает дизайн API (если применимо), описание миграций данных и стратегию кэширования.
139
+
140
+ ### Step 6: Implementation Plan
141
+
142
+ | Параметр | Значение |
143
+ |----------|---------|
144
+ | Модель | sonnet |
145
+ | Тиры | Все (inline для S) |
146
+ | Артефакт | `06_implementation_plan.md` |
147
+ | Promise | `FEATURE_ADR_PLANNED` |
148
+
149
+ Декомпозиция реализации на задачи с dependency DAG. Определяет порядок выполнения, точки параллелизации (для Step 7), оценки трудоёмкости. Для S-тира -- inline-список в разговоре без отдельного файла.
150
+
151
+ ### Step 7: Code
152
+
153
+ | Параметр | Значение |
154
+ |----------|---------|
155
+ | Модель | opus |
156
+ | Тиры | Все |
157
+ | Агенты | N параллельных для L/XL (по одному на модуль) |
158
+ | Артефакт | `07_code_changes/change_manifest.md` + реальные изменения в коде |
159
+ | Promise | `FEATURE_ADR_IMPLEMENTED` |
160
+
161
+ Для S/M: последовательная реализация задач. Для L/XL: параллельные opus-агенты, каждый работает над независимым модулем/доменом. Pre-implementation checklist обеспечивает соответствие конвенциям кодовой базы. Каждый агент отчитывается по created/modified/deleted файлам. Оркестратор верифицирует интеграционные точки между модулями.
162
+
163
+ ### Step 8: QE (Quality Engineering)
164
+
165
+ | Параметр | Значение |
166
+ |----------|---------|
167
+ | Модель | sonnet |
168
+ | Тиры | Все (адаптивная глубина) |
169
+ | Агенты | 3 параллельных для XL (review panel) |
170
+ | Артефакт | `08_qe_report.md` |
171
+ | Promise | `FEATURE_ADR_VERIFIED` |
172
+
173
+ Многоуровневое тестирование с адаптивной глубиной:
174
+
175
+ | Тир | Smoke | Unit | Integration | E2E | Review Panel |
176
+ |-----|-------|------|-------------|-----|-------------|
177
+ | S | да | -- | -- | -- | -- |
178
+ | M | да | да | -- | -- | code review |
179
+ | L | да | да | да | -- | code review |
180
+ | XL | да | да | да | да | 3 агента (correctness + security + architecture) |
181
+
182
+ Для XL запускается мульти-агентная review panel из 3 параллельных sonnet-агентов, каждый фокусируется на своём аспекте: корректность (requirements coverage), безопасность (OWASP, auth, data exposure), архитектура (ADR adherence, pattern compliance).
183
+
184
+ ---
185
+
186
+ ## 4. Complexity Router
187
+
188
+ Complexity Router -- ключевой компонент адаптивности pipeline. Он определяет, сколько шагов нужно и какой глубины.
189
+
190
+ ### 4.1 Шесть измерений
191
+
192
+ Каждое измерение оценивается от 1 (минимальное влияние) до 4 (максимальное):
193
+
194
+ | Измерение | 1 (S) | 2 (M) | 3 (L) | 4 (XL) |
195
+ |-----------|-------|-------|-------|--------|
196
+ | Files Affected | 1-3 | 4-10 | 11-30 | 30+ |
197
+ | Domains Touched | 1 | 1-2 | 2-4 | 4+ |
198
+ | New Integrations | 0 | 0-1 | 1-3 | 3+ |
199
+ | Breaking Changes | 0 | 0 | 0-2 | 2+ |
200
+ | New Data Models | 0 | 0-1 | 1-3 | 3+ |
201
+ | Cross-Cutting Concerns | 0 | 0-1 | 1-2 | 3+ |
202
+
203
+ Cross-Cutting Concerns: auth, logging, caching, i18n, error handling, monitoring и т.д.
204
+
205
+ ### 4.2 Классификация по сумме баллов
206
+
207
+ | Сумма | Тир | Описание | Пример |
208
+ |-------|-----|----------|--------|
209
+ | 6-8 | **S** (Small) | Локальное изменение | Багфикс, config change, утилита |
210
+ | 9-13 | **M** (Medium) | Ограниченная фича | Новый API endpoint, UI-компонент |
211
+ | 14-19 | **L** (Large) | Мульти-доменная фича | Новый модуль, интеграция |
212
+ | 20-24 | **XL** (Extra Large) | Кросс-доменное изменение | Новая подсистема, major refactor |
213
+
214
+ ### 4.3 Override-правила
215
+
216
+ Правила переопределения предотвращают недооценку сложности:
217
+
218
+ 1. **Любое измерение = 4** -> минимальный тир L (даже если сумма < 14)
219
+ 2. **Breaking changes > 0** -> минимальный тир M
220
+ 3. **Пользователь явно указал тир** -> использовать указанный
221
+ 4. **Описание содержит "refactor", "migration", "redesign"** -> bias к L/XL
222
+
223
+ ### 4.4 Матрица активации шагов
224
+
225
+ ```
226
+ Step | S | M | L | XL |
227
+ ------------------------+---+---+---+----+
228
+ 0 Complexity Router | + | + | + | + |
229
+ 1 Requirements | ~ | + | + | + |
230
+ 2 Research | | | + | + |
231
+ 3 ADR | | + | + | + |
232
+ 4 DDD | | | + | + |
233
+ 5 Architecture | | ~ | + | + |
234
+ 6 Implementation Plan | ~ | + | + | + |
235
+ 7 Code | + | + | + | + |
236
+ 8 QE | ~ | + | + | + |
237
+
238
+ + = полный ~ = облегченный (пусто) = пропущен
239
+ ```
240
+
241
+ ### 4.5 Распределение time budget
242
+
243
+ | Тир | Общий бюджет | R (Requirements) | P (Planning: ADR+DDD+Arch) | I (Implementation) | Q (QE) |
244
+ |-----|-------------|------|------|------|------|
245
+ | S | 15 мин | 2 мин | 0 мин | 10 мин | 3 мин |
246
+ | M | 45 мин | 5 мин | 10 мин | 20 мин | 10 мин |
247
+ | L | 2 часа | 15 мин | 30 мин | 45 мин | 30 мин |
248
+ | XL | 4+ часа | 30 мин | 60 мин | 90 мин | 60 мин |
249
+
250
+ ---
251
+
252
+ ## 5. DAG выполнения
253
+
254
+ ### 5.1 Полный DAG (L/XL)
255
+
256
+ ```mermaid
257
+ graph TD
258
+ S0["Step 0<br/>Complexity Router<br/><i>haiku</i>"]
259
+ S1["Step 1<br/>Requirements<br/><i>sonnet</i>"]
260
+ S2["Step 2<br/>Research<br/><i>sonnet x2</i>"]
261
+ S3["Step 3<br/>ADR<br/><i>opus</i>"]
262
+ S4["Step 4<br/>DDD<br/><i>opus</i>"]
263
+ S5["Step 5<br/>Architecture<br/><i>opus</i>"]
264
+ S6["Step 6<br/>Impl Plan<br/><i>sonnet</i>"]
265
+ S7["Step 7<br/>Code<br/><i>opus xN</i>"]
266
+ S8["Step 8<br/>QE<br/><i>sonnet x3</i>"]
267
+
268
+ S0 --> S1
269
+ S1 --> S2
270
+ S1 --> S3
271
+ S2 --> S4
272
+ S3 --> S4
273
+ S2 --> S5
274
+ S3 --> S5
275
+ S4 --> S6
276
+ S5 --> S6
277
+ S6 --> S7
278
+ S7 --> S8
279
+
280
+ style S0 fill:#e8f5e9
281
+ style S1 fill:#e3f2fd
282
+ style S2 fill:#e3f2fd
283
+ style S3 fill:#fce4ec
284
+ style S4 fill:#fce4ec
285
+ style S5 fill:#fce4ec
286
+ style S6 fill:#e3f2fd
287
+ style S7 fill:#fce4ec
288
+ style S8 fill:#e3f2fd
289
+ ```
290
+
291
+ ### 5.2 DAG по тирам
292
+
293
+ **S (линейный):**
294
+
295
+ ```mermaid
296
+ graph LR
297
+ S0["Step 0"] --> S1["Step 1<br/><i>light</i>"]
298
+ S1 --> S6["Step 6<br/><i>inline</i>"]
299
+ S6 --> S7["Step 7"]
300
+ S7 --> S8["Step 8<br/><i>smoke</i>"]
301
+ ```
302
+
303
+ **M (линейный с ADR и архитектурой):**
304
+
305
+ ```mermaid
306
+ graph LR
307
+ S0["Step 0"] --> S1["Step 1"]
308
+ S1 --> S3["Step 3<br/><i>1 ADR</i>"]
309
+ S3 --> S5["Step 5<br/><i>light</i>"]
310
+ S5 --> S6["Step 6"]
311
+ S6 --> S7["Step 7"]
312
+ S7 --> S8["Step 8"]
313
+ ```
314
+
315
+ **L (параллельные пары):**
316
+
317
+ ```mermaid
318
+ graph TD
319
+ S0["Step 0"] --> S1["Step 1"]
320
+ S1 --> S2["Step 2"]
321
+ S1 --> S3["Step 3"]
322
+ S2 --> S4["Step 4"]
323
+ S3 --> S4
324
+ S2 --> S5["Step 5"]
325
+ S3 --> S5
326
+ S4 --> S6["Step 6"]
327
+ S5 --> S6
328
+ S6 --> S7["Step 7"]
329
+ S7 --> S8["Step 8"]
330
+ ```
331
+
332
+ **XL (полный DAG с мульти-агентным кодированием и review panel):**
333
+
334
+ ```mermaid
335
+ graph TD
336
+ S0["Step 0"] --> S1["Step 1"]
337
+ S1 --> S2["Step 2<br/><i>2 agents</i>"]
338
+ S1 --> S3["Step 3<br/><i>N ADRs</i>"]
339
+ S2 --> S4["Step 4"]
340
+ S3 --> S4
341
+ S2 --> S5["Step 5<br/><i>full C4</i>"]
342
+ S3 --> S5
343
+ S4 --> S6["Step 6"]
344
+ S5 --> S6
345
+ S6 --> S7A["Step 7<br/>Agent A<br/><i>module 1</i>"]
346
+ S6 --> S7B["Step 7<br/>Agent B<br/><i>module 2</i>"]
347
+ S6 --> S7C["Step 7<br/>Agent C<br/><i>module N</i>"]
348
+ S7A --> S8A["QE Agent 1<br/><i>correctness</i>"]
349
+ S7B --> S8A
350
+ S7C --> S8A
351
+ S7A --> S8B["QE Agent 2<br/><i>security</i>"]
352
+ S7B --> S8B
353
+ S7C --> S8B
354
+ S7A --> S8C["QE Agent 3<br/><i>architecture</i>"]
355
+ S7B --> S8C
356
+ S7C --> S8C
357
+ ```
358
+
359
+ ### 5.3 Группы зависимостей
360
+
361
+ | Группа | Шаги | Тип | Предусловие |
362
+ |--------|------|-----|-------------|
363
+ | Group 1 | Step 0 -> Step 1 | sequential | -- |
364
+ | Group 2 | Step 2 // Step 3 | parallel | Step 1 complete |
365
+ | Group 3 | Step 4 // Step 5 | parallel | Steps 2+3 complete |
366
+ | Group 4 | Step 6 | sequential | Steps 4+5 complete |
367
+ | Group 5 | Step 7 (N agents) | parallel per module | Step 6 complete |
368
+ | Group 6 | Step 8 (3 agents) | parallel per role | Step 7 complete |
369
+
370
+ ---
371
+
372
+ ## 6. Agent Swarm стратегия
373
+
374
+ ### 6.1 Внутришаговый параллелизм
375
+
376
+ | Шаг | Агенты | Модель | Задачи |
377
+ |-----|--------|--------|--------|
378
+ | Step 2 | 2 parallel | sonnet + sonnet | Codebase patterns // External analogues |
379
+ | Step 3+4 | 2 parallel | opus + opus | ADR drafting // DDD modeling (L/XL) |
380
+ | Step 7 | N parallel | opus x N | По одному агенту на независимый модуль/домен (XL) |
381
+ | Step 8 | 3 parallel | sonnet x 3 | Correctness // Security // Architecture (XL) |
382
+
383
+ ### 6.2 Межшаговый параллелизм
384
+
385
+ Для L/XL-фич:
386
+
387
+ - **Steps 2 и 3** запускаются параллельно после завершения Step 1
388
+ - **Steps 4 и 5** могут пересекаться -- Step 5 стартует, как только Step 3 завершён, даже если Step 2 ещё в работе (Step 5 зависит от ADR, Step 4 зависит от Research)
389
+ - **Step 7** -- каждый модуль из implementation plan реализуется параллельным opus-агентом; после завершения всех агентов оркестратор верифицирует integration points
390
+
391
+ ### 6.3 Свёртка для S/M
392
+
393
+ Для S-тира: никакого параллелизма. 5 шагов выполняются последовательно одним агентом.
394
+ Для M-тира: никакого параллелизма. 7 шагов выполняются последовательно, overhead от spawn агентов превышает выигрыш.
395
+
396
+ ### 6.4 Агентная изоляция
397
+
398
+ - Каждый параллельный агент работает только со своим набором файлов
399
+ - Агенты не видят промежуточные результаты друг друга
400
+ - Оркестратор синтезирует результаты после завершения всех агентов группы
401
+ - Для Step 8 review panel: каждый reviewer получает одинаковый snapshot кода, пишет независимый отчёт
402
+
403
+ ---
404
+
405
+ ## 7. Cross-Step Variables
406
+
407
+ Реестр переменных, передаваемых между шагами pipeline:
408
+
409
+ | Переменная | Устанавливается | Используется | Тип | Описание |
410
+ |-----------|----------------|-------------|-----|----------|
411
+ | `{COMPLEXITY_TIER}` | Step 0 | Все шаги | `S` / `M` / `L` / `XL` | Определённый тир сложности |
412
+ | `{ACTIVE_STEPS}` | Step 0 | Оркестратор | `list[int]` | Активные шаги для данного тира |
413
+ | `{TIME_BUDGET}` | Step 0 | Все шаги | `dict` | Бюджет времени по категориям (R/P/I/Q) |
414
+ | `{DIMENSION_SCORES}` | Step 0 | Step 1 | `dict` | Оценки по 6 измерениям |
415
+ | `{REQUIREMENTS}` | Step 1 | Steps 2-8 | `structured` | FR, NFR, constraints, scope |
416
+ | `{RESEARCH_FINDINGS}` | Step 2 | Steps 3-5 | `structured` | Паттерны кодовой базы + внешние аналоги |
417
+ | `{ADR_DECISIONS}` | Step 3 | Steps 4-7 | `list[ADR]` | Принятые архитектурные решения |
418
+ | `{DOMAIN_MODEL}` | Step 4 | Steps 5-7 | `structured` | Bounded contexts, aggregates, language |
419
+ | `{ARCHITECTURE}` | Step 5 | Steps 6-7 | `structured` | C4 diagrams, sequence flows, API design |
420
+ | `{IMPL_PLAN}` | Step 6 | Step 7 | `list[task]` | Задачи с зависимостями (DAG) |
421
+ | `{CODE_CHANGES}` | Step 7 | Step 8 | `list[file]` | Созданные/изменённые/удалённые файлы |
422
+ | `{QE_RESULTS}` | Step 8 | Final report | `structured` | Результаты тестирования и review |
423
+
424
+ ### Контракты передачи данных
425
+
426
+ - Step 3 (ADR) **должен** иметь доступ к `{REQUIREMENTS}` -- стартует только после Step 1
427
+ - Step 5 (Architecture) **должен** иметь доступ к `{ADR_DECISIONS}` -- не стартует без Step 3
428
+ - Step 7 (Code) **не может** стартовать без `{IMPL_PLAN}` из Step 6 -- это обязательный gate
429
+ - Step 8 (QE) валидирует `{CODE_CHANGES}` против `{REQUIREMENTS}` -- traceability от требований до тестов
430
+
431
+ ---
432
+
433
+ ## 8. Promise Tags
434
+
435
+ Система semantic completion promises для формализации checkpoint gates:
436
+
437
+ | Шаг | Promise Tag | Значение |
438
+ |-----|-------------|---------|
439
+ | Step 0 | `FEATURE_ADR_ROUTED` | Тир определён, active steps и time budget рассчитаны |
440
+ | Step 1 | `FEATURE_ADR_REQUIREMENTS_GATHERED` | Требования собраны, acceptance criteria определены |
441
+ | Steps 2-5 | `FEATURE_ADR_DESIGNED` | Все design-шаги тира завершены (research, ADR, DDD, architecture) |
442
+ | Step 6 | `FEATURE_ADR_PLANNED` | Implementation plan создан, задачи декомпозированы |
443
+ | Step 7 | `FEATURE_ADR_IMPLEMENTED` | Код реализован, change manifest заполнен |
444
+ | Step 8 | `FEATURE_ADR_VERIFIED` | QE пройден, все BLOCKER-находки устранены |
445
+
446
+ ### Правила promise
447
+
448
+ 1. Promise tag **выпускается только** после верифицируемого выполнения условий
449
+ 2. Если условия **не выполнены**, выпускается `_INCOMPLETE` вариант (например, `FEATURE_ADR_DESIGNED_INCOMPLETE`)
450
+ 3. Downstream-шаги **проверяют** upstream promise перед стартом
451
+ 4. Promise tag включается в checkpoint banner для пользователя
452
+
453
+ ### Checkpoint формат
454
+
455
+ ```
456
+ =====================================================
457
+ STEP N/8: [Step Name] Complete
458
+ <promise>[PROMISE_TAG]</promise>
459
+ Tier: {COMPLEXITY_TIER} | Active Steps: {ACTIVE_STEPS}
460
+
461
+ [2-3 строки summary]
462
+ Artifacts: [list]
463
+
464
+ * "ок" -- next step
465
+ * "углуби [section]" -- elaborate
466
+ * "[feedback]" -- adjust
467
+ =====================================================
468
+ ```
469
+
470
+ ---
471
+
472
+ ## 9. Model Routing
473
+
474
+ Каждый шаг использует модель, оптимальную для его задачи:
475
+
476
+ | Шаг | Модель | Rationale | Стоимость (отн.) |
477
+ |-----|--------|-----------|-----------------|
478
+ | Step 0: Complexity Router | **haiku** | Простая классификация по 6 измерениям, pattern matching | 1x |
479
+ | Step 1: Requirements | **sonnet** | Аналитическая работа: декомпозиция требований, acceptance criteria | 15x |
480
+ | Step 2: Research | **sonnet** | Исследовательский синтез: паттерны кодовой базы и аналоги | 15x |
481
+ | Step 3: ADR | **opus** | Сложное рассуждение: trade-off analysis, decision matrix, consequences | 75x |
482
+ | Step 4: DDD | **opus** | Доменное моделирование: bounded contexts, агрегаты, language | 75x |
483
+ | Step 5: Architecture | **opus** | Системный дизайн: C4 диаграммы, sequence flows, API design | 75x |
484
+ | Step 6: Implementation Plan | **sonnet** | Задачная декомпозиция: structured task DAG | 15x |
485
+ | Step 7: Code | **opus** | Генерация кода: сложная реализация с учётом конвенций | 75x |
486
+ | Step 8: QE | **sonnet** | Аналитический review: тестирование, валидация, findings | 15x |
487
+
488
+ ### Правила routing
489
+
490
+ 1. **Haiku** -- только для classification и pattern matching (Step 0)
491
+ 2. **Sonnet** -- для аналитической работы, research, testing (Steps 1, 2, 6, 8)
492
+ 3. **Opus** -- для creative и complex reasoning работы (Steps 3, 4, 5, 7)
493
+ 4. **Никогда** opus для Step 0 -- это расточительно для простой классификации
494
+ 5. **Никогда** haiku для Step 3/7 -- качество будет недостаточным для ADR и кода
495
+ 6. При spawn агентов через Agent tool **всегда** указывается параметр `model`
496
+
497
+ ---
498
+
499
+ ## 10. Интеграция с keysarium-core
500
+
501
+ ### 10.1 Что используется из core
502
+
503
+ `@dzhechkov/skills-feature-adr` потребляет следующие протоколы из `@dzhechkov/keysarium-core`:
504
+
505
+ | Модуль core | Протокол | Как используется в feature-adr |
506
+ |-------------|----------|-------------------------------|
507
+ | `governance/` | Checkpoint protocol | Checkpoint после каждого шага с promise tag |
508
+ | `governance/` | Shard protocol | Загрузка `feature-adr.shard.md` перед стартом |
509
+ | `orchestration/` | Model routing | 3-tier routing: haiku/sonnet/opus per step |
510
+ | `orchestration/` | Agent swarm topologies | Параллельные группы для L/XL (fork-join topology) |
511
+ | `trust-tiers/` | Tier classification | Текущий тир скилла: Tier 0 (Advisory) |
512
+ | `verification/` | Promise tags | 6 promise tags для 9 шагов |
513
+
514
+ ### 10.2 Что НЕ используется
515
+
516
+ Feature-adr -- это отдельный pipeline. Он **не использует**:
517
+
518
+ - **Phases** -- pipeline построен на Steps (0-8), не на Phases (0-6) из Casarium
519
+ - **Research artifacts** -- `00_product_discovery.md`, `02_research_findings.md` и т.д. не создаются
520
+ - **CJM (Customer Journey Map)** -- Phase 2.5 из Casarium не применима
521
+ - **Presentation pipeline** -- Phase 5 с storytelling, speaker script, Q&A не генерируется
522
+ - **Witness chain** -- SHA-256 chain не создаётся для feature artifacts (Rule 8 из `witness-chain.md`)
523
+ - **Dream cycles** -- Insights из dream engine не применяются к feature-adr pipeline
524
+ - **Reward learning** -- `memory_query()`/`memory_store()` не вызываются (специфичны для Casarium)
525
+
526
+ ### 10.3 peerDependency
527
+
528
+ `keysarium-core` подключается как **optional peerDependency**:
529
+
530
+ ```json
531
+ {
532
+ "peerDependencies": {
533
+ "@dzhechkov/keysarium-core": "^1.0.0"
534
+ },
535
+ "peerDependenciesMeta": {
536
+ "@dzhechkov/keysarium-core": {
537
+ "optional": true
538
+ }
539
+ }
540
+ }
541
+ ```
542
+
543
+ Без core пакет работает полностью автономно -- все необходимые протоколы инлайнены в шаблонах. Core добавляет формализованные версии тех же протоколов для проектов, использующих полную экосистему.
544
+
545
+ ---
546
+
547
+ ## 11. Package архитектура (npm)
548
+
549
+ ### 11.1 Структура пакета
550
+
551
+ ```
552
+ packages/dz-feature-adr/
553
+ ├── package.json ← @dzhechkov/skills-feature-adr v1.0.0
554
+ ├── bin/
555
+ │ └── cli.js ← Entry point (#!/usr/bin/env node)
556
+ ├── src/
557
+ │ ├── cli.js ← Argument parsing, command routing
558
+ │ ├── utils.js ← Colors, logging, file ops, manifest, components
559
+ │ └── commands/
560
+ │ ├── init.js ← Установка skill pack в проект
561
+ │ ├── update.js ← Обновление до новой версии
562
+ │ ├── remove.js ← Удаление skill pack
563
+ │ ├── list.js ← Список установленных компонентов
564
+ │ └── doctor.js ← Диагностика здоровья установки
565
+ ├── scripts/
566
+ │ └── sync-templates.js ← Синхронизация шаблонов при prepublishOnly
567
+ └── templates/ ← Шаблоны для установки в целевой проект
568
+ └── .claude/
569
+ ├── commands/
570
+ │ └── feature-adr.md ← Slash-команда /feature-adr
571
+ ├── rules/
572
+ │ └── feature-adr-conventions.md
573
+ ├── shards/
574
+ │ └── feature-adr.shard.md
575
+ └── skills/
576
+ └── feature-adr/
577
+ ├── SKILL.md
578
+ ├── modules/ ← 00-08 (9 step modules)
579
+ ├── references/ ← Templates и matrices
580
+ └── examples/ ← Sample output
581
+ ```
582
+
583
+ ### 11.2 CLI-команды
584
+
585
+ ```bash
586
+ npx @dzhechkov/skills-feature-adr init # Установить в текущий проект
587
+ npx @dzhechkov/skills-feature-adr update # Обновить до последней версии
588
+ npx @dzhechkov/skills-feature-adr remove # Удалить из проекта
589
+ npx @dzhechkov/skills-feature-adr list # Показать установленные компоненты
590
+ npx @dzhechkov/skills-feature-adr doctor # Проверить здоровье установки
591
+
592
+ # Флаги:
593
+ # --force Перезаписать существующие файлы
594
+ # --dry-run Показать план без записи файлов
595
+ ```
596
+
597
+ ### 11.3 Компоненты установки
598
+
599
+ При `init` устанавливаются 4 компонента из `templates/`:
600
+
601
+ | Компонент | Целевой путь | Фильтр | Описание |
602
+ |-----------|-------------|--------|----------|
603
+ | `skill` | `.claude/skills/feature-adr/` | -- | SKILL.md + 9 модулей + 4 reference + 1 example |
604
+ | `commands` | `.claude/commands/` | `feature-adr*` | Slash-команда `feature-adr.md` |
605
+ | `rules` | `.claude/rules/` | `feature-adr*` | Конвенции `feature-adr-conventions.md` |
606
+ | `shards` | `.claude/shards/` | `feature-adr*` | Governance shard `feature-adr.shard.md` |
607
+
608
+ Фильтрация по префиксу `feature-adr` гарантирует, что при установке в проект с существующими commands/rules/shards не затрагиваются чужие файлы.
609
+
610
+ ### 11.4 Manifest
611
+
612
+ После установки создаётся `.skills-feature-adr.json`:
613
+
614
+ ```json
615
+ {
616
+ "version": "1.0.0",
617
+ "installedAt": "2026-03-02T10:00:00.000Z",
618
+ "components": ["skill", "commands", "rules", "shards"],
619
+ "files": [
620
+ ".claude/commands/feature-adr.md",
621
+ ".claude/rules/feature-adr-conventions.md",
622
+ ".claude/shards/feature-adr.shard.md",
623
+ ".claude/skills/feature-adr/SKILL.md",
624
+ "..."
625
+ ]
626
+ }
627
+ ```
628
+
629
+ Manifest используется для `update` (diff с текущими шаблонами), `remove` (список файлов для удаления) и `doctor` (проверка целостности).
630
+
631
+ ### 11.5 Интеграция с Keysarium
632
+
633
+ При `init` автоматически детектируется `.keysarium.json`. Если Keysarium уже установлен -- выводится интеграционное сообщение, и компоненты устанавливаются в общие директории (`.claude/commands/`, `.claude/skills/` и т.д.), обеспечивая бесшовную работу `/feature-adr` рядом с `/casarium`.
634
+
635
+ ### 11.6 Template sync
636
+
637
+ Скрипт `sync-templates.js` вызывается при `prepublishOnly` для синхронизации шаблонов из source-of-truth (`.claude/` корневого репозитория) в `templates/` пакета, гарантируя консистентность.
638
+
639
+ ---
640
+
641
+ ## 12. Output архитектура
642
+
643
+ ### 12.1 Директория фичи
644
+
645
+ Все артефакты создаются в `features/<feature-slug>/`:
646
+
647
+ ```
648
+ features/<feature-slug>/
649
+ ├── 00_complexity_assessment.md ← Всегда
650
+ ├── 01_requirements.md ← Всегда (inline для S)
651
+ ├── 02_research.md ← L/XL
652
+ ├── 03_adr/ ← M+
653
+ │ ├── 001-<decision-1>.md
654
+ │ ├── 002-<decision-2>.md
655
+ │ └── ...
656
+ ├── 04_domain_model.md ← L/XL
657
+ ├── 05_architecture.md ← M+ (light для M)
658
+ ├── 06_implementation_plan.md ← Всегда (inline для S)
659
+ ├── 07_code_changes/ ← Всегда
660
+ │ └── change_manifest.md ← Список created/modified/deleted файлов
661
+ ├── 08_qe_report.md ← Всегда
662
+ ├── diagrams/ ← M+
663
+ │ ├── architecture-c4.mermaid ← L/XL (component-only для M)
664
+ │ ├── domain-model.mermaid ← L/XL
665
+ │ └── sequence-*.mermaid ← L/XL
666
+ └── README.md ← Всегда (auto-generated summary)
667
+ ```
668
+
669
+ ### 12.2 Обязательные артефакты по тирам
670
+
671
+ **Тир S:**
672
+
673
+ ```
674
+ features/<slug>/
675
+ ├── 00_complexity_assessment.md
676
+ ├── 08_qe_report.md
677
+ ├── README.md
678
+ + реальные изменения кода в репозитории
679
+ ```
680
+
681
+ **Тир M (все из S, плюс):**
682
+
683
+ ```
684
+ ├── 01_requirements.md
685
+ ├── 03_adr/001-*.md
686
+ ├── 05_architecture.md
687
+ ├── 07_code_changes/change_manifest.md
688
+ └── diagrams/
689
+ └── (component diagram)
690
+ ```
691
+
692
+ **Тир L (все из M, плюс):**
693
+
694
+ ```
695
+ ├── 02_research.md
696
+ ├── 04_domain_model.md
697
+ └── diagrams/
698
+ ├── architecture-c4.mermaid
699
+ ├── domain-model.mermaid
700
+ └── sequence-*.mermaid
701
+ ```
702
+
703
+ **Тир XL:**
704
+ Все артефакты L на полной глубине.
705
+
706
+ ### 12.3 Конвенции именования
707
+
708
+ - **Feature slug:** kebab-case, латиница, max 40 символов (например, `add-user-auth`, `refactor-payment-flow`)
709
+ - **Артефакты:** нумерованный префикс по номеру шага (`00_`, `01_`, ..., `08_`)
710
+ - **ADR файлы:** `NNN-<decision-slug>.md` (например, `001-choose-database-engine.md`)
711
+ - **Диаграммы:** описательный kebab-case (например, `architecture-c4.mermaid`, `sequence-main-flow.mermaid`)
712
+ - **Никаких дат и номеров тикетов** в slug -- они указываются внутри артефактов
713
+
714
+ ### 12.4 Изоляция от других pipeline
715
+
716
+ ```
717
+ researches/ ← /casarium pipeline ONLY
718
+ features/ ← /feature-adr pipeline ONLY
719
+ ```
720
+
721
+ Feature-adr **никогда** не создаёт файлы в `researches/`. Casarium **никогда** не создаёт файлы в `features/`. Это обеспечивает чёткое разделение контекстов.
722
+
723
+ ---
724
+
725
+ ## Приложение A: Quality Gates по шагам
726
+
727
+ | Шаг | Gate | Блокирующий? |
728
+ |-----|------|-------------|
729
+ | 0 | Тир обоснован по 6 измерениям с explicit reasoning | Да |
730
+ | 1 | Все требования имеют acceptance criteria (M+) | Да |
731
+ | 2 | Research findings верифицированы, не галлюцинированы (L/XL) | Да |
732
+ | 3 | Каждый ADR содержит >= 2 альтернативы (M+) | Да |
733
+ | 4 | Domain model совместима с существующей кодовой базой (L/XL) | Да |
734
+ | 5 | Mermaid-диаграммы имеют валидный синтаксис (M+) | Да |
735
+ | 6 | Зависимости задач формируют валидный DAG | Да |
736
+ | 7 | Код следует конвенциям существующей кодовой базы | Да |
737
+ | 8 | Нет BLOCKER-находок, все MUST-требования пройдены | Да |
738
+
739
+ ## Приложение B: Anti-Patterns
740
+
741
+ | Anti-Pattern | Сигнал обнаружения | Действие |
742
+ |-------------|-------------------|---------|
743
+ | Пропуск Step 0 | Переход к кодированию без классификации | BLOCK |
744
+ | Over-engineer S-тир | Полный pipeline для config change | Router должен классифицировать как S |
745
+ | Under-engineer XL-тир | Пропуск ADR/DDD для major refactor | Router должен классифицировать как XL |
746
+ | ADR без альтернатив | Менее 2 опций рассмотрено | BLOCK до добавления альтернатив |
747
+ | Архитектура без ADR | Диаграммы до решений | Step 5 требует output Step 3 |
748
+ | Код без плана | Кодирование без Step 6 | BLOCK -- plan обязателен |
749
+ | Пропуск QE | Доставка без тестирования | BLOCK -- Step 8 обязателен |
750
+ | Тир изменён mid-pipeline | Scope изменился после Step 0 | Рестарт pipeline с нового Step 0 |