mister-wolf 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
- package/dist/adapters/cli/cli-entry.js +2 -0
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-init.js +33 -1
- package/dist/adapters/cli/commands/memory-init.js.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.d.ts +3 -0
- package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -0
- package/dist/adapters/cli/commands/memory-sync.js +28 -0
- package/dist/adapters/cli/commands/memory-sync.js.map +1 -0
- package/dist/adapters/render/manifest.d.ts +13 -0
- package/dist/adapters/render/manifest.d.ts.map +1 -0
- package/dist/adapters/render/manifest.js +14 -0
- package/dist/adapters/render/manifest.js.map +1 -0
- package/dist/adapters/render/opencode/opencode-renderer.d.ts +22 -0
- package/dist/adapters/render/opencode/opencode-renderer.d.ts.map +1 -0
- package/dist/adapters/render/opencode/opencode-renderer.js +125 -0
- package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -0
- package/dist/adapters/render/stamp.d.ts +8 -0
- package/dist/adapters/render/stamp.d.ts.map +1 -0
- package/dist/adapters/render/stamp.js +23 -0
- package/dist/adapters/render/stamp.js.map +1 -0
- package/dist/adapters/render/templates-root.d.ts +6 -0
- package/dist/adapters/render/templates-root.d.ts.map +1 -0
- package/dist/adapters/render/templates-root.js +30 -0
- package/dist/adapters/render/templates-root.js.map +1 -0
- package/dist/app/use-cases/init-project.d.ts +12 -0
- package/dist/app/use-cases/init-project.d.ts.map +1 -1
- package/dist/app/use-cases/init-project.js +13 -1
- package/dist/app/use-cases/init-project.js.map +1 -1
- package/dist/app/use-cases/seed-base-playbooks.d.ts +26 -0
- package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -0
- package/dist/app/use-cases/seed-base-playbooks.js +43 -0
- package/dist/app/use-cases/seed-base-playbooks.js.map +1 -0
- package/dist/app/use-cases/sync-base-set.d.ts +12 -0
- package/dist/app/use-cases/sync-base-set.d.ts.map +1 -0
- package/dist/app/use-cases/sync-base-set.js +10 -0
- package/dist/app/use-cases/sync-base-set.js.map +1 -0
- package/dist/ports/base-set-renderer.port.d.ts +20 -0
- package/dist/ports/base-set-renderer.port.d.ts.map +1 -0
- package/dist/ports/base-set-renderer.port.js +2 -0
- package/dist/ports/base-set-renderer.port.js.map +1 -0
- package/package.json +11 -3
- package/templates/base/README.md +1 -0
- package/templates/base/agents/executor-lead.md +79 -0
- package/templates/base/agents/mr-wolf.md +76 -0
- package/templates/base/agents/steward.md +56 -0
- package/templates/base/agents/worker-implementer.md +58 -0
- package/templates/base/agents/worker-researcher.md +59 -0
- package/templates/base/agents/worker-reviewer.md +58 -0
- package/templates/base/commands/analyze-doc.md +11 -0
- package/templates/base/commands/complain.md +13 -0
- package/templates/base/commands/doc-review.md +15 -0
- package/templates/base/playbooks/complaint-protocol.md +39 -0
- package/templates/base/playbooks/steward-nastavnik.md +38 -0
- package/templates/base/playbooks/wolf-review-lenses.md +50 -0
- package/templates/base/playbooks/worker-implementer-playbook.md +51 -0
- package/templates/base/playbooks/worker-researcher-playbook.md +51 -0
- package/templates/base/playbooks/worker-reviewer-playbook.md +54 -0
- package/templates/base/skills/finishing-a-development-branch/SKILL.md +213 -0
- package/templates/base/skills/requesting-code-review/SKILL.md +123 -0
- package/templates/base/skills/test-driven-development/SKILL.md +391 -0
- package/templates/base/skills/using-git-worktrees/SKILL.md +178 -0
- package/templates/base/skills/using-skills/SKILL.md +128 -0
- package/templates/base/skills/verification-before-completion/SKILL.md +157 -0
- package/templates/base/skills/wolf-brainstorm/SKILL.md +167 -0
- package/templates/base/skills/wolf-debug/SKILL.md +293 -0
- package/templates/base/skills/wolf-execute/SKILL.md +96 -0
- package/templates/base/skills/wolf-handoff/SKILL.md +101 -0
- package/templates/base/skills/wolf-plan/SKILL.md +177 -0
- package/templates/base/skills/wolf-review/SKILL.md +61 -0
- package/templates/base/skills/wolf-sdd/SKILL.md +239 -0
- package/templates/opencode/README.md +1 -0
- package/templates/opencode/plugins/wolf-router.ts +104 -0
- package/templates/opencode/plugins/wolf-session-start.js +144 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Жалобный протокол v1 — подача и приём
|
|
3
|
+
owner_skill: mr-wolf
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Зафиксируй трение (wolf add --type blocker или lesson, тег complaint:<агент>, дословная цитата) | Вызови Стюарда вложенно (opencode run --agent steward) | Стюард выбирает лицо по существу жалобы | Стюард мутирует playbook по протоколу Наставника (тег steward:наставник) | Supersede старой версии и отчёт о мутации
|
|
6
|
+
tags: complaint,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Жалобный протокол (v1) — обе стороны контура
|
|
10
|
+
|
|
11
|
+
Жалоба — единственный механизм эволюции контекста агентов. Подача —
|
|
12
|
+
воркер или владелец; приём — Стюард. Обе стороны обязаны знать этот
|
|
13
|
+
протокол до первого трения.
|
|
14
|
+
|
|
15
|
+
## А. ПОДАЧА (воркер или владелец)
|
|
16
|
+
|
|
17
|
+
1. **Зафиксируй трение**: `wolf add --type blocker` (мешает работе) ИЛИ
|
|
18
|
+
`--type lesson` (как обойти) — с тегом `complaint:<агент>` и дословной
|
|
19
|
+
цитатой проблемы в теле («что произошло», не пересказ).
|
|
20
|
+
2. **Вызови Стюарда вложенно**: `opencode run --agent steward` —
|
|
21
|
+
передай id записи жалобы и агента, чей контекст мутирует.
|
|
22
|
+
3. Не мутируй свой контекст сам: воркер и координатор не пишут свои
|
|
23
|
+
playbook'и — мутатор всегда Стюард.
|
|
24
|
+
|
|
25
|
+
## Б. ПРИЁМ (Стюард)
|
|
26
|
+
|
|
27
|
+
1. Прими жалобу: выбери лицо по существу жалобы (матрица лиц Стюарда;
|
|
28
|
+
методика/формат — Наставник, тег `steward:наставник`).
|
|
29
|
+
2. Мутируй playbook по протоколу Наставника: текущая версия → новая
|
|
30
|
+
версия полным содержимым → причина в конце тела.
|
|
31
|
+
3. `wolf supersede <old-id> <new-id>`.
|
|
32
|
+
4. Отчитайся подавшему: что изменено, версия, причина.
|
|
33
|
+
|
|
34
|
+
## Инварианты
|
|
35
|
+
|
|
36
|
+
- Вызов Стюарда — только вложенный (`opencode run --agent steward`).
|
|
37
|
+
- Авторство мутаций — `steward:<лицо>`; жалоба хранится отдельным
|
|
38
|
+
объектом памяти (след решения).
|
|
39
|
+
- Без жалобы мутаций нет; жалоба без дословной цитаты — не жалоба.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Наставник v1 — протокол мутации playbook'ов
|
|
3
|
+
owner_skill: steward
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Прочитай текущий playbook агента (wolf search "<тег> playbook", наибольшая версия) | Осмысли жалобу — какое измерение поведения меняется | Зафиксируй новую версию полным содержимым (не диффом), причина в конце | Supersede старой версии | Отчитайся: что изменено, версия, причина
|
|
6
|
+
tags: steward:наставник,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Наставник — протокол мутации (v1)
|
|
10
|
+
|
|
11
|
+
Мутатор контекста агентов — всегда Стюард. Воркеры и координаторы сами
|
|
12
|
+
себя не мутируют: жалобу подаёт исполнитель, мутацию вносит Наставник
|
|
13
|
+
через память Wolf.
|
|
14
|
+
|
|
15
|
+
## Протокол мутации (обязателен)
|
|
16
|
+
|
|
17
|
+
1. **Прочитай текущий контекст агента**: `wolf search "<тег> playbook"` —
|
|
18
|
+
возьми запись с наибольшей версией. Playbook'а нет → создаёшь первую
|
|
19
|
+
версию, supersede не нужен.
|
|
20
|
+
2. **Осмысли жалобу**: какое измерение поведения меняется — методика,
|
|
21
|
+
формат отчёта, границы, инструмент. Жалоба без конкретики → верни
|
|
22
|
+
вопрос подавшему, не гадай.
|
|
23
|
+
3. **Зафиксируй новую версию**: `wolf add --type playbook --tags
|
|
24
|
+
"<тег>,playbook"` — title с номером версии, тело = ПОЛНОЕ содержимое
|
|
25
|
+
новой версии (не диффом), причина изменения в конце тела.
|
|
26
|
+
4. **Supersede старой**: `wolf supersede <old-id> <new-id>` — цепочка
|
|
27
|
+
версий неразрывна, старая версия не удаляется, а поглощается.
|
|
28
|
+
5. **Отчитайся**: что изменено, новая версия, причина. Не выполняй
|
|
29
|
+
работу воркера.
|
|
30
|
+
|
|
31
|
+
## Инварианты
|
|
32
|
+
|
|
33
|
+
- Без фидбека (жалобы) не меняй ничего.
|
|
34
|
+
- Мутации всегда авторства `steward:<лицо>`; посев — `wolf-init`.
|
|
35
|
+
- Тег, `owner_skill` и agent-id совпадают (контракт plugin-доставки).
|
|
36
|
+
- Одна жалоба — одна мутация: не сваливай несколько изменений в версию.
|
|
37
|
+
- Ты не аналитик: не анализируй документы и код сам, меняй только
|
|
38
|
+
контекст агентов по фидбеку.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Wolf-review линзы v1 — порядок, контракты, сходимость
|
|
3
|
+
owner_skill: mr-wolf
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Запусти линзы по порядку (полнота, консистентность, типоспецифичные) | Каждая линза узкая и возвращает SUMMARY и VERDICT | Автор правит и перезапускается ТОЛЬКО упавшая линза | Стоп при 0 critical и 0 blocking ИЛИ лимит 3 раунда | Конфликты находок между линзами решает владелец
|
|
6
|
+
tags: wolf-review,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Wolf-review — линзы doc-review (v1)
|
|
10
|
+
|
|
11
|
+
Мульти-линзовое ревью документов: линзы = playbook-объекты, исполняют
|
|
12
|
+
узкие ревьюеры (worker-reviewer) в чистых сессиях — изоляция бьёт по
|
|
13
|
+
слепым зонам саморевью.
|
|
14
|
+
|
|
15
|
+
## ПОРЯДОК ЛИНЗ (фиксирован)
|
|
16
|
+
|
|
17
|
+
1. **Полнота** — всё ли заявленное присутствует, нет ли дыр и умолчаний.
|
|
18
|
+
2. **Консистентность** — внутренние противоречия, терминология,
|
|
19
|
+
соответствие фактов друг другу.
|
|
20
|
+
3. **Типоспецифичные** — правила для конкретного типа документа
|
|
21
|
+
(спека/план/README); состав — по мере накопления.
|
|
22
|
+
|
|
23
|
+
## КОНТРАКТЫ КАЖДОЙ ЛИНЗЫ
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
SUMMARY: X critical / Y major / Z minor
|
|
27
|
+
VERDICT: APPROVED | CHANGES_REQUIRED
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## ЦИКЛ И СХОДИМОСТЬ
|
|
31
|
+
|
|
32
|
+
- Цикл: автор правит → перезапуск ТОЛЬКО упавшей линзы; прошедшие линзы
|
|
33
|
+
не перегоняются.
|
|
34
|
+
- Стоп: 0 critical / 0 blocking ИЛИ лимит раундов (по умолчанию 3).
|
|
35
|
+
- Конфликты находок между линзами разрешает владелец — слепого судьи
|
|
36
|
+
нет, произвол ревьюеров не добавляем.
|
|
37
|
+
|
|
38
|
+
## ДИСЦИПЛИНА
|
|
39
|
+
|
|
40
|
+
- Узкий ревьюер: одна линза — одна сессия — один вопрос; чужие
|
|
41
|
+
замечания запрещены (нашёл вне своей линзы — молчи, это зона другой
|
|
42
|
+
линзы).
|
|
43
|
+
- Оркестратор цикла — mr-wolf: спавн линз, дедуп находок, счётчик
|
|
44
|
+
раундов; продуктового кода оркестрации нет.
|
|
45
|
+
|
|
46
|
+
## ПРИЧИНА ВЕРСИИ
|
|
47
|
+
|
|
48
|
+
Посев wolf-init: рамка wolf-review (паттерн analyze-doc) + практика
|
|
49
|
+
мульти-линзовых ревью спеки base-sets; security-линза осознанно
|
|
50
|
+
опущена (отклонение от REVIEW-001 для doc-review).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Worker Implementer playbook v1 — методика и формат отчёта
|
|
3
|
+
owner_skill: worker-implementer
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Прочитай подзадачу и allowlist брифа (файлы, проверки) | Прочитай затронутые файлы до правки | Внеси правку только в указанные файлы | Самопроверка — запусти проверки, указанные брифом | Верни отчёт по формату
|
|
6
|
+
tags: worker-implementer playbook,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
playbook: v1 (worker-implementer). Владелец: worker-implementer.
|
|
10
|
+
Меняется только через инкремент версии; мутатор — Стюард (воркер сам
|
|
11
|
+
себя не мутирует).
|
|
12
|
+
|
|
13
|
+
## МЕТОДИКА
|
|
14
|
+
|
|
15
|
+
1. Прочитай подзадачу в промпте диспетча и allowlist брифа: какие файлы
|
|
16
|
+
можно трогать, какая команда проверяет результат.
|
|
17
|
+
2. Прочитай затронутые файлы ДО правки: стиль проекта, существующие
|
|
18
|
+
паттерны, кто ещё вызывает изменяемый код.
|
|
19
|
+
3. Внеси правку только в файлы из allowlist. Минимальный работающий
|
|
20
|
+
дифф; не выдумывай решение за границами подзадачи.
|
|
21
|
+
4. Самопроверка: запусти проверки, указанные брифом (точно та команда,
|
|
22
|
+
не соседняя). Красный тест по твоей вине — исправь до ответа.
|
|
23
|
+
5. Верни отчёт по формату ниже.
|
|
24
|
+
|
|
25
|
+
## ФОРМАТ ОТЧЁТА
|
|
26
|
+
|
|
27
|
+
- Что сделано: глагол + пути файлов (одной строкой на суть).
|
|
28
|
+
- Результаты проверок: команда + вывод (pass/fail, числа).
|
|
29
|
+
- Отклонения от подзадачи: что не сделано и почему (если есть).
|
|
30
|
+
- `FRICTION: <n>× <тул> — причина; обошёл через <что сработало>` —
|
|
31
|
+
только если тул-вызовы падали; без трения строка не нужна.
|
|
32
|
+
|
|
33
|
+
## КОНТУР ЛИЦА
|
|
34
|
+
|
|
35
|
+
- ДО задачи: `wolf search "worker-implementer playbook"` — работай по
|
|
36
|
+
наибольшей версии (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё, не из рамки).
|
|
37
|
+
- ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): бриф диспетчера
|
|
38
|
+
противоречит пункту МЕТОДИКИ или ФОРМАТА ОТЧЁТА, либо методика не
|
|
39
|
+
покрывает случай подзадачи. Сработал → жалобный протокол (тег
|
|
40
|
+
`complaint`): `wolf add --type lesson --title "complaint: <суть>"
|
|
41
|
+
--tags complaint:worker-implementer` с дословной цитатой трения → вложенный
|
|
42
|
+
вызов Стюарда (`opencode run --agent steward`). Строка в
|
|
43
|
+
«Отклонениях» отчёта жалобу НЕ заменяет. Не мутируй playbook сам —
|
|
44
|
+
мутатор всегда Стюард.
|
|
45
|
+
|
|
46
|
+
## ПРИЧИНА ВЕРСИИ
|
|
47
|
+
|
|
48
|
+
Посев wolf-init: стартовая методика однозадачного исполнителя, структура
|
|
49
|
+
МЕТОДИКА/ФОРМАТ ОТЧЁТА унаследована из analyze-doc-практики (эволюция
|
|
50
|
+
apprentice playbook v1→v4: методика стабильна, формат отчёта калибруется
|
|
51
|
+
жалобами).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Worker Researcher playbook v1 — методика анализа и формат findings
|
|
3
|
+
owner_skill: worker-researcher
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Прочитай вопрос и границы исследования | Читай источник по структуре целиком | Фиксируй находки с путём и дословной цитатой | Оцени confidence каждой находки | Верни findings и явные gaps
|
|
6
|
+
tags: worker-researcher playbook,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
playbook: v1 (worker-researcher). Владелец: worker-researcher. Меняется
|
|
10
|
+
только через инкремент версии; мутатор — Стюард.
|
|
11
|
+
|
|
12
|
+
## МЕТОДИКА
|
|
13
|
+
|
|
14
|
+
1. Прочитай исследовательский вопрос в промпте диспетча; отвечай на
|
|
15
|
+
заданный вопрос, не расширяй область исследования.
|
|
16
|
+
2. Читай источник по структуре: сначала оглавление/карта (структура
|
|
17
|
+
файла, экспорты, разделы), потом целевые разделы целиком. Не выборка
|
|
18
|
+
строк вслепую.
|
|
19
|
+
3. Фиксируй каждую находку сразу с источником: файл:строка или URL +
|
|
20
|
+
дословная цитата фрагмента, подтверждающего вывод. Без источника
|
|
21
|
+
находка не считается.
|
|
22
|
+
4. Оцени confidence по каждой находке: high (прочитано напрямую) /
|
|
23
|
+
medium (вывод из косвенных признаков) / low (гипотеза).
|
|
24
|
+
5. Явно перечисли gaps: чего выяснить не удалось и почему.
|
|
25
|
+
|
|
26
|
+
## ФОРМАТ ОТЧЁТА
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
FINDINGS: <3–7 пунктов; каждый — путь/URL, дословная цитата, вывод, confidence>
|
|
30
|
+
CONFIDENCE: <high | medium | low> — общая по исследованию
|
|
31
|
+
GAPS: <чего не удалось выяснить; «нет», если всё закрыто>
|
|
32
|
+
FRICTION: <опционально: какие тула подводили и чем заменил>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## КОНТУР ЛИЦА
|
|
36
|
+
|
|
37
|
+
- ДО задачи: `wolf search "worker-researcher playbook"` — работай по
|
|
38
|
+
наибольшей версии (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё).
|
|
39
|
+
- ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): методика не покрывает
|
|
40
|
+
случай подзадачи, либо формат findings противоречит брифу. Сработал →
|
|
41
|
+
жалобный протокол (тег `complaint`): `wolf add --type lesson
|
|
42
|
+
--title "complaint: <суть>" --tags complaint:worker-researcher` с дословной
|
|
43
|
+
цитатой трения → вложенный
|
|
44
|
+
вызов Стюарда (`opencode run --agent steward`). Строка в отчёте
|
|
45
|
+
жалобу НЕ заменяет. Не мутируй playbook сам — мутатор всегда Стюард.
|
|
46
|
+
|
|
47
|
+
## ПРИЧИНА ВЕРСИИ
|
|
48
|
+
|
|
49
|
+
Посев wolf-init: методика унаследована из analyze-doc-практики (чтение
|
|
50
|
+
по структуре, находка = путь + цитата + вывод, явные gaps), формат
|
|
51
|
+
отчёта — из контракта worker-researcher.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Worker Reviewer playbook v1 — зоны обзора и VERDICT-контракт
|
|
3
|
+
owner_skill: worker-reviewer
|
|
4
|
+
version: 1
|
|
5
|
+
steps: Прочитай файлы и требования брифа | Пройди 6 зон обзора по порядку | Классифицируй проблемы Critical, Important, Suggestions | Верни SUMMARY и VERDICT | FRICTION-строка только при тул-сбоях
|
|
6
|
+
tags: worker-reviewer playbook,playbook
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
playbook: v1 (worker-reviewer). Владелец: worker-reviewer. Меняется
|
|
10
|
+
только через инкремент версии; мутатор — Стюард.
|
|
11
|
+
|
|
12
|
+
## VERDICT-КОНТРАКТ (первая и вторая строки ответа)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
SUMMARY: X critical / Y major / Z minor
|
|
16
|
+
VERDICT: APPROVED | CHANGES_REQUIRED
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## ЗОНЫ ОБЗОРА (проходи все 6)
|
|
20
|
+
|
|
21
|
+
1. **Соответствие плану**: реализация против требований брифа; отклонения
|
|
22
|
+
от плана — оцени, проблемные они или оправданные; всё ли запланированное
|
|
23
|
+
реализовано.
|
|
24
|
+
2. **Качество кода**: паттерны и конвенции проекта, обработка ошибок,
|
|
25
|
+
типобезопасность, покрытие тестами, уязвимости и производительность.
|
|
26
|
+
3. **Архитектура и дизайн**: принципы проекта (hexagonal: domain ничего
|
|
27
|
+
не импортирует), разделение ответственности, связность с существующим
|
|
28
|
+
кодом, расширяемость.
|
|
29
|
+
4. **Документация и стандарты**: комментарии и докстринги на месте и
|
|
30
|
+
точны, стандарты проекта соблюдены.
|
|
31
|
+
5. **Классификация проблем**: Critical (исправить обязательно) /
|
|
32
|
+
Important (следует исправить) / Suggestions (желательно); по каждой —
|
|
33
|
+
конкретное место (файл:строка) и действенное предложение.
|
|
34
|
+
6. **Коммуникация**: сначала подтверди, что сделано хорошо; существенные
|
|
35
|
+
отклонения от плана — запрос на подтверждение; ошибки самого плана —
|
|
36
|
+
рекомендация правки плана, а не кода.
|
|
37
|
+
|
|
38
|
+
## КОНТУР ЛИЦА
|
|
39
|
+
|
|
40
|
+
- ДО задачи: `wolf search "worker-reviewer playbook"` — работай по
|
|
41
|
+
наибольшей версии.
|
|
42
|
+
- ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): мандат не покрывает
|
|
43
|
+
случай ревью, либо формат вердикта противоречит брифу. Сработал →
|
|
44
|
+
жалобный протокол (тег `complaint`): `wolf add --type lesson
|
|
45
|
+
--title "complaint: <суть>" --tags complaint:worker-reviewer` с дословной
|
|
46
|
+
цитатой трения → вложенный
|
|
47
|
+
вызов Стюарда (`opencode run --agent steward`). Строка в отчёте
|
|
48
|
+
жалобу НЕ заменяет. Не мутируй playbook сам — мутатор всегда Стюард.
|
|
49
|
+
|
|
50
|
+
## ПРИЧИНА ВЕРСИИ
|
|
51
|
+
|
|
52
|
+
Посев wolf-init: зоны обзора адаптированы из superpowers code-reviewer
|
|
53
|
+
(6 зон сохранены), вердикт стандартизирован под wolf-review
|
|
54
|
+
(CHANGES_REQUIRED, не CHANGES).
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: finishing-a-development-branch
|
|
3
|
+
description: Используй, когда реализация завершена, все тесты зелёные и нужно решить, как интегрировать работу — ведёт финал через структурированные опции мержа, PR или уборки
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Finishing a Development Branch
|
|
7
|
+
|
|
8
|
+
> Источник: ~/.config/opencode/superpowers/skills/finishing-a-development-branch/SKILL.md, upstream 6efe32c (2026-04-23).
|
|
9
|
+
> Владелец шага: executor-lead; финальное решение (особенно мерж в main) — за владельцем.
|
|
10
|
+
|
|
11
|
+
## Трассировка адаптации
|
|
12
|
+
|
|
13
|
+
| Пункт upstream | Судьба |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Процесс 5 шагов, ровно 4 опции финала, подтверждение «discard», шпаргалка (4 опции), частые ошибки (4), red flags Never/Always (4/4), cleanup worktree только для опций 1 и 4 | **сохранено** («переносим почти без правок», research §1; red flags — дословно по смыслу, H7) |
|
|
16
|
+
| Тестовая команда | **заменено**: `npm run check` (верификационный примитив проекта) |
|
|
17
|
+
| Базовая ветка: `main \|\| master` | **заменено**: всегда `main` — правило проекта trunk-based (main — истина, работа в worktree-ветках, релизы тегами) |
|
|
18
|
+
| Опция 1 (мерж локально) | **дополнено** правилом проекта: мерж в main — только по явному поручению владельца |
|
|
19
|
+
| Решение о финале ветки | **добавлено**: значимое решение (особенно discard) фиксируется `wolf add --type decision` |
|
|
20
|
+
|
|
21
|
+
## Обзор
|
|
22
|
+
|
|
23
|
+
Проведи финал работы через ясные опции и исполнение выбранного сценария.
|
|
24
|
+
|
|
25
|
+
**Принцип:** верифицируй тесты → предъяви опции → исполни выбор → приберись.
|
|
26
|
+
|
|
27
|
+
**Анонс в начале:** «Использую скилл finishing-a-development-branch для завершения этой работы».
|
|
28
|
+
|
|
29
|
+
## Процесс
|
|
30
|
+
|
|
31
|
+
### Шаг 1: верифицируй тесты
|
|
32
|
+
|
|
33
|
+
**До предъявления опций — прогнать тесты:**
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run check # тестовая команда проекта
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Упали:**
|
|
40
|
+
```
|
|
41
|
+
Тесты падают (<N> падений). Надо починить до завершения:
|
|
42
|
+
|
|
43
|
+
[показать падения]
|
|
44
|
+
|
|
45
|
+
Нельзя продолжать merge/PR, пока тесты не зелёные.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Стоп. Не переходить к шагу 2.
|
|
49
|
+
|
|
50
|
+
**Зелёные:** → шаг 2.
|
|
51
|
+
|
|
52
|
+
### Шаг 2: определи базовую ветку
|
|
53
|
+
|
|
54
|
+
Правило проекта — trunk-based: базовая ветка всегда `main` (main — истина).
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git merge-base HEAD main
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
При сомнении спроси: «Ветка отделилась от main — верно?»
|
|
61
|
+
|
|
62
|
+
### Шаг 3: предъяви опции
|
|
63
|
+
|
|
64
|
+
Ровно эти 4 опции:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Реализация завершена. Что делаем?
|
|
68
|
+
|
|
69
|
+
1. Смержить обратно в <base-branch> локально
|
|
70
|
+
2. Запушить и создать Pull Request
|
|
71
|
+
3. Оставить ветку как есть (разберусь позже)
|
|
72
|
+
4. Выбросить эту работу
|
|
73
|
+
|
|
74
|
+
Какая опция?
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Без пояснений** — опции краткие.
|
|
78
|
+
|
|
79
|
+
### Шаг 4: исполни выбор
|
|
80
|
+
|
|
81
|
+
#### Опция 1: мерж локально
|
|
82
|
+
|
|
83
|
+
Только по явному поручению владельца (правило проекта: main — истина, мерж — осознанное решение владельца).
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git checkout main
|
|
87
|
+
git pull
|
|
88
|
+
git merge <feature-branch>
|
|
89
|
+
|
|
90
|
+
# Верифицировать тесты на смерженном результате
|
|
91
|
+
npm run check
|
|
92
|
+
|
|
93
|
+
# Если зелёные
|
|
94
|
+
git branch -d <feature-branch>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Затем: уборка worktree (шаг 5).
|
|
98
|
+
|
|
99
|
+
#### Опция 2: пуш и PR
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git push -u origin <feature-branch>
|
|
103
|
+
|
|
104
|
+
gh pr create --title "<заголовок>" --body "$(cat <<'EOF'
|
|
105
|
+
## Summary
|
|
106
|
+
<2-3 буллета что изменилось>
|
|
107
|
+
|
|
108
|
+
## Test Plan
|
|
109
|
+
- [ ] <шаги верификации>
|
|
110
|
+
EOF
|
|
111
|
+
)"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Затем: уборка worktree (шаг 5).
|
|
115
|
+
|
|
116
|
+
#### Опция 3: оставить как есть
|
|
117
|
+
|
|
118
|
+
Доложить: «Оставляю ветку <имя>. Worktree сохранён: <путь>».
|
|
119
|
+
|
|
120
|
+
**Worktree не убирать.**
|
|
121
|
+
|
|
122
|
+
#### Опция 4: выбросить
|
|
123
|
+
|
|
124
|
+
**Сначала подтверждение:**
|
|
125
|
+
```
|
|
126
|
+
Это навсегда удалит:
|
|
127
|
+
- Ветку <имя>
|
|
128
|
+
- Все коммиты: <список-коммитов>
|
|
129
|
+
- Worktree <путь>
|
|
130
|
+
|
|
131
|
+
Введи 'discard' для подтверждения.
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Ждать дословного подтверждения.
|
|
135
|
+
|
|
136
|
+
Если подтверждено:
|
|
137
|
+
```bash
|
|
138
|
+
git checkout main
|
|
139
|
+
git branch -D <feature-branch>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Затем: уборка worktree (шаг 5).
|
|
143
|
+
|
|
144
|
+
### Шаг 5: уборка worktree
|
|
145
|
+
|
|
146
|
+
**Для опций 1, 2, 4:**
|
|
147
|
+
|
|
148
|
+
Проверить, находишься ли в worktree:
|
|
149
|
+
```bash
|
|
150
|
+
git worktree list | grep $(git branch --show-current)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Если да:
|
|
154
|
+
```bash
|
|
155
|
+
git worktree remove <worktree-path>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Для опции 3:** worktree сохранить.
|
|
159
|
+
|
|
160
|
+
## Быстрая шпаргалка
|
|
161
|
+
|
|
162
|
+
| Опция | Мерж | Пуш | Сохранить worktree | Удалить ветку |
|
|
163
|
+
|--------|-------|------|---------------|----------------|
|
|
164
|
+
| 1. Мерж локально | ✓ | - | - | ✓ |
|
|
165
|
+
| 2. Создать PR | - | ✓ | ✓ | - |
|
|
166
|
+
| 3. Оставить как есть | - | - | ✓ | - |
|
|
167
|
+
| 4. Выбросить | - | - | - | ✓ (force) |
|
|
168
|
+
|
|
169
|
+
## Частые ошибки
|
|
170
|
+
|
|
171
|
+
**Пропуск верификации тестов**
|
|
172
|
+
- **Проблема:** смержить сломанный код, создать падающий PR
|
|
173
|
+
- **Фикс:** всегда верифицировать тесты до предъявления опций
|
|
174
|
+
|
|
175
|
+
**Открытые вопросы**
|
|
176
|
+
- **Проблема:** «Что делать дальше?» → двусмысленность
|
|
177
|
+
- **Фикс:** предъявлять ровно 4 структурированные опции
|
|
178
|
+
|
|
179
|
+
**Автоматическая уборка worktree**
|
|
180
|
+
- **Проблема:** удалить worktree, который ещё нужен (опции 2, 3)
|
|
181
|
+
- **Фикс:** уборка только для опций 1 и 4
|
|
182
|
+
|
|
183
|
+
**Без подтверждения для discard**
|
|
184
|
+
- **Проблема:** случайно удалить работу
|
|
185
|
+
- **Фикс:** требовать дословный ввод «discard»
|
|
186
|
+
|
|
187
|
+
## Red flags
|
|
188
|
+
|
|
189
|
+
**Никогда:**
|
|
190
|
+
- Не продолжать с падающими тестами
|
|
191
|
+
- Не мержить без верификации тестов на результате
|
|
192
|
+
- Не удалять работу без подтверждения
|
|
193
|
+
- Не форс-пушить без явного запроса
|
|
194
|
+
|
|
195
|
+
**Всегда:**
|
|
196
|
+
- Верифицировать тесты до предъявления опций
|
|
197
|
+
- Предъявлять ровно 4 опции
|
|
198
|
+
- Получать дословное подтверждение для опции 4
|
|
199
|
+
- Убирать worktree только для опций 1 и 4
|
|
200
|
+
|
|
201
|
+
## Интеграция
|
|
202
|
+
|
|
203
|
+
**Вызывается из:**
|
|
204
|
+
- **wolf-sdd** (финальный шаг) — после завершения всех задач
|
|
205
|
+
- **wolf-execute** (финальный шаг) — после завершения всех батчей
|
|
206
|
+
|
|
207
|
+
**Пара с:**
|
|
208
|
+
- **using-git-worktrees** — убирает worktree, созданный тем скиллом
|
|
209
|
+
|
|
210
|
+
## Интеграция с Wolf
|
|
211
|
+
|
|
212
|
+
- **Правило проекта**: trunk-based — main = истина, работа в worktree-ветках, релизы тегами; мерж в main — только по явному поручению владельца.
|
|
213
|
+
- **Решение о финале ветки** (выбрана опция, особенно discard) — значимое решение: `wolf add --type decision` с контекстом («ветка X выброшена, потому что...»).
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requesting-code-review
|
|
3
|
+
description: Используй при завершении задач, реализации крупных фич или перед мержем — проверить соответствие работы требованиям
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Requesting Code Review
|
|
7
|
+
|
|
8
|
+
> Источник: ~/.config/opencode/superpowers/skills/requesting-code-review/SKILL.md, upstream 6efe32c (2026-04-23).
|
|
9
|
+
> Ревью-контур executor'а: диспетчер — executor-lead, ревьюер — worker-reviewer.
|
|
10
|
+
|
|
11
|
+
## Трассировка адаптации
|
|
12
|
+
|
|
13
|
+
| Пункт upstream | Судьба |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Когда запрашивать (2 списка), контекстный шаблон ревьюера (5 полей), таблица act-on-feedback, пример, red flags Never (4) + «если ревьюер неправ» (3), интеграционные привязки | **сохранено полностью** (H6/H7: act-on-feedback и red flags переносятся дословно по смыслу) |
|
|
16
|
+
| Task tool с типом `superpowers:code-reviewer` | **заменено**: спавн worker-reviewer через {{tool.task}}; методика ревьюера — в памяти (контур лица worker-reviewer) |
|
|
17
|
+
| Внешний шаблон `agents/code-reviewer.md` | **заменено**: поля шаблона встроены в этот скилл (BASE_SHA/HEAD_SHA и др.) |
|
|
18
|
+
| Minor → «note for later» | **дополнено**: фиксация через `wolf add --type lesson` (техдолг виден следующим сессиям) |
|
|
19
|
+
| Префикс `superpowers:`, имя code-reviewer | **отброшено**: имена harness'а upstream |
|
|
20
|
+
|
|
21
|
+
## Обзор
|
|
22
|
+
|
|
23
|
+
Диспетчеризуй воркера-ревьюера, чтобы поймать проблемы до того, как они каскадируют. Ревьюер получает точно сконструированный контекст для оценки — никогда не историю твоей сессии. Это держит ревьюера сфокусированным на продукте работы, а не на твоём мыслительном процессе, и сохраняет твой контекст для продолжения работы.
|
|
24
|
+
|
|
25
|
+
**Принцип:** ревьюруй рано, ревьюруй часто.
|
|
26
|
+
|
|
27
|
+
## Когда запрашивать ревью
|
|
28
|
+
|
|
29
|
+
**Обязательно:**
|
|
30
|
+
- После каждой задачи в wolf-sdd
|
|
31
|
+
- После завершения крупной фичи
|
|
32
|
+
- Перед мержем в main
|
|
33
|
+
|
|
34
|
+
**Опционально, но ценно:**
|
|
35
|
+
- Когда застрял (свежий взгляд)
|
|
36
|
+
- Перед рефакторингом (базовая проверка)
|
|
37
|
+
- После фиксации сложного бага
|
|
38
|
+
|
|
39
|
+
## Как запросить
|
|
40
|
+
|
|
41
|
+
**1. Получить git SHA:**
|
|
42
|
+
```bash
|
|
43
|
+
BASE_SHA=$(git rev-parse HEAD~1) # или origin/main
|
|
44
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**2. Диспетчеризовать воркера-ревьюера через {{tool.task}}:**
|
|
48
|
+
|
|
49
|
+
Спавн worker-reviewer; контекст ревьюера заполняет диспетчер (executor-lead). Ревьюер сам подтягивает методику перед задачей: `wolf search "worker-reviewer playbook"` (контур лица, наибольшая версия).
|
|
50
|
+
|
|
51
|
+
**Поля контекста:**
|
|
52
|
+
- `{WHAT_WAS_IMPLEMENTED}` — что только что построено
|
|
53
|
+
- `{PLAN_OR_REQUIREMENTS}` — что оно должно делать (задача из плана / бриф)
|
|
54
|
+
- `{BASE_SHA}` — стартовый коммит
|
|
55
|
+
- `{HEAD_SHA}` — конечный коммит
|
|
56
|
+
- `{DESCRIPTION}` — краткое описание
|
|
57
|
+
|
|
58
|
+
**3. Действовать по фидбеку (act-on-feedback):**
|
|
59
|
+
|
|
60
|
+
| Категория | Действие |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Critical | Исправить немедленно |
|
|
63
|
+
| Important | Исправить до продолжения работы |
|
|
64
|
+
| Minor | Зафиксировать и учесть позже (`wolf add --type lesson`) |
|
|
65
|
+
|
|
66
|
+
Возражай, если ревьюер неправ (с обоснованием).
|
|
67
|
+
|
|
68
|
+
## Пример
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
[Завершена задача 2: функция верификации]
|
|
72
|
+
|
|
73
|
+
Ты: Запрошу ревью перед продолжением.
|
|
74
|
+
|
|
75
|
+
BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
|
|
76
|
+
HEAD_SHA=$(git rev-parse HEAD)
|
|
77
|
+
|
|
78
|
+
[Диспетчеризую worker-reviewer через {{tool.task}}]
|
|
79
|
+
WHAT_WAS_IMPLEMENTED: Функции verifyIndex() и repairIndex() для индекса диалогов
|
|
80
|
+
PLAN_OR_REQUIREMENTS: Задача 2 из docs/plans/deployment-plan.md
|
|
81
|
+
BASE_SHA: a7981ec
|
|
82
|
+
HEAD_SHA: 3df7661
|
|
83
|
+
DESCRIPTION: Добавлены verifyIndex() и repairIndex() с 4 типами проблем
|
|
84
|
+
|
|
85
|
+
[Воркер вернул]:
|
|
86
|
+
Strengths: чистая архитектура, настоящие тесты
|
|
87
|
+
Issues:
|
|
88
|
+
Important: нет индикаторов прогресса
|
|
89
|
+
Minor: магическое число (100) для интервала отчётности
|
|
90
|
+
Assessment: готов к продолжению
|
|
91
|
+
|
|
92
|
+
Ты: [фиксируешь индикаторы прогресса]
|
|
93
|
+
[Minor фиксируешь: wolf add --type lesson "техдолг: магическое число 100 ..."]
|
|
94
|
+
[Продолжаешь задачу 3]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Интеграция с процессами
|
|
98
|
+
|
|
99
|
+
**wolf-sdd (субагентная разработка):**
|
|
100
|
+
- Ревью после КАЖДОЙ задачи
|
|
101
|
+
- Ловить проблемы до того, как они накопятся
|
|
102
|
+
- Исправить до перехода к следующей задаче
|
|
103
|
+
|
|
104
|
+
**wolf-execute (исполнение плана):**
|
|
105
|
+
- Ревью после каждого батча (3 задачи)
|
|
106
|
+
- Получить фидбек, применить, продолжить
|
|
107
|
+
|
|
108
|
+
**Ad-hoc разработка:**
|
|
109
|
+
- Ревью перед мержем
|
|
110
|
+
- Ревью при застревании
|
|
111
|
+
|
|
112
|
+
## Red flags
|
|
113
|
+
|
|
114
|
+
**Никогда:**
|
|
115
|
+
- Не пропускать ревью со словами «это же просто»
|
|
116
|
+
- Не игнорировать Critical-находки
|
|
117
|
+
- Не продолжать с неисправленными Important-находками
|
|
118
|
+
- Не спорить с валидным техническим фидбеком
|
|
119
|
+
|
|
120
|
+
**Если ревьюер неправ:**
|
|
121
|
+
- Возразить с техническим обоснованием
|
|
122
|
+
- Показать код/тесты, доказывающие работу
|
|
123
|
+
- Попросить уточнение
|