mister-wolf 2.15.1 → 2.15.2
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/package.json +1 -1
- package/templates/.wolf/router.log +1 -1
- package/templates/base/AGENTS.md +3 -2
- package/templates/base/agents/executor-lead.md +4 -0
- package/templates/base/agents/mr-wolf.md +3 -2
- package/templates/base/agents/steward.md +4 -2
- package/templates/base/agents/worker-implementer.md +5 -2
- package/templates/base/agents/worker-researcher.md +4 -2
- package/templates/base/agents/worker-reviewer.md +9 -7
- package/templates/base/commands/analyze-doc.md +1 -1
- package/templates/base/commands/complain.md +1 -1
- package/templates/base/commands/doc-review.md +1 -1
- package/templates/base/playbooks/executor-lead-playbook.md +10 -5
- package/templates/base/playbooks/steward-nastavnik.md +5 -4
- package/templates/base/playbooks/worker-implementer-playbook.md +17 -7
- package/templates/base/playbooks/worker-researcher-playbook.md +5 -2
- package/templates/base/playbooks/worker-reviewer-playbook.md +21 -8
- package/templates/base/skills/finishing-a-development-branch/SKILL.md +19 -211
- package/templates/base/skills/receiving-code-review/SKILL.md +12 -28
- package/templates/base/skills/requesting-code-review/SKILL.md +11 -110
- package/templates/base/skills/test-driven-development/SKILL.md +18 -396
- package/templates/base/skills/using-git-worktrees/SKILL.md +15 -177
- package/templates/base/skills/using-skills/SKILL.md +38 -123
- package/templates/base/skills/verification-before-completion/SKILL.md +16 -157
- package/templates/base/skills/wolf-brainstorm/SKILL.md +17 -168
- package/templates/base/skills/wolf-debug/SKILL.md +15 -281
- package/templates/base/skills/wolf-design/SKILL.md +16 -35
- package/templates/base/skills/wolf-execute/SKILL.md +13 -101
- package/templates/base/skills/wolf-handoff/SKILL.md +22 -88
- package/templates/base/skills/wolf-plan/SKILL.md +18 -181
- package/templates/base/skills/wolf-review/SKILL.md +25 -64
- package/templates/base/skills/wolf-sdd/SKILL.md +17 -248
- package/templates/base/skills/wolf-skill-intake/SKILL.md +14 -57
- package/templates/base/skills/wolf-testplan/SKILL.md +15 -27
- package/templates/base/skills/writing-skills/SKILL.md +16 -30
- package/templates/opencode/plugins/wolf-router.ts +2 -1
- package/templates/opencode/plugins/wolf-session-start.js +11 -9
|
@@ -1,182 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wolf-brainstorm
|
|
3
|
-
description:
|
|
3
|
+
description: "Проясняй новую потребность или существенное изменение поведения до проектирования. Формируй требования, границы, критерии успеха и вопросы; не запускай discovery заново для уже утверждённой задачи."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Потребность → требования
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Вход и выход
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Это Discovery-режим координатора: ты исследуешь и проясняешь, а не строишь.
|
|
13
|
-
|
|
14
|
-
<HARD-GATE>
|
|
15
|
-
Не вызывай ни один скилл реализации, не пиши код, не создавай скелет проекта и не предпринимай никаких действий реализации, пока не представил дизайн и владелец его не аппробовал. Это касается КАЖДОГО проекта независимо от воспринимаемой простоты.
|
|
16
|
-
</HARD-GATE>
|
|
17
|
-
|
|
18
|
-
## Анти-паттерн: «Это слишком просто, чтобы нужен дизайн»
|
|
19
|
-
|
|
20
|
-
Через этот процесс проходит каждый проект. Туду-лист, утилита из одной функции, правка конфига — все они. «Простые» проекты — именно там, где непроверенные предположения дают больше всего лишней работы. Дизайн может быть коротким (несколько предложений для действительно простых проектов), но ты ОБЯЗАН его представить и получить аппрув.
|
|
21
|
-
|
|
22
|
-
## Чеклист
|
|
23
|
-
|
|
24
|
-
Создай задачи по каждому пункту через {{tool.todowrite}} и выполняй по порядку:
|
|
25
|
-
|
|
26
|
-
1. **Изучи контекст проекта** — файлы, документация, недавние коммиты
|
|
27
|
-
2. **Задавай уточняющие вопросы** — по одному; цель, ограничения, критерии успеха
|
|
28
|
-
3. **Предложи 2–3 подхода** — с трейд-оффами и своей рекомендацией
|
|
29
|
-
4. **Представь дизайн** — секциями, масштаб каждой под её сложность; аппрув после каждой секции
|
|
30
|
-
5. **Запиши дизайн-документ** — в каталог спек проекта (по умолчанию `docs/specs/YYYY-MM-DD-<тема>-design.md`; предпочтения проекта приоритетнее дефолта) и закоммить (правило проекта: коммит после завершённой работы)
|
|
31
|
-
6. **Саморевью спеки** — быстрая проверка на плейсхолдеры, противоречия, двусмысленность, scope (см. ниже)
|
|
32
|
-
7. **Ревью спеки владельцем** — владелец читает файл спеки до продолжения
|
|
33
|
-
8. **Переход к планированию** — вызови {{tool.skill}} wolf-plan
|
|
34
|
-
|
|
35
|
-
**Worktree этот скилл НЕ создаёт** — изоляция рабочего каталога начинается только на этапе исполнения (см. wolf-sdd / wolf-execute, правило `.worktrees/<имя-задачи>`).
|
|
36
|
-
|
|
37
|
-
## Ход процесса
|
|
38
|
-
|
|
39
|
-
```dot
|
|
40
|
-
digraph wolf_brainstorm {
|
|
41
|
-
"Изучи контекст проекта" [shape=box];
|
|
42
|
-
"Задавай уточняющие вопросы" [shape=box];
|
|
43
|
-
"Предложи 2-3 подхода" [shape=box];
|
|
44
|
-
"Представь секции дизайна" [shape=box];
|
|
45
|
-
"Владелец аппрувает дизайн?" [shape=diamond];
|
|
46
|
-
"Запиши дизайн-документ" [shape=box];
|
|
47
|
-
"Саморевью спеки\n(правки на месте)" [shape=box];
|
|
48
|
-
"Владелец ревьюит спеку?" [shape=diamond];
|
|
49
|
-
"Вызови {{tool.skill}} wolf-plan" [shape=doublecircle];
|
|
50
|
-
|
|
51
|
-
"Изучи контекст проекта" -> "Задавай уточняющие вопросы";
|
|
52
|
-
"Задавай уточняющие вопросы" -> "Предложи 2-3 подхода";
|
|
53
|
-
"Предложи 2-3 подхода" -> "Представь секции дизайна";
|
|
54
|
-
"Представь секции дизайна" -> "Владелец аппрувает дизайн?";
|
|
55
|
-
"Владелец аппрувает дизайн?" -> "Представь секции дизайна" [label="нет, доработай"];
|
|
56
|
-
"Владелец аппрувает дизайн?" -> "Запиши дизайн-документ" [label="да"];
|
|
57
|
-
"Запиши дизайн-документ" -> "Саморевью спеки\n(правки на месте)";
|
|
58
|
-
"Саморевью спеки\n(правки на месте)" -> "Владелец ревьюит спеку?";
|
|
59
|
-
"Владелец ревьюит спеку?" -> "Запиши дизайн-документ" [label="запрошены правки"];
|
|
60
|
-
"Владелец ревьюит спеку?" -> "Вызови {{tool.skill}} wolf-plan" [label="аппрув"];
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Терминальное состояние — вызов wolf-plan.** Не вызывай скиллы реализации и никакие другие. ЕДИНСТВЕННЫЙ скилл после wolf-brainstorm — wolf-plan.
|
|
10
|
+
Вход: запрос, действующие решения и ограничения, контекст существующего продукта. В FULL выход — requirements.md в папке docs/dev/<date>-<slug>/. В LITE — утверждённый короткий бриф. Владелец продукта — пользователь через L0; исследование может выполнять L1/L2 по мандату.
|
|
65
11
|
|
|
66
12
|
## Процесс
|
|
67
13
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
- Фокус на понимании: цель, ограничения, критерии успеха
|
|
77
|
-
|
|
78
|
-
**Исследование подходов:**
|
|
79
|
-
|
|
80
|
-
- Предложи 2–3 разных подхода с трейд-оффами
|
|
81
|
-
- Представляй варианты разговорно, со своей рекомендацией и обоснованием
|
|
82
|
-
- Веди с рекомендуемого варианта и объясни, почему именно он
|
|
83
|
-
|
|
84
|
-
**Презентация дизайна:**
|
|
85
|
-
|
|
86
|
-
- Когда понял, что строишь, — представь дизайн
|
|
87
|
-
- Масштабируй каждую секцию под её сложность: несколько предложений для простого, до 200–300 слов для нюансированного
|
|
88
|
-
- После каждой секции спрашивай, всё ли верно пока
|
|
89
|
-
- Покрой: архитектуру, компоненты, поток данных, обработку ошибок, тестирование
|
|
90
|
-
- Будь готов вернуться и уточнить, если что-то не сходится
|
|
91
|
-
|
|
92
|
-
**Дизайн для изоляции и ясности:**
|
|
14
|
+
1. Прочитай доступный контекст и зафиксируй известное. Раздели факт, допущение и вопрос. Не задавай вопрос, ответ на который уже есть.
|
|
15
|
+
2. Сформулируй проблему, пользователя, решение, которое он сможет принять, и наблюдаемый успех. Предложи рамки задачи и не-цели.
|
|
16
|
+
3. Запроси только ответы, меняющие scope, риск или критерии. Связанные вопросы можно объединять; предпочтения без существенных последствий решай самостоятельно и обозначай допущение.
|
|
17
|
+
4. Если выбор реален, сравни 2–3 подхода, включая существующий механизм или отказ от изменения. Не придумывай альтернативы ради количества.
|
|
18
|
+
5. Запиши требования: ID REQ/NFR, условие и поведение, обоснование, проверяемый AC, приоритет и источник. User story добавь, когда она объясняет потребность; для технического инварианта достаточно роли системы и цели. Неразрешённое пометь явно.
|
|
19
|
+
6. Сверь атомарность, совместимость, отрицательные сценарии и метрику успеха. В FULL создай папку существующим wolf scaffold artifact, если доступен; иначе согласуй эквивалентный путь с L1.
|
|
20
|
+
7. Передай владельцу единый пакет существенных решений. Если он уже утвердил именно эти требования, сохрани основание без повторного гейта. Не помечай approved при неподтверждённом scope.
|
|
21
|
+
8. После утверждения передай в wolf-design. В LITE допустима непосредственная передача в исполнение с AC и проверками, если отдельный дизайн не нужен.
|
|
93
22
|
|
|
94
|
-
|
|
95
|
-
- Для каждого блока отвечай: что он делает, как им пользоваться, от чего он зависит?
|
|
96
|
-
- Можно ли понять блок, не читая его внутренности? Можно ли менять внутренности, не ломая потребителей? Если нет — границы требуют доработки.
|
|
97
|
-
- Маленькие чётко очерченные блоки проще и для тебя: над кодом, который держится в контексте целиком, ты рассуждаешь лучше, а правки точечнее. Разросшийся файл — часто сигнал, что он делает слишком много.
|
|
98
|
-
|
|
99
|
-
**Работа в существующей кодовой базе:**
|
|
100
|
-
|
|
101
|
-
- Изучи текущую структуру до предложения правок. Следуй существующим паттернам.
|
|
102
|
-
- Если существующий код мешает работе (файл разросся, границы размыты, ответственности перепутаны) — включи точечные улучшения в дизайн, как хороший разработчик, улучшающий код, в котором работает.
|
|
103
|
-
- Не предлагай несвязанный рефакторинг. Фокус на том, что служит текущей цели.
|
|
104
|
-
|
|
105
|
-
## Выход: requirements.md (v2 — анатомия §4.1 спеки конвейера)
|
|
106
|
-
|
|
107
|
-
Диалог с владельцем завершается артефактом `docs/dev/<дата>-<slug>/requirements.md`.
|
|
108
|
-
Папку создаёт `wolf scaffold artifact <slug>` — файлы артефактов вручную не создавать.
|
|
109
|
-
|
|
110
|
-
Структура документа — 7 секций:
|
|
111
|
-
|
|
112
|
-
1. Контекст и проблема — зачем, прозой, бизнес-языком; метрика успеха.
|
|
113
|
-
2. Область — что входит; НЕ входит (не-цели уровня требований).
|
|
114
|
-
3. Глоссарий — бизнес-термины фичи, если появились новые.
|
|
115
|
-
4. Функциональные требования — записи REQ-NN.
|
|
116
|
-
5. Нефункциональные (NFR-NN) — производительность, безопасность, совместимость;
|
|
117
|
-
каждая с измеримым критерием.
|
|
118
|
-
6. Ограничения и допущения — что считаем данным.
|
|
119
|
-
7. Журнал изменений (CR) — append-only: дата, затронутый REQ/NFR, что/почему,
|
|
120
|
-
кем утверждено, downstream-перегенерации.
|
|
121
|
-
|
|
122
|
-
Анатомия записи (обязательные поля каждой записи REQ/NFR):
|
|
123
|
-
|
|
124
|
-
- История: Как <роль>, я хочу <возможность>, чтобы <выгода>.
|
|
125
|
-
- Требование: Когда <условие>, система должна <поведение>.
|
|
126
|
-
- Обоснование: <зачем это бизнесу — словами владельца>.
|
|
127
|
-
- AC: <измеримый критерий; нетривиальные — Given/When/Then>.
|
|
128
|
-
- Приоритет: Must | Should | Could.
|
|
129
|
-
- Источник: <диалог <дата> / жалоба mem-… / ревью-линза>.
|
|
130
|
-
|
|
131
|
-
Критерии готовности записи (гейт линзы полноты; часть проверяет линт):
|
|
132
|
-
одно требование — одна запись; есть история И формальная запись; есть AC
|
|
133
|
-
(REQ без AC — находка линта); есть источник; неопределённость помечена
|
|
134
|
-
`[НЕОПРЕДЕЛЕНО: вопрос]`, не сжата; владелец пересказывает требование своими
|
|
135
|
-
словами — не может, это дефект требования, а не читателя.
|
|
136
|
-
|
|
137
|
-
Язык: полные предложения, ноль сленга, термины домена без сокращений, новое
|
|
138
|
-
понятие объясняется при первом употреблении, смысловое сжатие запрещено.
|
|
139
|
-
|
|
140
|
-
## Второй режим: roadmap-триаж
|
|
141
|
-
|
|
142
|
-
Диалог с владельцем по кандидатурам волн → вердикт по каждой: «волна N / бэклог /
|
|
143
|
-
отклонено + причина». Запись — перемещением, не копированием (пункт живёт ровно
|
|
144
|
-
в одном файле; дубль — находка линта doctor):
|
|
145
|
-
|
|
146
|
-
- волна N → `docs/dev/roadmap/wave-N.md` (состав волны, источник вердикта);
|
|
147
|
-
- бэклог → `docs/dev/roadmap/backlog.md`;
|
|
148
|
-
- отклонено → `docs/dev/roadmap/rejected.md` (+ причина).
|
|
149
|
-
|
|
150
|
-
## Ключевые принципы
|
|
151
|
-
|
|
152
|
-
- **Один вопрос за раз** — не перегружай несколькими вопросами
|
|
153
|
-
- **Предпочитай варианты ответа** — отвечать проще, чем на открытый вопрос
|
|
154
|
-
- **Беспощадный YAGNI** — убирай ненужные фичи из всех дизайнов
|
|
155
|
-
- **Исследуй альтернативы** — всегда 2–3 подхода до выбора
|
|
156
|
-
- **Инкрементальная валидация** — представляй дизайн, получай аппрув, потом дальше
|
|
157
|
-
- **Будь гибким** — возвращайся и уточняй, когда что-то не сходится
|
|
158
|
-
|
|
159
|
-
---
|
|
23
|
+
## Готовность
|
|
160
24
|
|
|
161
|
-
|
|
25
|
+
Понятны проблема, scope, AC и ограничения; существенные вопросы разрешены либо явно блокируют следующий этап. Техническую реализацию и код продукта здесь не пиши. Коммиты документа выполняет L1 по действующим полномочиям.
|
|
162
26
|
|
|
163
|
-
|
|
27
|
+
## Изменение требований
|
|
164
28
|
|
|
165
|
-
|
|
166
|
-
| ------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
167
|
-
| HARD-GATE до аппрува | сохранено | Ядро скилла; «user» → «владелец» |
|
|
168
|
-
| Анти-паттерн «слишком просто для дизайна» | сохранено полностью (1/1) | H7 |
|
|
169
|
-
| Чеклист (9 пунктов) | сохранено; п.2 (visual companion) отброшен, п.9 → wolf-plan | Браузерный компаньон вне базового набора |
|
|
170
|
-
| Пункт «Invoke writing-plans skill» | заменено → `{{tool.skill}} wolf-plan` | H4: терминальное состояние — только wolf-plan |
|
|
171
|
-
| TodoWrite | заменено → `{{tool.todowrite}}` | Плейсхолдер |
|
|
172
|
-
| Flowchart | сохранено; терминальный узел → wolf-plan | Ядро-флоу |
|
|
173
|
-
| «The Process» (5 блоков) | сохранено | Переносимое ядро |
|
|
174
|
-
| Путь `docs/superpowers/specs/` | заменено → `docs/specs/…` + предпочтения проекта | Harness-привязка (research §1) |
|
|
175
|
-
| Саморевью спеки (4 проверки) | сохранено полностью (4/4) | Чеклист-ядро |
|
|
176
|
-
| Гейт ревью владельца | сохранено | Ядро |
|
|
177
|
-
| Ключевые принципы (6) | сохранено полностью (6/6) | H7 |
|
|
178
|
-
| Скилл elements-of-style (секция «Документация») | отброшено | Скилл вне базового набора (research §6) |
|
|
179
|
-
| Visual Companion (секция + `visual-companion.md`) | отброшено | Браузерный компаньон и sibling-файл не переносятся |
|
|
180
|
-
| — | добавлено: Discovery-режим; worktree НЕ создаёт; `wolf add --type decision` | Спека §5.2 (архив §2.3), H5-распределение владения worktree |
|
|
29
|
+
Сохрани CR: что меняется, причина, затронутые ID, основание утверждения и downstream-артефакты. Верни design/plan/test-plan и связанные вердикты на перепроверку по влиянию. Не исправляй утверждённый AC незаметно.
|
|
181
30
|
|
|
182
|
-
|
|
31
|
+
Roadmap-триаж отделяй от требований фичи: кандидат имеет один основной статус и место, источник решения и причину отклонения/отложения.
|
|
@@ -1,293 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wolf-debug
|
|
3
|
-
description: "
|
|
3
|
+
description: "Исследуй баг, падение проверки или неожиданное поведение: воспроизведение, evidence, гипотезы, изолированные эксперименты и регрессионный фикс. Различай устранение причины и аварийное снижение ущерба."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Систематическая отладка
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Процесс
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
1. Зафиксируй симптом, ожидаемое, revision, среду, частоту, точные шаги и исходный лог. Не воспроизводится — сохраняй наблюдение и собирай данные, не объявляй причину установленной.
|
|
11
|
+
2. Проверь недавние изменения и работающий аналог. Прочитай относящиеся к проблеме контракты и зависимости; не требуй читать несвязанный большой референс целиком.
|
|
12
|
+
3. Трассируй входы/выходы на подозреваемых границах. Логируй минимальные метаданные с редактированием секретов/PII; не печатай окружение и payload полностью. Диагностические изменения должны иметь cleanup.
|
|
13
|
+
4. Веди журнал: hypothesis, evidence for/against, discriminating experiment, result, next step. Рассматривай альтернативы; каждый эксперимент меняет одну существенную переменную или явно описывает связанные изменения.
|
|
14
|
+
5. Подтверждённую причину зафиксируй воспроизводимой проверкой. Исправление проведи по test-driven-development; проверь исходный сценарий, регрессии и важные взаимодействия.
|
|
15
|
+
6. По завершении укажи root cause, fix, evidence, остаточные риски и удалённую временную диагностику. Урок записывай только при возможности переиспользования и с областью применимости.
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
## Повторы и эскалация
|
|
13
18
|
|
|
14
|
-
|
|
19
|
+
После 2 неудачных исправлений либо повторения одной гипотезы останови угадывание: проверь качество воспроизведения, полноту модели и входы. Третья неудача — сигнал независимого разбора, не доказательство дефекта архитектуры. L2 возвращает BLOCKED с журналом; L1 решает о новом контексте, модели, декомпозиции или архитектурном исследовании. Scope не расширяй сам.
|
|
15
20
|
|
|
16
|
-
##
|
|
21
|
+
## Инцидент
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
НИКАКИХ ФИКСОВ БЕЗ ИССЛЕДОВАНИЯ КОРНЕВОЙ ПРИЧИНЫ
|
|
20
|
-
```
|
|
23
|
+
При текущем ущербе сначала допустимо обратимое containment в пределах полномочий: откат, отключение функции или ограничение нагрузки. Зафиксируй разрешение, действие и способ возврата; не называй это устранением причины. Необратимые или внешние действия требуют действующего разрешения. После стабилизации продолжи расследование.
|
|
21
24
|
|
|
22
|
-
|
|
25
|
+
## Неизвестный исход
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Используй для ЛЮБОЙ технической проблемы:
|
|
27
|
-
- Падения тестов
|
|
28
|
-
- Баги в проде
|
|
29
|
-
- Неожиданное поведение
|
|
30
|
-
- Проблемы производительности
|
|
31
|
-
- Сломанные сборки
|
|
32
|
-
- Интеграционные проблемы
|
|
33
|
-
|
|
34
|
-
**Используй ОСОБЕННО, когда:**
|
|
35
|
-
- Давит время (авралы делают угадывание соблазнительным)
|
|
36
|
-
- «Просто один быстрый фикс» кажется очевидным
|
|
37
|
-
- Ты уже попробовал несколько фиксов
|
|
38
|
-
- Предыдущий фикс не сработал
|
|
39
|
-
- Ты не до конца понимаешь проблему
|
|
40
|
-
|
|
41
|
-
**Не пропускай, когда:**
|
|
42
|
-
- Проблема кажется простой (у простых багов тоже есть корневые причины)
|
|
43
|
-
- Ты спешишь (спешка гарантирует переделку)
|
|
44
|
-
- Владелец требует «починить СЕЙЧАС» (систематичность быстрее метаний)
|
|
45
|
-
|
|
46
|
-
## Четыре фазы
|
|
47
|
-
|
|
48
|
-
Каждую фазу ОБЯЗАН завершить до перехода к следующей.
|
|
49
|
-
|
|
50
|
-
### Фаза 1: исследование корневой причины
|
|
51
|
-
|
|
52
|
-
**ДО попытки ЛЮБОГО фикса:**
|
|
53
|
-
|
|
54
|
-
1. **Внимательно читай сообщения об ошибках**
|
|
55
|
-
- Не проскальзывай мимо ошибок и предупреждений
|
|
56
|
-
- Они часто содержат точное решение
|
|
57
|
-
- Читай стектрейсы полностью
|
|
58
|
-
- Отмечай номера строк, пути файлов, коды ошибок
|
|
59
|
-
|
|
60
|
-
2. **Воспроизводи стабильно**
|
|
61
|
-
- Можешь ли вызвать это надёжно?
|
|
62
|
-
- Каковы точные шаги?
|
|
63
|
-
- Происходит ли каждый раз?
|
|
64
|
-
- Не воспроизводится → собирай больше данных, не угадывай
|
|
65
|
-
|
|
66
|
-
3. **Проверь недавние изменения**
|
|
67
|
-
- Что изменилось из того, что могло это вызвать?
|
|
68
|
-
- Git diff, недавние коммиты
|
|
69
|
-
- Новые зависимости, изменения конфигурации
|
|
70
|
-
- Различия окружения
|
|
71
|
-
|
|
72
|
-
4. **Собирай улики в мультикомпонентных системах**
|
|
73
|
-
|
|
74
|
-
**КОГДА система имеет много компонентов (CI → сборка → подпись, API → сервис → БД):**
|
|
75
|
-
|
|
76
|
-
**ДО предложения фиксов добавь диагностическую инструментацию:**
|
|
77
|
-
```
|
|
78
|
-
Для КАЖДОЙ границы компонентов:
|
|
79
|
-
- Логируй, какие данные входят в компонент
|
|
80
|
-
- Логируй, какие данные выходят из компонента
|
|
81
|
-
- Проверяй проброс окружения/конфигурации
|
|
82
|
-
- Проверяй состояние на каждом слое
|
|
83
|
-
|
|
84
|
-
Один прогон для сбора улик — ГДЕ ломается
|
|
85
|
-
ЗАТЕМ анализ улик — какой компонент падает
|
|
86
|
-
ЗАТЕМ исследование именно этого компонента
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**Это показывает:** какой слой падает (секреты → workflow ✓, workflow → сборка ✗)
|
|
90
|
-
|
|
91
|
-
5. **Трассируй поток данных**
|
|
92
|
-
|
|
93
|
-
**КОГДА ошибка глубоко в стектрейсе:**
|
|
94
|
-
- Где порождается плохое значение?
|
|
95
|
-
- Кто вызвал это с плохим значением?
|
|
96
|
-
- Трассируй вверх, пока не найдёшь источник
|
|
97
|
-
- Чини в источнике, а не в симптоме
|
|
98
|
-
|
|
99
|
-
### Фаза 2: анализ паттернов
|
|
100
|
-
|
|
101
|
-
**Найди паттерн до фикса:**
|
|
102
|
-
|
|
103
|
-
1. **Найди работающие примеры**
|
|
104
|
-
- Найди похожий работающий код в той же кодовой базе
|
|
105
|
-
- Что работает так же, как то, что сломано?
|
|
106
|
-
|
|
107
|
-
2. **Сравни с эталонами**
|
|
108
|
-
- Если реализуешь паттерн — прочитай референс ПОЛНОСТЬЮ
|
|
109
|
-
- Не просматривай по диагонали — каждую строку
|
|
110
|
-
- Пойми паттерн полностью до применения
|
|
111
|
-
|
|
112
|
-
3. **Определи различия**
|
|
113
|
-
- Что отличается между работающим и сломанным?
|
|
114
|
-
- Перечисли каждое различие, каким бы малым ни было
|
|
115
|
-
- Не предполагай «это не может иметь значения»
|
|
116
|
-
|
|
117
|
-
4. **Пойми зависимости**
|
|
118
|
-
- Какие ещё компоненты ему нужны?
|
|
119
|
-
- Какие настройки, конфигурация, окружение?
|
|
120
|
-
- Какие предположения он делает?
|
|
121
|
-
|
|
122
|
-
### Фаза 3: гипотеза и тестирование
|
|
123
|
-
|
|
124
|
-
**Научный метод:**
|
|
125
|
-
|
|
126
|
-
1. **Сформулируй единственную гипотезу**
|
|
127
|
-
- Сформулируй ясно: «Я думаю, корневая причина — X, потому что Y»
|
|
128
|
-
- Запиши
|
|
129
|
-
- Будь конкретен, не расплывчат
|
|
130
|
-
|
|
131
|
-
2. **Тестируй минимально**
|
|
132
|
-
- Сделай САМОЕ МАЛЕНЬКОЕ возможное изменение для проверки гипотезы
|
|
133
|
-
- Одна переменная за раз
|
|
134
|
-
- Не чини несколько вещей сразу
|
|
135
|
-
|
|
136
|
-
3. **Верифицируй до продолжения**
|
|
137
|
-
- Сработало? Да → фаза 4
|
|
138
|
-
- Не сработало — сформулируй НОВУЮ гипотезу
|
|
139
|
-
- НЕ наслаивай ещё фиксы сверху
|
|
140
|
-
|
|
141
|
-
4. **Когда не знаешь**
|
|
142
|
-
- Скажи «я не понимаю X»
|
|
143
|
-
- Не притворяйся, что знаешь
|
|
144
|
-
- Проси помощи
|
|
145
|
-
- Исследуй дальше
|
|
146
|
-
|
|
147
|
-
### Фаза 4: реализация фикса
|
|
148
|
-
|
|
149
|
-
**Чини корневую причину, а не симптом:**
|
|
150
|
-
|
|
151
|
-
1. **Создай падающий тест**
|
|
152
|
-
- Простейшее возможное воспроизведение
|
|
153
|
-
- Автотест, если возможно
|
|
154
|
-
- Одноразовый тест-скрипт, если нет фреймворка
|
|
155
|
-
- ОБЯЗАН быть до фикса
|
|
156
|
-
- **Используй скилл test-driven-development для написания правильного падающего теста — фикс пишется ТОЛЬКО под падающий тест**
|
|
157
|
-
|
|
158
|
-
2. **Реализуй единственный фикс**
|
|
159
|
-
- Адресуй выявленную корневую причину
|
|
160
|
-
- ОДНО изменение за раз
|
|
161
|
-
- Никаких улучшений «раз уж я здесь»
|
|
162
|
-
- Никакого сопутствующего рефакторинга
|
|
163
|
-
|
|
164
|
-
3. **Верифицируй фикс**
|
|
165
|
-
- Тест теперь проходит?
|
|
166
|
-
- Другие тесты не сломались? (`npm run check` — verification-примитив проекта)
|
|
167
|
-
- Проблема реально решена?
|
|
168
|
-
|
|
169
|
-
4. **Если фикс не сработал**
|
|
170
|
-
- СТОП
|
|
171
|
-
- Посчитай: сколько фиксов ты уже попробовал?
|
|
172
|
-
- Если < 3 — вернись к фазе 1, переанализируй с новой информацией
|
|
173
|
-
- **Если ≥ 3 — СТОП и поставь под вопрос архитектуру (шаг 5 ниже)**
|
|
174
|
-
- НЕ пытайся делать фикс №4 без архитектурного обсуждения
|
|
175
|
-
|
|
176
|
-
5. **Если 3+ фиксов провалились: поставь под вопрос архитектуру**
|
|
177
|
-
|
|
178
|
-
**Паттерн, указывающий на архитектурную проблему:**
|
|
179
|
-
- Каждый фикс вскрывает новое общее состояние/связность/проблему в другом месте
|
|
180
|
-
- Фиксы требуют «массированного рефакторинга»
|
|
181
|
-
- Каждый фикс создаёт новые симптомы в других местах
|
|
182
|
-
|
|
183
|
-
**СТОП и спроси фундаментально:**
|
|
184
|
-
- Паттерн в принципе здрав?
|
|
185
|
-
- Не «держимся ли мы за него по чистой инерции»?
|
|
186
|
-
- Может, рефакторить архитектуру вместо продолжения латания симптомов?
|
|
187
|
-
|
|
188
|
-
**Обсуди с владельцем до новых попыток фикса.**
|
|
189
|
-
|
|
190
|
-
Это НЕ провалившаяся гипотеза — это неверная архитектура.
|
|
191
|
-
|
|
192
|
-
## Red Flags — СТОП и вернись к процессу
|
|
193
|
-
|
|
194
|
-
Если ловишь себя на мысли:
|
|
195
|
-
- «Быстрый фикс сейчас, исследую потом»
|
|
196
|
-
- «Просто поменяю X и посмотрю, сработает ли»
|
|
197
|
-
- «Внесу несколько изменений, прогоню тесты»
|
|
198
|
-
- «Пропущу тест, проверю руками»
|
|
199
|
-
- «Наверное, это X, поправлю это»
|
|
200
|
-
- «Я не до конца понимаю, но это может сработать»
|
|
201
|
-
- «В паттерне сказано X, но я адаптирую по-своему»
|
|
202
|
-
- «Вот основные проблемы: [список фиксов без исследования]»
|
|
203
|
-
- Предлагаешь решения до трассировки потока данных
|
|
204
|
-
- **«Ещё одна попытка фикса» (когда уже попробовал 2+)**
|
|
205
|
-
- **Каждый фикс вскрывает новую проблему в другом месте**
|
|
206
|
-
|
|
207
|
-
**ВСЁ это значит: СТОП. Вернись к фазе 1.**
|
|
208
|
-
|
|
209
|
-
**Если 3+ фиксов провалились:** поставь под вопрос архитектуру (фаза 4, шаг 5).
|
|
210
|
-
|
|
211
|
-
## Сигналы владельца, что ты делаешь не так
|
|
212
|
-
|
|
213
|
-
**Следи за этими поправками:**
|
|
214
|
-
- «А это вообще происходит?» — Ты предположил, не проверив
|
|
215
|
-
- «Это нам покажет…?» — Надо было добавить сбор улик
|
|
216
|
-
- «Перестань угадывать» — Ты предлагаешь фиксы без понимания
|
|
217
|
-
- «Продумай фундаментально» — Ставь под вопрос основы, а не только симптомы
|
|
218
|
-
- «Мы застряли?» (фрустрация) — Твой подход не работает
|
|
219
|
-
|
|
220
|
-
**Увидел — СТОП. Вернись к фазе 1.**
|
|
221
|
-
|
|
222
|
-
## Типичные рационализации
|
|
223
|
-
|
|
224
|
-
| Оправдание | Реальность |
|
|
225
|
-
|--------|---------|
|
|
226
|
-
| «Проблема простая, процесс не нужен» | У простых проблем тоже есть корневые причины. Процесс быстр для простых багов. |
|
|
227
|
-
| «Авария, нет времени на процесс» | Систематический дебаг БЫСТРЕЕ, чем метания угадай-и-проверь. |
|
|
228
|
-
| «Сначала попробую это, потом исследую» | Первый фикс задаёт паттерн. Делай правильно с самого начала. |
|
|
229
|
-
| «Тест напишу после подтверждения, что фикс работает» | Непроверенные фиксы не приживаются. Сначала тест — потом он доказывает. |
|
|
230
|
-
| «Несколько фиксов сразу сэкономят время» | Не изолировать, что сработало. Порождает новые баги. |
|
|
231
|
-
| «Референс слишком длинный, адаптирую паттерн по мотивам» | Частичное понимание гарантирует баги. Читай полностью. |
|
|
232
|
-
| «Вижу проблему, давайте чинить» | Видеть симптомы ≠ понимать корневую причину. |
|
|
233
|
-
| «Ещё одна попытка фикса» (после 2+ провалов) | 3+ провала = архитектурная проблема. Ставь паттерн под вопрос, не чини снова. |
|
|
234
|
-
|
|
235
|
-
## Быстрая шпаргалка
|
|
236
|
-
|
|
237
|
-
| Фаза | Ключевые активности | Критерий успеха |
|
|
238
|
-
|-------|---------------|------------------|
|
|
239
|
-
| **1. Корневая причина** | Читай ошибки, воспроизводи, проверь изменения, собери улики | Понимать ЧТО и ПОЧЕМУ |
|
|
240
|
-
| **2. Паттерн** | Найди работающие примеры, сравни | Определить различия |
|
|
241
|
-
| **3. Гипотеза** | Сформулируй теорию, тестируй минимально | Подтверждена или новая |
|
|
242
|
-
| **4. Реализация** | Создай тест, чини, верифицируй | Баг решён, тесты зелёные |
|
|
243
|
-
|
|
244
|
-
## Когда процесс показывает «корневой причины нет»
|
|
245
|
-
|
|
246
|
-
Если систематическое исследование показало, что проблема действительно экологическая, зависит от таймингов или внешняя:
|
|
247
|
-
|
|
248
|
-
1. Ты завершил процесс
|
|
249
|
-
2. Задокументируй, что исследовал (`wolf add --type lesson` — следующий агент не должен повторять путь)
|
|
250
|
-
3. Реализуй подходящую обработку (retry, timeout, сообщение об ошибке)
|
|
251
|
-
4. Добавь мониторинг/логирование для будущих исследований
|
|
252
|
-
|
|
253
|
-
**Но:** 95% случаев «нет корневой причины» — это незавершённое исследование.
|
|
254
|
-
|
|
255
|
-
## Смежные скиллы
|
|
256
|
-
|
|
257
|
-
- **test-driven-development** — для создания падающего теста (фаза 4, шаг 1): фикс только под падающий тест
|
|
258
|
-
- **verification-before-completion** — проверь, что фикс сработал, до заявления об успехе
|
|
259
|
-
|
|
260
|
-
## Реальный эффект
|
|
261
|
-
|
|
262
|
-
Из дебаг-сессий:
|
|
263
|
-
- Систематический подход: 15–30 минут на фикс
|
|
264
|
-
- Подход случайных фиксов: 2–3 часа метаний
|
|
265
|
-
- Фикс с первого раза: 95% против 40%
|
|
266
|
-
- Новые баги: почти ноль против обычного дела
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Трассировка адаптации
|
|
271
|
-
|
|
272
|
-
> Источник: `~/.config/opencode/superpowers/skills/systematic-debugging/SKILL.md`, upstream 6efe32c (2026-04-23)
|
|
273
|
-
|
|
274
|
-
| Пункт источника | Судьба | Почему |
|
|
275
|
-
|---|---|---|
|
|
276
|
-
| Обзор + ядро принципа | сохранено | Ядро |
|
|
277
|
-
| Железный закон | сохранено | STOP-правило |
|
|
278
|
-
| When to Use (6) / ESPECIALLY (5) / Don't skip (3) | сохранено полностью (14/14) | H7 |
|
|
279
|
-
| Фаза 1 (5 пунктов) | сохранено; bash-пример (codesign/macOS) отброшен | Средо-специфичный; техника инструментации сохранена |
|
|
280
|
-
| Ссылка на `root-cause-tracing.md` | заменено краткой версией (быстрая версия уже в источнике) | Sibling-файл не переносится |
|
|
281
|
-
| Фаза 2 (4) | сохранено полностью | Ядро |
|
|
282
|
-
| Фаза 3 (4) | сохранено полностью | Ядро |
|
|
283
|
-
| Фаза 4 (5) | сохранено; `superpowers:test-driven-development` → жёсткая отсылка к test-driven-development (фикс только под падающий тест); верификация — `npm run check` | Спека §5.2 |
|
|
284
|
-
| Red Flags (11) | сохранено полностью (11/11) | H7 |
|
|
285
|
-
| «Signals You're Doing Wrong» (5) | сохранено полностью (5/5); human partner → владелец | H7 |
|
|
286
|
-
| Common Rationalizations (8 строк) | сохранено полностью (8/8) | H7 |
|
|
287
|
-
| Quick Reference | сохранено | Чеклист |
|
|
288
|
-
| «No Root Cause» | сохранено; + `wolf add --type lesson` | Wolf-переплетение |
|
|
289
|
-
| Supporting techniques (3 sibling-файла) | отброшено | Файлы каталога скилла не переносятся |
|
|
290
|
-
| Related skills | сохранено; префикс superpowers: снят | Имена набора |
|
|
291
|
-
| Real-World Impact | сохранено | Мотивация |
|
|
292
|
-
|
|
293
|
-
Перенесённые списки: red flags 11/11, сигналы 5/5, рационализации 8/8, when-to-use 6/6 + особенно 5/5 + не-пропускать 3/3.
|
|
27
|
+
Если подтверждены только симптомы, верни INCONCLUSIVE в отчёте: исследованное, отвергнутые гипотезы, недостающие данные и следующая проверка. Retry/timeout — осознанное mitigation с проверками и наблюдаемостью, а не доказательство отсутствия причины.
|
|
@@ -1,45 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wolf-design
|
|
3
|
-
description:
|
|
3
|
+
description: "Проектируй решение по утверждённым требованиям: компоненты, контракты, потоки, риски и проверяемые решения. Используй при FULL или изменении интерфейсов, состояния, миграций и границ доверия."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Требования → дизайн
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Вход и выход
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
Скилл исполняется чистым воркером; диспетчеризация не меняется.
|
|
10
|
+
Вход: approved requirements или утверждённый бриф, baseline SHA, существующая архитектура и профиль проекта. Выход: design.md с состоянием review, картой покрытия REQ/NFR и решениями для согласования. Автор — назначенный L1/L2; утверждение — по политике проекта через L0.
|
|
12
11
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
- `docs/dev/<дата>-<slug>/requirements.md` со статусом `approved` (draft — стоп:
|
|
16
|
-
сначала гейт владельца/линз по wolf-review).
|
|
17
|
-
- Кодовая база (чтение; file:line для контрактов).
|
|
18
|
-
|
|
19
|
-
## Выход: design.md (в папке фичи)
|
|
20
|
-
|
|
21
|
-
Секция заполняется поверх скелета из `wolf scaffold artifact`:
|
|
22
|
-
|
|
23
|
-
1. **Глоссарий** — технические термины; термин вводится до использования.
|
|
24
|
-
2. **Компоненты и ответственность** — имя — ответственность — файл.
|
|
25
|
-
3. **Контракты** — типы, схемы, форматы событий блоками ≤ 10 строк; псевдокод
|
|
26
|
-
алгоритмов разрешён, когда точное описание делает дизайн однозначнее прозы.
|
|
27
|
-
4. **ADR-карточки** — «Контекст → Решение → Последствия» ключевых решений.
|
|
28
|
-
ADR — продуктовые выборы: владелец визирует отдельно (список ADR — в отчёт).
|
|
29
|
-
5. **Ссылки на NFR** — design ссылается на `NFR-NN` из requirements.md и добавляет
|
|
30
|
-
технические бюджеты; собственных ID-записей не заводит (двойное владение запрещено).
|
|
31
|
-
|
|
32
|
-
## Железные запреты
|
|
12
|
+
## Процесс
|
|
33
13
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
14
|
+
1. Проверь актуальность требований и прочитай код затронутых компонентов и потребителей. Ссылки задавай как revision:path:symbol; номера строк — дополнительный ориентир.
|
|
15
|
+
2. Для каждого REQ/NFR укажи компонент, контракт, проверяемое свойство либо обоснованное «дизайн не требуется».
|
|
16
|
+
3. Опиши ответственность компонентов, владение состоянием, границы интерфейсов, потоки данных и зависимостей. Для конкурентной работы задай инварианты и порядок записи.
|
|
17
|
+
4. Контракты задавай типами/схемами достаточной длины; алгоритмы — псевдокодом, если проза допускает разные реализации. Не вставляй готовую реализацию продукта.
|
|
18
|
+
5. Для существенного решения запиши ADR: контекст, альтернативы, выбор, последствия, риск, проверка допущения. Продуктовые компромиссы, scope и необратимые решения передай L0; локальные технические выборы оставь L1 в рамках мандата.
|
|
19
|
+
6. Проверь отказ зависимостей, частичный сбой, retry/idempotency, восстановление, observability, совместимость и миграции. Для каждой неприменимой области достаточно обоснования.
|
|
20
|
+
7. При работе с внешним контентом или исполнением команд опиши trust boundary, права, защиту секретов и validation. Не объявляй механизм реализованным только по наличию запрета в тексте.
|
|
21
|
+
8. Укажи технические бюджеты NFR и способ измерения; предложи ограниченный spike для неопределённости, блокирующей выбор. Результат spike не становится реализацией автоматически.
|
|
22
|
+
9. Передай design на wolf-review. Получи требуемые согласования и сохрани revision вердикта.
|
|
38
23
|
|
|
39
|
-
##
|
|
24
|
+
## Готовность и возврат
|
|
40
25
|
|
|
41
|
-
|
|
42
|
-
(компонент, контракт или осознанное «не требует дизайна»).
|
|
43
|
-
2. Сверить контракты с кодом базлайна (file:line).
|
|
44
|
-
3. Заполнить секции; front-matter `status: review`.
|
|
45
|
-
4. Отчёт: список ADR-карточек (владельцу на визу) + открытые `[НЕОПРЕДЕЛЕНО: …]`.
|
|
26
|
+
Каждое требование покрыто, контракты согласованы с baseline, критические допущения проверены или заблокированы. Утверждённый дизайн передай в wolf-plan и wolf-testplan. Изменение требования верни в discovery; изменение контракта инвалидирует зависимые задачи, тесты и ревью.
|