mister-wolf 2.14.0 → 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.
- package/README.md +2 -0
- package/README.ru.md +2 -0
- package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-doctor.js +32 -1
- package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
- package/dist/adapters/cli/commands/memory-scaffold.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-scaffold.js +15 -0
- package/dist/adapters/cli/commands/memory-scaffold.js.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.js +8 -0
- package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
- package/dist/adapters/fs/artifact-fs.d.ts +4 -0
- package/dist/adapters/fs/artifact-fs.d.ts.map +1 -0
- package/dist/adapters/fs/artifact-fs.js +29 -0
- package/dist/adapters/fs/artifact-fs.js.map +1 -0
- package/dist/adapters/platforms/opencode-adapter.d.ts +8 -1
- package/dist/adapters/platforms/opencode-adapter.d.ts.map +1 -1
- package/dist/adapters/platforms/opencode-adapter.js +33 -0
- package/dist/adapters/platforms/opencode-adapter.js.map +1 -1
- package/dist/app/use-cases/artifact-front-matter.d.ts +5 -0
- package/dist/app/use-cases/artifact-front-matter.d.ts.map +1 -0
- package/dist/app/use-cases/artifact-front-matter.js +16 -0
- package/dist/app/use-cases/artifact-front-matter.js.map +1 -0
- package/dist/app/use-cases/init-project.d.ts +3 -1
- package/dist/app/use-cases/init-project.d.ts.map +1 -1
- package/dist/app/use-cases/init-project.js +36 -16
- package/dist/app/use-cases/init-project.js.map +1 -1
- package/dist/app/use-cases/lint-artifacts.d.ts +18 -0
- package/dist/app/use-cases/lint-artifacts.d.ts.map +1 -0
- package/dist/app/use-cases/lint-artifacts.js +249 -0
- package/dist/app/use-cases/lint-artifacts.js.map +1 -0
- package/dist/app/use-cases/scaffold-agent.d.ts +1 -1
- package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
- package/dist/app/use-cases/scaffold-agent.js +1 -1
- package/dist/app/use-cases/scaffold-agent.js.map +1 -1
- package/dist/app/use-cases/scaffold-artifact.d.ts +22 -0
- package/dist/app/use-cases/scaffold-artifact.d.ts.map +1 -0
- package/dist/app/use-cases/scaffold-artifact.js +153 -0
- package/dist/app/use-cases/scaffold-artifact.js.map +1 -0
- package/dist/app/use-cases/sync-artifact-index.d.ts +20 -0
- package/dist/app/use-cases/sync-artifact-index.d.ts.map +1 -0
- package/dist/app/use-cases/sync-artifact-index.js +68 -0
- package/dist/app/use-cases/sync-artifact-index.js.map +1 -0
- package/dist/domain/memory-types.d.ts +12 -0
- package/dist/domain/memory-types.d.ts.map +1 -1
- package/dist/domain/memory-types.js +4 -0
- package/dist/domain/memory-types.js.map +1 -1
- package/dist/domain/schemas/relation-schema.d.ts +1 -1
- package/dist/ports/platform-adapter.port.d.ts +15 -0
- package/dist/ports/platform-adapter.port.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.wolf/router.log +1 -0
- package/templates/base/skills/finishing-a-development-branch/SKILL.md +32 -13
- package/templates/base/skills/receiving-code-review/SKILL.md +39 -0
- package/templates/base/skills/test-driven-development/SKILL.md +59 -37
- package/templates/base/skills/using-git-worktrees/SKILL.md +25 -15
- package/templates/base/skills/verification-before-completion/SKILL.md +39 -25
- package/templates/base/skills/wolf-brainstorm/SKILL.md +51 -36
- package/templates/base/skills/wolf-design/SKILL.md +45 -0
- package/templates/base/skills/wolf-execute/SKILL.md +30 -13
- package/templates/base/skills/wolf-plan/SKILL.md +38 -21
- package/templates/base/skills/wolf-review/SKILL.md +33 -14
- package/templates/base/skills/wolf-sdd/SKILL.md +38 -16
- package/templates/base/skills/wolf-skill-intake/SKILL.md +66 -0
- package/templates/base/skills/wolf-testplan/SKILL.md +37 -0
- package/templates/base/skills/writing-skills/SKILL.md +40 -0
- package/templates/opencode/plugins/wolf-router.ts +110 -52
- package/templates/opencode/plugins/wolf-session-start.js +88 -40
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wolf-plan
|
|
3
|
-
description:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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 принцип
|
|
164
|
-
| «created by brainstorming skill» (worktree)
|
|
165
|
-
| Путь `docs/superpowers/plans/`
|
|
166
|
-
| Заголовок «REQUIRED SUB-SKILL: sdd or executing-plans» | заменено → wolf-sdd ИЛИ wolf-execute
|
|
167
|
-
| Проверка масштаба
|
|
168
|
-
| Структура файлов
|
|
169
|
-
| Bite-sized гранулярность
|
|
170
|
-
| Структура задачи (пример)
|
|
171
|
-
| «No Placeholders» (6 провалов)
|
|
172
|
-
| «Remember» (4)
|
|
173
|
-
| Саморевью (3 проверки)
|
|
174
|
-
| Execution Handoff (2 опции)
|
|
175
|
-
| —
|
|
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 перед прогоном
|
|
18
|
-
| Мульти-линзовость, изоляция линз в чистых сессиях (REVIEW-001)
|
|
19
|
-
| Перспектива линз полнота → консистентность → типоспецифичные (REVIEW-001) | Сохранено
|
|
20
|
-
| Контракты SUMMARY/VERDICT (REVIEW-001: вердикт «CHANGES»)
|
|
21
|
-
| Дедуп находок, подсчёт, счётчик раундов, критерий сходимости (REVIEW-001) | Сохранено
|
|
22
|
-
| Конфликты находок между линзами решает владелец (REVIEW-001)
|
|
23
|
-
| Security-линза (REVIEW-001)
|
|
24
|
-
| Самомутация playbook по фидбеку (analyze-doc PoC, п. 3)
|
|
25
|
-
| Исполнитель-аналитик PoC (apprentice)
|
|
26
|
-
| Продуктовый код оркестрации
|
|
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
|
-
|
|
80
|
+
версии линз живут в памяти Wolf.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wolf-sdd
|
|
3
|
-
description:
|
|
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 флоучарт
|
|
228
|
-
| Process-флоучарт
|
|
229
|
-
| Model Selection
|
|
230
|
-
| Implementer Status (DONE/DONE_WITH_CONCERNS/NEEDS_CONTEXT/BLOCKED) | сохранено полностью (4/4)
|
|
231
|
-
| Prompt-templates (3 sibling-файла)
|
|
232
|
-
| Example Workflow
|
|
233
|
-
| Advantages/Cost
|
|
234
|
-
| Red Flags «Never» (12)
|
|
235
|
-
| «Если спрашивает / нашёл / завалил» (3+4+2)
|
|
236
|
-
| Integration
|
|
237
|
-
| —
|
|
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`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing-skills
|
|
3
|
+
description: 'Жизненный цикл скиллов Wolf: templates/base → рендер со штампами → sync; таблица трассировки обязательна; граница с skill intake.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# writing-skills: создание и правка скиллов Wolf
|
|
7
|
+
|
|
8
|
+
## Обзор
|
|
9
|
+
|
|
10
|
+
Скилл Wolf = промпт-методология в `templates/base/skills/<имя>/SKILL.md`; в
|
|
11
|
+
проекты-пользователи попадает рендером (штампы, `wolf init`/`wolf sync`).
|
|
12
|
+
Правка живого скилла ведётся в шаблоне, не в отрендеренной копии.
|
|
13
|
+
|
|
14
|
+
## Жизненный цикл
|
|
15
|
+
|
|
16
|
+
1. Новый скилл: папка `templates/base/skills/<имя>/SKILL.md` с front-matter
|
|
17
|
+
`name` + `description` (описание — триггер загрузки: когда применять).
|
|
18
|
+
2. Тело: обзор → вход/выход → процесс (шаги) → железные запреты.
|
|
19
|
+
3. **Таблица трассировки адаптации обязательна** для каждого адаптированного
|
|
20
|
+
скилла: источник → судьба пункта (сохранено/заменено/выброшено/добавлено) → почему.
|
|
21
|
+
4. Правка существующего: шаблон → `wolf sync` → guard-тесты соответствующего набора.
|
|
22
|
+
5. Граница с intake: скиллы базового набора — здесь; внешние скиллы мира —
|
|
23
|
+
через wolf-skill-intake (гейт владельца), не через этот скилл.
|
|
24
|
+
|
|
25
|
+
## Запреты
|
|
26
|
+
|
|
27
|
+
- Править `.opencode/skills/<имя>/SKILL.md` напрямую (перезатрётся sync).
|
|
28
|
+
- Создавать скилл без таблицы трассировки (для адаптаций) или без описания
|
|
29
|
+
триггера (для новых).
|
|
30
|
+
- Дублировать существующий скилл набора — сначала `wolf search`.
|
|
31
|
+
|
|
32
|
+
## Трассировка адаптации
|
|
33
|
+
|
|
34
|
+
| Пункт источника (superpowers writing-skills) | Судьба | Почему |
|
|
35
|
+
| -------------------------------------------- | -------------------------------------------- | -------------------------- |
|
|
36
|
+
| Описание как триггер загрузки | сохранено | ядро |
|
|
37
|
+
| Проверка скилла перед деплоем | заменено → guard-тесты набора + sync | harness-привязка |
|
|
38
|
+
| Шаблоны и реестр скиллов | заменено → templates/base + базовый набор | жизненный цикл Wolf |
|
|
39
|
+
| — | добавлено: трассировка адаптации обязательна | уроки переноса superpowers |
|
|
40
|
+
| — | добавлено: граница с intake | спека конвейера §4-B7 |
|