mister-wolf 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
  2. package/dist/adapters/cli/cli-entry.js +2 -0
  3. package/dist/adapters/cli/cli-entry.js.map +1 -1
  4. package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
  5. package/dist/adapters/cli/commands/memory-init.js +33 -1
  6. package/dist/adapters/cli/commands/memory-init.js.map +1 -1
  7. package/dist/adapters/cli/commands/memory-sync.d.ts +3 -0
  8. package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -0
  9. package/dist/adapters/cli/commands/memory-sync.js +28 -0
  10. package/dist/adapters/cli/commands/memory-sync.js.map +1 -0
  11. package/dist/adapters/render/manifest.d.ts +13 -0
  12. package/dist/adapters/render/manifest.d.ts.map +1 -0
  13. package/dist/adapters/render/manifest.js +14 -0
  14. package/dist/adapters/render/manifest.js.map +1 -0
  15. package/dist/adapters/render/opencode/opencode-renderer.d.ts +22 -0
  16. package/dist/adapters/render/opencode/opencode-renderer.d.ts.map +1 -0
  17. package/dist/adapters/render/opencode/opencode-renderer.js +125 -0
  18. package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -0
  19. package/dist/adapters/render/stamp.d.ts +8 -0
  20. package/dist/adapters/render/stamp.d.ts.map +1 -0
  21. package/dist/adapters/render/stamp.js +23 -0
  22. package/dist/adapters/render/stamp.js.map +1 -0
  23. package/dist/adapters/render/templates-root.d.ts +6 -0
  24. package/dist/adapters/render/templates-root.d.ts.map +1 -0
  25. package/dist/adapters/render/templates-root.js +30 -0
  26. package/dist/adapters/render/templates-root.js.map +1 -0
  27. package/dist/app/use-cases/init-project.d.ts +12 -0
  28. package/dist/app/use-cases/init-project.d.ts.map +1 -1
  29. package/dist/app/use-cases/init-project.js +13 -1
  30. package/dist/app/use-cases/init-project.js.map +1 -1
  31. package/dist/app/use-cases/seed-base-playbooks.d.ts +26 -0
  32. package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -0
  33. package/dist/app/use-cases/seed-base-playbooks.js +43 -0
  34. package/dist/app/use-cases/seed-base-playbooks.js.map +1 -0
  35. package/dist/app/use-cases/sync-base-set.d.ts +12 -0
  36. package/dist/app/use-cases/sync-base-set.d.ts.map +1 -0
  37. package/dist/app/use-cases/sync-base-set.js +10 -0
  38. package/dist/app/use-cases/sync-base-set.js.map +1 -0
  39. package/dist/ports/base-set-renderer.port.d.ts +20 -0
  40. package/dist/ports/base-set-renderer.port.d.ts.map +1 -0
  41. package/dist/ports/base-set-renderer.port.js +2 -0
  42. package/dist/ports/base-set-renderer.port.js.map +1 -0
  43. package/package.json +11 -3
  44. package/templates/base/README.md +1 -0
  45. package/templates/base/agents/executor-lead.md +79 -0
  46. package/templates/base/agents/mr-wolf.md +76 -0
  47. package/templates/base/agents/steward.md +56 -0
  48. package/templates/base/agents/worker-implementer.md +58 -0
  49. package/templates/base/agents/worker-researcher.md +59 -0
  50. package/templates/base/agents/worker-reviewer.md +58 -0
  51. package/templates/base/commands/analyze-doc.md +11 -0
  52. package/templates/base/commands/complain.md +13 -0
  53. package/templates/base/commands/doc-review.md +15 -0
  54. package/templates/base/playbooks/complaint-protocol.md +39 -0
  55. package/templates/base/playbooks/steward-nastavnik.md +38 -0
  56. package/templates/base/playbooks/wolf-review-lenses.md +50 -0
  57. package/templates/base/playbooks/worker-implementer-playbook.md +51 -0
  58. package/templates/base/playbooks/worker-researcher-playbook.md +51 -0
  59. package/templates/base/playbooks/worker-reviewer-playbook.md +54 -0
  60. package/templates/base/skills/finishing-a-development-branch/SKILL.md +213 -0
  61. package/templates/base/skills/requesting-code-review/SKILL.md +123 -0
  62. package/templates/base/skills/test-driven-development/SKILL.md +391 -0
  63. package/templates/base/skills/using-git-worktrees/SKILL.md +178 -0
  64. package/templates/base/skills/using-skills/SKILL.md +128 -0
  65. package/templates/base/skills/verification-before-completion/SKILL.md +157 -0
  66. package/templates/base/skills/wolf-brainstorm/SKILL.md +167 -0
  67. package/templates/base/skills/wolf-debug/SKILL.md +293 -0
  68. package/templates/base/skills/wolf-execute/SKILL.md +96 -0
  69. package/templates/base/skills/wolf-handoff/SKILL.md +101 -0
  70. package/templates/base/skills/wolf-plan/SKILL.md +177 -0
  71. package/templates/base/skills/wolf-review/SKILL.md +61 -0
  72. package/templates/base/skills/wolf-sdd/SKILL.md +239 -0
  73. package/templates/opencode/README.md +1 -0
  74. package/templates/opencode/plugins/wolf-router.ts +104 -0
  75. package/templates/opencode/plugins/wolf-session-start.js +144 -0
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: using-skills
3
+ description: Мета-скилл: как находить и применять скиллы — 1%-правило, лестница приоритетов, порядок и типы. Use at the start of any session; для воркеров L2 диспетчерский контур отключён (см. ниже).
4
+ ---
5
+
6
+ # using-skills — как пользоваться скиллами
7
+
8
+ > Источник: ~/.config/opencode/superpowers/skills/using-superpowers/SKILL.md,
9
+ > upstream 6efe32c (2026-04-23).
10
+
11
+ ## Трассировка переноса
12
+
13
+ | Пункт источника | Судьба |
14
+ | --------------- | ------ |
15
+ | Frontmatter name/description | Сохранено (description переработан) |
16
+ | SUBAGENT-STOP-блок | Заменено: воркеры L2 — диспетчерский контур отключён; скиллы пассивны (воркер читает процесс своей единственной задачи, но не диспетчит и не выбирает) |
17
+ | EXTREMELY-IMPORTANT (1%-правило) | Сохранено, по смыслу дословно |
18
+ | Instruction Priority (CLAUDE.md > skills > system prompt) | Заменено: лестница «правила проекта/память Wolf (AGENTS.md, `wolf search`) > скиллы > дефолт-поведение» |
19
+ | How to Access Skills (разделы Claude Code / Copilot / Gemini) | Заменено: один нейтральный вызов {{tool.skill}} |
20
+ | Platform Adaptation (tool mappings, references/*.md) | Отброшено: платформенная специфика — зона рендерера (подстановка имён тулов через плейсхолдеры) |
21
+ | The Rule + flowchart | Сохранено; Skill-тул → {{tool.skill}}, TodoWrite → {{tool.todowrite}}, Task (субагенты) → {{tool.task}}; вершина «About to EnterPlanMode?» — отброшена (концепт Claude Code, в Wolf нет аналога) |
22
+ | Red Flags — таблица рационализаций | Сохранено ПОЛНОСТЬЮ: 12/12, по смыслу дословно (upstream запрещает правки списка) |
23
+ | Skill Priority (process → implementation) | Сохранено |
24
+ | Skill Types (rigid / flexible) | Сохранено |
25
+ | User Instructions (WHAT ≠ HOW) | Сохранено |
26
+
27
+ ## Воркеры L2 — пассивный режим
28
+
29
+ Если ты воркер L2 (диспетчерский контур отключён): скиллы для тебя —
30
+ **пассивные процессы**. Читай процесс своей единственной задачи (дисциплина
31
+ из подзадачи — например TDD), но не диспетчь скиллы, не выбирай их сам и не
32
+ запускай перебор применимости. Спавн субагентов не твой — у воркеров
33
+ {{tool.task}} отключён; нужна чужая работа — верни диспетчеру «нужен
34
+ executor: <причина>».
35
+
36
+ ## Правило
37
+
38
+ **Загружай релевантный или запрошенный скилл ДО любого ответа или
39
+ действия.** Даже 1% шанс применимости → загрузи скилл и проверь. Если
40
+ загруженный скилл оказался неподходящим — использовать его не обязан.
41
+
42
+ Если думаешь, что скилл может примениться к твоей задаче, — у тебя нет
43
+ выбора: загрузи его. Это не обсуждается и не является опциональным.
44
+ Рационализировать выход из этого нельзя.
45
+
46
+ ```dot
47
+ digraph skill_flow {
48
+ "Сообщение пользователя" [shape=doublecircle];
49
+ "Может примениться какой-то скилл?" [shape=diamond];
50
+ "Загрузи через {{tool.skill}}" [shape=box];
51
+ "Анонс: «Использую [скилл] для [цель]»" [shape=box];
52
+ "Есть чек-лист?" [shape=diamond];
53
+ "Создай задачи в {{tool.todowrite}} по пунктам" [shape=box];
54
+ "Следуй скиллу точно" [shape=box];
55
+ "Ответь (включая уточнения)" [shape=doublecircle];
56
+
57
+ "Сообщение пользователя" -> "Может примениться какой-то скилл?";
58
+ "Может примениться какой-то скилл?" -> "Загрузи через {{tool.skill}}" [label="да, даже 1%"];
59
+ "Может примениться какой-то скилл?" -> "Ответь (включая уточнения)" [label="точно нет"];
60
+ "Загрузи через {{tool.skill}}" -> "Анонс: «Использую [скилл] для [цель]»";
61
+ "Анонс: «Использую [скилл] для [цель]»" -> "Есть чек-лист?";
62
+ "Есть чек-лист?" -> "Создай задачи в {{tool.todowrite}} по пунктам" [label="да"];
63
+ "Есть чек-лист?" -> "Следуй скиллу точно" [label="нет"];
64
+ "Создай задачи в {{tool.todowrite}} по пунктам" -> "Следуй скиллу точно";
65
+ "Следуй скиллу точно" -> "Ответь (включая уточнения)";
66
+ }
67
+ ```
68
+
69
+ ## Лестница приоритетов
70
+
71
+ Скиллы перекрывают дефолтное поведение, но **правила проекта и память Wolf
72
+ всегда выше**:
73
+
74
+ 1. **Правила проекта и память Wolf** (AGENTS.md проекта; актуальные
75
+ правила, решения и уроки из памяти — `wolf search`, `wolf brief`) —
76
+ высший приоритет.
77
+ 2. **Скиллы** — перекрывают дефолтное поведение там, где не конфликтуют
78
+ с п. 1.
79
+ 3. **Дефолт-поведение** — низший приоритет.
80
+
81
+ Если правила проекта говорят «без TDD», а скилл требует «всегда TDD» —
82
+ следуй правилам проекта. Владелец управляет.
83
+
84
+ ## Red Flags
85
+
86
+ Эти мысли означают СТОП — ты рационализируешь:
87
+
88
+ | Мысль | Реальность |
89
+ | ----- | ---------- |
90
+ | «Это просто вопрос» | Вопросы — это задачи. Проверь скиллы. |
91
+ | «Сначала мне нужен больше контекста» | Проверка скиллов — ДО уточняющих вопросов. |
92
+ | «Дай сначала осмотрю кодовую базу» | Скиллы говорят, КАК осматривать. Сначала проверь. |
93
+ | «Быстро гляну git/файлы» | У файлов нет контекста разговора. Проверь скиллы. |
94
+ | «Сначала соберу информацию» | Скиллы говорят, КАК собирать информацию. |
95
+ | «Тут не нужен формальный скилл» | Если скилл существует — используй. |
96
+ | «Я помню этот скилл» | Скиллы эволюционируют. Читай актуальную версию. |
97
+ | «Это не считается задачей» | Действие = задача. Проверь скиллы. |
98
+ | «Скилл — из пушки по воробьям» | Простое становится сложным. Используй его. |
99
+ | «Сделаю сперва вот это одно» | Проверь ДО того, как что-либо делать. |
100
+ | «Это ощущается продуктивным» | Недисциплинированные действия — впустую. Скиллы предотвращают это. |
101
+ | «Я знаю, что это значит» | Знать концепцию ≠ использовать скилл. Загрузи. |
102
+
103
+ ## Порядок скиллов
104
+
105
+ Когда применимо несколько — порядок такой:
106
+
107
+ 1. **Сначала process-скиллы** (wolf-brainstorm, wolf-debug — класс
108
+ brainstorming/debugging) — они определяют, КАК подойти к задаче.
109
+ 2. **Потом implementation-скиллы** — они ведут исполнение.
110
+
111
+ «Построим X» → сначала brainstorming-класс, затем implementation.
112
+ «Почини баг» → сначала debugging-класс, затем доменные скиллы.
113
+
114
+ Диспетчеризация исполнения на воркеров — через {{tool.task}} (зона
115
+ координаторов L0/L1, не воркеров).
116
+
117
+ ## Типы скиллов
118
+
119
+ **Rigid** (TDD, wolf-debug): следуй точно. Не адаптируй дисциплину.
120
+
121
+ **Flexible** (паттерны): адаптируй принципы к контексту.
122
+
123
+ Скилл сам говорит, какого он типа.
124
+
125
+ ## Инструкции пользователя
126
+
127
+ Инструкции говорят ЧТО, а не КАК. «Добавь X» или «Почини Y» не означает
128
+ пропускать процессы.
@@ -0,0 +1,157 @@
1
+ ---
2
+ name: verification-before-completion
3
+ description: Используй перед любым заявлением о завершённости, исправленности или прохождении тестов, перед коммитом или PR — требует запуска верификационных команд и подтверждения вывода до любых заявлений об успехе; доказательства раньше утверждений, всегда
4
+ ---
5
+
6
+ # Verification Before Completion
7
+
8
+ > Источник: ~/.config/opencode/superpowers/skills/verification-before-completion/SKILL.md, upstream 6efe32c (2026-04-23).
9
+ > Адресат: все уровни (L0–L2); в контуре Wolf — обязательная дисциплина отчётов executor-lead и воркеров.
10
+
11
+ ## Трассировка адаптации
12
+
13
+ | Пункт upstream | Судьба |
14
+ |---|---|
15
+ | Iron Law, функция-гейт (5 шагов), таблица типовых сбоев (7), red flags (8), рационализации (8), ключевые паттерны (5), «Why This Matters» (5), «When To Apply» (2 списка) | **сохранено полностью** по смыслу дословно (H7; research §1: «Нет — полностью переносим») |
16
+ | «Agent delegation» | **заменено**: агенты → воркеры контура Wolf (worker-\*); отчёт воркера — не доказательство, dispatcher проверяет git-дифф и верификацию |
17
+ | Тестовая команда | **конкретизировано**: `npm run check` — верификационный примитив проекта (+ точечные прогоны `npx vitest run <путь>`) |
18
+ | Nothing | **отброшено**: ничего — привязок к harness у источника нет |
19
+
20
+ ## Обзор
21
+
22
+ Заявлять о завершённости работы без верификации — нечестность, а не эффективность.
23
+
24
+ **Принцип:** доказательства раньше утверждений. Всегда.
25
+
26
+ **Нарушение буквы этого правила — нарушение духа этого правила.**
27
+
28
+ ## Iron Law
29
+
30
+ ```
31
+ НИКАКИХ ЗАЯВЛЕНИЙ О ЗАВЕРШЕНИИ БЕЗ СВЕЖИХ ДОКАЗАТЕЛЬСТВ ВЕРИФИКАЦИИ
32
+ ```
33
+
34
+ Не запустил верификационную команду в этом сообщении — не можешь заявлять, что она проходит.
35
+
36
+ ## Функция-гейт
37
+
38
+ ```
39
+ ПЕРЕД любым заявлением статуса или выражением удовлетворения:
40
+
41
+ 1. ОПРЕДЕЛИ: какая команда доказывает это заявление?
42
+ 2. ЗАПУСТИ: полную команду (свежую, целиком)
43
+ 3. ПРОЧИТАЙ: весь вывод, проверь exit code, посчитай падения
44
+ 4. СВЕРЬ: вывод подтверждает заявление?
45
+ - НЕТ → назови фактический статус с доказательствами
46
+ - ДА → делай заявление С доказательствами
47
+ 5. ТОЛЬКО ПОТОМ: заявляй
48
+
49
+ Пропустил любой шаг = ложь, а не верификация
50
+ ```
51
+
52
+ ## Типовые сбои
53
+
54
+ | Заявление | Требуется | Недостаточно |
55
+ |-------|----------|----------------|
56
+ | Тесты проходят | Вывод тестовой команды: 0 падений | Прошлый прогон, «должно пройти» |
57
+ | Линтер чист | Вывод линтера: 0 ошибок | Частичная проверка, экстраполяция |
58
+ | Сборка проходит | Команда сборки: exit 0 | Линтер зелёный, логи выглядят хорошо |
59
+ | Баг исправлен | Тест исходного симптома: проходит | Код изменён, «предположительно исправлено» |
60
+ | Регрессионный тест работает | Проверен цикл красный-зелёный | Тест прошёл один раз |
61
+ | Воркер завершил задачу | git-дифф показывает изменения | Отчёт воркера «успех» |
62
+ | Требования выполнены | Построчный чеклист | Тесты проходят |
63
+
64
+ ## Red flags — СТОП
65
+
66
+ - «должно», «вероятно», «кажется»
67
+ - Выражение удовлетворения до верификации («Отлично!», «Идеально!», «Готово!» и т.п.)
68
+ - Вот-вот коммит/пуш/PR без верификации
69
+ - Доверие отчётам воркеров об успехе
70
+ - Опора на частичную верификацию
71
+ - Мысль «только этот раз»
72
+ - Устал и хочешь, чтобы работа закончилась
73
+ - **ЛЮБАЯ формулировка, подразумевающая успех без запуска верификации**
74
+
75
+ ## Профилактика рационализаций
76
+
77
+ | Оправдание | Реальность |
78
+ |--------|---------|
79
+ | «Сейчас должно работать» | ЗАПУСТИ верификацию |
80
+ | «Я уверен» | Уверенность ≠ доказательство |
81
+ | «Только этот раз» | Без исключений |
82
+ | «Линтер прошёл» | Линтер ≠ компилятор |
83
+ | «Воркер доложил об успехе» | Проверь независимо |
84
+ | «Я устал» | Усталость ≠ оправдание |
85
+ | «Частичной проверки хватит» | Частичное не доказывает ничего |
86
+ | «Другие слова — правило не применяется» | Дух важнее буквы |
87
+
88
+ ## Ключевые паттерны
89
+
90
+ **Тесты:**
91
+ ```
92
+ ✅ [npm run check] [Видно: 591/591 pass] «Все тесты проходят»
93
+ ❌ «Сейчас должно пройти» / «Выглядит корректно»
94
+ ```
95
+
96
+ **Регрессионные тесты (TDD красный-зелёный):**
97
+ ```
98
+ ✅ Написал → Запустил (проходит) → Откатил фикс → Запустил (ОБЯЗАН УПАСТЬ) → Вернул → Запустил (проходит)
99
+ ❌ «Я написал регрессионный тест» (без красно-зелёной верификации)
100
+ ```
101
+
102
+ **Сборка:**
103
+ ```
104
+ ✅ [npm run build] [Видно: exit 0] «Сборка проходит»
105
+ ❌ «Линтер прошёл» (линтер не проверяет компиляцию)
106
+ ```
107
+
108
+ **Требования:**
109
+ ```
110
+ ✅ Перечитай план → составь чеклист → проверь каждый пункт → доложи пробелы или завершение
111
+ ❌ «Тесты проходят, фаза завершена»
112
+ ```
113
+
114
+ **Делегирование воркерам:**
115
+ ```
116
+ ✅ Воркер доложил успех → проверь git-дифф → верифицируй изменения → доложи фактическое состояние
117
+ ❌ Доверять отчёту воркера (воркер, спавненный через {{tool.task}}, мог ошибиться)
118
+ ```
119
+
120
+ ## Почему это важно
121
+
122
+ Из 24 воспоминаний о сбоях:
123
+ - партнёр сказал «я тебе не верю» — доверие разрушено
124
+ - В прод уехали неопределённые функции — урон
125
+ - В прод уехали пропущенные требования — незавершённые фичи
126
+ - Время потрачено на ложное «готово» → перенаправление → переделка
127
+ - Нарушение принципа: «Честность — ключевая ценность. Солжёшь — тебя заменят»
128
+
129
+ ## Когда применять
130
+
131
+ **ВСЕГДА перед:**
132
+ - Любой вариацией заявлений об успехе/завершённости
133
+ - Любым выражением удовлетворения
134
+ - Любым позитивным утверждением о состоянии работы
135
+ - Коммитом, созданием PR, завершением задачи
136
+ - Переходом к следующей задаче
137
+ - Делегированием воркерам
138
+
139
+ **Правило распространяется на:**
140
+ - Точные формулировки
141
+ - Парафразы и синонимы
142
+ - Импликации успеха
143
+ - ЛЮБУЮ коммуникацию, предполагающую завершённость/корректность
144
+
145
+ ## Интеграция с Wolf
146
+
147
+ - **Верификационный примитив** проекта — `npm run check`; точечные проверки — `npx vitest run <путь-к-тесту>`.
148
+ - **Отчёты воркеров** — не доказательство: dispatcher (executor-lead) проверяет git-дифф и свежий прогон, прежде чем доложить наверх.
149
+ - **Инцидент ложного «готово»** — урок в память: `wolf add --type lesson`, чтобы ловушка была видна следующим сессиям.
150
+
151
+ ## Итог
152
+
153
+ **Нет коротких путей для верификации.**
154
+
155
+ Запусти команду. Прочитай вывод. ТОЛЬКО ПОТОМ заявляй результат.
156
+
157
+ Это не обсуждается.
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: wolf-brainstorm
3
+ description: "Обязателен до любой творческой работы — новых фич, компонентов, изменения поведения. Превращает идею в дизайн через диалог: вопросы по одному, варианты с трейд-оффами, аппрув владельца. Discovery-режим координатора."
4
+ ---
5
+
6
+ # wolf-brainstorm: идея → дизайн
7
+
8
+ Превращай идеи в законченные дизайны и спеки через естественный совместный диалог.
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.
65
+
66
+ ## Процесс
67
+
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
+ **Дизайн для изоляции и ясности:**
93
+
94
+ - Дели систему на маленькие блоки, каждый с одной ясной целью, общающиеся через определённые интерфейсы, — понятные и тестируемые независимо
95
+ - Для каждого блока отвечай: что он делает, как им пользоваться, от чего он зависит?
96
+ - Можно ли понять блок, не читая его внутренности? Можно ли менять внутренности, не ломая потребителей? Если нет — границы требуют доработки.
97
+ - Маленькие чётко очерченные блоки проще и для тебя: над кодом, который держится в контексте целиком, ты рассуждаешь лучше, а правки точечнее. Разросшийся файл — часто сигнал, что он делает слишком много.
98
+
99
+ **Работа в существующей кодовой базе:**
100
+
101
+ - Изучи текущую структуру до предложения правок. Следуй существующим паттернам.
102
+ - Если существующий код мешает работе (файл разросся, границы размыты, ответственности перепутаны) — включи точечные улучшения в дизайн, как хороший разработчик, улучшающий код, в котором работает.
103
+ - Не предлагай несвязанный рефакторинг. Фокус на том, что служит текущей цели.
104
+
105
+ ## После дизайна
106
+
107
+ **Документация:**
108
+
109
+ - Запиши валидированный дизайн (спеку) в каталог спек проекта (по умолчанию `docs/specs/YYYY-MM-DD-<тема>-design.md`; предпочтения проекта приоритетнее)
110
+ - Закоммить дизайн-документ (правило проекта: коммит после завершённой работы)
111
+ - Ключевые решения дизайна зафиксируй в памяти: `wolf add --type decision` — с обоснованием; они переживут сессию и достанутся исполнителям
112
+
113
+ **Саморевью спеки:**
114
+ После записи спеки посмотри на неё свежим взглядом:
115
+
116
+ 1. **Скан плейсхолдеров:** есть ли «TBD», «TODO», незаполненные секции, размытые требования? Исправь.
117
+ 2. **Внутренняя согласованность:** противоречат ли секции друг другу? Согласуется ли архитектура с описанием фич?
118
+ 3. **Проверка scope:** достаточно ли фокусировки для одного плана реализации, или нужна декомпозиция?
119
+ 4. **Проверка двусмысленности:** можно ли истолковать требование двумя способами? Если да — выбери одну трактовку и сделай явной.
120
+
121
+ Исправляй на месте. Пересматривать заново не нужно — исправил и двигайся дальше.
122
+
123
+ **Гейт ревью владельца:**
124
+ После прохождения саморевью попроси владельца прочитать записанную спеку до продолжения:
125
+
126
+ > «Спека записана и закоммичена в `<путь>`. Посмотри её и скажи, нужны ли правки, прежде чем начнём писать план реализации».
127
+
128
+ Жди ответа. Запрошены правки — внеси и прогони саморевью заново. Продолжай только после аппрува владельца.
129
+
130
+ **Реализация:**
131
+
132
+ - Вызови {{tool.skill}} wolf-plan для создания детального плана реализации
133
+ - НЕ вызывай никаких других скиллов. Следующий шаг — только wolf-plan.
134
+
135
+ ## Ключевые принципы
136
+
137
+ - **Один вопрос за раз** — не перегружай несколькими вопросами
138
+ - **Предпочитай варианты ответа** — отвечать проще, чем на открытый вопрос
139
+ - **Беспощадный YAGNI** — убирай ненужные фичи из всех дизайнов
140
+ - **Исследуй альтернативы** — всегда 2–3 подхода до выбора
141
+ - **Инкрементальная валидация** — представляй дизайн, получай аппрув, потом дальше
142
+ - **Будь гибким** — возвращайся и уточняй, когда что-то не сходится
143
+
144
+ ---
145
+
146
+ ## Трассировка адаптации
147
+
148
+ > Источник: `~/.config/opencode/superpowers/skills/brainstorming/SKILL.md`, upstream 6efe32c (2026-04-23)
149
+
150
+ | Пункт источника | Судьба | Почему |
151
+ |---|---|---|
152
+ | HARD-GATE до аппрува | сохранено | Ядро скилла; «user» → «владелец» |
153
+ | Анти-паттерн «слишком просто для дизайна» | сохранено полностью (1/1) | H7 |
154
+ | Чеклист (9 пунктов) | сохранено; п.2 (visual companion) отброшен, п.9 → wolf-plan | Браузерный компаньон вне базового набора |
155
+ | Пункт «Invoke writing-plans skill» | заменено → `{{tool.skill}} wolf-plan` | H4: терминальное состояние — только wolf-plan |
156
+ | TodoWrite | заменено → `{{tool.todowrite}}` | Плейсхолдер |
157
+ | Flowchart | сохранено; терминальный узел → wolf-plan | Ядро-флоу |
158
+ | «The Process» (5 блоков) | сохранено | Переносимое ядро |
159
+ | Путь `docs/superpowers/specs/` | заменено → `docs/specs/…` + предпочтения проекта | Harness-привязка (research §1) |
160
+ | Саморевью спеки (4 проверки) | сохранено полностью (4/4) | Чеклист-ядро |
161
+ | Гейт ревью владельца | сохранено | Ядро |
162
+ | Ключевые принципы (6) | сохранено полностью (6/6) | H7 |
163
+ | Скилл elements-of-style (секция «Документация») | отброшено | Скилл вне базового набора (research §6) |
164
+ | Visual Companion (секция + `visual-companion.md`) | отброшено | Браузерный компаньон и sibling-файл не переносятся |
165
+ | — | добавлено: Discovery-режим; worktree НЕ создаёт; `wolf add --type decision` | Спека §5.2 (архив §2.3), H5-распределение владения worktree |
166
+
167
+ Перенесённые списки: анти-паттерны 1/1, принципы 6/6, саморевью 4/4.