mister-wolf 2.14.1 → 2.15.1

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 (56) hide show
  1. package/README.md +22 -11
  2. package/README.ru.md +22 -11
  3. package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
  4. package/dist/adapters/cli/commands/memory-doctor.js +32 -1
  5. package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
  6. package/dist/adapters/cli/commands/memory-scaffold.d.ts.map +1 -1
  7. package/dist/adapters/cli/commands/memory-scaffold.js +15 -0
  8. package/dist/adapters/cli/commands/memory-scaffold.js.map +1 -1
  9. package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -1
  10. package/dist/adapters/cli/commands/memory-sync.js +8 -0
  11. package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
  12. package/dist/adapters/fs/artifact-fs.d.ts +4 -0
  13. package/dist/adapters/fs/artifact-fs.d.ts.map +1 -0
  14. package/dist/adapters/fs/artifact-fs.js +29 -0
  15. package/dist/adapters/fs/artifact-fs.js.map +1 -0
  16. package/dist/app/use-cases/artifact-front-matter.d.ts +5 -0
  17. package/dist/app/use-cases/artifact-front-matter.d.ts.map +1 -0
  18. package/dist/app/use-cases/artifact-front-matter.js +16 -0
  19. package/dist/app/use-cases/artifact-front-matter.js.map +1 -0
  20. package/dist/app/use-cases/lint-artifacts.d.ts +18 -0
  21. package/dist/app/use-cases/lint-artifacts.d.ts.map +1 -0
  22. package/dist/app/use-cases/lint-artifacts.js +249 -0
  23. package/dist/app/use-cases/lint-artifacts.js.map +1 -0
  24. package/dist/app/use-cases/scaffold-agent.d.ts +1 -1
  25. package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
  26. package/dist/app/use-cases/scaffold-agent.js +1 -1
  27. package/dist/app/use-cases/scaffold-agent.js.map +1 -1
  28. package/dist/app/use-cases/scaffold-artifact.d.ts +22 -0
  29. package/dist/app/use-cases/scaffold-artifact.d.ts.map +1 -0
  30. package/dist/app/use-cases/scaffold-artifact.js +153 -0
  31. package/dist/app/use-cases/scaffold-artifact.js.map +1 -0
  32. package/dist/app/use-cases/sync-artifact-index.d.ts +20 -0
  33. package/dist/app/use-cases/sync-artifact-index.d.ts.map +1 -0
  34. package/dist/app/use-cases/sync-artifact-index.js +68 -0
  35. package/dist/app/use-cases/sync-artifact-index.js.map +1 -0
  36. package/dist/domain/memory-types.d.ts +12 -0
  37. package/dist/domain/memory-types.d.ts.map +1 -1
  38. package/dist/domain/memory-types.js +4 -0
  39. package/dist/domain/memory-types.js.map +1 -1
  40. package/dist/domain/schemas/relation-schema.d.ts +1 -1
  41. package/package.json +1 -1
  42. package/templates/.wolf/router.log +1 -1
  43. package/templates/base/skills/finishing-a-development-branch/SKILL.md +32 -13
  44. package/templates/base/skills/receiving-code-review/SKILL.md +39 -0
  45. package/templates/base/skills/test-driven-development/SKILL.md +59 -37
  46. package/templates/base/skills/using-git-worktrees/SKILL.md +25 -15
  47. package/templates/base/skills/verification-before-completion/SKILL.md +39 -25
  48. package/templates/base/skills/wolf-brainstorm/SKILL.md +51 -36
  49. package/templates/base/skills/wolf-design/SKILL.md +45 -0
  50. package/templates/base/skills/wolf-execute/SKILL.md +30 -13
  51. package/templates/base/skills/wolf-plan/SKILL.md +38 -21
  52. package/templates/base/skills/wolf-review/SKILL.md +33 -14
  53. package/templates/base/skills/wolf-sdd/SKILL.md +38 -16
  54. package/templates/base/skills/wolf-skill-intake/SKILL.md +66 -0
  55. package/templates/base/skills/wolf-testplan/SKILL.md +37 -0
  56. package/templates/base/skills/writing-skills/SKILL.md +40 -0
@@ -10,12 +10,12 @@ description: Используй перед любым заявлением о з
10
10
 
11
11
  ## Трассировка адаптации
12
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 у источника нет |
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
19
 
20
20
  ## Обзор
21
21
 
@@ -51,15 +51,15 @@ description: Используй перед любым заявлением о з
51
51
 
52
52
  ## Типовые сбои
53
53
 
54
- | Заявление | Требуется | Недостаточно |
55
- |-------|----------|----------------|
56
- | Тесты проходят | Вывод тестовой команды: 0 падений | Прошлый прогон, «должно пройти» |
57
- | Линтер чист | Вывод линтера: 0 ошибок | Частичная проверка, экстраполяция |
58
- | Сборка проходит | Команда сборки: exit 0 | Линтер зелёный, логи выглядят хорошо |
59
- | Баг исправлен | Тест исходного симптома: проходит | Код изменён, «предположительно исправлено» |
60
- | Регрессионный тест работает | Проверен цикл красный-зелёный | Тест прошёл один раз |
61
- | Воркер завершил задачу | git-дифф показывает изменения | Отчёт воркера «успех» |
62
- | Требования выполнены | Построчный чеклист | Тесты проходят |
54
+ | Заявление | Требуется | Недостаточно |
55
+ | --------------------------- | --------------------------------- | ------------------------------------------ |
56
+ | Тесты проходят | Вывод тестовой команды: 0 падений | Прошлый прогон, «должно пройти» |
57
+ | Линтер чист | Вывод линтера: 0 ошибок | Частичная проверка, экстраполяция |
58
+ | Сборка проходит | Команда сборки: exit 0 | Линтер зелёный, логи выглядят хорошо |
59
+ | Баг исправлен | Тест исходного симптома: проходит | Код изменён, «предположительно исправлено» |
60
+ | Регрессионный тест работает | Проверен цикл красный-зелёный | Тест прошёл один раз |
61
+ | Воркер завершил задачу | git-дифф показывает изменения | Отчёт воркера «успех» |
62
+ | Требования выполнены | Построчный чеклист | Тесты проходят |
63
63
 
64
64
  ## Red flags — СТОП
65
65
 
@@ -74,44 +74,49 @@ description: Используй перед любым заявлением о з
74
74
 
75
75
  ## Профилактика рационализаций
76
76
 
77
- | Оправдание | Реальность |
78
- |--------|---------|
79
- | «Сейчас должно работать» | ЗАПУСТИ верификацию |
80
- | «Я уверен» | Уверенность ≠ доказательство |
81
- | «Только этот раз» | Без исключений |
82
- | «Линтер прошёл» | Линтер ≠ компилятор |
83
- | «Воркер доложил об успехе» | Проверь независимо |
84
- | «Я устал» | Усталость ≠ оправдание |
85
- | «Частичной проверки хватит» | Частичное не доказывает ничего |
86
- | «Другие слова — правило не применяется» | Дух важнее буквы |
77
+ | Оправдание | Реальность |
78
+ | --------------------------------------- | ------------------------------ |
79
+ | «Сейчас должно работать» | ЗАПУСТИ верификацию |
80
+ | «Я уверен» | Уверенность ≠ доказательство |
81
+ | «Только этот раз» | Без исключений |
82
+ | «Линтер прошёл» | Линтер ≠ компилятор |
83
+ | «Воркер доложил об успехе» | Проверь независимо |
84
+ | «Я устал» | Усталость ≠ оправдание |
85
+ | «Частичной проверки хватит» | Частичное не доказывает ничего |
86
+ | «Другие слова — правило не применяется» | Дух важнее буквы |
87
87
 
88
88
  ## Ключевые паттерны
89
89
 
90
90
  **Тесты:**
91
+
91
92
  ```
92
93
  ✅ [npm run check] [Видно: 591/591 pass] «Все тесты проходят»
93
94
  ❌ «Сейчас должно пройти» / «Выглядит корректно»
94
95
  ```
95
96
 
96
97
  **Регрессионные тесты (TDD красный-зелёный):**
98
+
97
99
  ```
98
100
  ✅ Написал → Запустил (проходит) → Откатил фикс → Запустил (ОБЯЗАН УПАСТЬ) → Вернул → Запустил (проходит)
99
101
  ❌ «Я написал регрессионный тест» (без красно-зелёной верификации)
100
102
  ```
101
103
 
102
104
  **Сборка:**
105
+
103
106
  ```
104
107
  ✅ [npm run build] [Видно: exit 0] «Сборка проходит»
105
108
  ❌ «Линтер прошёл» (линтер не проверяет компиляцию)
106
109
  ```
107
110
 
108
111
  **Требования:**
112
+
109
113
  ```
110
114
  ✅ Перечитай план → составь чеклист → проверь каждый пункт → доложи пробелы или завершение
111
115
  ❌ «Тесты проходят, фаза завершена»
112
116
  ```
113
117
 
114
118
  **Делегирование воркерам:**
119
+
115
120
  ```
116
121
  ✅ Воркер доложил успех → проверь git-дифф → верифицируй изменения → доложи фактическое состояние
117
122
  ❌ Доверять отчёту воркера (воркер, спавненный через {{tool.task}}, мог ошибиться)
@@ -120,6 +125,7 @@ description: Используй перед любым заявлением о з
120
125
  ## Почему это важно
121
126
 
122
127
  Из 24 воспоминаний о сбоях:
128
+
123
129
  - партнёр сказал «я тебе не верю» — доверие разрушено
124
130
  - В прод уехали неопределённые функции — урон
125
131
  - В прод уехали пропущенные требования — незавершённые фичи
@@ -129,6 +135,7 @@ description: Используй перед любым заявлением о з
129
135
  ## Когда применять
130
136
 
131
137
  **ВСЕГДА перед:**
138
+
132
139
  - Любой вариацией заявлений об успехе/завершённости
133
140
  - Любым выражением удовлетворения
134
141
  - Любым позитивным утверждением о состоянии работы
@@ -137,6 +144,7 @@ description: Используй перед любым заявлением о з
137
144
  - Делегированием воркерам
138
145
 
139
146
  **Правило распространяется на:**
147
+
140
148
  - Точные формулировки
141
149
  - Парафразы и синонимы
142
150
  - Импликации успеха
@@ -155,3 +163,9 @@ description: Используй перед любым заявлением о з
155
163
  Запусти команду. Прочитай вывод. ТОЛЬКО ПОТОМ заявляй результат.
156
164
 
157
165
  Это не обсуждается.
166
+
167
+ ## Конвейер (2.15)
168
+
169
+ Верификация — условие переворота чекбокса plan.md: `- [ ]` → `- [x]` допустимо
170
+ только после прогона проверок задачи (точечные тесты зелёные) + строка
171
+ «сделано → коммит <hash>». Чекбокс — истина завершённости.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wolf-brainstorm
3
- description: "Обязателен до любой творческой работы — новых фич, компонентов, изменения поведения. Превращает идею в дизайн через диалог: вопросы по одному, варианты с трейд-оффами, аппрув владельца. Discovery-режим координатора."
3
+ description: 'Обязателен до любой творческой работы — новых фич, компонентов, изменения поведения. Превращает идею в дизайн через диалог: вопросы по одному, варианты с трейд-оффами, аппрув владельца. Discovery-режим координатора.'
4
4
  ---
5
5
 
6
6
  # wolf-brainstorm: идея → дизайн
@@ -102,35 +102,50 @@ digraph wolf_brainstorm {
102
102
  - Если существующий код мешает работе (файл разросся, границы размыты, ответственности перепутаны) — включи точечные улучшения в дизайн, как хороший разработчик, улучшающий код, в котором работает.
103
103
  - Не предлагай несвязанный рефакторинг. Фокус на том, что служит текущей цели.
104
104
 
105
- ## После дизайна
105
+ ## Выход: requirements.md (v2 — анатомия §4.1 спеки конвейера)
106
106
 
107
- **Документация:**
107
+ Диалог с владельцем завершается артефактом `docs/dev/<дата>-<slug>/requirements.md`.
108
+ Папку создаёт `wolf scaffold artifact <slug>` — файлы артефактов вручную не создавать.
108
109
 
109
- - Запиши валидированный дизайн (спеку) в каталог спек проекта (по умолчанию `docs/specs/YYYY-MM-DD-<тема>-design.md`; предпочтения проекта приоритетнее)
110
- - Закоммить дизайн-документ (правило проекта: коммит после завершённой работы)
111
- - Ключевые решения дизайна зафиксируй в памяти: `wolf add --type decision` — с обоснованием; они переживут сессию и достанутся исполнителям
110
+ Структура документа — 7 секций:
112
111
 
113
- **Саморевью спеки:**
114
- После записи спеки посмотри на неё свежим взглядом:
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-перегенерации.
115
121
 
116
- 1. **Скан плейсхолдеров:** есть ли «TBD», «TODO», незаполненные секции, размытые требования? Исправь.
117
- 2. **Внутренняя согласованность:** противоречат ли секции друг другу? Согласуется ли архитектура с описанием фич?
118
- 3. **Проверка scope:** достаточно ли фокусировки для одного плана реализации, или нужна декомпозиция?
119
- 4. **Проверка двусмысленности:** можно ли истолковать требование двумя способами? Если да — выбери одну трактовку и сделай явной.
122
+ Анатомия записи (обязательные поля каждой записи REQ/NFR):
120
123
 
121
- Исправляй на месте. Пересматривать заново не нужно — исправил и двигайся дальше.
124
+ - История: Как <роль>, я хочу <возможность>, чтобы <выгода>.
125
+ - Требование: Когда <условие>, система должна <поведение>.
126
+ - Обоснование: <зачем это бизнесу — словами владельца>.
127
+ - AC: <измеримый критерий; нетривиальные — Given/When/Then>.
128
+ - Приоритет: Must | Should | Could.
129
+ - Источник: <диалог <дата> / жалоба mem-… / ревью-линза>.
122
130
 
123
- **Гейт ревью владельца:**
124
- После прохождения саморевью попроси владельца прочитать записанную спеку до продолжения:
131
+ Критерии готовности записи (гейт линзы полноты; часть проверяет линт):
132
+ одно требование — одна запись; есть история И формальная запись; есть AC
133
+ (REQ без AC — находка линта); есть источник; неопределённость помечена
134
+ `[НЕОПРЕДЕЛЕНО: вопрос]`, не сжата; владелец пересказывает требование своими
135
+ словами — не может, это дефект требования, а не читателя.
125
136
 
126
- > «Спека записана и закоммичена в `<путь>`. Посмотри её и скажи, нужны ли правки, прежде чем начнём писать план реализации».
137
+ Язык: полные предложения, ноль сленга, термины домена без сокращений, новое
138
+ понятие объясняется при первом употреблении, смысловое сжатие запрещено.
127
139
 
128
- Жди ответа. Запрошены правки — внеси и прогони саморевью заново. Продолжай только после аппрува владельца.
140
+ ## Второй режим: roadmap-триаж
129
141
 
130
- **Реализация:**
142
+ Диалог с владельцем по кандидатурам волн → вердикт по каждой: «волна N / бэклог /
143
+ отклонено + причина». Запись — перемещением, не копированием (пункт живёт ровно
144
+ в одном файле; дубль — находка линта doctor):
131
145
 
132
- - Вызови {{tool.skill}} wolf-plan для создания детального плана реализации
133
- - НЕ вызывай никаких других скиллов. Следующий шаг — только wolf-plan.
146
+ - волна N → `docs/dev/roadmap/wave-N.md` (состав волны, источник вердикта);
147
+ - бэклог → `docs/dev/roadmap/backlog.md`;
148
+ - отклонено → `docs/dev/roadmap/rejected.md` (+ причина).
134
149
 
135
150
  ## Ключевые принципы
136
151
 
@@ -147,21 +162,21 @@ digraph wolf_brainstorm {
147
162
 
148
163
  > Источник: `~/.config/opencode/superpowers/skills/brainstorming/SKILL.md`, upstream 6efe32c (2026-04-23)
149
164
 
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 |
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 |
166
181
 
167
182
  Перенесённые списки: анти-паттерны 1/1, принципы 6/6, саморевью 4/4.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: wolf-design
3
+ description: 'Вход: requirements.md (approved) + кодовая база. Выход: design.md — компоненты, контракты кодом (≤10 строк), псевдокод алгоритмов, ADR-карточки, глоссарий. Копипаста реализации запрещена.'
4
+ ---
5
+
6
+ # wolf-design: design.md по requirements.md
7
+
8
+ ## Обзор
9
+
10
+ Артефакт-конвейер Wolf: requirements.md (approved владельцем) → design.md.
11
+ Скилл исполняется чистым воркером; диспетчеризация не меняется.
12
+
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
+ ## Железные запреты
33
+
34
+ - Копипаста реализации продукта в design.md запрещена (урок старых планов: ошибка
35
+ была не в наличии кода, а в наличии готовой реализации в документе планирования).
36
+ - Переопределять требования: единственный источник AC — requirements.md.
37
+ - Писать design.md до approved requirements.md.
38
+
39
+ ## Процесс
40
+
41
+ 1. Прочитать requirements.md целиком; каждый REQ/NFR должен иметь место в design
42
+ (компонент, контракт или осознанное «не требует дизайна»).
43
+ 2. Сверить контракты с кодом базлайна (file:line).
44
+ 3. Заполнить секции; front-matter `status: review`.
45
+ 4. Отчёт: список ADR-карточек (владельцу на визу) + открытые `[НЕОПРЕДЕЛЕНО: …]`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wolf-execute
3
- description: "Fallback-режим линейного исполнения плана без субагентов (FLAT): загрузи план, критически осмотрись, исполняй задачи батчами с чекпоинтами. Используй, когда диспетчеризация воркеров недоступна."
3
+ description: 'Fallback-режим линейного исполнения плана без субагентов (FLAT): загрузи план, критически осмотрись, исполняй задачи батчами с чекпоинтами. Используй, когда диспетчеризация воркеров недоступна.'
4
4
  ---
5
5
 
6
6
  # wolf-execute: линейное исполнение плана (FLAT)
@@ -13,6 +13,10 @@ description: "Fallback-режим линейного исполнения пла
13
13
 
14
14
  **Если доступны субагенты** — используй wolf-sdd вместо этого скилла: свежий воркер на задачу + двухстадийное ревью дают заметно более высокое качество. wolf-execute — fallback для платформ/сессий без диспетчеризации.
15
15
 
16
+ wolf-execute — FLAT-fallback линейного исполнения для агентов без диспетчеризации;
17
+ mr-wolf его не использует (правило роли `mem_20260903_..._e95317`). Вопрос о судьбе
18
+ скилла — в backlog роадмапа, вне волны 2.15.
19
+
16
20
  ## REQUIRED-предусловие: worktree
17
21
 
18
22
  **До старта исполнения worktree ОБЯЗАН существовать:** `.worktrees/<имя-задачи>` внутри проекта (правило проекта). Trunk-based: main — истина, работа идёт в ветке внутри worktree (см. скилл using-git-worktrees). Никогда не начинай исполнение в main без явного согласия владельца.
@@ -20,14 +24,22 @@ description: "Fallback-режим линейного исполнения пла
20
24
  ## Процесс
21
25
 
22
26
  ### Шаг 1: загрузи и осмотрись
27
+
23
28
  1. Прочитай файл плана
24
29
  2. Критическое ревью — определи вопросы и сомнения по плану
25
30
  3. Есть сомнения — подними их перед владельцем до старта
26
31
  4. Нет сомнений — заведи трекинг задач через {{tool.todowrite}} и продолжай
27
32
 
33
+ Вход плана — трио `requirements.md` + `design.md` + `plan.md` в `docs/dev/<дата>-<slug>/`. Спека-монолит как вход плана не используется.
34
+
35
+ Задачи плана — чекбоксы `- [ ]`: исполнитель переворачивает чекбокс в `[x]` в конце
36
+ задачи вместе со строкой «сделано → коммит <hash>» — часть Definition of Done задачи.
37
+ wolf-sdd — основной диспетчерский путь конвейера.
38
+
28
39
  ### Шаг 2: исполняй задачи
29
40
 
30
41
  Для каждой задачи:
42
+
31
43
  1. Отметь in_progress
32
44
  2. Следуй каждому шагу точно (план состоит из bite-sized шагов)
33
45
  3. Запускай верификацию, как предписано планом; после завершённых блоков — `npm run check` (verification-примитив проекта)
@@ -36,13 +48,16 @@ description: "Fallback-режим линейного исполнения пла
36
48
  ### Шаг 3: заверши разработку
37
49
 
38
50
  После всех задач и верификации:
51
+
39
52
  - Анонс: «Использую скилл finishing-a-development-branch для завершения работы»
40
53
  - **REQUIRED-СКИЛЛ:** finishing-a-development-branch
41
54
  - Следуй ему: верифицируй тесты, представь опции финала ветки, исполни выбор владельца
55
+ - Валидация волны сверяется с `docs/dev/<дата>-<slug>/test-plan.md`: прогон сценариев — заготовки финальной проверки плана.
42
56
 
43
57
  ## Когда остановиться и спросить
44
58
 
45
59
  **СТОП исполнения немедленно, когда:**
60
+
46
61
  - Ударился в блокер (нет зависимости, падает тест, инструкция непонятна)
47
62
  - В плане критические пробелы, мешающие стартовать
48
63
  - Ты не понимаешь инструкцию
@@ -53,6 +68,7 @@ description: "Fallback-режим линейного исполнения пла
53
68
  ## Когда вернуться к ранним шагам
54
69
 
55
70
  **Вернись к ревью (шаг 1), когда:**
71
+
56
72
  - Владелец обновил план по твоему фидбеку
57
73
  - Фундаментальный подход требует пересмотра
58
74
 
@@ -70,6 +86,7 @@ description: "Fallback-режим линейного исполнения пла
70
86
  ## Интеграция
71
87
 
72
88
  **Обязательные скиллы воркфлоу:**
89
+
73
90
  - **using-git-worktrees** — REQUIRED: изолированный worktree `.worktrees/<имя-задачи>` ДО старта исполнения
74
91
  - **wolf-plan** — создаёт план, который этот скилл исполняет
75
92
  - **finishing-a-development-branch** — завершение разработки после всех задач
@@ -80,17 +97,17 @@ description: "Fallback-режим линейного исполнения пла
80
97
 
81
98
  > Источник: `~/.config/opencode/superpowers/skills/executing-plans/SKILL.md`, upstream 6efe32c (2026-04-23)
82
99
 
83
- | Пункт источника | Судьба | Почему |
84
- |---|---|---|
85
- | Обзор (load → review → execute → report) | сохранено | Ядро |
86
- | Note «subagents work better» | заменено → wolf-sdd как приоритет, wolf-execute = FLAT-fallback | Спека §5.2 (FLAT-режим) |
87
- | Упоминания платформ (Claude Code, Codex) | отброшено | Research §1: платформенные упоминания |
88
- | TodoWrite | заменено → `{{tool.todowrite}}` | Research §1; плейсхолдер |
89
- | Шаги 1–3 | сохранено; шаг 2 дополнен `npm run check` | Wolf-переплетение |
90
- | «When to Stop» (4) | сохранено полностью (4/4); + `wolf add --type blocker` | H7 + Wolf |
91
- | «When to Revisit» (2) | сохранено полностью (2/2) | H7 |
92
- | «Remember» (6) | сохранено полностью (6/6); main/master → trunk-based | H7 |
93
- | Integration (worktrees REQUIRED) | сохранено; H5-формулировка «до старта исполнения» | H5; `.worktrees/<имя-задачи>` |
94
- | — | добавлено: REQUIRED-предусловие worktree (H5) | Спека §5.2 |
100
+ | Пункт источника | Судьба | Почему |
101
+ | ---------------------------------------- | --------------------------------------------------------------- | ------------------------------------- |
102
+ | Обзор (load → review → execute → report) | сохранено | Ядро |
103
+ | Note «subagents work better» | заменено → wolf-sdd как приоритет, wolf-execute = FLAT-fallback | Спека §5.2 (FLAT-режим) |
104
+ | Упоминания платформ (Claude Code, Codex) | отброшено | Research §1: платформенные упоминания |
105
+ | TodoWrite | заменено → `{{tool.todowrite}}` | Research §1; плейсхолдер |
106
+ | Шаги 1–3 | сохранено; шаг 2 дополнен `npm run check` | Wolf-переплетение |
107
+ | «When to Stop» (4) | сохранено полностью (4/4); + `wolf add --type blocker` | H7 + Wolf |
108
+ | «When to Revisit» (2) | сохранено полностью (2/2) | H7 |
109
+ | «Remember» (6) | сохранено полностью (6/6); main/master → trunk-based | H7 |
110
+ | Integration (worktrees REQUIRED) | сохранено; H5-формулировка «до старта исполнения» | H5; `.worktrees/<имя-задачи>` |
111
+ | — | добавлено: REQUIRED-предусловие worktree (H5) | Спека §5.2 |
95
112
 
96
113
  Перенесённые списки: Stop 4/4, Revisit 2/2, Remember 6/6.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wolf-plan
3
- description: "Используй, когда есть спека или требования для многошаговой задачи — до касания кода. Пишет zero-context планы: каждая задача = самодостаточный бриф воркера, исполнитель не обязан знать кодовую базу."
3
+ description: 'Используй, когда есть спека или требования для многошаговой задачи — до касания кода. Пишет zero-context планы: каждая задача = самодостаточный бриф воркера, исполнитель не обязан знать кодовую базу.'
4
4
  ---
5
5
 
6
6
  # wolf-plan: план для zero-context исполнителя
@@ -17,11 +17,26 @@ description: "Используй, когда есть спека или треб
17
17
 
18
18
  **Контекст:** исполнение плана начинается только в worktree `.worktrees/<имя-задачи>` (правило проекта; создаётся ДО старта исполнения — см. wolf-sdd / wolf-execute). Сам план можно писать и до worktree.
19
19
 
20
- **Куда сохранять:** `docs/plans/YYYY-MM-DD-<имя-фичи>.md` (предпочтения проекта приоритетнее дефолта).
20
+ ## Вход (v2)
21
21
 
22
- ## Проверка масштаба
22
+ - `docs/dev/<дата>-<slug>/requirements.md` (approved).
23
+ - `docs/dev/<дата>-<slug>/design.md` (approved линзами/владельцем).
24
+ Спека-монолит больше не вход: план не пересказывает требования и не переопределяет
25
+ контракты — единственный источник контрактов — design.md.
23
26
 
24
- Если спека покрывает несколько независимых подсистем, её нужно было разбить на подпроекты ещё на wolf-brainstorm. Если это не сделано — предложи разбить план на отдельные, по одному на подсистему. Каждый план должен давать работающее, тестируемое ПО сам по себе.
27
+ ## Выход: plan.md (в папке фичи)
28
+
29
+ План остаётся обзорным. Каждая задача плана:
30
+
31
+ - цель задачи (одно предложение);
32
+ - ссылка на §design, откуда берутся контракты (`design §Компоненты`, `ADR-2`);
33
+ - file:line базлайна кода, куда вносится изменение;
34
+ - без копипасты реализации продукта; крупные детали — ссылками на design, не пересказом.
35
+
36
+ Каждая задача — чекбокс `- [ ]`. Исполнитель переворачивает чекбокс в `[x]` в конце
37
+ задачи вместе со строкой «сделано → коммит <hash>». Чекбокс — истина завершённости
38
+ для восстановления прерванной работы; вердикты и контекст — в памяти Wolf. Линза
39
+ «соответствие» сверяет чекбоксы с отчётами при приёмке волны.
25
40
 
26
41
  ## Структура файлов
27
42
 
@@ -37,6 +52,7 @@ description: "Используй, когда есть спека или треб
37
52
  ## Гранулярность bite-sized
38
53
 
39
54
  **Каждый шаг — одно действие (2–5 минут):**
55
+
40
56
  - «Напиши падающий тест» — шаг
41
57
  - «Запусти и убедись, что он падает» — шаг
42
58
  - «Напиши минимальный код, чтобы тест прошёл» — шаг
@@ -68,6 +84,7 @@ description: "Используй, когда есть спека или треб
68
84
  ### Задача N: [Имя компонента]
69
85
 
70
86
  **Файлы:**
87
+
71
88
  - Create: `точный/путь/к/file.ts`
72
89
  - Modify: `точный/путь/к/existing.ts:123-145`
73
90
  - Test: `tests/точный/путь/к/test.ts`
@@ -75,7 +92,7 @@ description: "Используй, когда есть спека или треб
75
92
  - [ ] **Шаг 1: Напиши падающий тест**
76
93
 
77
94
  ```typescript
78
- it("конкретное поведение", () => {
95
+ it('конкретное поведение', () => {
79
96
  expect(fn(input)).toBe(expected);
80
97
  });
81
98
  ```
@@ -89,7 +106,7 @@ it("конкретное поведение", () => {
89
106
 
90
107
  ```typescript
91
108
  export function fn(input: string): string {
92
- return "expected";
109
+ return 'expected';
93
110
  }
94
111
  ```
95
112
 
@@ -158,20 +175,20 @@ git commit -m "feat: add specific feature"
158
175
 
159
176
  > Источник: `~/.config/opencode/superpowers/skills/writing-plans/SKILL.md`, upstream 6efe32c (2026-04-23)
160
177
 
161
- | Пункт источника | Судьба | Почему |
162
- |---|---|---|
163
- | Zero-context принцип | сохранено + усилено «вход воркеров по брифам» | Спека §5.2 |
164
- | «created by brainstorming skill» (worktree) | заменено: worktree до старта исполнения, правило `.worktrees/<имя-задачи>` | H5; upstream-ребро brainstorm→worktree одностороннее, не воспроизводим |
165
- | Путь `docs/superpowers/plans/` | заменено → `docs/plans/…` | Harness-привязка (research §1) |
166
- | Заголовок «REQUIRED SUB-SKILL: sdd or executing-plans» | заменено → wolf-sdd ИЛИ wolf-execute | Рёбра набора Wolf |
167
- | Проверка масштаба | сохранено | Ядро |
168
- | Структура файлов | сохранено | Ядро |
169
- | Bite-sized гранулярность | сохранено | Ядро |
170
- | Структура задачи (пример) | сохранено; пример переведён (vitest вместо pytest) | Нейтральная иллюстрация под стек проекта |
171
- | «No Placeholders» (6 провалов) | сохранено полностью (6/6) | H7 |
172
- | «Remember» (4) | сохранено полностью (4/4) | H7 |
173
- | Саморевью (3 проверки) | сохранено полностью (3/3) | Чеклист-ядро |
174
- | Execution Handoff (2 опции) | сохранено; sdd-опция → executor-lead/worker-*, ревью → worker-reviewer; добавлен `npm run check` | Wolf-переплетение |
175
- | — | добавлено: задача = бриф воркера (worker-implementer) | Zero-context вход по брифам |
178
+ | Пункт источника | Судьба | Почему |
179
+ | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
180
+ | Zero-context принцип | сохранено + усилено «вход воркеров по брифам» | Спека §5.2 |
181
+ | «created by brainstorming skill» (worktree) | заменено: worktree до старта исполнения, правило `.worktrees/<имя-задачи>` | H5; upstream-ребро brainstorm→worktree одностороннее, не воспроизводим |
182
+ | Путь `docs/superpowers/plans/` | заменено → `docs/plans/…` | Harness-привязка (research §1) |
183
+ | Заголовок «REQUIRED SUB-SKILL: sdd or executing-plans» | заменено → wolf-sdd ИЛИ wolf-execute | Рёбра набора Wolf |
184
+ | Проверка масштаба | сохранено | Ядро |
185
+ | Структура файлов | сохранено | Ядро |
186
+ | Bite-sized гранулярность | сохранено | Ядро |
187
+ | Структура задачи (пример) | сохранено; пример переведён (vitest вместо pytest) | Нейтральная иллюстрация под стек проекта |
188
+ | «No Placeholders» (6 провалов) | сохранено полностью (6/6) | H7 |
189
+ | «Remember» (4) | сохранено полностью (4/4) | H7 |
190
+ | Саморевью (3 проверки) | сохранено полностью (3/3) | Чеклист-ядро |
191
+ | Execution Handoff (2 опции) | сохранено; sdd-опция → executor-lead/worker-\*, ревью → worker-reviewer; добавлен `npm run check` | Wolf-переплетение |
192
+ | — | добавлено: задача = бриф воркера (worker-implementer) | Zero-context вход по брифам |
176
193
 
177
194
  Перенесённые списки: anti-patterns «No Placeholders» 6/6, «Remember» 4/4, саморевью 3/3.
@@ -11,19 +11,19 @@ description: Мульти-линзовое ревью документов (doc-
11
11
 
12
12
  ## Трассировка переноса
13
13
 
14
- | Пункт источника | Судьба |
15
- | --------------- | ------ |
16
- | Рамочный паттерн analyze-doc: методика в памяти, файл — тонкая рамка | Сохранено |
17
- | Протокол подтягивания playbook перед прогоном | Сохранено; запрос `wolf search "wolf-review playbook"`, наибольшая версия |
18
- | Мульти-линзовость, изоляция линз в чистых сессиях (REVIEW-001) | Сохранено |
19
- | Перспектива линз полнота → консистентность → типоспецифичные (REVIEW-001) | Сохранено |
20
- | Контракты SUMMARY/VERDICT (REVIEW-001: вердикт «CHANGES») | Сохранено; «CHANGES» заменён на `CHANGES_REQUIRED` (стандартизация по спеке §6) |
21
- | Дедуп находок, подсчёт, счётчик раундов, критерий сходимости (REVIEW-001) | Сохранено |
22
- | Конфликты находок между линзами решает владелец (REVIEW-001) | Сохранено |
23
- | Security-линза (REVIEW-001) | Отброшено: осознанное отклонение — для документов не тянем (спека §6) |
24
- | Самомутация playbook по фидбеку (analyze-doc PoC, п. 3) | Заменено: фидбек о методике/линзах → жалобный контур (`wolf complain`, тег complaint); мутатор — Стюард |
25
- | Исполнитель-аналитик PoC (apprentice) | Заменено: линзы исполняют worker-reviewer; оркестратор цикла — mr-wolf |
26
- | Продуктовый код оркестрации | Отброшено: весь цикл ведёт mr-wolf по протоколу этого скилла (спека §10) |
14
+ | Пункт источника | Судьба |
15
+ | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
16
+ | Рамочный паттерн analyze-doc: методика в памяти, файл — тонкая рамка | Сохранено |
17
+ | Протокол подтягивания playbook перед прогоном | Сохранено; запрос `wolf search "wolf-review playbook"`, наибольшая версия |
18
+ | Мульти-линзовость, изоляция линз в чистых сессиях (REVIEW-001) | Сохранено |
19
+ | Перспектива линз полнота → консистентность → типоспецифичные (REVIEW-001) | Сохранено |
20
+ | Контракты SUMMARY/VERDICT (REVIEW-001: вердикт «CHANGES») | Сохранено; «CHANGES» заменён на `CHANGES_REQUIRED` (стандартизация по спеке §6) |
21
+ | Дедуп находок, подсчёт, счётчик раундов, критерий сходимости (REVIEW-001) | Сохранено |
22
+ | Конфликты находок между линзами решает владелец (REVIEW-001) | Сохранено |
23
+ | Security-линза (REVIEW-001) | Отброшено: осознанное отклонение — для документов не тянем (спека §6) |
24
+ | Самомутация playbook по фидбеку (analyze-doc PoC, п. 3) | Заменено: фидбек о методике/линзах → жалобный контур (`wolf complain`, тег complaint); мутатор — Стюард |
25
+ | Исполнитель-аналитик PoC (apprentice) | Заменено: линзы исполняют worker-reviewer; оркестратор цикла — mr-wolf |
26
+ | Продуктовый код оркестрации | Отброшено: весь цикл ведёт mr-wolf по протоколу этого скилла (спека §10) |
27
27
 
28
28
  ## Рамка (методика — НЕ в этом файле)
29
29
 
@@ -53,9 +53,28 @@ description: Мульти-линзовое ревью документов (doc-
53
53
  8. **Конфликты**: противоречащие находки разных линз разрешает владелец
54
54
  (слепой судьи в MVP нет) — mr-wolf докладывает конфликт, не выбирает сам.
55
55
 
56
+ ## Линзы конвейера (v2): один вопрос — одна пара файлов
57
+
58
+ | Линза | Пара файлов | Вопрос |
59
+ | --------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
60
+ | Полнота | requirements.md (целиком) | Атомарность, недвусмысленность, проверяемость записей; критерии готовности анатомии (история+формальная запись, AC, источник, `[НЕОПРЕДЕЛЕНО]` не сжат). Семантика; механику ловит линт doctor. |
61
+ | Консистентность | design.md | Соответствие requirements (REQ/NFR покрыты), базлайну кода (контракты с file:line), ADR-карточки полны. |
62
+ | Соответствие | plan.md ↔ design.md | Каждая задача ссылается на §design; контракты не переопределены; чекбоксы `[x]` сверены с отчётами при приёмке волны. |
63
+ | Покрытие AC | test-plan.md ↔ requirements.md | Сценарий на каждый REQ-NN; AC не переизобретены; маппинг на файлы существует. |
64
+
65
+ ## Гейты (Kiro-паттерн)
66
+
67
+ 1. Владелец аппрувит requirements.md до запуска технических ступеней.
68
+ 2. ADR-карточки design.md — владельцу на визу отдельно (продуктовые выборы, не техника).
69
+ 3. Следующая ступень (design → plan → test-plan) генерируется только после аппрува предыдущей.
70
+ 4. Технические артефакты ревьюят линзы; владельцу — выжимка на визу.
71
+ 5. Журнал вердиктов: вердикты линз и гейтов владельца — append-only строкой
72
+ (линза | дата | вердикт | ключевые находки | что исправлено) в `review.md`
73
+ папки фичи — каждую линзо-итерацию; детали — в памяти Wolf, в git — свод.
74
+
56
75
  ### Границы рамки
57
76
 
58
77
  - Критичные запреты: `rm -rf`, `sudo`, деструктивный git, секреты.
59
78
  - Продуктового кода оркестрации нет — цикл ведёт mr-wolf по этому протоколу.
60
79
  - Этот файл не содержит методику линз и не должен её содержать:
61
- версии линз живут в памяти Wolf.
80
+ версии линз живут в памяти Wolf.