@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.
- package/README.md +289 -0
- package/bin/cli.js +5 -0
- package/package.json +43 -0
- package/src/cli.js +157 -0
- package/src/commands/doctor.js +469 -0
- package/src/commands/init.js +171 -0
- package/src/commands/list.js +147 -0
- package/src/commands/remove.js +197 -0
- package/src/commands/update.js +191 -0
- package/src/utils.js +274 -0
- package/templates/.claude/agents/cjm-variant-worker.md +60 -0
- package/templates/.claude/agents/discovery-worker.md +45 -0
- package/templates/.claude/agents/parallel-research-orchestrator.md +70 -0
- package/templates/.claude/agents/presentation-worker.md +55 -0
- package/templates/.claude/agents/research-worker.md +43 -0
- package/templates/.claude/commands/architecture-phase.md +37 -0
- package/templates/.claude/commands/casarium.md +163 -0
- package/templates/.claude/commands/cjm-prototype.md +42 -0
- package/templates/.claude/commands/discovery.md +34 -0
- package/templates/.claude/commands/explore-case.md +22 -0
- package/templates/.claude/commands/harvest.md +67 -0
- package/templates/.claude/commands/new-research.md +69 -0
- package/templates/.claude/commands/parallel-research.md +45 -0
- package/templates/.claude/commands/presentation.md +49 -0
- package/templates/.claude/commands/research.md +32 -0
- package/templates/.claude/commands/solve.md +36 -0
- package/templates/.claude/rules/agent-swarm.md +31 -0
- package/templates/.claude/rules/anti-patterns.md +19 -0
- package/templates/.claude/rules/checkpoint-protocol.md +23 -0
- package/templates/.claude/rules/domain-specific.md +32 -0
- package/templates/.claude/rules/file-conventions.md +38 -0
- package/templates/.claude/rules/modular-reuse.md +35 -0
- package/templates/.claude/rules/research-quality.md +20 -0
- package/templates/.claude/settings.json +37 -0
- package/templates/.claude/skills/explore/SKILL.md +215 -0
- package/templates/.claude/skills/explore/references/questioning-techniques.md +151 -0
- package/templates/.claude/skills/explore/references/task-brief-templates.md +355 -0
- package/templates/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/.claude/skills/frontend-design/SKILL.md +42 -0
- package/templates/.claude/skills/goap-research-ed25519/SKILL.md +415 -0
- package/templates/.claude/skills/goap-research-ed25519/references/ed25519-verification.md +658 -0
- package/templates/.claude/skills/goap-research-ed25519/references/research-actions.md +544 -0
- package/templates/.claude/skills/goap-research-ed25519/references/source-evaluation.md +560 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py +662 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/goap_planner.py +720 -0
- package/templates/.claude/skills/presentation-storyteller/SKILL.md +371 -0
- package/templates/.claude/skills/presentation-storyteller/references/example-presentation.md +273 -0
- package/templates/.claude/skills/presentation-storyteller/references/slide-types.md +426 -0
- package/templates/.claude/skills/presentation-storyteller/references/sources-index-template.md +213 -0
- package/templates/.claude/skills/presentation-storyteller/references/speaker-script-patterns.md +324 -0
- package/templates/.claude/skills/presentation-storyteller/references/storytelling-frameworks.md +270 -0
- package/templates/.claude/skills/problem-solver-enhanced/SKILL.md +562 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/SKILL.md +194 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-cjm-example.md +100 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/examples/noom-module1-example.md +88 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/01-intelligence.md +328 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/02-product-customers.md +221 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/025-cjm-prototype.md +206 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/03-market-competition.md +402 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/04-business-finance.md +287 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/05-growth-engine.md +290 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/06-playbook-synthesis.md +286 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/blue-ocean-canvas.md +39 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/industry-benchmarks.md +67 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/references/jtbd-canvas.md +48 -0
- package/templates/CLAUDE.md +185 -0
- package/templates/TOOLKIT_HARVEST.md +29 -0
- package/templates/docs/keysarium/01-deployment-guide.md +768 -0
- package/templates/docs/keysarium/02-admin-guide.md +1170 -0
- package/templates/docs/keysarium/03-user-guide.md +884 -0
- package/templates/docs/keysarium/04-infrastructure-requirements.md +967 -0
- package/templates/docs/keysarium/05-architecture.md +706 -0
- package/templates/docs/keysarium/06-user-flows.md +925 -0
- package/templates/docs/skills-bto/01-deployment-guide.md +828 -0
- package/templates/docs/skills-bto/02-admin-guide.md +1052 -0
- package/templates/docs/skills-bto/03-user-guide.md +960 -0
- package/templates/docs/skills-bto/04-infrastructure-requirements.md +610 -0
- package/templates/docs/skills-bto/05-architecture.md +1112 -0
- package/templates/docs/skills-bto/06-user-flows.md +977 -0
- package/templates/lib/agent-patterns.md +115 -0
- package/templates/lib/domain-templates.md +172 -0
- package/templates/lib/phase-utils.md +107 -0
- package/templates/lib/skill-loader.md +78 -0
- package/templates/researches/.gitkeep +0 -0
|
@@ -0,0 +1,977 @@
|
|
|
1
|
+
# 06. Пользовательские и административные flow @dzhechko/skills-bto
|
|
2
|
+
|
|
3
|
+
## Содержание
|
|
4
|
+
|
|
5
|
+
1. [Flow: Полный BTO пайплайн (/bto)](#flow-полный-bto-пайплайн)
|
|
6
|
+
2. [Flow: Build-only (/bto-build)](#flow-build-only)
|
|
7
|
+
3. [Flow: Test-only (/bto-test)](#flow-test-only)
|
|
8
|
+
4. [Flow: Optimize-only (/bto-optimize)](#flow-optimize-only)
|
|
9
|
+
5. [Flow: Панель судей (Layer 2)](#flow-панель-судей-layer-2)
|
|
10
|
+
6. [Flow: Раунд оптимизации (мутация → fast-eval → отбор → full panel)](#flow-раунд-оптимизации)
|
|
11
|
+
7. [Flow: Ошибки и rejection](#flow-ошибки-и-rejection)
|
|
12
|
+
8. [Flow: Human Checkpoint](#flow-human-checkpoint)
|
|
13
|
+
9. [Flow: Интеграция BTO в Keysarium пайплайн](#flow-интеграция-bto-в-keysarium-пайплайн)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Flow: Полный BTO пайплайн
|
|
18
|
+
|
|
19
|
+
### Sequence Diagram
|
|
20
|
+
|
|
21
|
+
```mermaid
|
|
22
|
+
sequenceDiagram
|
|
23
|
+
actor U as User
|
|
24
|
+
participant C as Claude (/bto)
|
|
25
|
+
participant FS as File System
|
|
26
|
+
participant A as Agent Swarm
|
|
27
|
+
|
|
28
|
+
U->>C: /bto .claude/skills/my-skill/
|
|
29
|
+
|
|
30
|
+
Note over C: ═══ MODULE: BUILD (только если новый артефакт) ═══
|
|
31
|
+
|
|
32
|
+
alt Путь существует (оценка + оптимизация)
|
|
33
|
+
C->>FS: Проверить артефакт
|
|
34
|
+
C-->>U: Артефакт найден → запускаем TEST
|
|
35
|
+
else Описание нового артефакта
|
|
36
|
+
C->>C: Определить тип артефакта
|
|
37
|
+
C->>FS: Read .claude/skills/bto/modules/build.md
|
|
38
|
+
C->>C: Сгенерировать артефакт
|
|
39
|
+
C->>FS: Записать новый артефакт
|
|
40
|
+
C-->>U: BUILD Complete ✅
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
Note over C: ═══ MODULE: TEST ═══
|
|
44
|
+
|
|
45
|
+
C->>FS: Read .claude/skills/bto/modules/test.md
|
|
46
|
+
C->>C: Layer 0 — детерминистические проверки
|
|
47
|
+
C-->>U: Layer 0: X/Y passed
|
|
48
|
+
|
|
49
|
+
alt Layer 0 FAIL (< 80%)
|
|
50
|
+
C-->>U: FAIL: конкретные ошибки + рекомендации
|
|
51
|
+
C-->>U: Checkpoint: исправьте и повторите
|
|
52
|
+
else Layer 0 PASS
|
|
53
|
+
C->>A: Spawn haiku agent (Layer 1)
|
|
54
|
+
A-->>C: Layer 1 score: X.X / 10
|
|
55
|
+
alt Layer 1 FAIL (< 5.0)
|
|
56
|
+
C-->>U: FAIL: серьёзные проблемы, Layer 2 не запускается
|
|
57
|
+
else Layer 1 PASS/NEEDS WORK
|
|
58
|
+
C->>A: Spawn 3 judge agents (Layer 2) параллельно
|
|
59
|
+
A->>FS: judge-1.md (Domain Expert)
|
|
60
|
+
A->>FS: judge-2.md (Critic)
|
|
61
|
+
A->>FS: judge-3.md (Completeness Auditor)
|
|
62
|
+
A-->>C: Все 3 оценки готовы
|
|
63
|
+
C->>C: Агрегация: weighted average + disagreement check
|
|
64
|
+
alt Disagreement > 3 (Layer 3)
|
|
65
|
+
C->>A: Spawn Meta-Judge (opus)
|
|
66
|
+
A-->>C: Reconciled score
|
|
67
|
+
end
|
|
68
|
+
C->>FS: Записать panel-verdict.md
|
|
69
|
+
C-->>U: TEST Complete: X.X/10 [PASS/NEEDS WORK/FAIL]
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
Note over C: ═══ MODULE: OPTIMIZE ═══
|
|
74
|
+
|
|
75
|
+
alt Baseline >= 8.0
|
|
76
|
+
C-->>U: Артефакт высокого качества. Minor tweaks only.
|
|
77
|
+
else Baseline < 8.0
|
|
78
|
+
C->>FS: Read .claude/skills/bto/modules/optimize.md
|
|
79
|
+
C->>C: Определить target dimensions (score < 7.0)
|
|
80
|
+
|
|
81
|
+
loop 3 Rounds
|
|
82
|
+
C->>A: Spawn mutation workers (sonnet) параллельно
|
|
83
|
+
A->>FS: variant-N-*.md + mutation-log-N.md
|
|
84
|
+
A-->>C: Варианты готовы
|
|
85
|
+
|
|
86
|
+
C->>A: Spawn haiku fast-eval agents параллельно
|
|
87
|
+
A->>FS: scores/score-*.txt
|
|
88
|
+
A-->>C: Оценки готовы
|
|
89
|
+
|
|
90
|
+
C->>C: Ранжирование → выбор Top-2
|
|
91
|
+
C->>A: Spawn Crossover agent (opus)
|
|
92
|
+
A-->>C: Crossover вариант готов
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
C->>A: Spawn Layer 2 panel на 3 финальных варианта
|
|
96
|
+
A-->>C: Финальные оценки
|
|
97
|
+
C->>C: Выбор победителя
|
|
98
|
+
C->>FS: Записать optimization-report.md
|
|
99
|
+
C-->>U: OPTIMIZE Complete: before X.X → after X.X (+delta)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
Note over C: ═══ HUMAN CHECKPOINT ═══
|
|
103
|
+
|
|
104
|
+
C-->>U: Checkpoint: применить изменения? (да/нет/углубить)
|
|
105
|
+
U->>C: "да"
|
|
106
|
+
C->>FS: Применить победивший вариант → перезаписать артефакт
|
|
107
|
+
C-->>U: BTO Complete ✅
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Step by Step
|
|
111
|
+
|
|
112
|
+
**Шаг 1. Запуск пайплайна**
|
|
113
|
+
```
|
|
114
|
+
User: /bto .claude/skills/my-skill/SKILL.md
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Шаг 2. TEST — Layer 0**
|
|
118
|
+
- Claude читает `modules/test.md`
|
|
119
|
+
- Детерминистические проверки: 10-15 чеков за ~1 сек
|
|
120
|
+
- Например: SKILL.md существует, есть ## Overview, есть ## Anti-Patterns, все referenced modules существуют
|
|
121
|
+
- Если < 80% чеков прошло → вывод отчёта с конкретными ошибками, остановка
|
|
122
|
+
|
|
123
|
+
**Шаг 3. TEST — Layer 1 (haiku)**
|
|
124
|
+
- Один haiku агент оценивает по 5 измерениям
|
|
125
|
+
- Ввод: содержимое артефакта + evaluation prompt
|
|
126
|
+
- Вывод: CLARITY:8, COMPLETENESS:7, ACTIONABILITY:7, QUALITY:8, ANTI-PATTERNS:9
|
|
127
|
+
- Average: 7.8 → PASS
|
|
128
|
+
|
|
129
|
+
**Шаг 4. TEST — Layer 2 (3 × sonnet)**
|
|
130
|
+
- Три sonnet агента спавнятся параллельно
|
|
131
|
+
- Каждый читает тот же артефакт, пишет в отдельный файл
|
|
132
|
+
- После завершения всех трёх: агрегация с весами 0.4/0.3/0.3
|
|
133
|
+
- Проверка разногласий
|
|
134
|
+
|
|
135
|
+
**Шаг 5. OPTIMIZE — 3 раунда**
|
|
136
|
+
- Round 1: 5 направленных мутаций → 5 haiku оценок → Top-2
|
|
137
|
+
- Round 2: crossover → 3 haiku оценок → Top-2
|
|
138
|
+
- Round 3: crossover → 3 × Layer 2 → победитель
|
|
139
|
+
|
|
140
|
+
**Шаг 6. Human Checkpoint**
|
|
141
|
+
- Вывод отчёта: before/after delta по каждому измерению + changelog
|
|
142
|
+
- Пользователь подтверждает применение изменений
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Flow: Build-only
|
|
147
|
+
|
|
148
|
+
### Flowchart
|
|
149
|
+
|
|
150
|
+
```mermaid
|
|
151
|
+
flowchart TD
|
|
152
|
+
START(["/bto-build [описание]"]) --> LOAD
|
|
153
|
+
LOAD["Загрузить modules/build.md"] --> DETECT
|
|
154
|
+
|
|
155
|
+
DETECT{"Определить тип\nартефакта"} --> TYPE_CHECK{"Тип явно\nуказан?"}
|
|
156
|
+
TYPE_CHECK -->|"Нет"| AUTO_DETECT["Авто-определение\nпо ключевым словам"]
|
|
157
|
+
TYPE_CHECK -->|"Да"| MODE_CHECK
|
|
158
|
+
|
|
159
|
+
AUTO_DETECT --> MODE_CHECK{"Режим?"}
|
|
160
|
+
|
|
161
|
+
MODE_CHECK -->|"Чёткие требования\n→ QUICK"| QUICK["QUICK mode:\nПрямая генерация"]
|
|
162
|
+
MODE_CHECK -->|"Нечёткие требования\n→ DEEP"| DEEP["DEEP mode:\nЗагрузить explore skill"]
|
|
163
|
+
|
|
164
|
+
DEEP --> EXPLORE["Кларификация требований:\n• Что именно нужно?\n• Для кого?\n• Input/Output формат?\n• Edge cases?"]
|
|
165
|
+
EXPLORE --> BRIEF["Requirements Brief"]
|
|
166
|
+
BRIEF --> CONFIRM{"Подтвердить\nс пользователем"}
|
|
167
|
+
CONFIRM -->|"ок"| TEMPLATE
|
|
168
|
+
CONFIRM -->|"правки"| EXPLORE
|
|
169
|
+
|
|
170
|
+
QUICK --> TEMPLATE["Выбрать шаблон\nпо типу артефакта"]
|
|
171
|
+
|
|
172
|
+
TEMPLATE --> GEN["Генерация артефакта\n(все обязательные секции)"]
|
|
173
|
+
|
|
174
|
+
GEN --> SELF_REVIEW["Self-Review (Layer 0 inline):\n1. Structure check\n2. Content check\n3. Convention check\n4. Size check"]
|
|
175
|
+
|
|
176
|
+
SELF_REVIEW --> REVIEW_PASS{"Все проверки\nпрошли?"}
|
|
177
|
+
REVIEW_PASS -->|"Нет"| FIX["Исправить\nнайденные проблемы"]
|
|
178
|
+
FIX --> SELF_REVIEW
|
|
179
|
+
REVIEW_PASS -->|"Да"| SAVE
|
|
180
|
+
|
|
181
|
+
SAVE["Сохранить артефакт\n(создать файловую структуру)"]
|
|
182
|
+
|
|
183
|
+
SAVE --> OUTPUT["OUTPUT:\n✅ BUILD Complete\nArtifact: .claude/skills/<name>/\nFiles created: [список]\n\nNext: /bto-test .claude/skills/<name>/"]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Пример: QUICK mode
|
|
187
|
+
|
|
188
|
+
**Вход:**
|
|
189
|
+
```
|
|
190
|
+
User: /bto-build skill for processing CSV files with pandas validation
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Поток исполнения:**
|
|
194
|
+
1. Тип: `skill` (ключевое слово "skill")
|
|
195
|
+
2. Режим: QUICK (чёткое описание)
|
|
196
|
+
3. Шаблон: SKILL.md + modules/ + references/ + examples/
|
|
197
|
+
4. Генерация: структурированный скилл
|
|
198
|
+
5. Self-review: проверка 8 критериев
|
|
199
|
+
6. Вывод: созданные файлы
|
|
200
|
+
|
|
201
|
+
**Пример: DEEP mode**
|
|
202
|
+
|
|
203
|
+
**Вход:**
|
|
204
|
+
```
|
|
205
|
+
User: /bto-build something for analyzing customer behavior
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Поток исполнения:**
|
|
209
|
+
1. Тип: `skill` (можно предположить)
|
|
210
|
+
2. Режим: DEEP (нечёткие требования)
|
|
211
|
+
3. Загрузка `explore` скилла
|
|
212
|
+
4. Кларификационные вопросы:
|
|
213
|
+
- "Что является входными данными: логи, транзакции, сессии?"
|
|
214
|
+
- "Какой формат выхода: отчёт, JSON, диаграммы?"
|
|
215
|
+
- "Какой домен: e-commerce, SaaS, mobile?"
|
|
216
|
+
5. Requirements brief → подтверждение → генерация
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Flow: Test-only
|
|
221
|
+
|
|
222
|
+
### Sequence Diagram с Layer 0 → 1 → 2 → 3 прогрессией
|
|
223
|
+
|
|
224
|
+
```mermaid
|
|
225
|
+
sequenceDiagram
|
|
226
|
+
actor U as User
|
|
227
|
+
participant C as Claude (/bto-test)
|
|
228
|
+
participant FS as File System
|
|
229
|
+
participant H as haiku agent
|
|
230
|
+
participant S1 as Sonnet (Expert)
|
|
231
|
+
participant S2 as Sonnet (Critic)
|
|
232
|
+
participant S3 as Sonnet (Auditor)
|
|
233
|
+
participant O as Opus (Meta-Judge)
|
|
234
|
+
|
|
235
|
+
U->>C: /bto-test .claude/skills/my-skill/
|
|
236
|
+
|
|
237
|
+
Note over C: ─── Layer 0: Deterministic ───
|
|
238
|
+
|
|
239
|
+
C->>FS: Прочитать SKILL.md и директорию
|
|
240
|
+
C->>C: CHECK-U1..U5 (универсальные)
|
|
241
|
+
C->>C: CHECK-S1..S10 (skill-специфичные)
|
|
242
|
+
C-->>U: Layer 0: 9/10 passed (90%) ✅
|
|
243
|
+
|
|
244
|
+
alt Layer 0 FAIL (< 80%)
|
|
245
|
+
C-->>U: Layer 0 FAIL: конкретные ошибки
|
|
246
|
+
C-->>U: ❌ CHECK-S4: Anti-Patterns section missing
|
|
247
|
+
C-->>U: Остановка. Исправьте и повторите.
|
|
248
|
+
Note over C: STOP
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
Note over C: ─── Layer 1: Quick (haiku) ───
|
|
252
|
+
|
|
253
|
+
C->>H: Evaluate artifact (5 dimensions)
|
|
254
|
+
H-->>C: CLARITY:8, COMPLETENESS:7, ACTIONABILITY:8,<br/>QUALITY:7, ANTI-PATTERNS:9
|
|
255
|
+
H-->>C: Average: 7.8 — PASS ✅
|
|
256
|
+
H-->>C: Top 3 improvements: [список]
|
|
257
|
+
|
|
258
|
+
alt Layer 1 FAIL (< 5.0)
|
|
259
|
+
C-->>U: Layer 1 FAIL: серьёзные структурные проблемы
|
|
260
|
+
C-->>U: Layer 2 не запускается. Исправьте сначала.
|
|
261
|
+
Note over C: STOP
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
Note over C: ─── Layer 2: Full Panel (параллельно) ───
|
|
265
|
+
|
|
266
|
+
par Parallel judge execution
|
|
267
|
+
C->>S1: Evaluate as Domain Expert
|
|
268
|
+
and
|
|
269
|
+
C->>S2: Evaluate as Critic
|
|
270
|
+
and
|
|
271
|
+
C->>S3: Evaluate as Completeness Auditor
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
S1->>FS: Записать judge-1.md
|
|
275
|
+
S2->>FS: Записать judge-2.md
|
|
276
|
+
S3->>FS: Записать judge-3.md
|
|
277
|
+
|
|
278
|
+
Note over C: ─── Aggregation ───
|
|
279
|
+
|
|
280
|
+
C->>FS: Прочитать judge-1.md, judge-2.md, judge-3.md
|
|
281
|
+
C->>C: Compute: weighted average (0.4/0.3/0.3)
|
|
282
|
+
C->>C: Disagreement check: max - min per dimension
|
|
283
|
+
|
|
284
|
+
alt Disagreement > 3 (Layer 3)
|
|
285
|
+
Note over C: ─── Layer 3: Meta-Judge ───
|
|
286
|
+
C->>O: Reconcile disagreement on [DIMENSION]
|
|
287
|
+
O-->>C: Reconciled score: 7.5 (Expert had most valid point)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
C->>FS: Записать panel-verdict.md
|
|
291
|
+
C-->>U: Evaluation Report (полный отчёт)
|
|
292
|
+
C-->>U: Checkpoint: результаты оценки
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Пример отчёта TEST
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
═══════════════════════════════════════════════════════
|
|
299
|
+
📊 BTO EVALUATION REPORT
|
|
300
|
+
Artifact: .claude/skills/my-skill/SKILL.md
|
|
301
|
+
Type: skill
|
|
302
|
+
Level: Layer 0 + Layer 1 + Layer 2
|
|
303
|
+
|
|
304
|
+
OVERALL SCORE: 7.4 / 10 [PASS]
|
|
305
|
+
|
|
306
|
+
Per-Dimension:
|
|
307
|
+
METHODOLOGY: 7.8 ████████░░░░
|
|
308
|
+
DEPTH: 6.9 ███████░░░░░ ← ниже 7.0, target для OPTIMIZE
|
|
309
|
+
CORRECTNESS: 8.1 █████████░░░
|
|
310
|
+
USABILITY: 7.2 ████████░░░░
|
|
311
|
+
ROBUSTNESS: 6.8 ███████░░░░░ ← ниже 7.0, target для OPTIMIZE
|
|
312
|
+
|
|
313
|
+
Flagged: DEPTH (Expert:7, Critic:4, Auditor:6 — disagreement=3, Meta-Judge applied)
|
|
314
|
+
|
|
315
|
+
Top Improvements:
|
|
316
|
+
1. [Critic] Добавить конкретные примеры для каждого шага протокола
|
|
317
|
+
2. [Auditor] Раздел edge cases отсутствует в modules/core.md
|
|
318
|
+
3. [Expert] Стратегия не описывает поведение при недоступном API
|
|
319
|
+
═══════════════════════════════════════════════════════
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Level параметр
|
|
323
|
+
|
|
324
|
+
`/bto-test [path] level=[layer0|layer1|layer2|full]`
|
|
325
|
+
|
|
326
|
+
| Level | Запускает | Стоимость | Когда использовать |
|
|
327
|
+
|-------|-----------|-----------|-------------------|
|
|
328
|
+
| `layer0` | Только детерминистические проверки | $0 | CI/CD pre-check, быстрая валидация |
|
|
329
|
+
| `layer1` | Layer 0 + haiku | ~$0.001 | Быстрая итерация при разработке |
|
|
330
|
+
| `layer2` | Layer 0 + Layer 1 + полная панель | ~$0.01 | Тщательная оценка |
|
|
331
|
+
| `full` (default) | Всё включая Meta-Judge при необходимости | ~$0.05 | Финальная оценка перед поставкой |
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Flow: Optimize-only
|
|
336
|
+
|
|
337
|
+
### Flowchart полного цикла оптимизации
|
|
338
|
+
|
|
339
|
+
```mermaid
|
|
340
|
+
flowchart TD
|
|
341
|
+
START(["/bto-optimize [path]"]) --> PREREQ
|
|
342
|
+
|
|
343
|
+
PREREQ["Проверить предусловия:\n• Артефакт прошёл Layer 0\n• Baseline Layer 2 установлен"] --> BASELINE_CHECK
|
|
344
|
+
|
|
345
|
+
BASELINE_CHECK{"Baseline\n>= 8.0?"} -->|"Да"| ALREADY_GOOD
|
|
346
|
+
|
|
347
|
+
ALREADY_GOOD["Артефакт уже высокого качества.\nПредложить только minor tweaks."]
|
|
348
|
+
|
|
349
|
+
BASELINE_CHECK -->|"Нет (< 8.0)"| FIND_TARGETS
|
|
350
|
+
|
|
351
|
+
FIND_TARGETS["Определить target dimensions\n(score < 7.0 из baseline)"] --> ROUND1
|
|
352
|
+
|
|
353
|
+
subgraph ROUND1 ["Round 1: Mutation + Fast Eval"]
|
|
354
|
+
R1_WORKERS["Spawn 3 mutation workers\n(sonnet, параллельно):\n• Worker 1: expand-depth → 2 варианта\n• Worker 2: add-metrics → 1 вариант\n• Worker 3: invert-critic → 2 варианта"]
|
|
355
|
+
R1_L0["Каждый воркер:\nLayer 0 self-check на своих вариантах"]
|
|
356
|
+
R1_HAIKU["Spawn 5 haiku fast-eval agents\n(параллельно, по 1 на вариант)"]
|
|
357
|
+
R1_RANK["Ранжирование вариантов\nround-1-ranking.md"]
|
|
358
|
+
R1_TOP2["Отбор Top-2 вариантов"]
|
|
359
|
+
|
|
360
|
+
R1_WORKERS --> R1_L0
|
|
361
|
+
R1_L0 --> R1_HAIKU
|
|
362
|
+
R1_HAIKU --> R1_RANK
|
|
363
|
+
R1_RANK --> R1_TOP2
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
FIND_TARGETS --> ROUND1
|
|
367
|
+
R1_TOP2 --> ROUND2
|
|
368
|
+
|
|
369
|
+
subgraph ROUND2 ["Round 2: Crossover + Fast Eval"]
|
|
370
|
+
R2_CROSS["Spawn Crossover agent (opus):\nСинтез Top-2 → 3 варианта"]
|
|
371
|
+
R2_L0_2["Crossover агент:\nLayer 0 self-check"]
|
|
372
|
+
R2_HAIKU2["Spawn 3 haiku fast-eval agents\n(параллельно)"]
|
|
373
|
+
R2_RANK2["Ранжирование\nround-2-ranking.md"]
|
|
374
|
+
R2_TOP2_2["Отбор Top-2"]
|
|
375
|
+
|
|
376
|
+
R2_CROSS --> R2_L0_2
|
|
377
|
+
R2_L0_2 --> R2_HAIKU2
|
|
378
|
+
R2_HAIKU2 --> R2_RANK2
|
|
379
|
+
R2_RANK2 --> R2_TOP2_2
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
R1_TOP2 --> ROUND2
|
|
383
|
+
R2_TOP2_2 --> ROUND3
|
|
384
|
+
|
|
385
|
+
subgraph ROUND3 ["Round 3 (Final): Full Panel"]
|
|
386
|
+
R3_CROSS["Spawn Crossover agent (opus):\n3 финальных варианта"]
|
|
387
|
+
R3_L0_3["Layer 0 self-check"]
|
|
388
|
+
R3_PANEL["Spawn Judge Panel:\n3 варианта × 3 судьи\n(9 параллельных sonnet агентов)"]
|
|
389
|
+
R3_AGG["Агрегация всех 9 оценок\nВыбор победителя"]
|
|
390
|
+
|
|
391
|
+
R3_CROSS --> R3_L0_3
|
|
392
|
+
R3_L0_3 --> R3_PANEL
|
|
393
|
+
R3_PANEL --> R3_AGG
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
R2_TOP2_2 --> ROUND3
|
|
397
|
+
R3_AGG --> CONV_CHECK
|
|
398
|
+
|
|
399
|
+
CONV_CHECK{"Delta > 0.5\nот baseline?"}
|
|
400
|
+
CONV_CHECK -->|"Нет (< 0.5)"| CONVERGED["Сходимость.\nМинимальное улучшение.\nРекомендация: оставить оригинал."]
|
|
401
|
+
CONV_CHECK -->|"Да"| REPORT
|
|
402
|
+
|
|
403
|
+
REPORT["Генерация отчёта:\noptimization-report.md\n• Before/After delta\n• Winning strategy\n• Changelog"] --> CHECKPOINT
|
|
404
|
+
|
|
405
|
+
CHECKPOINT["Human Checkpoint:\nПоказать отчёт пользователю"] --> DECISION
|
|
406
|
+
|
|
407
|
+
DECISION{"Применить\nизменения?"} -->|"да"| APPLY
|
|
408
|
+
DECISION -->|"нет"| DISCARD
|
|
409
|
+
DECISION -->|"углубить [dim]"| EXTRA_ROUND
|
|
410
|
+
|
|
411
|
+
APPLY["Применить победивший вариант\n→ перезаписать артефакт"]
|
|
412
|
+
DISCARD["Оставить оригинал.\nОтчёт сохранён для референса."]
|
|
413
|
+
EXTRA_ROUND["Запустить доп. раунд\nс фокусом на [dim]"]
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Пример отчёта OPTIMIZE
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
═══════════════════════════════════════════════════════
|
|
420
|
+
🔧 BTO OPTIMIZATION REPORT
|
|
421
|
+
Artifact: .claude/skills/my-skill/SKILL.md
|
|
422
|
+
Rounds: 3
|
|
423
|
+
Total evaluations: 15 (5×haiku + 3×haiku + 3×sonnet×3)
|
|
424
|
+
|
|
425
|
+
BEFORE → AFTER:
|
|
426
|
+
METHODOLOGY: 7.8 → 8.2 (+0.4)
|
|
427
|
+
DEPTH: 6.9 → 8.0 (+1.1) ⬆️
|
|
428
|
+
CORRECTNESS: 8.1 → 8.3 (+0.2)
|
|
429
|
+
USABILITY: 7.2 → 7.9 (+0.7) ⬆️
|
|
430
|
+
ROBUSTNESS: 6.8 → 7.8 (+1.0) ⬆️
|
|
431
|
+
|
|
432
|
+
OVERALL: 7.4 → 8.0 (+0.6) ⬆️
|
|
433
|
+
|
|
434
|
+
Winning Strategy: expand-depth + invert-critic (crossover)
|
|
435
|
+
|
|
436
|
+
CHANGELOG:
|
|
437
|
+
- Добавлены конкретные примеры для каждого шага протокола
|
|
438
|
+
- Раздел edge cases добавлен в modules/core.md
|
|
439
|
+
- Задокументировано поведение при недоступном API
|
|
440
|
+
- Убрана избыточность в разделе Quick Start
|
|
441
|
+
═══════════════════════════════════════════════════════
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Flow: Панель судей (Layer 2)
|
|
447
|
+
|
|
448
|
+
### Детальный Sequence Diagram
|
|
449
|
+
|
|
450
|
+
```mermaid
|
|
451
|
+
sequenceDiagram
|
|
452
|
+
participant ORCH as Оркестратор
|
|
453
|
+
participant J1 as Judge 1<br/>(Domain Expert, sonnet)
|
|
454
|
+
participant J2 as Judge 2<br/>(Critic, sonnet)
|
|
455
|
+
participant J3 as Judge 3<br/>(Auditor, sonnet)
|
|
456
|
+
participant META as Meta-Judge<br/>(opus)
|
|
457
|
+
participant FS as File System
|
|
458
|
+
|
|
459
|
+
Note over ORCH: Все три агента спавнятся ОДНОВРЕМЕННО
|
|
460
|
+
|
|
461
|
+
par Параллельное исполнение
|
|
462
|
+
ORCH->>J1: Read artifact + rubric<br/>(NO communication with J2/J3)
|
|
463
|
+
and
|
|
464
|
+
ORCH->>J2: Read artifact + rubric<br/>(NO communication with J1/J3)
|
|
465
|
+
and
|
|
466
|
+
ORCH->>J3: Read artifact + structure-spec<br/>(NO communication with J1/J2)
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
J1->>FS: Записать judge-1.md<br/>(domain accuracy, tech depth, practicality)
|
|
470
|
+
J2->>FS: Записать judge-2.md<br/>(logical consistency, verifiability, anti-patterns)
|
|
471
|
+
J3->>FS: Записать judge-3.md<br/>(section coverage, depth per section, edge cases)
|
|
472
|
+
|
|
473
|
+
Note over ORCH: Агрегация начинается только после получения ВСЕХ трёх оценок
|
|
474
|
+
|
|
475
|
+
ORCH->>FS: Прочитать judge-1.md, judge-2.md, judge-3.md
|
|
476
|
+
ORCH->>ORCH: Извлечь weighted subtotals<br/>S1 = Judge1_avg × 0.4<br/>S2 = Judge2_avg × 0.3<br/>S3 = Judge3_avg × 0.3
|
|
477
|
+
ORCH->>ORCH: panel_score = S1 + S2 + S3
|
|
478
|
+
ORCH->>ORCH: Проверка разногласий:<br/>Для каждого dimension:<br/>max(J1,J2,J3) - min(J1,J2,J3) > 3?
|
|
479
|
+
|
|
480
|
+
alt Disagreement обнаружен (хотя бы в одном dimension)
|
|
481
|
+
ORCH->>META: Read judge-1.md, judge-2.md, judge-3.md<br/>Read artifact + rubric<br/>Reconcile flagged dimensions
|
|
482
|
+
META-->>ORCH: Reconciled score<br/>+ обоснование<br/>+ нужен ли human review?
|
|
483
|
+
alt Meta-Judge требует human review
|
|
484
|
+
ORCH-->>U: ESCALATE: человеческая проверка необходима
|
|
485
|
+
else Разрешено
|
|
486
|
+
ORCH->>ORCH: Применить reconciled score для flagged dimensions
|
|
487
|
+
end
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
ORCH->>FS: Записать panel-verdict.md
|
|
491
|
+
ORCH-->>U: Итоговый вердикт + Top improvements
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### Калибровка судей
|
|
495
|
+
|
|
496
|
+
Ключевой момент архитектуры: три судьи намеренно имеют разную строгость.
|
|
497
|
+
|
|
498
|
+
```
|
|
499
|
+
Judge 1 (Expert, Weight 0.4):
|
|
500
|
+
Calibration: Reserve 9-10 for genuinely exceptional work
|
|
501
|
+
Expected average: 7-8 for solid artifacts
|
|
502
|
+
|
|
503
|
+
Judge 2 (Critic, Weight 0.3):
|
|
504
|
+
Calibration: "If in doubt, score lower"
|
|
505
|
+
Anti-pattern cap: if anti-pattern detected → cap criterion at 5
|
|
506
|
+
Expected average: 5-6 (deliberately strict)
|
|
507
|
+
|
|
508
|
+
Judge 3 (Auditor, Weight 0.3):
|
|
509
|
+
Calibration: -2 per missing required section
|
|
510
|
+
-1 per stub section (< 3 substantive sentences)
|
|
511
|
+
Expected average: 6-8 for well-structured artifacts
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
Такая асимметрия предотвращает **conformity collapse** — феномен, при котором все судьи без особой причины дают похожие оценки.
|
|
515
|
+
|
|
516
|
+
### Разрешение разногласий (Meta-Judge)
|
|
517
|
+
|
|
518
|
+
Meta-Judge вызывается при разногласии > 3 очков по любому измерению:
|
|
519
|
+
|
|
520
|
+
```
|
|
521
|
+
Пример: DEPTH dimension
|
|
522
|
+
Expert: 8 (глубина достаточна для задачи)
|
|
523
|
+
Critic: 4 (не хватает edge cases, вагое в нескольких местах)
|
|
524
|
+
Auditor: 7 (структурно полно)
|
|
525
|
+
Разногласие: 8 - 4 = 4 → > 3 → ESCALATE
|
|
526
|
+
|
|
527
|
+
Meta-Judge получает:
|
|
528
|
+
• Все три оценки с обоснованиями
|
|
529
|
+
• Сам артефакт
|
|
530
|
+
• Запрос: "Кто прав и почему?"
|
|
531
|
+
|
|
532
|
+
Meta-Judge выводит:
|
|
533
|
+
• Примирённую оценку (например: 6.5)
|
|
534
|
+
• Обоснование: "Critic выявил реальные gaps в edge cases.
|
|
535
|
+
Expert оценил base content, но не edge coverage.
|
|
536
|
+
Reconciled: 6.5, с рекомендацией добавить 2 edge cases."
|
|
537
|
+
• Human review: NO (разрешено)
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
### panel-verdict.md формат
|
|
541
|
+
|
|
542
|
+
```markdown
|
|
543
|
+
## Panel Verdict — my-skill/SKILL.md
|
|
544
|
+
|
|
545
|
+
**Panel score:** 7.4 / 10
|
|
546
|
+
**Judge scores:** Expert=7.8, Critic=6.5, Auditor=7.2
|
|
547
|
+
**Disagreement flag:** YES (DEPTH: Expert=8, Critic=4, Auditor=7)
|
|
548
|
+
**Meta-Judge applied:** YES → Reconciled DEPTH: 6.5
|
|
549
|
+
**Decision:** PASS
|
|
550
|
+
**Pass threshold:** 7.0
|
|
551
|
+
|
|
552
|
+
**Top improvement areas:**
|
|
553
|
+
- [Critic] Недостаточно edge cases в Protocol section
|
|
554
|
+
- [Auditor] modules/advanced.md — stub section (2 предложения)
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
## Flow: Раунд оптимизации
|
|
560
|
+
|
|
561
|
+
### Детальный Sequence Diagram
|
|
562
|
+
|
|
563
|
+
```mermaid
|
|
564
|
+
sequenceDiagram
|
|
565
|
+
participant ORCH as Оркестратор
|
|
566
|
+
participant W1 as Worker 1<br/>(expand-depth, sonnet)
|
|
567
|
+
participant W2 as Worker 2<br/>(add-metrics, sonnet)
|
|
568
|
+
participant W3 as Worker 3<br/>(invert-critic, sonnet)
|
|
569
|
+
participant H1 as haiku eval 1
|
|
570
|
+
participant H2 as haiku eval 2
|
|
571
|
+
participant H3 as haiku eval 3
|
|
572
|
+
participant H4 as haiku eval 4
|
|
573
|
+
participant H5 as haiku eval 5
|
|
574
|
+
participant CROSS as Crossover<br/>(opus)
|
|
575
|
+
participant FS as File System
|
|
576
|
+
|
|
577
|
+
Note over ORCH: ─── Round 1: Mutation ───
|
|
578
|
+
|
|
579
|
+
par 3 Mutation Workers параллельно
|
|
580
|
+
ORCH->>W1: Base artifact + strategy: expand-depth<br/>Target: DEPTH, ROBUSTNESS
|
|
581
|
+
and
|
|
582
|
+
ORCH->>W2: Base artifact + strategy: add-metrics<br/>Target: DEPTH
|
|
583
|
+
and
|
|
584
|
+
ORCH->>W3: Base artifact + strategy: invert-critic<br/>Target: адресовать blocking issues
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
W1->>W1: Layer 0 self-check на каждом варианте
|
|
588
|
+
W2->>W2: Layer 0 self-check
|
|
589
|
+
W3->>W3: Layer 0 self-check
|
|
590
|
+
|
|
591
|
+
W1->>FS: variant-1-A.md, variant-1-B.md
|
|
592
|
+
W1->>FS: mutation-log-1.md
|
|
593
|
+
W2->>FS: variant-2-A.md
|
|
594
|
+
W2->>FS: mutation-log-2.md
|
|
595
|
+
W3->>FS: variant-3-A.md, variant-3-B.md
|
|
596
|
+
W3->>FS: mutation-log-3.md
|
|
597
|
+
|
|
598
|
+
Note over ORCH: ─── Fast Eval: 5 haiku параллельно ───
|
|
599
|
+
|
|
600
|
+
par 5 haiku агентов параллельно
|
|
601
|
+
ORCH->>H1: Eval variant-1-A
|
|
602
|
+
and
|
|
603
|
+
ORCH->>H2: Eval variant-1-B
|
|
604
|
+
and
|
|
605
|
+
ORCH->>H3: Eval variant-2-A
|
|
606
|
+
and
|
|
607
|
+
ORCH->>H4: Eval variant-3-A
|
|
608
|
+
and
|
|
609
|
+
ORCH->>H5: Eval variant-3-B
|
|
610
|
+
end
|
|
611
|
+
|
|
612
|
+
H1->>FS: score-1-A.txt
|
|
613
|
+
H2->>FS: score-1-B.txt
|
|
614
|
+
H3->>FS: score-2-A.txt
|
|
615
|
+
H4->>FS: score-3-A.txt
|
|
616
|
+
H5->>FS: score-3-B.txt
|
|
617
|
+
|
|
618
|
+
ORCH->>FS: Прочитать все score-*.txt
|
|
619
|
+
ORCH->>ORCH: Ранжирование по average score
|
|
620
|
+
ORCH->>FS: Записать round-1-ranking.md
|
|
621
|
+
|
|
622
|
+
Note over ORCH: Пример: variant-3-A (7.7) и variant-1-B (7.3) → Top-2
|
|
623
|
+
|
|
624
|
+
Note over ORCH: ─── Round 2: Crossover ───
|
|
625
|
+
|
|
626
|
+
ORCH->>CROSS: variant-3-A (Domain score best)<br/>variant-1-B (Completeness score best)<br/>Оценки обоих вариантов
|
|
627
|
+
CROSS->>CROSS: Layer 0 self-check на crossover
|
|
628
|
+
CROSS->>FS: variant-crossover.md + доп. варианты
|
|
629
|
+
|
|
630
|
+
Note over ORCH: ─── Round 3: Full Panel (3 финальных варианта × 3 судьи) ───
|
|
631
|
+
|
|
632
|
+
par 9 агентов параллельно (3 варианта × 3 судьи)
|
|
633
|
+
Note over ORCH: Каждый из 3 финальных вариантов<br/>оценивается полной панелью судей
|
|
634
|
+
end
|
|
635
|
+
|
|
636
|
+
ORCH->>ORCH: Выбор победителя по highest overall score
|
|
637
|
+
ORCH->>FS: Записать optimization-report.md
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
### round-ranking.md формат
|
|
641
|
+
|
|
642
|
+
```markdown
|
|
643
|
+
## Optimization Round 1 — Ranking
|
|
644
|
+
|
|
645
|
+
| Rank | Variant | R1 | R2 | R3 | Avg | Strategy |
|
|
646
|
+
|------|---------|----|----|----|----|---------|
|
|
647
|
+
| 1 | variant-3-A | 8 | 8 | 7 | 7.7 | invert-critic |
|
|
648
|
+
| 2 | variant-1-B | 7 | 8 | 7 | 7.3 | expand-depth |
|
|
649
|
+
| 3 | variant-2-A | 7 | 7 | 7 | 7.0 | add-metrics |
|
|
650
|
+
| 4 | variant-3-B | 6 | 7 | 7 | 6.7 | invert-critic |
|
|
651
|
+
| 5 | variant-1-A | 6 | 7 | 6 | 6.3 | expand-depth |
|
|
652
|
+
|
|
653
|
+
**Selected for Round 2:** variant-3-A, variant-1-B
|
|
654
|
+
**Discarded:** variant-2-A (avg 7.0, not top-2), variant-3-B (Layer 0: stub section), variant-1-A (low coherence)
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
### mutation-log формат
|
|
658
|
+
|
|
659
|
+
```markdown
|
|
660
|
+
## Mutation Log — Worker 3 — Round 1
|
|
661
|
+
|
|
662
|
+
**Strategy:** invert-critic
|
|
663
|
+
**Variants attempted:** 2
|
|
664
|
+
**Variants passed Layer 0:** 2
|
|
665
|
+
**Layer 0 failures:** none
|
|
666
|
+
|
|
667
|
+
**Substantive changes made:**
|
|
668
|
+
- Добавлены 3 edge cases в Protocol section (адресует "missing edge cases" из Critic)
|
|
669
|
+
- Формализована секция Failure Modes с конкретными сценариями
|
|
670
|
+
- Убраны вагые формулировки типа "может быть улучшено" → конкретные инструкции
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## Flow: Ошибки и rejection
|
|
676
|
+
|
|
677
|
+
### Layer 0 Failure Flow
|
|
678
|
+
|
|
679
|
+
```mermaid
|
|
680
|
+
flowchart TD
|
|
681
|
+
L0_FAIL["Layer 0 FAIL\n(< 80% проверок прошло)"] --> AUTO_RETRY{"Auto-retry:\nпопытка N/3"}
|
|
682
|
+
|
|
683
|
+
AUTO_RETRY -->|"Попытка 1"| ATTEMPT1["Попытка исправления"]
|
|
684
|
+
ATTEMPT1 --> L0_RECHECK["Повторный Layer 0"]
|
|
685
|
+
L0_RECHECK -->|"PASS"| CONTINUE["Продолжить в Layer 1"]
|
|
686
|
+
L0_RECHECK -->|"FAIL"| AUTO_RETRY
|
|
687
|
+
|
|
688
|
+
AUTO_RETRY -->|"Попытка 2"| ATTEMPT2["Попытка исправления"]
|
|
689
|
+
ATTEMPT2 --> L0_RECHECK2["Повторный Layer 0"]
|
|
690
|
+
L0_RECHECK2 -->|"PASS"| CONTINUE
|
|
691
|
+
L0_RECHECK2 -->|"FAIL"| AUTO_RETRY
|
|
692
|
+
|
|
693
|
+
AUTO_RETRY -->|"Попытка 3 (последняя)"| ATTEMPT3["Попытка исправления"]
|
|
694
|
+
ATTEMPT3 --> L0_RECHECK3["Повторный Layer 0"]
|
|
695
|
+
L0_RECHECK3 -->|"PASS"| CONTINUE
|
|
696
|
+
L0_RECHECK3 -->|"FAIL"| HUMAN_ESC["Эскалация на человека:\nLayer 0 не прошёл 3 попытки\nRequires manual fix"]
|
|
697
|
+
|
|
698
|
+
HUMAN_ESC --> REPORT_L0["Отчёт с конкретными ошибками:\n❌ CHECK-S4: Anti-Patterns section missing (line 0)\n❌ CHECK-S7: Empty section: '## Dependencies' (line 45)\n✅ CHECK-S1..S3: passed\n✅ CHECK-S5..S6: passed\n..."]
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### Rejection logging (обязательно)
|
|
702
|
+
|
|
703
|
+
Каждый rejected артефакт ДОЛЖЕН быть залогирован. Это правило из `bto-quality-gates.md`:
|
|
704
|
+
|
|
705
|
+
```
|
|
706
|
+
Причины rejection в Worker:
|
|
707
|
+
→ Записать в mutation-log-[WORKER_ID].md:
|
|
708
|
+
• variant-1-A: REJECTED — Layer 0 failure: no Anti-Patterns section
|
|
709
|
+
• variant-2-A: REJECTED — Length below minimum (200 tokens < 300 min)
|
|
710
|
+
• variant-1-B: PASSED
|
|
711
|
+
|
|
712
|
+
НИКОГДА не отбрасывать молча.
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
### Anti-Pattern Detection Flow
|
|
716
|
+
|
|
717
|
+
```mermaid
|
|
718
|
+
flowchart TD
|
|
719
|
+
CONTENT["Генерируемый контент"] --> CHECK_AP{"Auto-detection\nanti-patterns"}
|
|
720
|
+
|
|
721
|
+
CHECK_AP -->|"Score inflation\n(все > 8.5 с 1-й попытки)"| FIX_INFLATION["Добавить calibration prompt\nк Critic судье"]
|
|
722
|
+
|
|
723
|
+
CHECK_AP -->|"Overfitting to rubric\n(формулировки буквально\nпод рубрику)"| FIX_OVERFIT["Blind evaluation:\nскрыть рубрику от генератора"]
|
|
724
|
+
|
|
725
|
+
CHECK_AP -->|"Conformity collapse\n(все судьи → одни оценки)"| FIX_CONFORM["Enforce isolation,\nрандомизировать порядок судей"]
|
|
726
|
+
|
|
727
|
+
CHECK_AP -->|"Runaway optimization\n(> 10 итераций)"| FIX_RUNAWAY["ABORT:\nсдать best-so-far,\nlог + human review"]
|
|
728
|
+
|
|
729
|
+
CHECK_AP -->|"Phantom improvement\n(delta > 0.5, но контент не изменился)"| FIX_PHANTOM["Diff-check контента,\nне только score"]
|
|
730
|
+
|
|
731
|
+
CHECK_AP -->|"Judge-generator collusion\n(одна модель для генерации и оценки)"| FIX_COLLUSION["BLOCK:\nгенератор и судьи ДОЛЖНЫ\nиспользовать разные модели"]
|
|
732
|
+
|
|
733
|
+
CHECK_AP -->|"Missing rejection log\n(отказы не логируются)"| FIX_LOG["Каждый отказ → mutation-log\nс причиной"]
|
|
734
|
+
|
|
735
|
+
FIX_INFLATION & FIX_OVERFIT & FIX_CONFORM & FIX_RUNAWAY & FIX_PHANTOM & FIX_COLLUSION & FIX_LOG --> FLAG["Флагировать:\nWARNING label\nОстановить BTO loop\nОжидать human review"]
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
### Regression Rollback Flow
|
|
739
|
+
|
|
740
|
+
```mermaid
|
|
741
|
+
flowchart TD
|
|
742
|
+
ROUND_N["Score раунда N"] --> REG_CHECK{"Score regression\n> 1.0 от baseline?"}
|
|
743
|
+
|
|
744
|
+
REG_CHECK -->|"Да"| ROLLBACK["ROLLBACK:\nвернуть к предыдущему best\nЗалогировать regression"]
|
|
745
|
+
REG_CHECK -->|"Нет"| DELTA_CHECK{"Delta ≤ 0.5\nуже 3 раунда?"}
|
|
746
|
+
|
|
747
|
+
DELTA_CHECK -->|"Да"| CONVERGED["CONVERGENCE:\nМаксимальное улучшение достигнуто.\nОстановка."]
|
|
748
|
+
DELTA_CHECK -->|"Нет"| CONTINUE["Продолжить следующий раунд"]
|
|
749
|
+
|
|
750
|
+
ROLLBACK --> REPORT_REG["Отчёт:\n⚠️ REGRESSION DETECTED\nRound 3 score: 6.8 (was 7.4 baseline)\nRolled back to: variant-round2-B\nFinal score: 7.4"]
|
|
751
|
+
|
|
752
|
+
CONVERGED --> REPORT_CONV["Отчёт:\n✅ CONVERGENCE\nRound 3 delta: 0.3 (< 0.5)\nRound 2 delta: 0.4 (< 0.5)\nRound 1 delta: 0.2 (< 0.5)\nBest found: X.X / 10"]
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
---
|
|
756
|
+
|
|
757
|
+
## Flow: Human Checkpoint
|
|
758
|
+
|
|
759
|
+
### Checkpoint после TEST
|
|
760
|
+
|
|
761
|
+
```mermaid
|
|
762
|
+
flowchart TD
|
|
763
|
+
TEST_COMPLETE["TEST завершён"] --> DISPLAY_REPORT["Отобразить Evaluation Report"]
|
|
764
|
+
|
|
765
|
+
DISPLAY_REPORT --> CHECKPOINT_BANNER["═══════════════════════════════════════════
|
|
766
|
+
⏸️ CHECKPOINT: BTO TEST Complete
|
|
767
|
+
Artifact: .claude/skills/my-skill/SKILL.md
|
|
768
|
+
Score: 7.4/10 — PASS
|
|
769
|
+
|
|
770
|
+
Per-dimension: METHODOLOGY 7.8 | DEPTH 6.9 | CORRECTNESS 8.1
|
|
771
|
+
USABILITY 7.2 | ROBUSTNESS 6.8
|
|
772
|
+
|
|
773
|
+
Files created: panel-verdict.md ✅
|
|
774
|
+
• «ок» — запустить OPTIMIZE
|
|
775
|
+
• «стоп» — завершить, оставить как есть
|
|
776
|
+
• «углубить [dimension]» — детальный анализ
|
|
777
|
+
═══════════════════════════════════════════"]
|
|
778
|
+
|
|
779
|
+
CHECKPOINT_BANNER --> USER_RESPONSE{"Ответ\nпользователя"}
|
|
780
|
+
|
|
781
|
+
USER_RESPONSE -->|"ок"| RUN_OPTIMIZE["Запустить /bto-optimize"]
|
|
782
|
+
USER_RESPONSE -->|"стоп"| DONE["Завершено.\nРезультат сохранён."]
|
|
783
|
+
USER_RESPONSE -->|"углубить ROBUSTNESS"| DRILL_DOWN["Детальный анализ ROBUSTNESS:\nВзять judge-2.md (Critic)\nЭкстракт всех ROBUSTNESS-специфичных issues"]
|
|
784
|
+
USER_RESPONSE -->|"[конкретный feedback]"| ADJUST["Адаптировать,\nзатем снова TEST"]
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
### Checkpoint после OPTIMIZE
|
|
788
|
+
|
|
789
|
+
```mermaid
|
|
790
|
+
flowchart TD
|
|
791
|
+
OPT_COMPLETE["OPTIMIZE завершён"] --> DISPLAY_OPT_REPORT["Отобразить Optimization Report"]
|
|
792
|
+
|
|
793
|
+
DISPLAY_OPT_REPORT --> OPT_CHECKPOINT["═══════════════════════════════════════════
|
|
794
|
+
🔧 CHECKPOINT: BTO OPTIMIZE Complete
|
|
795
|
+
Artifact: .claude/skills/my-skill/SKILL.md
|
|
796
|
+
Rounds: 3 | Evaluations: 15
|
|
797
|
+
|
|
798
|
+
BEFORE → AFTER:
|
|
799
|
+
DEPTH: 6.9 → 8.0 (+1.1) ⬆️
|
|
800
|
+
ROBUSTNESS: 6.8 → 7.8 (+1.0) ⬆️
|
|
801
|
+
OVERALL: 7.4 → 8.0 (+0.6) ⬆️
|
|
802
|
+
|
|
803
|
+
Winning strategy: expand-depth + invert-critic (crossover)
|
|
804
|
+
|
|
805
|
+
Files created: optimization-report.md, winner.md ✅
|
|
806
|
+
• «да» — применить изменения к оригиналу
|
|
807
|
+
• «нет» — оставить оригинал
|
|
808
|
+
• «ещё раунд» — дополнительный раунд оптимизации
|
|
809
|
+
═══════════════════════════════════════════"]
|
|
810
|
+
|
|
811
|
+
OPT_CHECKPOINT --> USER_OPT_RESPONSE{"Ответ\nпользователя"}
|
|
812
|
+
|
|
813
|
+
USER_OPT_RESPONSE -->|"да"| APPLY_WINNER["Перезаписать артефакт\nпобедившим вариантом"]
|
|
814
|
+
USER_OPT_RESPONSE -->|"нет"| KEEP_ORIG["Оставить оригинал.\noptimization-report.md сохранён."]
|
|
815
|
+
USER_OPT_RESPONSE -->|"ещё раунд"| EXTRA_ROUND["Дополнительный раунд:\nфокус на оставшихся слабых dimension"]
|
|
816
|
+
|
|
817
|
+
APPLY_WINNER --> FINAL_CHECKPOINT["Финальный checkpoint:\nBTO Complete ✅"]
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
### Обязательные checkpoints (из bto-quality-gates.md)
|
|
821
|
+
|
|
822
|
+
```
|
|
823
|
+
НИКОГДА не авто-одобрять без human checkpoint:
|
|
824
|
+
✓ После Layer 2 evaluation
|
|
825
|
+
✓ После финального раунда оптимизации
|
|
826
|
+
✓ Перед packaging/delivery артефакта
|
|
827
|
+
|
|
828
|
+
Исключение: Layer 0 rejections могут авто-ретраиться до 3 раз
|
|
829
|
+
перед эскалацией на человека.
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
---
|
|
833
|
+
|
|
834
|
+
## Flow: Интеграция BTO в Keysarium пайплайн
|
|
835
|
+
|
|
836
|
+
### Sequence Diagram: Keysarium + BTO
|
|
837
|
+
|
|
838
|
+
```mermaid
|
|
839
|
+
sequenceDiagram
|
|
840
|
+
actor U as User
|
|
841
|
+
participant K as Claude (Keysarium)
|
|
842
|
+
participant BTO as Claude (BTO)
|
|
843
|
+
participant FS as File System
|
|
844
|
+
|
|
845
|
+
Note over K: ═══ Keysarium: Phase 0 ═══
|
|
846
|
+
K->>FS: Write researches/slug/00_product_discovery.md
|
|
847
|
+
K-->>U: Checkpoint 0: Discovery Complete
|
|
848
|
+
|
|
849
|
+
U->>K: "bto test"
|
|
850
|
+
K->>BTO: /bto-test researches/slug/00_product_discovery.md
|
|
851
|
+
BTO->>FS: Layer 0 checks
|
|
852
|
+
BTO->>BTO: Layer 2: панель судей (research artifact rubric)
|
|
853
|
+
BTO-->>K: Score: 7.2/10 — Top issues: [список]
|
|
854
|
+
BTO-->>U: TEST Report
|
|
855
|
+
|
|
856
|
+
U->>K: "ок, продолжаем"
|
|
857
|
+
|
|
858
|
+
Note over K: ═══ Keysarium: Phase 2 ═══
|
|
859
|
+
K->>FS: Write researches/slug/02_research_findings.md
|
|
860
|
+
K-->>U: Checkpoint 2: Research Complete
|
|
861
|
+
|
|
862
|
+
Note over K: ═══ Keysarium: Phase 5 ═══
|
|
863
|
+
K->>FS: Write 05..08_*.md
|
|
864
|
+
K-->>U: Checkpoint 5: Presentation Complete
|
|
865
|
+
|
|
866
|
+
U->>K: "bto optimize presentation"
|
|
867
|
+
K->>BTO: /bto-optimize researches/slug/05_presentation_content.md
|
|
868
|
+
BTO->>BTO: Baseline Layer 2: 6.8/10
|
|
869
|
+
BTO->>BTO: 3 раунда оптимизации
|
|
870
|
+
BTO-->>K: 7.6/10 (+0.8) — winner.md готов
|
|
871
|
+
BTO-->>U: OPTIMIZE Report
|
|
872
|
+
U->>BTO: "да"
|
|
873
|
+
BTO->>FS: Перезаписать 05_presentation_content.md
|
|
874
|
+
|
|
875
|
+
Note over K: ═══ Keysarium: Phase 6 ═══
|
|
876
|
+
K->>FS: Write README.md
|
|
877
|
+
K-->>U: Полный архив исследования
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
### Создание нового скилла через BTO в контексте Keysarium
|
|
881
|
+
|
|
882
|
+
```mermaid
|
|
883
|
+
sequenceDiagram
|
|
884
|
+
actor DEV as Разработчик
|
|
885
|
+
participant BTO as Claude (BTO)
|
|
886
|
+
participant FS as File System
|
|
887
|
+
|
|
888
|
+
DEV->>BTO: /bto-build "skill for domain-specific task"
|
|
889
|
+
|
|
890
|
+
BTO->>BTO: BUILD DEEP mode (нечёткие требования)
|
|
891
|
+
BTO->>BTO: Загрузить explore skill
|
|
892
|
+
BTO-->>DEV: Кларификационные вопросы (5 вопросов)
|
|
893
|
+
DEV->>BTO: Ответы
|
|
894
|
+
BTO->>BTO: Requirements brief
|
|
895
|
+
BTO-->>DEV: Подтвердить requirements?
|
|
896
|
+
DEV->>BTO: "ок"
|
|
897
|
+
|
|
898
|
+
BTO->>FS: Создать .claude/skills/new-skill/SKILL.md
|
|
899
|
+
BTO->>FS: Создать modules/*.md, references/*.md, examples/*.md
|
|
900
|
+
BTO->>BTO: Self-review (Layer 0 inline)
|
|
901
|
+
BTO-->>DEV: BUILD Complete ✅
|
|
902
|
+
|
|
903
|
+
BTO->>BTO: Automatic /bto-test .claude/skills/new-skill/
|
|
904
|
+
BTO->>BTO: Layer 0 + Layer 1 + Layer 2
|
|
905
|
+
BTO-->>DEV: Score: 8.1/10 [PASS]
|
|
906
|
+
BTO-->>DEV: Checkpoint: применить / оптимизировать?
|
|
907
|
+
|
|
908
|
+
DEV->>BTO: "ок, применить"
|
|
909
|
+
BTO-->>DEV: BTO Complete ✅ — скилл готов к использованию в Keysarium
|
|
910
|
+
|
|
911
|
+
Note over DEV: Скилл теперь доступен в .claude/skills/new-skill/<br/>Использовать в /casarium через фазы
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### BTO в CI/CD (только Layer 0)
|
|
915
|
+
|
|
916
|
+
Для автоматических проверок при коммите или в pipeline — использовать только Layer 0 (бесплатно):
|
|
917
|
+
|
|
918
|
+
```
|
|
919
|
+
# Пример: проверка всех skills при изменении
|
|
920
|
+
/bto-test .claude/skills/ level=layer0
|
|
921
|
+
|
|
922
|
+
Вывод:
|
|
923
|
+
.claude/skills/bto/SKILL.md: 9/10 ✅
|
|
924
|
+
.claude/skills/explore/SKILL.md: 10/10 ✅
|
|
925
|
+
.claude/skills/my-new-skill/SKILL.md: 7/10 ❌ (CHECK-S4, CHECK-S10 failed)
|
|
926
|
+
|
|
927
|
+
Total: 2/3 passed
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
### Использование BTO для Harvest знаний
|
|
931
|
+
|
|
932
|
+
После завершения Keysarium исследования BTO помогает валидировать извлечённые паттерны:
|
|
933
|
+
|
|
934
|
+
```mermaid
|
|
935
|
+
flowchart LR
|
|
936
|
+
RESEARCH["researches/slug/"] --> HARVEST["/harvest researches/slug/"]
|
|
937
|
+
HARVEST --> NEW_SKILL["Новый скилл в .claude/skills/new-pattern/"]
|
|
938
|
+
NEW_SKILL --> BTO_BUILD["/bto-build (refinement)"]
|
|
939
|
+
BTO_BUILD --> BTO_TEST["/bto-test"]
|
|
940
|
+
BTO_TEST --> BTO_OPT["/bto-optimize (если score < 8.0)"]
|
|
941
|
+
BTO_OPT --> TOOLKIT_UPDATE["Обновить TOOLKIT_HARVEST.md\n(скилл прошёл BTO = проверен)"]
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
---
|
|
945
|
+
|
|
946
|
+
## Быстрый справочник команд
|
|
947
|
+
|
|
948
|
+
| Команда | Назначение | Минимальный вход | Стоимость |
|
|
949
|
+
|---------|-----------|-----------------|-----------|
|
|
950
|
+
| `/bto [path]` | Полный пайплайн BUILD→TEST→OPTIMIZE | Путь или описание | ~$0.15 |
|
|
951
|
+
| `/bto-build [description]` | Только генерация | Текстовое описание | ~$0.01 |
|
|
952
|
+
| `/bto-test [path]` | Только оценка (full) | Путь к артефакту | ~$0.01 |
|
|
953
|
+
| `/bto-test [path] level=layer0` | Только Layer 0 | Путь к артефакту | $0 |
|
|
954
|
+
| `/bto-test [path] level=layer1` | Layer 0 + haiku | Путь к артефакту | ~$0.001 |
|
|
955
|
+
| `/bto-optimize [path]` | Только оптимизация | Путь + baseline eval | ~$0.13 |
|
|
956
|
+
|
|
957
|
+
## Частые сценарии использования
|
|
958
|
+
|
|
959
|
+
```
|
|
960
|
+
# Быстрая проверка нового артефакта
|
|
961
|
+
/bto-test .claude/skills/new-skill/ level=layer1
|
|
962
|
+
|
|
963
|
+
# Полный цикл для нового скилла
|
|
964
|
+
/bto-build "создать skill для [задача]"
|
|
965
|
+
|
|
966
|
+
# Улучшение существующего слабого артефакта
|
|
967
|
+
/bto-optimize .claude/skills/weak-skill/SKILL.md
|
|
968
|
+
|
|
969
|
+
# Валидация research документа в Keysarium
|
|
970
|
+
/bto-test researches/my-case/02_research_findings.md
|
|
971
|
+
|
|
972
|
+
# Проверка всех skills (только структура, бесплатно)
|
|
973
|
+
/bto-test .claude/skills/ level=layer0
|
|
974
|
+
|
|
975
|
+
# Полный цикл для критического артефакта перед сдачей
|
|
976
|
+
/bto .claude/skills/important-skill/SKILL.md
|
|
977
|
+
```
|