@dzhechkov/keysarium 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 (84) hide show
  1. package/README.md +289 -0
  2. package/bin/cli.js +5 -0
  3. package/package.json +43 -0
  4. package/src/cli.js +157 -0
  5. package/src/commands/doctor.js +469 -0
  6. package/src/commands/init.js +171 -0
  7. package/src/commands/list.js +147 -0
  8. package/src/commands/remove.js +197 -0
  9. package/src/commands/update.js +191 -0
  10. package/src/utils.js +274 -0
  11. package/templates/.claude/agents/cjm-variant-worker.md +60 -0
  12. package/templates/.claude/agents/discovery-worker.md +45 -0
  13. package/templates/.claude/agents/parallel-research-orchestrator.md +70 -0
  14. package/templates/.claude/agents/presentation-worker.md +55 -0
  15. package/templates/.claude/agents/research-worker.md +43 -0
  16. package/templates/.claude/commands/architecture-phase.md +37 -0
  17. package/templates/.claude/commands/casarium.md +163 -0
  18. package/templates/.claude/commands/cjm-prototype.md +42 -0
  19. package/templates/.claude/commands/discovery.md +34 -0
  20. package/templates/.claude/commands/explore-case.md +22 -0
  21. package/templates/.claude/commands/harvest.md +67 -0
  22. package/templates/.claude/commands/new-research.md +69 -0
  23. package/templates/.claude/commands/parallel-research.md +45 -0
  24. package/templates/.claude/commands/presentation.md +49 -0
  25. package/templates/.claude/commands/research.md +32 -0
  26. package/templates/.claude/commands/solve.md +36 -0
  27. package/templates/.claude/rules/agent-swarm.md +31 -0
  28. package/templates/.claude/rules/anti-patterns.md +19 -0
  29. package/templates/.claude/rules/checkpoint-protocol.md +23 -0
  30. package/templates/.claude/rules/domain-specific.md +32 -0
  31. package/templates/.claude/rules/file-conventions.md +38 -0
  32. package/templates/.claude/rules/modular-reuse.md +35 -0
  33. package/templates/.claude/rules/research-quality.md +20 -0
  34. package/templates/.claude/settings.json +37 -0
  35. package/templates/.claude/skills/explore/SKILL.md +215 -0
  36. package/templates/.claude/skills/explore/references/questioning-techniques.md +151 -0
  37. package/templates/.claude/skills/explore/references/task-brief-templates.md +355 -0
  38. package/templates/.claude/skills/frontend-design/LICENSE.txt +177 -0
  39. package/templates/.claude/skills/frontend-design/SKILL.md +42 -0
  40. package/templates/.claude/skills/goap-research-ed25519/SKILL.md +415 -0
  41. package/templates/.claude/skills/goap-research-ed25519/references/ed25519-verification.md +658 -0
  42. package/templates/.claude/skills/goap-research-ed25519/references/research-actions.md +544 -0
  43. package/templates/.claude/skills/goap-research-ed25519/references/source-evaluation.md +560 -0
  44. package/templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py +662 -0
  45. package/templates/.claude/skills/goap-research-ed25519/scripts/goap_planner.py +720 -0
  46. package/templates/.claude/skills/presentation-storyteller/SKILL.md +371 -0
  47. package/templates/.claude/skills/presentation-storyteller/references/example-presentation.md +273 -0
  48. package/templates/.claude/skills/presentation-storyteller/references/slide-types.md +426 -0
  49. package/templates/.claude/skills/presentation-storyteller/references/sources-index-template.md +213 -0
  50. package/templates/.claude/skills/presentation-storyteller/references/speaker-script-patterns.md +324 -0
  51. package/templates/.claude/skills/presentation-storyteller/references/storytelling-frameworks.md +270 -0
  52. package/templates/.claude/skills/problem-solver-enhanced/SKILL.md +562 -0
  53. package/templates/.claude/skills/reverse-engineering-unicorn/SKILL.md +194 -0
  54. package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-cjm-example.md +100 -0
  55. package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-module1-example.md +88 -0
  56. package/templates/.claude/skills/reverse-engineering-unicorn/modules/01-intelligence.md +328 -0
  57. package/templates/.claude/skills/reverse-engineering-unicorn/modules/02-product-customers.md +221 -0
  58. package/templates/.claude/skills/reverse-engineering-unicorn/modules/025-cjm-prototype.md +206 -0
  59. package/templates/.claude/skills/reverse-engineering-unicorn/modules/03-market-competition.md +402 -0
  60. package/templates/.claude/skills/reverse-engineering-unicorn/modules/04-business-finance.md +287 -0
  61. package/templates/.claude/skills/reverse-engineering-unicorn/modules/05-growth-engine.md +290 -0
  62. package/templates/.claude/skills/reverse-engineering-unicorn/modules/06-playbook-synthesis.md +286 -0
  63. package/templates/.claude/skills/reverse-engineering-unicorn/references/blue-ocean-canvas.md +39 -0
  64. package/templates/.claude/skills/reverse-engineering-unicorn/references/industry-benchmarks.md +67 -0
  65. package/templates/.claude/skills/reverse-engineering-unicorn/references/jtbd-canvas.md +48 -0
  66. package/templates/CLAUDE.md +185 -0
  67. package/templates/TOOLKIT_HARVEST.md +29 -0
  68. package/templates/docs/keysarium/01-deployment-guide.md +768 -0
  69. package/templates/docs/keysarium/02-admin-guide.md +1170 -0
  70. package/templates/docs/keysarium/03-user-guide.md +884 -0
  71. package/templates/docs/keysarium/04-infrastructure-requirements.md +967 -0
  72. package/templates/docs/keysarium/05-architecture.md +706 -0
  73. package/templates/docs/keysarium/06-user-flows.md +925 -0
  74. package/templates/docs/skills-bto/01-deployment-guide.md +828 -0
  75. package/templates/docs/skills-bto/02-admin-guide.md +1052 -0
  76. package/templates/docs/skills-bto/03-user-guide.md +960 -0
  77. package/templates/docs/skills-bto/04-infrastructure-requirements.md +610 -0
  78. package/templates/docs/skills-bto/05-architecture.md +1112 -0
  79. package/templates/docs/skills-bto/06-user-flows.md +977 -0
  80. package/templates/lib/agent-patterns.md +115 -0
  81. package/templates/lib/domain-templates.md +172 -0
  82. package/templates/lib/phase-utils.md +107 -0
  83. package/templates/lib/skill-loader.md +78 -0
  84. package/templates/researches/.gitkeep +0 -0
@@ -0,0 +1,1112 @@
1
+ # 05. Архитектура @dzhechko/skills-bto
2
+
3
+ ## Содержание
4
+
5
+ 1. [Обзор системы и философия проектирования](#обзор-системы-и-философия-проектирования)
6
+ 2. [Компоненты системы](#компоненты-системы)
7
+ 3. [MODULE: BUILD](#module-build)
8
+ 4. [MODULE: TEST](#module-test)
9
+ 5. [MODULE: OPTIMIZE](#module-optimize)
10
+ 6. [Agent Swarm архитектура](#agent-swarm-архитектура)
11
+ 7. [Диаграммы потоков данных](#диаграммы-потоков-данных)
12
+ 8. [Архитектура quality gates](#архитектура-quality-gates)
13
+ 9. [Система обнаружения anti-patterns](#система-обнаружения-anti-patterns)
14
+ 10. [Интеграция с Keysarium](#интеграция-с-keysarium)
15
+ 11. [Расширяемость системы](#расширяемость-системы)
16
+ 12. [Проектные решения и компромиссы](#проектные-решения-и-компромиссы)
17
+
18
+ ---
19
+
20
+ ## Обзор системы и философия проектирования
21
+
22
+ `@dzhechko/skills-bto` — это **Build-Test-Optimize (BTO)** скилл-пак для Claude Code, реализующий полный цикл создания, оценки и итеративного улучшения Claude Code артефактов. Система работает как standalone-инструмент и как интегрированный компонент пайплайна `@dzhechko/keysarium`.
23
+
24
+ ### Фундаментальная идея
25
+
26
+ Большинство промпт-инжиниринговых задач имеют три отдельных фазы с принципиально разными требованиями:
27
+
28
+ ```
29
+ BUILD TEST OPTIMIZE
30
+ ────── ──── ────────
31
+ Генерация Оценка Улучшение
32
+ Требует: Требует: Требует:
33
+ • Творчество • Объективность • Управляемые мутации
34
+ • Структуру • Разные точки зр. • Быструю итерацию
35
+ • Domain знание • Детерминизм • Отбор лучших вариантов
36
+ ```
37
+
38
+ BTO изолирует эти три режима в отдельные модули с чёткими контрактами на входе и выходе. Модули можно запускать независимо или последовательно как пайплайн.
39
+
40
+ ### Ключевые принципы проектирования
41
+
42
+ **1. Layered Evaluation (иерархическая оценка)**
43
+ Дорогая LLM-оценка применяется только к артефактам, прошедшим дешёвые фильтры. Layer 0 (детерминистические проверки) отсеивает большинство очевидных проблем бесплатно. Только артефакты, прошедшие Layer 0 и Layer 1, получают полную панель из трёх судей Layer 2.
44
+
45
+ **2. Judge Isolation (изоляция судей)**
46
+ Ни один судья не видит оценки других судей до момента агрегации. Это предотвращает конформизм — феномен, при котором один агент адаптирует своё мнение к мнению группы, снижая ценность мульти-агентной оценки.
47
+
48
+ **3. Strategy-Driven Mutation (направленная мутация)**
49
+ Вместо случайных мутаций BTO использует именованные стратегии (`expand-depth`, `invert-critic`, `add-metrics` и др.), которые выбираются на основе слабых измерений из последней оценки. Это ускоряет сходимость и делает изменения интерпретируемыми.
50
+
51
+ **4. Cost-Bounded Execution (ограниченный бюджет)**
52
+ Каждая операция имеет явную стоимостную модель. Haiku используется для быстрых промежуточных оценок, Sonnet — для панели судей, Opus — только для crossover и meta-judge. Жёсткий лимит в 3 раунда (15 оценок) предотвращает неконтролируемые расходы.
53
+
54
+ **5. Artifact-Type Agnosticism (независимость от типа артефакта)**
55
+ Система работает с любым текстовым артефактом через настраиваемые rubrics и structure specs. Встроенная поддержка: skills, commands, rules, agent templates, research artifacts.
56
+
57
+ ---
58
+
59
+ ## Компоненты системы
60
+
61
+ ### Текстовая карта компонентов
62
+
63
+ ```
64
+ @dzhechko/skills-bto
65
+ ├── SKILL.md ← Точка входа, оркестратор пайплайна
66
+ │
67
+ ├── modules/ ← Три основных модуля
68
+ │ ├── build.md ← MODULE 1: Генерация артефактов
69
+ │ ├── test.md ← MODULE 2: Мульти-агентная оценка
70
+ │ └── optimize.md ← MODULE 3: Эволюционная оптимизация
71
+ │
72
+ ├── references/ ← Справочные материалы
73
+ │ ├── eval-patterns.md ← Паттерны мульти-агентной оценки
74
+ │ ├── optimization-methods.md ← Обзор методов оптимизации промптов
75
+ │ ├── judge-rubrics.md ← Рубрики для судей
76
+ │ └── quality-checklist.md ← Детерминистические чеклисты
77
+ │
78
+ └── examples/ ← Примеры выходных артефактов
79
+ └── sample-eval-report.md ← Формат отчёта об оценке
80
+ ```
81
+
82
+ ```
83
+ .claude/agents/ ← Шаблоны агентов-воркеров
84
+ ├── bto-judge-panel.md ← Панель из 3 судей + meta-judge
85
+ └── bto-optimizer-worker.md ← Воркеры мутации + haiku fast-eval
86
+ ```
87
+
88
+ ```
89
+ .claude/commands/ ← Slash-команды (точки входа)
90
+ ├── bto.md ← /bto — полный пайплайн
91
+ ├── bto-build.md ← /bto-build — генерация
92
+ ├── bto-test.md ← /bto-test — оценка
93
+ └── bto-optimize.md ← /bto-optimize — оптимизация
94
+ ```
95
+
96
+ ```
97
+ .claude/rules/
98
+ └── bto-quality-gates.md ← Автоматически применяемые quality gates
99
+ ```
100
+
101
+ ### Mermaid-диаграмма компонентов
102
+
103
+ ```mermaid
104
+ graph TB
105
+ subgraph "Точки входа (Commands)"
106
+ BTO["/bto<br/>Полный пайплайн"]
107
+ BUILD_CMD["/bto-build<br/>Генерация"]
108
+ TEST_CMD["/bto-test<br/>Оценка"]
109
+ OPT_CMD["/bto-optimize<br/>Оптимизация"]
110
+ end
111
+
112
+ subgraph "Ядро BTO Skill"
113
+ SKILL["SKILL.md<br/>Оркестратор"]
114
+ end
115
+
116
+ subgraph "Модули"
117
+ M_BUILD["modules/build.md<br/>BUILD Protocol"]
118
+ M_TEST["modules/test.md<br/>TEST Protocol"]
119
+ M_OPT["modules/optimize.md<br/>OPTIMIZE Protocol"]
120
+ end
121
+
122
+ subgraph "Агентные шаблоны"
123
+ JUDGE["bto-judge-panel.md<br/>3 судьи + meta-judge"]
124
+ WORKER["bto-optimizer-worker.md<br/>Мутация + fast-eval"]
125
+ end
126
+
127
+ subgraph "Справочники"
128
+ RUBRICS["references/judge-rubrics.md"]
129
+ PATTERNS["references/eval-patterns.md"]
130
+ METHODS["references/optimization-methods.md"]
131
+ CHECKLIST["references/quality-checklist.md"]
132
+ end
133
+
134
+ subgraph "Правила (автоматически)"
135
+ GATES["rules/bto-quality-gates.md"]
136
+ end
137
+
138
+ BTO --> SKILL
139
+ BUILD_CMD --> M_BUILD
140
+ TEST_CMD --> M_TEST
141
+ OPT_CMD --> M_OPT
142
+ SKILL --> M_BUILD
143
+ SKILL --> M_TEST
144
+ SKILL --> M_OPT
145
+ M_TEST --> JUDGE
146
+ M_OPT --> WORKER
147
+ M_OPT --> JUDGE
148
+ JUDGE --> RUBRICS
149
+ WORKER --> RUBRICS
150
+ WORKER --> CHECKLIST
151
+ M_BUILD --> CHECKLIST
152
+ GATES -.->|"автоматически применяются"| M_TEST
153
+ GATES -.->|"автоматически применяются"| M_OPT
154
+ ```
155
+
156
+ ---
157
+
158
+ ## MODULE: BUILD
159
+
160
+ ### Назначение
161
+
162
+ Генерация production-качества Claude Code артефактов (skills, commands, rules, agent templates) из описания на естественном языке.
163
+
164
+ ### Архитектура обнаружения типа
165
+
166
+ ```mermaid
167
+ graph LR
168
+ INPUT["Описание артефакта"] --> DETECT{"Определение типа"}
169
+ DETECT -->|"skill / module / capability"| TYPE_SKILL["TYPE: skill"]
170
+ DETECT -->|"command / slash / pipeline"| TYPE_CMD["TYPE: command"]
171
+ DETECT -->|"rule / constraint / convention"| TYPE_RULE["TYPE: rule"]
172
+ DETECT -->|"agent / worker / parallel"| TYPE_AGENT["TYPE: agent template"]
173
+
174
+ TYPE_SKILL --> TMPL_SKILL["Шаблон: SKILL.md +<br/>modules/ + references/ + examples/"]
175
+ TYPE_CMD --> TMPL_CMD["Шаблон: одиночный .md<br/>с $ARGUMENTS + checkpoint"]
176
+ TYPE_RULE --> TMPL_RULE["Шаблон: таблица паттернов<br/>+ detection signals"]
177
+ TYPE_AGENT --> TMPL_AGENT["Шаблон: конфигурация<br/>агента + prompt template"]
178
+ ```
179
+
180
+ ### Два режима: QUICK и DEEP
181
+
182
+ | Режим | Когда использовать | Агенты | Время | Процесс |
183
+ |-------|-------------------|--------|-------|---------|
184
+ | QUICK | Простой артефакт, чёткие требования | 1 | ~2 мин | Прямая генерация из описания |
185
+ | DEEP | Сложный скилл, неясные требования | 1 + explore | ~5 мин | Кларификация через `explore` скилл → requirements brief → подтверждение → генерация |
186
+
187
+ ### Шаблонная система
188
+
189
+ Каждый тип артефакта имеет строгий шаблон с обязательными секциями:
190
+
191
+ #### Скилл (обязательные секции)
192
+ ```
193
+ # [Name] ← Заголовок
194
+ ## Overview ← Назначение и область применения
195
+ ## Quick Start ← Быстрый старт (команды/вызовы)
196
+ ## Protocol ← Пошаговый протокол исполнения
197
+ ## Step 1: ...
198
+ ## Step N: ...
199
+ ## Output Format ← Формат выходных артефактов
200
+ ## Anti-Patterns ← Известные ошибки + способы устранения
201
+ ## Dependencies ← Зависимости от других скиллов/файлов
202
+ ```
203
+
204
+ #### Команда (обязательные секции)
205
+ ```
206
+ # /command-name — Description
207
+ ## Usage ← Синтаксис вызова
208
+ ## Parameters ← $ARGUMENTS и другие параметры
209
+ ## Protocol ← Логика исполнения
210
+ ## Checkpoint ← Баннер чекпоинта (обязательно)
211
+ ```
212
+
213
+ #### Правило (обязательные секции)
214
+ ```
215
+ # Rule Name
216
+ ## Patterns ← Таблица: Pattern | Detection Signal | Required Fix
217
+ ## Auto-Detection ← Инструкция по автоматическому применению
218
+ ```
219
+
220
+ ### Self-Review после генерации (4-уровневая проверка)
221
+
222
+ Перед выводом артефакта модуль BUILD выполняет самопроверку:
223
+
224
+ ```
225
+ 1. Structure check: обязательные секции присутствуют, нет пустых секций
226
+ 2. Content check: нет generic/placeholder контента, специфичен для домена
227
+ 3. Convention check: kebab-case имена файлов, правильная иерархия заголовков
228
+ 4. Size check: SKILL.md: 2KB-30KB, Module: 1KB-15KB, Reference: 500B-10KB
229
+ ```
230
+
231
+ Если любой чек не проходит → артефакт корректируется до вывода (Layer 0 inline check).
232
+
233
+ ### Anti-Patterns модуля BUILD
234
+
235
+ | Anti-Pattern | Сигнал обнаружения | Обязательное исправление |
236
+ |-------------|--------------------|-----------------------|
237
+ | Generic skill | Нет domain-specific терминов | Добавить доменный контекст и ограничения |
238
+ | Missing references | Директория references/ пуста | Добавить минимум один reference файл |
239
+ | No examples | Директория examples/ пуста | Добавить минимум один few-shot пример |
240
+ | Over-scoped | SKILL.md > 30KB | Разбить на модули |
241
+ | Under-specified | SKILL.md < 2KB | Расширить деталями |
242
+ | Copy-paste | Идентичен другому скиллу | Адаптировать уникально |
243
+ | Missing anti-patterns | Секция Anti-Patterns отсутствует | Добавить типичные failure modes |
244
+ | No output format | Не описан ожидаемый выход | Добавить явную секцию Output Format |
245
+
246
+ ---
247
+
248
+ ## MODULE: TEST
249
+
250
+ ### Назначение
251
+
252
+ Оценка любого Claude Code артефакта через четырёхуровневую иерархическую схему: от детерминистических проверок до полной мульти-агентной панели судей.
253
+
254
+ ### Четырёхслойная архитектура
255
+
256
+ ```
257
+ ┌─────────────────────────────────────────────────────────────────┐
258
+ │ Layer 0: Deterministic Pre-checks │
259
+ │ Стоимость: 0 (нет LLM вызовов) Скорость: мгновенно │
260
+ │ Универсальные + Type-specific проверки (10-15 чеков) │
261
+ │ Gate: ≥ 80% passed → продолжение │
262
+ └──────────────────────────┬──────────────────────────────────────┘
263
+ │ PASS
264
+ ▼
265
+ ┌─────────────────────────────────────────────────────────────────┐
266
+ │ Layer 1: Single LLM Judge (Quick) │
267
+ │ Стоимость: ~$0.001 Модель: haiku Скорость: ~10 сек │
268
+ │ 5 измерений: CLARITY, COMPLETENESS, ACTIONABILITY, │
269
+ │ QUALITY, ANTI-PATTERNS │
270
+ │ Gate: Average ≥ 7.0 → PASS; 5.0-6.9 → NEEDS WORK; <5.0 → FAIL│
271
+ └──────────────────────────┬──────────────────────────────────────┘
272
+ │ PASS или NEEDS WORK
273
+ ▼
274
+ ┌─────────────────────────────────────────────────────────────────┐
275
+ │ Layer 2: Full Judge Panel (3 Agents) │
276
+ │ Стоимость: ~$0.01 Модели: sonnet×3 Скорость: ~30 сек │
277
+ │ Параллельно: Expert (0.4) || Critic (0.3) || Auditor (0.3) │
278
+ │ 5 измерений: METHODOLOGY, DEPTH, CORRECTNESS, USABILITY, │
279
+ │ ROBUSTNESS │
280
+ │ Disagreement detection: если max-min > 3 → Layer 3 │
281
+ └──────────────────────────┬──────────────────────────────────────┘
282
+ │ Disagreement > 3 на любом измерении
283
+ ▼
284
+ ┌─────────────────────────────────────────────────────────────────┐
285
+ │ Layer 3: Meta-Judge (Disagreement Resolution) │
286
+ │ Стоимость: ~$0.05 Модель: opus Скорость: ~20 сек │
287
+ │ Читает все 3 оценки, выносит финальный вердикт │
288
+ │ Если неразрешимо → эскалация на человека │
289
+ └─────────────────────────────────────────────────────────────────┘
290
+ ```
291
+
292
+ ### Layer 0: Детерминистические проверки
293
+
294
+ Layer 0 полностью детерминирован и не требует LLM. Проверки разбиты на универсальные (для всех типов) и type-specific.
295
+
296
+ **Универсальные проверки (CHECK-U1..U5):**
297
+ ```
298
+ CHECK-U1: Файл существует и не пуст
299
+ CHECK-U2: Валидный UTF-8 текст
300
+ CHECK-U3: Минимум один markdown заголовок (#)
301
+ CHECK-U4: Не более 2 последовательных пустых строк
302
+ CHECK-U5: Размер файла в допустимых пределах
303
+ ```
304
+
305
+ **Skill-специфичные проверки (CHECK-S1..S10):**
306
+ ```
307
+ CHECK-S1: SKILL.md существует в директории скилла
308
+ CHECK-S2: Первый заголовок — # Title
309
+ CHECK-S3: Секция ## Overview или ## Purpose присутствует
310
+ CHECK-S4: Секция ## Anti-Patterns присутствует
311
+ CHECK-S5: Все файлы в modules/ упомянуты в SKILL.md
312
+ CHECK-S6: Все файлы в references/ упомянуты в SKILL.md
313
+ CHECK-S7: Нет пустых секций (heading → следующий heading без контента)
314
+ CHECK-S8: Размер: 1KB < SKILL.md < 50KB
315
+ CHECK-S9: Общий размер директории < 200KB
316
+ CHECK-S10: Минимум один файл в references/ ИЛИ examples/
317
+ ```
318
+
319
+ **Command-специфичные проверки (CHECK-C1..C5):**
320
+ ```
321
+ CHECK-C1: Содержит "$ARGUMENTS" или ссылку на параметр
322
+ CHECK-C2: Содержит checkpoint баннер или протокол
323
+ CHECK-C3: Инструкция загрузки скилла (Read *.SKILL.md)
324
+ CHECK-C4: Размер: 500B < файл < 20KB
325
+ CHECK-C5: Секция ## Usage или ## Protocol присутствует
326
+ ```
327
+
328
+ **Rule-специфичные проверки (CHECK-R1..R4):**
329
+ ```
330
+ CHECK-R1: Таблица или структурированный список паттернов
331
+ CHECK-R2: Каждый паттерн имеет detection signal и fix
332
+ CHECK-R3: Размер: 200B < файл < 10KB
333
+ CHECK-R4: Секция "Auto-Detection" или аналог присутствует
334
+ ```
335
+
336
+ **Agent template-специфичные проверки (CHECK-A1..A4):**
337
+ ```
338
+ CHECK-A1: Указана модель (haiku/sonnet/opus)
339
+ CHECK-A2: Указан scope изоляции (что читает, что пишет)
340
+ CHECK-A3: Шаблон промпта или инструкции присутствуют
341
+ CHECK-A4: Размер: 200B < файл < 10KB
342
+ ```
343
+
344
+ ### Layer 1: Quick Judge (haiku)
345
+
346
+ Один haiku агент оценивает артефакт по 5 измерениям:
347
+
348
+ | Измерение | Вопрос для оценки |
349
+ |-----------|-------------------|
350
+ | CLARITY | Инструкции однозначны? LLM может следовать им точно? |
351
+ | COMPLETENESS | Все необходимые секции присутствуют? |
352
+ | ACTIONABILITY | Может ли Claude произвести конкретный вывод из этих инструкций? |
353
+ | QUALITY | Хорошо структурировано? Профессионально оформлено? |
354
+ | ANTI-PATTERNS | Избегает известных ловушек? Есть покрытие failure modes? |
355
+
356
+ **Пороги:**
357
+ - Average ≥ 7.0: **PASS**
358
+ - Average 5.0–6.9: **NEEDS WORK** (можно перейти к Layer 2 для детального feedback)
359
+ - Average < 5.0: **FAIL** (требует исправления перед продолжением)
360
+
361
+ ### Layer 2: Full Judge Panel (3 Agents параллельно)
362
+
363
+ Три агента-судьи работают параллельно. Ключевое ограничение: **нет межсудейской коммуникации до момента агрегации**.
364
+
365
+ #### Архитектура изоляции судей
366
+
367
+ ```mermaid
368
+ graph LR
369
+ ARTIFACT["Артефакт\n(одинаковый для всех)"]
370
+
371
+ ARTIFACT --> J1["Judge 1\nDomain Expert\nsonnet\nWeight: 0.4"]
372
+ ARTIFACT --> J2["Judge 2\nCritic\nsonnet\nWeight: 0.3"]
373
+ ARTIFACT --> J3["Judge 3\nCompleteness Auditor\nsonnet\nWeight: 0.3"]
374
+
375
+ J1 --> F1["judge-1.md"]
376
+ J2 --> F2["judge-2.md"]
377
+ J3 --> F3["judge-3.md"]
378
+
379
+ F1 --> AGG["Aggregator\n(оркестратор)"]
380
+ F2 --> AGG
381
+ F3 --> AGG
382
+
383
+ AGG --> CHECK{"Disagreement\nmax-min > 3?"}
384
+ CHECK -->|Нет| VERDICT["panel-verdict.md"]
385
+ CHECK -->|Да| META["Meta-Judge\nopus"]
386
+ META --> VERDICT
387
+ ```
388
+
389
+ #### Профили судей
390
+
391
+ **Judge 1 — Domain Expert (Weight: 0.4)**
392
+
393
+ Самый высокий вес. Фокус: техническая корректность и применимость в домене.
394
+
395
+ ```
396
+ Критерии оценки:
397
+ • Domain accuracy: Корректны ли утверждения для данной области?
398
+ • Technical depth: Адресует ли артефакт неочевидные аспекты?
399
+ • Practical applicability: Можно ли использовать артефакт «как есть»?
400
+
401
+ Калибровка:
402
+ • 9-10: зарезервировано для исключительно качественных работ
403
+ • 7-8: хорошее качество с незначительными улучшениями
404
+ • 5-6: приемлемо, но требует доработки
405
+ • 1-4: серьёзные проблемы
406
+ ```
407
+
408
+ **Judge 2 — Critic (Weight: 0.3)**
409
+
410
+ Намеренно строгий. Инструктирован снижать оценки при наличии сомнений.
411
+
412
+ ```
413
+ Критерии оценки:
414
+ • Logical consistency: Нет внутренних противоречий?
415
+ • Verifiability: Утверждения трассируемы к источникам или помечены [ANALYSIS]?
416
+ • Anti-pattern absence: Нет запрещённых паттернов из bto-quality-gates.md?
417
+
418
+ Калибровка:
419
+ • При обнаружении anti-pattern — кап критерия на уровне 5
420
+ • "Если сомневаешься — снижай оценку"
421
+ • Средняя оценка Critic должна быть ~5-6 (строгая калибровка)
422
+ ```
423
+
424
+ **Judge 3 — Completeness Auditor (Weight: 0.3)**
425
+
426
+ Фокус: структурная полнота и целостность перекрёстных ссылок.
427
+
428
+ ```
429
+ Критерии оценки:
430
+ • Section coverage: Все обязательные секции присутствуют и не пусты?
431
+ • Depth per section: Каждая секция достаточно глубокая (не stub)?
432
+ • Edge cases addressed: Упомянуты ли граничные условия и failure modes?
433
+
434
+ Калибровка:
435
+ • -2 очка за каждую отсутствующую обязательную секцию
436
+ • -1 очко за каждую stub-секцию (< 3 содержательных предложений)
437
+ ```
438
+
439
+ ### Агрегация оценок
440
+
441
+ ```
442
+ Per-dimension score = Expert[dim] × 0.4 + Critic[dim] × 0.3 + Auditor[dim] × 0.3
443
+ Overall score = mean(METHODOLOGY, DEPTH, CORRECTNESS, USABILITY, ROBUSTNESS)
444
+ ```
445
+
446
+ **Обнаружение разногласий:**
447
+ ```
448
+ Для каждого измерения:
449
+ Если max(J1, J2, J3) - min(J1, J2, J3) > 3 → FLAG → эскалация на Meta-Judge
450
+ ```
451
+
452
+ ### Layer 3: Meta-Judge (Разрешение разногласий)
453
+
454
+ Meta-Judge вызывается только при обнаруженных разногласиях. Использует Opus для максимального уровня рассуждений.
455
+
456
+ **Входные данные:**
457
+ - Все 3 файла оценок (judge-1.md, judge-2.md, judge-3.md)
458
+ - Сам артефакт
459
+ - Рубрика оценки
460
+
461
+ **Задача Meta-Judge:**
462
+ 1. Определить источник разногласия (неоднозначность критерия, реальный спор о качестве, или bias конкретного судьи)
463
+ 2. Вынести примирённую оценку с явным обоснованием
464
+ 3. Указать, чья точка зрения была наиболее валидной
465
+ 4. Если разногласие неразрешимо — флагировать для человека
466
+
467
+ ### Формат отчёта Layer 2
468
+
469
+ ```
470
+ ═══════════════════════════════════════════════════════
471
+ 📊 BTO EVALUATION REPORT
472
+ Artifact: <path>
473
+ Type: <type>
474
+ Level: Layer 0 + Layer 1 + Layer 2
475
+
476
+ OVERALL SCORE: X.X / 10 [PASS / NEEDS WORK / FAIL]
477
+
478
+ Per-Dimension:
479
+ METHODOLOGY: X.X ██████████░░
480
+ DEPTH: X.X ████████░░░░
481
+ CORRECTNESS: X.X █████████░░░
482
+ USABILITY: X.X ██████████░░
483
+ ROBUSTNESS: X.X ███████░░░░░
484
+
485
+ Flagged: [измерения с разногласием > 3]
486
+
487
+ Top Improvements:
488
+ 1. ...
489
+ 2. ...
490
+ 3. ...
491
+ ═══════════════════════════════════════════════════════
492
+ ```
493
+
494
+ ---
495
+
496
+ ## MODULE: OPTIMIZE
497
+
498
+ ### Назначение
499
+
500
+ Итеративное улучшение Claude Code артефактов через эволюционный цикл: мутация → оценка → отбор → crossover → повторение.
501
+
502
+ ### Теоретическая основа: адаптация EvoPrompt
503
+
504
+ BTO OPTIMIZE основан на EvoPrompt (Guo et al., 2023 — "Connecting Large Language Models with Evolutionary Algorithms"), адаптированном для структурированных документов:
505
+
506
+ | EvoPrompt (оригинал) | BTO OPTIMIZE (адаптация) |
507
+ |---------------------|--------------------------|
508
+ | Случайная инициализация популяции | 5 направленных мутаций (strategy-driven) |
509
+ | Обобщённые мутации | Именованные стратегии (Rephrase / Restructure / Add Constraints / Simplify / Specialize) |
510
+ | Случайный crossover | Crossover по силам (секционный уровень) |
511
+ | Метрика точности на датасете | Оценки панели судей (мульти-измерение) |
512
+ | Многие поколения | 3 раунда (ограниченный бюджет) |
513
+
514
+ ### Предусловия для запуска OPTIMIZE
515
+
516
+ 1. Артефакт должен пройти Layer 0 (запуск TEST первым)
517
+ 2. Базовая оценка Layer 2 установлена
518
+ 3. **Только если baseline < 8.0** — артефакты с baseline ≥ 8.0 уже высокого качества
519
+
520
+ ### Протокол трёх раундов
521
+
522
+ ```
523
+ ┌──────────────────────────────────────────────────────────────────┐
524
+ │ ROUND 0: Baseline │
525
+ │ TEST (Layer 2) на текущем артефакте │
526
+ │ → Определить target dimensions (score < 7.0) │
527
+ └──────────────────────────────────┬───────────────────────────────┘
528
+ │
529
+ ▼
530
+ ┌──────────────────────────────────────────────────────────────────┐
531
+ │ ROUND 1: Mutation + Fast Eval │
532
+ │ 5 воркеров × 1 мутация → 5 вариантов │
533
+ │ 5 haiku агентов параллельно → быстрые оценки │
534
+ │ Отбор Top-2 │
535
+ └──────────────────────────────────┬───────────────────────────────┘
536
+ │ Top-2
537
+ ▼
538
+ ┌──────────────────────────────────────────────────────────────────┐
539
+ │ ROUND 2: Crossover + Fast Eval │
540
+ │ Top-2 → crossover → 3 новых варианта │
541
+ │ 3 haiku агента параллельно → быстрые оценки │
542
+ │ Отбор Top-2 │
543
+ └──────────────────────────────────┬───────────────────────────────┘
544
+ │ Top-2
545
+ ▼
546
+ ┌──────────────────────────────────────────────────────────────────┐
547
+ │ ROUND 3 (FINAL): Crossover + Full Panel │
548
+ │ Top-2 → crossover → 3 финальных варианта │
549
+ │ 3 варианта × Layer 2 (полная панель) ← используем sonnet! │
550
+ │ Выбор победителя │
551
+ └──────────────────────────────────────────────────────────────────┘
552
+ ```
553
+
554
+ ### Стратегии мутации
555
+
556
+ | Стратегия | Описание | Когда применять |
557
+ |-----------|----------|----------------|
558
+ | `expand-depth` | Добавить конкретные примеры, edge cases, неочевидные детали | Тонкие секции, низкий DEPTH |
559
+ | `compress-clarity` | Убрать избыточность, улучшить сигнал/шум, сжать язык | Многословные артефакты, низкий CLARITY |
560
+ | `reframe-domain` | Переформулировать контент через другую доменную линзу | Обобщённые утверждения, низкий CORRECTNESS |
561
+ | `add-metrics` | Заменить расплывчатые утверждения количественными | Абстрактные рекомендации без цифр |
562
+ | `invert-critic` | Напрямую адресовать blocking issues от Critic | Низкая оценка Critic |
563
+ | `fill-gaps` | Расширить отсутствующие или stub-секции | Низкая оценка Auditor |
564
+ | `crossover` | Объединить лучшие элементы двух вариантов | Финальный раунд, поздняя стадия |
565
+
566
+ ### Маппинг стратегий на слабые измерения
567
+
568
+ | Слабое измерение | Основная стратегия | Вторичная стратегия |
569
+ |-----------------|-------------------|-------------------|
570
+ | METHODOLOGY | Restructure → reframe-domain | add-metrics |
571
+ | DEPTH | expand-depth | fill-gaps |
572
+ | CORRECTNESS | add-metrics | reframe-domain |
573
+ | USABILITY | compress-clarity | fill-gaps |
574
+ | ROBUSTNESS | expand-depth + edge cases | invert-critic |
575
+
576
+ ### Архитектура воркеров мутации
577
+
578
+ **Standard Round: 3 воркера (sonnet)**
579
+ ```
580
+ Worker 1: strategy="expand-depth", variants=2
581
+ Worker 2: strategy="add-metrics", variants=1
582
+ Worker 3: strategy="invert-critic", variants=2
583
+ ```
584
+
585
+ **Crossover Round: 2 воркера**
586
+ ```
587
+ Worker 1: strategy="crossover", model=opus (требует creative synthesis)
588
+ Worker 2: strategy="compress-clarity",model=sonnet
589
+ ```
590
+
591
+ ### Inline Layer 0 Self-Check в воркерах
592
+
593
+ Каждый воркер перед сохранением варианта выполняет inline-проверку:
594
+
595
+ ```
596
+ - [ ] Все обязательные секции присутствуют
597
+ - [ ] Нет placeholder-контента: [TODO], [TBD], <INSERT>, ???
598
+ - [ ] Длина в допустимых пределах: MIN_TOKENS < длина < MAX_TOKENS
599
+ - [ ] Нет самоцитирования (вариант не ссылается сам на себя)
600
+ - [ ] Мутация содержательна (diff от базы > 10% контента)
601
+ ```
602
+
603
+ Если проверка не проходит → логировать причину в mutation-log, пропустить вариант.
604
+
605
+ ### Crossover Protocol
606
+
607
+ Crossover выполняется Opus агентом и использует strength-based подход:
608
+ - Секции, где Variant A имеет более высокий score → брать из A
609
+ - Секции, где Variant B имеет более высокий score → брать из B
610
+ - Противоречия разрешаются явно
611
+
612
+ ```
613
+ Агент Crossover получает:
614
+ • Variant A (score: X) + evaluation A
615
+ • Variant B (score: Y) + evaluation B
616
+ • Инструкцию: что взять из A, что из B
617
+ • Инструкцию: разрешить все противоречия явно
618
+ • Ограничение: выдать ПОЛНЫЙ артефакт (не diff)
619
+ ```
620
+
621
+ ### Условия сходимости и аварийного останова
622
+
623
+ | Условие | Действие |
624
+ |---------|---------|
625
+ | Delta ≤ 0.5 в 3 последовательных раундах | Объявить сходимость, остановить |
626
+ | Regression > 1.0 от baseline | Откат к предыдущему лучшему, логирование |
627
+ | Любой раунд показывает общую регрессию > 0.5 | Немедленный останов |
628
+ | Layer 0 fail rate > 50% в одном раунде | Остановиться, требуется human review |
629
+ | Количество раундов > 10 | Прерывание, сдать лучший найденный |
630
+ | Количество haiku оценок > 50 в сессии | Предупреждение, продолжение только с одобрения |
631
+ | Crossover score < оба родителя | Отбросить crossover, оставить лучшего родителя |
632
+
633
+ ### Стоимостная модель одного полного цикла OPTIMIZE
634
+
635
+ | Операция | Количество | Модель | Оценка токенов |
636
+ |---------|-----------|--------|----------------|
637
+ | Baseline eval | 1 | sonnet × 3 | ~15K |
638
+ | Variant generation (Round 1) | 5 | opus | ~25K |
639
+ | Round 1 fast eval | 5 | haiku | ~10K |
640
+ | Crossover generation (Round 2) | 3 | opus | ~15K |
641
+ | Round 2 fast eval | 3 | haiku | ~6K |
642
+ | Crossover generation (Round 3) | 3 | opus | ~15K |
643
+ | Round 3 full panel | 3 | sonnet × 3 | ~45K |
644
+ | **Итого** | | | **~131K токенов** |
645
+
646
+ ---
647
+
648
+ ## Agent Swarm архитектура
649
+
650
+ ### Паттерны параллельного исполнения
651
+
652
+ BTO использует три паттерна параллельного исполнения агентов:
653
+
654
+ **Паттерн 1: Параллельная панель судей (Layer 2)**
655
+ ```
656
+ Артефакт ──┬──→ Judge 1 (Expert, sonnet) ──┐
657
+ ├──→ Judge 2 (Critic, sonnet) ──┼──→ Aggregator → Verdict
658
+ └──→ Judge 3 (Auditor, sonnet) ──┘
659
+ ```
660
+ Время: ~30 сек (параллельно вместо ~90 сек последовательно)
661
+
662
+ **Паттерн 2: Параллельные воркеры мутации**
663
+ ```
664
+ Base Artifact ──┬──→ Worker 1 (expand-depth) ──→ Variant 1-A, 1-B
665
+ ├──→ Worker 2 (add-metrics) ──→ Variant 2-A
666
+ └──→ Worker 3 (invert-critic) ──→ Variant 3-A, 3-B
667
+ ```
668
+
669
+ **Паттерн 3: Параллельная haiku fast-eval**
670
+ ```
671
+ Variant 1-A ──→ haiku eval ──→ score-1-A.txt ┐
672
+ Variant 1-B ──→ haiku eval ──→ score-1-B.txt │
673
+ Variant 2-A ──→ haiku eval ──→ score-2-A.txt ├──→ Ranking → Top-K
674
+ Variant 3-A ──→ haiku eval ──→ score-3-A.txt │
675
+ Variant 3-B ──→ haiku eval ──→ score-3-B.txt ┘
676
+ ```
677
+
678
+ ### Модельная матрица
679
+
680
+ | Роль | Модель | Обоснование |
681
+ |------|--------|-------------|
682
+ | Layer 0 проверки | None (детерм.) | Бесплатно, мгновенно |
683
+ | Layer 1 Quick Judge | haiku | Дёшево, быстро, достаточно для направления |
684
+ | Layer 2 Domain Expert | sonnet | Domain knowledge + тонкая оценка |
685
+ | Layer 2 Critic | sonnet | Adversarial analysis, pattern detection |
686
+ | Layer 2 Completeness Auditor | sonnet | Структурная проверка |
687
+ | Layer 3 Meta-Judge | opus (default) | Только при разногласии, требует рассуждения |
688
+ | Mutation Workers | sonnet | Требует reasoning об улучшениях |
689
+ | Crossover Worker | opus (default) | Творческий синтез лучших элементов |
690
+ | Fast-Eval Agents | haiku | Объёмное ранжирование перед full panel |
691
+
692
+ ### Стратегия именования агентов
693
+
694
+ Единообразная система именования для отслеживания:
695
+ ```
696
+ "BTO Judge 1 — Domain Expert"
697
+ "BTO Judge 2 — Critic"
698
+ "BTO Judge 3 — Completeness Auditor"
699
+ "BTO Meta-Judge"
700
+ "BTO Optimizer — expand-depth"
701
+ "BTO Optimizer — invert-critic"
702
+ "BTO Layer 1 Fast Eval — variant-2-A"
703
+ "BTO Crossover"
704
+ ```
705
+
706
+ ### Anti-conformity меры
707
+
708
+ Предотвращение конформизма судей (когда все агенты сходятся к одному мнению):
709
+
710
+ 1. **Role Differentiation** — у каждого судьи уникальный фокус и калибровка
711
+ 2. **Critic Calibration** — Critic намеренно инструктирован давать средние оценки ~5-6
712
+ 3. **Independent Evaluation** — ни один судья не видит оценки других до агрегации
713
+ 4. **Disagreement as Signal** — высокое разногласие сигнализирует о важных измерениях качества
714
+ 5. **Diverse Prompts** — каждый судья получает по-разному сформулированный оценочный промпт
715
+
716
+ ---
717
+
718
+ ## Диаграммы потоков данных
719
+
720
+ ### Полный BTO пайплайн (BUILD → TEST → OPTIMIZE)
721
+
722
+ ```mermaid
723
+ flowchart TD
724
+ START(["/bto [description or path]"]) --> DETECT{"Тип запроса?"}
725
+
726
+ DETECT -->|"Описание нового артефакта"| BUILD
727
+ DETECT -->|"Путь к существующему артефакту"| TEST_ENTRY
728
+
729
+ subgraph BUILD ["MODULE: BUILD"]
730
+ B1["Определить тип артефакта"]
731
+ B2{"Режим?"}
732
+ B3["QUICK: прямая генерация"]
733
+ B4["DEEP: загрузить explore skill\n→ кларификация требований"]
734
+ B5["Выбрать шаблон"]
735
+ B6["Генерация артефакта"]
736
+ B7["Self-review (Layer 0 inline)"]
737
+ B8{"Проверка пройдена?"}
738
+ B9["Исправить проблемы"]
739
+ B10["Сохранить артефакт"]
740
+
741
+ B1 --> B2
742
+ B2 -->|"чёткие требования"| B3
743
+ B2 -->|"нечёткие требования"| B4
744
+ B3 --> B5
745
+ B4 --> B5
746
+ B5 --> B6
747
+ B6 --> B7
748
+ B7 --> B8
749
+ B8 -->|"Нет"| B9
750
+ B9 --> B7
751
+ B8 -->|"Да"| B10
752
+ end
753
+
754
+ B10 --> TEST_ENTRY
755
+
756
+ subgraph TEST ["MODULE: TEST"]
757
+ T0["Layer 0:\nДетерминистические проверки"]
758
+ T0G{"≥ 80% passed?"}
759
+ T1["Layer 1:\nhaiku quick eval"]
760
+ T1G{"Average score?"}
761
+ T2["Layer 2:\n3 судьи параллельно"]
762
+ T2G{"Disagreement > 3?"}
763
+ T3["Layer 3:\nMeta-Judge (opus)"]
764
+ REPORT["Evaluation Report"]
765
+
766
+ T0 --> T0G
767
+ T0G -->|"FAIL"| FAIL_L0(["FAIL: вернуть отчёт\nс конкретными ошибками"])
768
+ T0G -->|"PASS"| T1
769
+ T1 --> T1G
770
+ T1G -->|"< 5.0 (FAIL)"| FAIL_L1(["FAIL: требует исправления"])
771
+ T1G -->|"≥ 5.0"| T2
772
+ T2 --> T2G
773
+ T2G -->|"Да"| T3
774
+ T2G -->|"Нет"| REPORT
775
+ T3 --> REPORT
776
+ end
777
+
778
+ TEST_ENTRY --> T0
779
+
780
+ REPORT --> OPT_CHECK{"Baseline < 8.0?"}
781
+ OPT_CHECK -->|"Нет (≥ 8.0)"| DONE(["DONE: артефакт высокого качества\nтолько minor tweaks"])
782
+ OPT_CHECK -->|"Да"| OPTIMIZE
783
+
784
+ subgraph OPTIMIZE ["MODULE: OPTIMIZE"]
785
+ O1["Определить target dimensions\n(score < 7.0)"]
786
+ O2["Round 1: 5 мутаций\n(воркеры параллельно)"]
787
+ O3["Fast eval: 5 haiku агентов\n(параллельно)"]
788
+ O4["Отбор Top-2"]
789
+ O5["Round 2: Crossover\n→ 3 варианта"]
790
+ O6["Fast eval: 3 haiku агентов"]
791
+ O7["Round 3: Crossover\n→ 3 финальных варианта"]
792
+ O8["Full Layer 2 eval\n(3 × 3 sonnet параллельно)"]
793
+ O9["Выбор победителя"]
794
+ O10["Отчёт: Before/After delta\n+ changelog"]
795
+
796
+ O1 --> O2
797
+ O2 --> O3
798
+ O3 --> O4
799
+ O4 --> O5
800
+ O5 --> O6
801
+ O6 --> O4_2["Отбор Top-2 (Round 2)"]
802
+ O4_2 --> O7
803
+ O7 --> O8
804
+ O8 --> O9
805
+ O9 --> O10
806
+ end
807
+
808
+ O10 --> FINAL(["CHECKPOINT: Применить изменения?"])
809
+ ```
810
+
811
+ ### Поток данных между файлами (одна оптимизация)
812
+
813
+ ```mermaid
814
+ graph LR
815
+ subgraph "Входные файлы"
816
+ BASE["base_artifact.md"]
817
+ RUBRIC["rubric.md"]
818
+ end
819
+
820
+ subgraph "Round 1"
821
+ V1A["variant-1-A.md\n(expand-depth)"]
822
+ V1B["variant-1-B.md\n(expand-depth)"]
823
+ V2A["variant-2-A.md\n(add-metrics)"]
824
+ V3A["variant-3-A.md\n(invert-critic)"]
825
+ V3B["variant-3-B.md\n(invert-critic)"]
826
+ S1["scores/score-*.txt"]
827
+ RANK1["round-1-ranking.md"]
828
+ MLOG["mutation-log-*.md"]
829
+ end
830
+
831
+ subgraph "Round 2"
832
+ CROSS1["variant-crossover.md"]
833
+ V4A["variant-4-A.md"]
834
+ V4B["variant-4-B.md"]
835
+ S2["scores/round2-score-*.txt"]
836
+ RANK2["round-2-ranking.md"]
837
+ end
838
+
839
+ subgraph "Round 3 (Final)"
840
+ CROSS2["final-variant-A.md"]
841
+ CROSS3["final-variant-B.md"]
842
+ CROSS4["final-variant-C.md"]
843
+ J1["judge-1.md\nJ2/J3 × 3 variants"]
844
+ PANEL["panel-verdict.md\n× 3 variants"]
845
+ WINNER["winner.md"]
846
+ end
847
+
848
+ subgraph "Отчёты"
849
+ OPT_REPORT["optimization-report.md\nBefore/After delta"]
850
+ end
851
+
852
+ BASE --> V1A & V1B & V2A & V3A & V3B
853
+ RUBRIC --> S1
854
+ V1A & V1B & V2A & V3A & V3B --> S1
855
+ S1 --> RANK1
856
+ V1A & V1B & V2A & V3A & V3B --> MLOG
857
+ RANK1 -->|"Top-2"| CROSS1 & V4A & V4B
858
+ CROSS1 & V4A & V4B --> S2
859
+ S2 --> RANK2
860
+ RANK2 -->|"Top-2"| CROSS2 & CROSS3 & CROSS4
861
+ CROSS2 & CROSS3 & CROSS4 --> J1
862
+ J1 --> PANEL
863
+ PANEL --> WINNER
864
+ WINNER --> OPT_REPORT
865
+ ```
866
+
867
+ ---
868
+
869
+ ## Архитектура quality gates
870
+
871
+ ### Иерархия ворот
872
+
873
+ Каждый gate является необходимым условием для перехода к следующему уровню:
874
+
875
+ ```mermaid
876
+ graph TD
877
+ ART["Артефакт"] --> G0{"Gate 0\nLayer 0 pass rate\n≥ 80%?"}
878
+
879
+ G0 -->|FAIL| R0["Вернуть отчёт:\nконкретные ошибки\nАвто-retry до 3 раз"]
880
+ G0 -->|PASS| G1{"Gate 1\nLayer 1 average\n≥ 5.0?"}
881
+
882
+ G1 -->|"< 5.0 (FAIL)"| R1["FAIL: требует серьёзных исправлений\nне идти в Layer 2"]
883
+ G1 -->|"5.0-6.9 (NEEDS WORK)"| L2_NW["Layer 2 для детального feedback"]
884
+ G1 -->|"≥ 7.0 (PASS)"| L2_PASS["Layer 2 для финальной оценки"]
885
+
886
+ L2_NW --> G2{"Gate 2\nLayer 2 overall\n≥ 7.0?"}
887
+ L2_PASS --> G2
888
+
889
+ G2 -->|FAIL| R2["FAIL: нужна доработка перед оптимизацией"]
890
+ G2 -->|"PASS, но disagreement"| G3{"Gate 3\nMeta-Judge\nresolved?"}
891
+ G2 -->|"PASS, без disagreement"| DELIVER["Готов к OPTIMIZE\nили к поставке"]
892
+
893
+ G3 -->|"Resolved"| DELIVER
894
+ G3 -->|"Unresolvable"| HUMAN["Эскалация на человека\nHuman Checkpoint ОБЯЗАТЕЛЕН"]
895
+
896
+ DELIVER --> G4{"Gate 4\nOPTIMIZE\nbaseline < 8.0?"}
897
+
898
+ G4 -->|"≥ 8.0"| DONE["Артефакт высокого качества\nтолько minor tweaks"]
899
+ G4 -->|"< 8.0"| OPT_START["Запустить OPTIMIZE\n3 раунда"]
900
+ ```
901
+
902
+ ### Quality Gates из bto-quality-gates.md
903
+
904
+ Правило `bto-quality-gates.md` автоматически применяется ко всем BTO операциям и определяет:
905
+
906
+ **Layer Architecture (обязательная последовательность):**
907
+ - Никогда не продвигать артефакт на более высокий слой при провале нижнего
908
+ - Layer 0 может авто-повторяться до 3 раз перед эскалацией на человека
909
+
910
+ **Обязательные Layer 0 проверки (5 универсальных):**
911
+ ```
912
+ - [ ] Требуемые секции присутствуют (структурная проверка)
913
+ - [ ] Нет пустых placeholder-ов ([TODO], [TBD], <INSERT>)
914
+ - [ ] Длина в допустимых пределах (не ниже минимума, не выше максимума)
915
+ - [ ] Кодировка валидна (нет битого unicode, нет бинарных артефактов)
916
+ - [ ] Нет петель самоссылки (артефакт не цитирует себя как источник)
917
+ ```
918
+
919
+ **Judge Panel Rules:**
920
+ - Нечётное количество судей: 3 (стандарт) или 5 (high-stakes)
921
+ - Изоляция: каждый судья читает одинаковый артефакт, пишет в отдельный файл
922
+ - Нет коммуникации между судьями до агрегации
923
+ - Финальная оценка = weighted average
924
+ - Порог разногласия: если max - min > 3 → Meta-Judge
925
+
926
+ **Optimization Delta Gate:**
927
+ - Итерация принимается ТОЛЬКО если: new_score - prev_score > 0.5
928
+ - Если delta ≤ 0.5 в 3 последовательных раундах → объявить сходимость
929
+ - Если score снижается > 1.0 → откат к предыдущему лучшему
930
+
931
+ **Human Checkpoint Rules:**
932
+ - НИКОГДА не авто-одобрять артефакт для поставки без human checkpoint
933
+ - Checkpoint обязателен после: Layer 2 оценки, финального раунда оптимизации, перед packaging
934
+
935
+ ---
936
+
937
+ ## Система обнаружения anti-patterns
938
+
939
+ BTO имеет двухуровневую систему обнаружения anti-patterns:
940
+
941
+ ### Уровень 1: Автоматическое обнаружение (в процессе работы)
942
+
943
+ ```
944
+ При генерации контента (BUILD):
945
+ → Self-check против quality-checklist.md
946
+ → При обнаружении: исправить до вывода
947
+
948
+ При оценке (TEST, Layer 2):
949
+ → Judge 2 (Critic) специализируется на поиске anti-patterns
950
+ → Anti-pattern cap: если обнаружен — кап критерия на уровне 5
951
+
952
+ При оптимизации (OPTIMIZE):
953
+ → Воркер invert-critic специально адресует blocking issues от Critic
954
+ → Layer 0 self-check в каждом воркере
955
+ ```
956
+
957
+ ### Уровень 2: Таблица BTO-специфичных anti-patterns
958
+
959
+ | Anti-Pattern | Сигнал обнаружения | Обязательное исправление |
960
+ |-------------|--------------------|-----------------------|
961
+ | Score inflation | Все судьи дают > 8.5 с первой попытки | Добавить calibration prompt к Critic |
962
+ | Overfitting to rubric | Артефакт оптимизирует формулировки буквально под рубрику | Blind evaluation: скрыть рубрику от генератора |
963
+ | Conformity collapse | Судьи сходятся к идентичным оценкам после 1 раунда | Enforced isolation, рандомизировать порядок судей |
964
+ | Runaway optimization | > 10 итераций без сходимости | Прерывание, логирование, human review |
965
+ | Phantom improvement | Delta > 0.5, но содержательных изменений нет | Diff-check контента, не только score |
966
+ | Judge-generator collusion | Одна модель для генерации И для оценки | BLOCK — генератор и судьи должны использовать разные модели |
967
+ | Missing rejection log | Отклонённые артефакты молча выброшены | Каждый отказ ДОЛЖЕН быть залогирован с причиной |
968
+
969
+ ---
970
+
971
+ ## Интеграция с Keysarium
972
+
973
+ BTO разработан как standalone-система, но имеет готовые точки интеграции с `@dzhechko/keysarium`:
974
+
975
+ ### Точки применения в Keysarium пайплайне
976
+
977
+ | Фаза Keysarium | BTO применение |
978
+ |---------------|----------------|
979
+ | Создание нового скилла | `/bto-build "describe skill"` |
980
+ | Улучшение существующего скилла | `/bto-optimize .claude/skills/<name>/SKILL.md` |
981
+ | После Phase 0 | `/bto-test researches/<slug>/00_product_discovery.md` |
982
+ | После Phase 2 | `/bto-test researches/<slug>/02_research_findings.md` |
983
+ | После Phase 5 | `/bto-test researches/<slug>/05_presentation_content.md` |
984
+
985
+ ### Автономная установка
986
+
987
+ ```bash
988
+ npx dz-skills-bto init # Установить BTO в любой проект
989
+ npx dz-skills-bto doctor # Проверить здоровье установки
990
+ ```
991
+
992
+ `init` устанавливает:
993
+ ```
994
+ .claude/skills/bto/ ← Основной скилл
995
+ .claude/agents/bto-*.md ← Шаблоны агентов
996
+ .claude/commands/bto*.md ← Slash-команды
997
+ .claude/rules/bto-quality-gates.md ← Quality gates (автоматически)
998
+ ```
999
+
1000
+ ### Отличия поведения BTO в контексте Keysarium
1001
+
1002
+ Когда BTO работает внутри Keysarium проекта, автоматически применяются:
1003
+ - Checkpoint протокол (`checkpoint-protocol.md`) — баннер после каждого завершения
1004
+ - Doменные правила (`domain-specific.md`) — если оцениваются research артефакты
1005
+ - Agent Swarm правила (`agent-swarm.md`) — именование агентов, cost optimization
1006
+
1007
+ ---
1008
+
1009
+ ## Расширяемость системы
1010
+
1011
+ ### Кастомные рубрики
1012
+
1013
+ Для оценки нестандартных артефактов создайте кастомный файл рубрики:
1014
+
1015
+ ```markdown
1016
+ # Custom Rubric: [Artifact Type]
1017
+
1018
+ ## Evaluation Dimensions (1-10 each)
1019
+
1020
+ | Dimension | Description | Weight |
1021
+ |-----------|-------------|--------|
1022
+ | [DIM_1] | ... | 0.X |
1023
+ | [DIM_2] | ... | 0.X |
1024
+ ...
1025
+
1026
+ ## Pass Threshold
1027
+ Overall ≥ [X.X]
1028
+
1029
+ ## Anti-Patterns for This Type
1030
+ ...
1031
+ ```
1032
+
1033
+ Передать в BTO команду через: `/bto-test [path] rubric=[custom-rubric-path]`
1034
+
1035
+ ### Кастомные судьи
1036
+
1037
+ Для специализированных оценок можно добавить кастомных судей в панель. Шаблон на основе `bto-judge-panel.md`:
1038
+
1039
+ ```markdown
1040
+ # Agent Template: BTO Judge — [Custom Role]
1041
+
1042
+ ## Purpose
1043
+ [Специализация]
1044
+
1045
+ ## Calibration
1046
+ [Инструкция по калибровке: строгий/либеральный/нейтральный]
1047
+
1048
+ ## Evaluation Criteria
1049
+ [3 критерия с весами]
1050
+
1051
+ ## Weight in Panel
1052
+ [0.X — должна соответствовать сумме 1.0 по всем судьям]
1053
+ ```
1054
+
1055
+ Нечётное количество судей обязательно: 3 (стандарт), 5 (high-stakes).
1056
+
1057
+ ### Кастомные стратегии мутации
1058
+
1059
+ Добавить в `bto-optimizer-worker.md` в таблицу Mutation Strategies:
1060
+
1061
+ ```markdown
1062
+ | `your-strategy` | Описание что делает | Когда применять |
1063
+ ```
1064
+
1065
+ Затем написать текстовое описание стратегии для варианта generation prompt. Воркеры подберут новую стратегию автоматически.
1066
+
1067
+ ### Кастомные Layer 0 проверки
1068
+
1069
+ Добавить новый тип артефакта в `modules/test.md` и `references/quality-checklist.md`:
1070
+
1071
+ ```
1072
+ ### Your Artifact Type Checks
1073
+
1074
+ CHECK-X1: [Проверка 1]
1075
+ CHECK-X2: [Проверка 2]
1076
+ ...
1077
+ ```
1078
+
1079
+ Добавить обнаружение типа в таблицу Type Detection в `modules/test.md`.
1080
+
1081
+ ---
1082
+
1083
+ ## Проектные решения и компромиссы
1084
+
1085
+ ### Почему эволюционный подход, а не gradient descent?
1086
+
1087
+ Claude Code артефакты — структурированные документы с чёткими секциями. Мутации на уровне секций более осмыслены, чем токен-уровневые правки. Diversity в популяции предотвращает схождение к единственному стилю.
1088
+
1089
+ Альтернативы рассматривались:
1090
+ - **TextGrad**: хорошо для одиночных промптов, но не для multi-section документов
1091
+ - **DSPy**: требует Python framework, не работает в Claude Code context
1092
+ - **OPRO**: может застрять в локальных оптимумах, дорого
1093
+
1094
+ ### Почему именно 3 раунда?
1095
+
1096
+ Эмпирически: убывающая отдача после Round 3. Стоимостная модель: 15 оценок практически достижимы. Layer 2 на финальном раунде гарантирует качество отбора.
1097
+
1098
+ ### Почему haiku для Layer 1 и sonnet для Layer 2?
1099
+
1100
+ Layer 1 нужна только грубая направленная оценка (направление улучшения). Haiku достаточно для этой задачи и в ~10x дешевле. Layer 2 требует глубокого reasoning о methodology и domain fit — здесь sonnet оправдан.
1101
+
1102
+ ### Почему Critic имеет вес 0.3, а не 0.4?
1103
+
1104
+ Если Critic получает максимальный вес, артефакты оптимизируются быть "неуязвимыми к критике", а не "высококачественными". Expert с весом 0.4 гарантирует, что позитивная domain-обоснованность имеет большее значение.
1105
+
1106
+ ### Почему Meta-Judge не автоматически разрешает ВСЕ разногласия?
1107
+
1108
+ Высокое разногласие само по себе является сигналом о неоднозначности качества артефакта. Некоторые разногласия не разрешимы без человеческого суждения о контексте применения. Принудительное разрешение Opus-ом скрыло бы эту информацию.
1109
+
1110
+ ### Почему Crossover использует Opus, а мутации — sonnet?
1111
+
1112
+ Crossover требует синтеза: найти лучшие части двух разных вариантов, совместить их когерентно и разрешить противоречия. Это творческая задача высшего уровня. Мутации следуют чёткой именованной стратегии и требуют только reasoning — sonnet достаточно.