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.
- package/README.md +22 -11
- package/README.ru.md +22 -11
- 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/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/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/package.json +1 -1
- package/templates/.wolf/router.log +1 -1
- 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
|
@@ -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 |
|