mister-wolf 2.14.1 → 2.15.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 (56) hide show
  1. package/README.md +2 -0
  2. package/README.ru.md +2 -0
  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
@@ -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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wolf-sdd
3
- description: "Используй для исполнения планов реализации с независимыми задачами через субагентов: свежий воркер на каждую задачу через executor-lead + двухстадийное ревью worker-reviewer (соответствие брифу, затем качество)."
3
+ description: 'Используй для исполнения планов реализации с независимыми задачами через субагентов: свежий воркер на каждую задачу через executor-lead + двухстадийное ревью worker-reviewer (соответствие брифу, затем качество).'
4
4
  ---
5
5
 
6
6
  # wolf-sdd: разработка через субагентов
@@ -40,11 +40,20 @@ digraph when_to_use {
40
40
  ```
41
41
 
42
42
  **vs wolf-execute (параллельная/линейная сессия):**
43
+
43
44
  - Та же сессия (без переключения контекста)
44
45
  - Свежий воркер на задачу (без загрязнения контекста)
45
46
  - Двухстадийное ревью после каждой задачи: сначала бриф, затем качество
46
47
  - Быстрее итерация (без человека между задачами)
47
48
 
49
+ ## Вход: план
50
+
51
+ Источник входа — план волны: `requirements.md` + `design.md` + `plan.md` в `docs/dev/<дата>-<slug>/`. Спека-монолит как вход плана не используется.
52
+
53
+ Задачи плана — чекбоксы `- [ ]`: исполнитель переворачивает чекбокс в `[x]` в конце
54
+ задачи вместе со строкой «сделано → коммит <hash>» — часть Definition of Done задачи.
55
+ wolf-sdd — основной диспетчерский путь конвейера.
56
+
48
57
  ## Ход процесса
49
58
 
50
59
  ```dot
@@ -92,6 +101,10 @@ digraph process {
92
101
  }
93
102
  ```
94
103
 
104
+ ## Валидация волны
105
+
106
+ - Валидация волны сверяется с `docs/dev/<дата>-<slug>/test-plan.md`: прогон сценариев — заготовки финальной проверки плана.
107
+
95
108
  ## Тиринг задач
96
109
 
97
110
  Используй наименее мощную модель, которая справится с ролью — это экономит стоимость и время. Конкретные имена моделей — зона конфига проекта (тиринг), не этого скилла.
@@ -103,6 +116,7 @@ digraph process {
103
116
  **Архитектура, дизайн и ревью:** самая способная доступная модель.
104
117
 
105
118
  **Сигналы сложности задачи:**
119
+
106
120
  - Трогает 1–2 файла с полным брифом → воркерская модель
107
121
  - Трогает много файлов с интеграционными рисками → стандартная
108
122
  - Требует дизайнерского суждения или широкого понимания кодовой базы → самая способная
@@ -118,6 +132,7 @@ digraph process {
118
132
  **NEEDS_CONTEXT:** воркеру не хватило информации. Дай недостающий контекст и перезапусти.
119
133
 
120
134
  **BLOCKED:** воркер не может завершить задачу. Оцени блокер:
135
+
121
136
  1. Проблема контекста — дай больше контекста, перезапусти
122
137
  2. Задача требует больше рассуждений — поднимись на уровень выше тирингом
123
138
  3. Задача слишком велика — разбей на меньшие части
@@ -172,6 +187,7 @@ digraph process {
172
187
  ## Red Flags
173
188
 
174
189
  **Никогда:**
190
+
175
191
  - Не начинай исполнение в main без явного согласия владельца (работа — только в worktree-ветке)
176
192
  - Не пропускай ревью (соответствие брифу ИЛИ качество — оба обязательны)
177
193
  - Не продолжай с незакрытыми замечаниями
@@ -186,32 +202,38 @@ digraph process {
186
202
  - Не переходи к следующей задаче, пока любое из ревью имеет открытые замечания
187
203
 
188
204
  **Если воркер задаёт вопросы:**
205
+
189
206
  - Отвечай ясно и полностью
190
207
  - Дай дополнительный контекст при необходимости
191
208
  - Не подгоняй его к реализации
192
209
 
193
210
  **Если ревьюер нашёл проблемы:**
211
+
194
212
  - Правит тот же воркер-исполнитель
195
213
  - Ревьюер смотрит снова
196
214
  - Повторять до аппрува
197
215
  - Не пропускай повторное ревью
198
216
 
199
217
  **Если воркер завалил задачу:**
218
+
200
219
  - Спавнь чинящего воркера с точными инструкциями
201
220
  - Не чини сам (загрязнение контекста)
202
221
 
203
222
  ## Интеграция
204
223
 
205
224
  **Обязательные скиллы воркфлоу:**
225
+
206
226
  - **using-git-worktrees** — REQUIRED: изолированный worktree `.worktrees/<имя-задачи>` ДО старта исполнения
207
227
  - **wolf-plan** — создаёт план, который этот скилл исполняет
208
228
  - **requesting-code-review** — рамка ревью для воркеров-ревьюеров
209
229
  - **finishing-a-development-branch** — завершение разработки после всех задач
210
230
 
211
231
  **Воркеры используют:**
232
+
212
233
  - **test-driven-development** — воркеры следуют TDD на каждой задаче
213
234
 
214
235
  **Альтернатива:**
236
+
215
237
  - **wolf-execute** — линейное исполнение без субагентов, когда диспетчеризация недоступна
216
238
 
217
239
  ---
@@ -220,20 +242,20 @@ digraph process {
220
242
 
221
243
  > Источник: `~/.config/opencode/superpowers/skills/subagent-driven-development/SKILL.md`, upstream 6efe32c (2026-04-23)
222
244
 
223
- | Пункт источника | Судьба | Почему |
224
- |---|---|---|
225
- | «Fresh subagent per task + two-stage review» | сохранено | Ядро принципа |
226
- | «Why subagents» (изоляция контекста) | сохранено | Ядро |
227
- | When-to-use флоучарт | сохранено; executing-plans → wolf-execute | Рёбра набора |
228
- | Process-флоучарт | сохранено; диспетч субагентов → executor-lead/worker-implementer/worker-reviewer; TodoWrite → `{{tool.todowrite}}` | Research §1: диспетч субагентов непереносим — заменён ролями Wolf |
229
- | Model Selection | заменено → тиринг проекта без имён моделей | Research §1: выбор моделей непереносим |
230
- | Implementer Status (DONE/DONE_WITH_CONCERNS/NEEDS_CONTEXT/BLOCKED) | сохранено полностью (4/4) | Контракт статусов воркера |
231
- | Prompt-templates (3 sibling-файла) | отброшено | Файлы каталога скилла не переносятся; заменено ролями worker-* |
232
- | Example Workflow | сжато сохранено; сущность цикла сохранена | Иллюстрация |
233
- | Advantages/Cost | сохранено сжато | Ядро |
234
- | Red Flags «Never» (12) | сохранено полностью (12/12); main/master → trunk-based формулировка | H7 |
235
- | «Если спрашивает / нашёл / завалил» (3+4+2) | сохранено полностью (9/9) | H7 |
236
- | Integration | заменено: worktrees → H5-предусловие `.worktrees/<имя-задачи>`; writing-plans → wolf-plan; code-reviewer → worker-reviewer; TDD — воркерам | Wolf-переплетение |
237
- | — | добавлено: REQUIRED-предусловие worktree (H5) | Спека §5.2 |
245
+ | Пункт источника | Судьба | Почему |
246
+ | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
247
+ | «Fresh subagent per task + two-stage review» | сохранено | Ядро принципа |
248
+ | «Why subagents» (изоляция контекста) | сохранено | Ядро |
249
+ | When-to-use флоучарт | сохранено; executing-plans → wolf-execute | Рёбра набора |
250
+ | Process-флоучарт | сохранено; диспетч субагентов → executor-lead/worker-implementer/worker-reviewer; TodoWrite → `{{tool.todowrite}}` | Research §1: диспетч субагентов непереносим — заменён ролями Wolf |
251
+ | Model Selection | заменено → тиринг проекта без имён моделей | Research §1: выбор моделей непереносим |
252
+ | Implementer Status (DONE/DONE_WITH_CONCERNS/NEEDS_CONTEXT/BLOCKED) | сохранено полностью (4/4) | Контракт статусов воркера |
253
+ | Prompt-templates (3 sibling-файла) | отброшено | Файлы каталога скилла не переносятся; заменено ролями worker-\* |
254
+ | Example Workflow | сжато сохранено; сущность цикла сохранена | Иллюстрация |
255
+ | Advantages/Cost | сохранено сжато | Ядро |
256
+ | Red Flags «Never» (12) | сохранено полностью (12/12); main/master → trunk-based формулировка | H7 |
257
+ | «Если спрашивает / нашёл / завалил» (3+4+2) | сохранено полностью (9/9) | H7 |
258
+ | Integration | заменено: worktrees → H5-предусловие `.worktrees/<имя-задачи>`; writing-plans → wolf-plan; code-reviewer → worker-reviewer; TDD — воркерам | Wolf-переплетение |
259
+ | — | добавлено: REQUIRED-предусловие worktree (H5) | Спека §5.2 |
238
260
 
239
261
  Перенесённые списки: «Never» 12/12, вспомогательные 3+4+2 (9/9), статусы воркера 4/4.
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: wolf-skill-intake
3
+ description: 'Подключение внешнего скилла: поиск (npx skills find, skills.sh) → ревью-линза кандидата → гейт владельца (явное «да») → установка → регистрация tool → откат. Без аппрува владельца установка не идёт.'
4
+ ---
5
+
6
+ # wolf-skill-intake: подключение внешнего скилла
7
+
8
+ ## Обзор
9
+
10
+ Чужой скилл меняет поведение агентов — это мутация лица. Процесс: поиск →
11
+ ревью → гейт владельца → установка → регистрация → наблюдаемость. Единственный
12
+ новый скилл блока intake; линза кандидата — роль в этом протоколе, не отдельный скилл.
13
+
14
+ ## 1. Поиск
15
+
16
+ - CLI: `npx skills find <запрос>`; leaderboard: skills.sh.
17
+ - Критерии качества: ≥1K установок, репутация источника, звёзды репозитория.
18
+ - Изоляция: внешние вызовы только здесь; при поломке внешнего CLI — деградация
19
+ к ручному поиску; контур (линза, гейт, регистрация) не страдает.
20
+
21
+ ## 2. Ревью-линза кандидата
22
+
23
+ Чистый воркер-ревьюер читает SKILL.md кандидата по ОДНОМУ вопросу:
24
+ «опасен ли/конфликтует ли этот скилл?» Проверки:
25
+
26
+ - опасные инструкции: `rm -rf`, `curl | sh`, запросы секретов, авто-коммиты;
27
+ - конфликты с рамкой/правилами проекта — по памяти Wolf (`wolf search`);
28
+ - качество промпта: расплывчатые/конфликтные предписания.
29
+
30
+ Вердикт (подключаем/отклонить + находки) — владельцу. Отклонение = конец, установки нет.
31
+
32
+ ## 3. Гейт владельца
33
+
34
+ Без явного «да» владельца установка не идёт. Вопрос формулируется: скилл, источник,
35
+ находки линзы, вердикт. Только после явного аппрува — шаг 4.
36
+
37
+ ## 4. Установка
38
+
39
+ `npx skills add <имя>` (в проекте-пользователе). Откат: `npx skills remove <имя>`.
40
+
41
+ ## 5. Регистрация
42
+
43
+ Тул-объект в памяти Wolf (гасит линт скиллов-призраков doctor):
44
+
45
+ ```bash
46
+ wolf add --type tool --title "skill: <имя>" \
47
+ --set name=<имя> \
48
+ --set script_path=.opencode/skills/<имя>/SKILL.md \
49
+ --set language=markdown \
50
+ --set owner_skill=<имя> \
51
+ --set version=<версия-источника> \
52
+ --set source_url=<URL репозитория/страницы>
53
+ ```
54
+
55
+ Ребро на проект/поток — по необходимости (`wolf relation add`).
56
+
57
+ ## 6. Наблюдаемость (уже существует — проверяется, не строится)
58
+
59
+ - телеметрия: `.wolf/metrics/skill-invocations.jsonl` (панель `analytics --view delivery`);
60
+ - жалобы на скилл: `wolf complain --about skill:<имя>` → kind behavioral;
61
+ - линт призраков: секция «Артефакты» в `wolf doctor`.
62
+
63
+ ## 7. Откат
64
+
65
+ `npx skills remove <имя>` + `wolf supersede <tool-id> <new-id>` или
66
+ `wolf transition <tool-id> archived` (существующими командами, без новых).
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: wolf-testplan
3
+ description: 'Вход: requirements.md (approved) + design.md. Выход: test-plan.md — Given/When/Then сценарий на каждый REQ-NN + маппинг на e2e/юнит-файлы. AC переизобретаться не должны.'
4
+ ---
5
+
6
+ # wolf-testplan: test-plan.md по requirements.md
7
+
8
+ ## Обзор
9
+
10
+ Отдельная ось специализации: один скилл — один тип артефакта (как линзы).
11
+ Планирование (wolf-plan) и тест-планирование (этот скилл) раздельны.
12
+
13
+ ## Вход
14
+
15
+ - `requirements.md` (approved) — AC, единый источник сценариев.
16
+ - `design.md` (review или approved) — контракты: сценарии проверяют интерфейс, не реализацию.
17
+
18
+ ## Выход: test-plan.md
19
+
20
+ 1. **Сценарий на каждый REQ-NN** в формате Given/When/Then. Нетривиальные AC —
21
+ дословно их G/W/T из requirements.md; простые — развёртка AC без смены смысла.
22
+ 2. **Маппинг** — каждый сценарий → целевой тестовый файл (юнит/e2e), которого ещё
23
+ нет: путь `tests/…` + имя теста. Сценарии test-plan.md — заготовки КРАСНОЙ фазы
24
+ TDD (дисциплинарный скилл test-driven-development).
25
+ 3. **Прогоны** — точечные команды `npx vitest run <путь>`; полный гейт `npm run check`.
26
+
27
+ ## Запреты
28
+
29
+ - Сценарии для поведения вне REQ/NFR (расширение объёма — дефект).
30
+ - Менять AC — правки только через CR в requirements.md.
31
+ - Реализовывать тесты: скилл пишет артефакт, не код.
32
+
33
+ ## Процесс
34
+
35
+ 1. Таблица трассировки REQ-NN → сценарий → целевой файл (покрытие 100% REQ;
36
+ NFR — по измеримым AC).
37
+ 2. Заполнить test-plan.md; front-matter `status: review`.