mister-wolf 2.15.1 → 2.15.2

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 (37) hide show
  1. package/package.json +1 -1
  2. package/templates/.wolf/router.log +1 -1
  3. package/templates/base/AGENTS.md +3 -2
  4. package/templates/base/agents/executor-lead.md +4 -0
  5. package/templates/base/agents/mr-wolf.md +3 -2
  6. package/templates/base/agents/steward.md +4 -2
  7. package/templates/base/agents/worker-implementer.md +5 -2
  8. package/templates/base/agents/worker-researcher.md +4 -2
  9. package/templates/base/agents/worker-reviewer.md +9 -7
  10. package/templates/base/commands/analyze-doc.md +1 -1
  11. package/templates/base/commands/complain.md +1 -1
  12. package/templates/base/commands/doc-review.md +1 -1
  13. package/templates/base/playbooks/executor-lead-playbook.md +10 -5
  14. package/templates/base/playbooks/steward-nastavnik.md +5 -4
  15. package/templates/base/playbooks/worker-implementer-playbook.md +17 -7
  16. package/templates/base/playbooks/worker-researcher-playbook.md +5 -2
  17. package/templates/base/playbooks/worker-reviewer-playbook.md +21 -8
  18. package/templates/base/skills/finishing-a-development-branch/SKILL.md +19 -211
  19. package/templates/base/skills/receiving-code-review/SKILL.md +12 -28
  20. package/templates/base/skills/requesting-code-review/SKILL.md +11 -110
  21. package/templates/base/skills/test-driven-development/SKILL.md +18 -396
  22. package/templates/base/skills/using-git-worktrees/SKILL.md +15 -177
  23. package/templates/base/skills/using-skills/SKILL.md +38 -123
  24. package/templates/base/skills/verification-before-completion/SKILL.md +16 -157
  25. package/templates/base/skills/wolf-brainstorm/SKILL.md +17 -168
  26. package/templates/base/skills/wolf-debug/SKILL.md +15 -281
  27. package/templates/base/skills/wolf-design/SKILL.md +16 -35
  28. package/templates/base/skills/wolf-execute/SKILL.md +13 -101
  29. package/templates/base/skills/wolf-handoff/SKILL.md +22 -88
  30. package/templates/base/skills/wolf-plan/SKILL.md +18 -181
  31. package/templates/base/skills/wolf-review/SKILL.md +25 -64
  32. package/templates/base/skills/wolf-sdd/SKILL.md +17 -248
  33. package/templates/base/skills/wolf-skill-intake/SKILL.md +14 -57
  34. package/templates/base/skills/wolf-testplan/SKILL.md +15 -27
  35. package/templates/base/skills/writing-skills/SKILL.md +16 -30
  36. package/templates/opencode/plugins/wolf-router.ts +2 -1
  37. package/templates/opencode/plugins/wolf-session-start.js +11 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mister-wolf",
3
- "version": "2.15.1",
3
+ "version": "2.15.2",
4
4
  "description": "Local-first project memory for AI coding agents: decisions, lessons, tools and processes that outlive the session",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -1 +1 @@
1
- 2026-10-09T00:33:23.581Z agent-id=v2-router-probe-xyz playbook=hit name=fallback variant=fallback injected=yes ms=1 bytes=1208
1
+ 2026-10-09T16:24:53.230Z agent-id=v2-router-probe-xyz playbook=hit name=fallback variant=fallback injected=yes ms=1 bytes=1274
@@ -7,10 +7,11 @@
7
7
  ## Протокол холодного старта (каждая свежая сессия)
8
8
 
9
9
  1. **Начинай с состояния проекта:** запусти `wolf call` и `wolf brief`
10
- (CLI: `node dist/bootstrap/cli.js`; MCP-инструменты: `mr-wolf_*`).
10
+ (CLI: установленный `wolf`, или `node <путь-к-repo-wolf>/dist/bootstrap/cli.js` в репо Wolf; MCP-инструменты: `mr-wolf_*`).
11
11
  Возвращённые injections и brief — активное руководство проекта.
12
12
  2. **Фиксируй значимое через Wolf:** решения — `wolf add --type decision`,
13
- уроки — `--type lesson`, блокеры — `--type blocker`; устаревшее —
13
+ уроки — `--type lesson`, блокеры — thread со статусом `blocked`
14
+ (`wolf thread add`, затем `wolf transition <id> blocked`); устаревшее —
14
15
  `wolf supersede <old-id> <new-id>`.
15
16
  3. **Состояние проекта — только у Wolf** (`wolf search`, `wolf get`,
16
17
  `wolf brief`): статические списки в файлах устаревают. Память Wolf —
@@ -50,6 +50,10 @@ Used / Validation Results).
50
50
  результата, критерий проверки, блок «Инструменты» (какие тула и
51
51
  известные ловушки). Передал подходящие — снял с воркера расход витков
52
52
  на пробы. Плохой промпт = мусор в ответе — твоя ошибка, не его.
53
+ В бриф воркера включай назначенную методику (имена скиллов) и
54
+ common-контракты TASK/RESULT/EVIDENCE/ACCEPTANCE из using-skills,
55
+ если платформа не доставляет using-skills автоматически; L2 сам
56
+ каталог скиллов не перебирает.
53
57
  - Исследовательские подзадачи («как устроен X», «почему в Z так») →
54
58
  `worker-researcher`, не делай сам.
55
59
  - Лимит воркеров на сессию: 5; фикс не удался за 2 попытки → partial.
@@ -47,8 +47,9 @@ git-метаданные, веб), не для исполнения работы
47
47
  2. **Бриф и диспетч**: контекст (2–5 предложений), критерии приёмки
48
48
  (каждый проверяем по отчёту, без чтения кода), команда валидации,
49
49
  scope. Диспетчеризуй `executor-lead`.
50
- 3. **Приёмка**: по каждому критерию вердикт строго по отчёту;
51
- основание — цитата из отчёта, не догадка. Правдоподобие без ответа
50
+ 3. **Приёмка**: L0 принимает по ACCEPTANCE-критериям и актуальности
51
+ evidence, а не по цитате отчёта; сам проверки не запускает —
52
+ независимый запуск поручает L1. Правдоподобие без ответа
52
53
  «как проверяли» = критерий НЕ подтверждён.
53
54
  4. **Циклы**: rejected → возврат executor'у с перечнем несоответствий;
54
55
  максимум 2 цикла, дальше — эскалация пользователю.
@@ -25,8 +25,10 @@ agent-id: steward
25
25
  - **ЛИЦО** — матрица лиц (теги playbook'ов Стюарда), выбор по существу
26
26
  жалобы. Нет playbook'а лица — работай по рамке (безликий режим).
27
27
  - **ДОСТАВКА** — plugin-inject (основной); fallback: сам сделай
28
- `wolf search "steward:<лицо> playbook"` перед задачей и возьми
29
- наибольшую версию.
28
+ `wolf search "steward:<лицо> playbook" --hide-superseded` перед
29
+ задачей — работай по актуальному (не суперседенному) playbook'у,
30
+ проверь owner_skill (steward или skill:steward); канона нет —
31
+ работай по fallback-контуру, доставленному плагином.
30
32
 
31
33
  ## Матрица лиц
32
34
 
@@ -24,8 +24,11 @@ agent-id: worker-implementer
24
24
  - **ЛИЦО** — playbook с тегом `worker-implementer playbook` (методика и
25
25
  формат отчёта). Нет playbook'а — работай по рамке (безликий режим).
26
26
  - **ДОСТАВКА** — plugin-inject (основной, ноль расходов в рантайме);
27
- fallback: сам сделай `wolf search "worker-implementer playbook"`
28
- перед задачей и возьми наибольшую версию.
27
+ fallback: сам сделай `wolf search "worker-implementer playbook"
28
+ --hide-superseded` перед задачей — работай по актуальному
29
+ (не суперседенному) playbook'у, проверь owner_skill
30
+ (worker-implementer или skill:worker-implementer); канона нет —
31
+ работай по fallback-контуру, доставленному плагином.
29
32
 
30
33
  ## Контекст-бюджет уровня L2
31
34
 
@@ -30,8 +30,10 @@ GAPS: <чего не удалось выяснить, если есть>
30
30
  анализа, формат findings). Нет playbook'а — работай по рамке
31
31
  (безликий режим).
32
32
  - **ДОСТАВКА** — plugin-inject (основной); fallback: сам сделай
33
- `wolf search "worker-researcher playbook"` перед задачей и возьми
34
- наибольшую версию.
33
+ `wolf search "worker-researcher playbook" --hide-superseded` перед
34
+ задачей — работай по актуальному (не суперседенному) playbook'у,
35
+ проверь owner_skill (worker-researcher или skill:worker-researcher);
36
+ канона нет — работай по fallback-контуру, доставленному плагином.
35
37
 
36
38
  ## Контекст-бюджет уровня L2
37
39
 
@@ -16,7 +16,7 @@ agent-id: worker-reviewer
16
16
 
17
17
  ```
18
18
  SUMMARY: X critical / Y major / Z minor
19
- VERDICT: APPROVED | CHANGES_REQUIRED
19
+ VERDICT: APPROVED | CHANGES_REQUIRED | INCONCLUSIVE
20
20
  ```
21
21
 
22
22
  ## Обязательная тройка (рамка + лицо + доставка)
@@ -24,19 +24,21 @@ VERDICT: APPROVED | CHANGES_REQUIRED
24
24
  - **РАМКА** — этот файл: роль, границы, запреты. Статична; меняется
25
25
  только `wolf sync`.
26
26
  - **ЛИЦО** — playbook с тегом `worker-reviewer playbook` (зоны обзора,
27
- категории Critical/Important/Suggestions). Нет playbook'а — работай
27
+ категории Critical/Major/Minor). Нет playbook'а — работай
28
28
  по рамке (безликий режим).
29
- - **ДОСТАВКА** — plugin-inject (основной); fallback: сам сделай
30
- `wolf search "worker-reviewer playbook"` перед задачей и возьми
31
- наибольшую версию.
29
+ - **ДОСТАВКА** — plugin-inject (основной); fallback: работай по
30
+ актуальному (не суперседенному) playbook'у — `wolf search
31
+ "worker-reviewer playbook" --hide-superseded`, проверь owner_skill
32
+ (agent-id или skill:<agent-id>); канона нет — работай по
33
+ fallback-контуру, доставленному плагином.
32
34
 
33
35
  ## Контекст-бюджет уровня L2
34
36
 
35
37
  - Ровно одна задача ревью; без права спавна агентов.
36
38
  - Результат — вердикт по контракту + находки по пунктам (файл:строка,
37
39
  что не так, предлагаемая правка); не код.
38
- - Узкий ревьюер: работаешь в своей линзе; чужие замечания вне порученной
39
- зоны — не твои, не собирай их.
40
+ - Узкий ревьюер: работаешь в своей линзе. Чужую зону не разрабатывай;
41
+ существенную находку вне мандата отметь отдельно для маршрутизации.
40
42
 
41
43
  ## Дисциплина роли
42
44
 
@@ -6,6 +6,6 @@ agent: worker-researcher
6
6
 
7
7
  Протокол (рамочная команда — методика в памяти Wolf):
8
8
 
9
- 1. ДО анализа получи актуальный playbook: `wolf search "worker-researcher playbook"` — запись с наибольшей версией.
9
+ 1. ДО анализа получи актуальный playbook: `wolf search "worker-researcher playbook" --hide-superseded` — актуальная (не суперседенная) запись, проверь owner_skill (worker-researcher или skill:worker-researcher); канона нет — работай по fallback-контуру, доставленному плагином.
10
10
  2. Анализ выполняй строго по разделам «МЕТОДИКА» и «ФОРМАТ ОТЧЁТА» playbook. Формат отчёта (шапка с версией, структура, футер) — из playbook, не отсюда.
11
11
  3. Фидбек владельца о методике/формате → жалобный контур (`wolf complain`, тег complaint), не самомутация: мутатор playbook'ов — Стюард. Без фидбека версию не меняй.
@@ -8,6 +8,6 @@ agent: mr-wolf
8
8
 
9
9
  1. Прими жалобу дословно — без пересказа и интерпретаций.
10
10
  2. Внеси её объектом: `wolf complain --about <цель> --rule <какое правило плохо> --evidence <дословная цитата + что произошло> --proposal <что изменить> --created-by owner` — объект `complaint` со статусом `open`.
11
- 3. Триаж — по дереву ветвей playbook'а `complaint-protocol` (`wolf search "complaint playbook"`, наибольшая версия): сам владелец или передача координатору (executor-lead).
11
+ 3. Триаж — по дереву ветвей playbook'а `complaint-protocol` (`wolf search "complaint playbook" --hide-superseded`, актуальная/не суперседенная запись): сам владелец или передача координатору (executor-lead).
12
12
  4. Мутация (ветвь steward-mutation) — вложенный вызов Стюарда: `opencode run --agent steward`, вход = id жалобы; мутация через supersede, авторство `steward:<лицо>`. Это путь владельца/координатора — не воркера.
13
13
  5. Доложи владельцу: что принял, что изменилось в памяти.
@@ -6,7 +6,7 @@ agent: mr-wolf
6
6
 
7
7
  Ты — оркестратор цикла; протокол — скилл wolf-review, правила цикла (MIN-3):
8
8
 
9
- 1. Получи линзы: `wolf search "wolf-review playbook"` — наибольшая версия. Порядок: полнота → консистентность → типоспецифичные; состав каждой линзы — из playbook.
9
+ 1. Получи линзы: `wolf search "wolf-review playbook" --hide-superseded` — актуальная (не суперседенная) запись, проверь owner_skill (wolf-review или skill:wolf-review); канона нет — работай по fallback-контуру, доставленному плагином. Порядок: полнота → консистентность → типоспецифичные; состав каждой линзы — из playbook.
10
10
  2. Спавнь worker-reviewer'ов через {{tool.task}} — одна линза = один воркер в чистой сессии, узкий мандат: чужие замечания запрещены (воркер видит только документ + свою линзу).
11
11
  3. От каждой линзы требуй контракты: `SUMMARY: X critical / Y major / Z minor` + `VERDICT: APPROVED | CHANGES_REQUIRED`.
12
12
  4. Дедуп находок между линзами; подсчёт critical/major/minor — по итоговому набору.
@@ -24,9 +24,12 @@ playbook: v1 (executor-lead). Владелец: executor-lead. Меняется
24
24
 
25
25
  Полный текст подзадачи (не ссылка) + точные пути файлов + контракт
26
26
  результата + критерий проверки + блок «Инструменты» (какие тула, известные
27
- ловушки). Передал подходящее — снял с воркера расход на пробы. Плохой
28
- промпт = мусор в ответе — ошибка lead'а. Исследовательские подзадачи
29
- («как устроен X», «почему в Z так») → `worker-researcher`, не делай сам.
27
+ ловушки) + назначенная методика (имена скиллов) и common-контракты
28
+ TASK/RESULT/EVIDENCE/ACCEPTANCE, если платформа не доставляет
29
+ using-skills автоматически. Передал подходящее — снял с воркера расход
30
+ на пробы. Плохой промпт = мусор в ответе — ошибка lead'а.
31
+ Исследовательские подзадачи («как устроен X», «почему в Z так») →
32
+ `worker-researcher`, не делай сам.
30
33
 
31
34
  ## КОНТРАКТ ФИНАЛЬНОГО ОТВЕТА
32
35
 
@@ -46,8 +49,10 @@ Task Decomposition / Workers Used / Validation Results).
46
49
 
47
50
  ## КОНТУР ЛИЦА
48
51
 
49
- - ДО задачи: `wolf search "executor-lead playbook"` — работай по
50
- наибольшей версии.
52
+ - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
53
+ `wolf search "executor-lead playbook" --hide-superseded`, проверь
54
+ owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
55
+ fallback-контуру, доставленному плагином.
51
56
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
52
57
  ПРАВИЛО (декомпозиция/промпт воркера/контракт ответа), не тул и не
53
58
  разовый случай: **W1** предписание противоречит брифу — следовать
@@ -2,7 +2,7 @@
2
2
  title: Наставник v1 — протокол мутации playbook'ов
3
3
  owner_skill: steward
4
4
  version: 1
5
- steps: Прочитай текущий playbook агента (wolf search "<тег> playbook", наибольшая версия) | Осмысли жалобу — какое измерение поведения меняется | Зафиксируй новую версию полным содержимым (не диффом), причина в конце | Supersede старой версии | Отчитайся: что изменено, версия, причина
5
+ steps: Прочитай текущий playbook агента (wolf search "<тег> playbook" --hide-superseded, актуальная/не суперседенная версия) | Осмысли жалобу — какое измерение поведения меняется | Зафиксируй новую версию полным содержимым (не диффом), причина в конце | Supersede старой версии | Отчитайся: что изменено, версия, причина
6
6
  tags: steward:наставник,playbook
7
7
  ---
8
8
 
@@ -14,9 +14,10 @@ tags: steward:наставник,playbook
14
14
 
15
15
  ## Протокол мутации (обязателен)
16
16
 
17
- 1. **Прочитай текущий контекст агента**: `wolf search "<тег> playbook"` —
18
- возьми запись с наибольшей версией. Playbook'а нет → создаёшь первую
19
- версию, supersede не нужен.
17
+ 1. **Прочитай текущий контекст агента**: `wolf search "<тег> playbook"
18
+ --hide-superseded` — возьми актуальную (не суперседенную) запись,
19
+ проверь owner_skill (тег-агент или skill:<агент>). Актуального
20
+ playbook'а нет → создаёшь первую версию, supersede не нужен.
20
21
  2. **Осмысли жалобу**: какое измерение поведения меняется — методика,
21
22
  формат отчёта, границы, инструмент. Жалоба без конкретики → верни
22
23
  вопрос передавшему жалобу (в жалобном контуре v2 жалобу передаёт
@@ -18,15 +18,22 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
18
18
  паттерны, кто ещё вызывает изменяемый код.
19
19
  3. Внеси правку только в файлы из allowlist. Минимальный работающий
20
20
  дифф; не выдумывай решение за границами подзадачи.
21
- 4. Самопроверка: запусти проверки, указанные брифом (точно та команда,
21
+ 4. Воркер не коммитит; git-операции — зона L1.
22
+ 5. Самопроверка: запусти проверки, указанные брифом (точно та команда,
22
23
  не соседняя). Красный тест по твоей вине — исправь до ответа.
23
- 5. Верни отчёт по формату ниже.
24
+ 6. Верни отчёт по формату ниже.
24
25
 
25
- ## ФОРМАТ ОТЧЁТА
26
+ ## ФОРМАТ ОТЧЁТА (RESULT)
26
27
 
27
- - Что сделано: глагол + пути файлов (одной строкой на суть).
28
- - Результаты проверок: команда + вывод (pass/fail, числа).
28
+ - `task_id: <id>` — идентификатор подзадачи из брифа.
29
+ - Статус: `DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED`
30
+ (DONE — готовность к ревью, не приёмка).
31
+ - Изменения: глагол + пути файлов (одной строкой на суть).
32
+ - EVIDENCE — по каждому claim/AC: command/procedure, cwd, revision,
33
+ dirty-state digest (при наличии), существенное окружение, время,
34
+ exit/status, результат, путь к логу.
29
35
  - Отклонения от подзадачи: что не сделано и почему (если есть).
36
+ - Оставшиеся риски: что осталось за границами проверки (если есть).
30
37
  - `FRICTION: <n>× <тул> — причина; обошёл через <что сработало>` —
31
38
  только если тул-вызовы падали; без трения строка не нужна.
32
39
  - `COMPLAINT: <id> — <about>: <суть одной строкой>` — только если
@@ -34,8 +41,11 @@ playbook: v1 (worker-implementer). Владелец: worker-implementer.
34
41
 
35
42
  ## КОНТУР ЛИЦА
36
43
 
37
- - ДО задачи: `wolf search "worker-implementer playbook"` — работай по
38
- наибольшей версии (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё, не из рамки).
44
+ - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
45
+ `wolf search "worker-implementer playbook" --hide-superseded`, проверь
46
+ owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
47
+ fallback-контуру, доставленному плагином (МЕТОДИКА и ФОРМАТ ОТЧЁТА
48
+ из него, не из рамки).
39
49
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
40
50
  ПРАВИЛО (МЕТОДИКА/ФОРМАТ ОТЧЁТА), не тул и не разовый случай:
41
51
  **W1** предписание методики противоречит брифу — следовать обоим
@@ -35,8 +35,11 @@ COMPLAINT: <опционально: "<id> — <about>: <суть одной ст
35
35
 
36
36
  ## КОНТУР ЛИЦА
37
37
 
38
- - ДО задачи: `wolf search "worker-researcher playbook"` — работай по
39
- наибольшей версии (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё).
38
+ - ДО задачи: `wolf search "worker-researcher playbook" --hide-superseded`
39
+ — работай по актуальному (не суперседенному) playbook'у, проверь
40
+ owner_skill (worker-researcher или skill:worker-researcher); канона
41
+ нет — работай по fallback-контуру, доставленному плагином
42
+ (МЕТОДИКА и ФОРМАТ ОТЧЁТА из неё).
40
43
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
41
44
  ПРАВИЛО (методика/формат findings), не тул и не разовый случай:
42
45
  **W1** предписание методики противоречит брифу — следовать обоим
@@ -2,7 +2,7 @@
2
2
  title: Worker Reviewer playbook v1 — зоны обзора и VERDICT-контракт
3
3
  owner_skill: worker-reviewer
4
4
  version: 1
5
- steps: Прочитай файлы и требования брифа | Пройди 6 зон обзора по порядку | Классифицируй проблемы Critical, Important, Suggestions | Верни SUMMARY и VERDICT | FRICTION-строка только при тул-сбоях
5
+ steps: Прочитай файлы и требования брифа | Пройди зоны в границах мандата, назначенного L1 | Классифицируй проблемы Critical/Major/Minor | Верни SUMMARY и VERDICT | FRICTION-строка только при тул-сбоях
6
6
  tags: worker-reviewer playbook,playbook
7
7
  ---
8
8
 
@@ -13,10 +13,17 @@ playbook: v1 (worker-reviewer). Владелец: worker-reviewer. Меняет
13
13
 
14
14
  ```
15
15
  SUMMARY: X critical / Y major / Z minor
16
- VERDICT: APPROVED | CHANGES_REQUIRED
16
+ VERDICT: APPROVED | CHANGES_REQUIRED | INCONCLUSIVE
17
17
  ```
18
18
 
19
- ## ЗОНЫ ОБЗОРА (проходи все 6)
19
+ - `INCONCLUSIVE` — нехватка входов или невозможность проверки.
20
+ - `SUMMARY` и `VERDICT` сами по себе не доказательство — выводы
21
+ привязывай к evidence и revision.
22
+
23
+ ## ЗОНЫ ОБЗОРА (узкий мандат)
24
+
25
+ Узкий мандат: L1 назначает линзе область; обязательный проход
26
+ несвязанных зон исключён.
20
27
 
21
28
  1. **Соответствие плану**: реализация против требований брифа; отклонения
22
29
  от плана — оцени, проблемные они или оправданные; всё ли запланированное
@@ -28,17 +35,23 @@ VERDICT: APPROVED | CHANGES_REQUIRED
28
35
  кодом, расширяемость.
29
36
  4. **Документация и стандарты**: комментарии и докстринги на месте и
30
37
  точны, стандарты проекта соблюдены.
31
- 5. **Классификация проблем**: Critical (исправить обязательно) /
32
- Important (следует исправить) / Suggestions (желательно); по каждой —
33
- конкретное место (файл:строка) и действенное предложение.
38
+ 5. **Классификация проблем**: Critical — потеря данных/полномочий/
39
+ существенная неверность; Major — блокирующий дефект заявленного
40
+ результата; Minor — неблокирующее улучшение; по каждой — конкретное
41
+ место (файл:строка) и действенное предложение.
34
42
  6. **Коммуникация**: сначала подтверди, что сделано хорошо; существенные
35
43
  отклонения от плана — запрос на подтверждение; ошибки самого плана —
36
44
  рекомендация правки плана, а не кода.
37
45
 
46
+ «Отметь, а не молчи»: существенную находку вне мандата отметь отдельно
47
+ для маршрутизации; чужую зону не разрабатывай.
48
+
38
49
  ## КОНТУР ЛИЦА
39
50
 
40
- - ДО задачи: `wolf search "worker-reviewer playbook"` — работай по
41
- наибольшей версии.
51
+ - ДО задачи: работай по актуальному (не суперседенному) playbook'у:
52
+ `wolf search "worker-reviewer playbook" --hide-superseded`, проверь
53
+ owner_skill (agent-id или skill:<agent-id>); канона нет — работай по
54
+ fallback-контуру, доставленному плагином.
42
55
  - ТРИГГЕР ЖАЛОБЫ (обязателен, не на усмотрение): систематически плохо
43
56
  ПРАВИЛО (мандат/зоны обзора/формат вердикта), не тул и не разовый
44
57
  случай: **W1** предписание противоречит брифу — следовать обоим
@@ -1,232 +1,40 @@
1
1
  ---
2
2
  name: finishing-a-development-branch
3
- description: Используй, когда реализация завершена, все тесты зелёные и нужно решить, как интегрировать работу — ведёт финал через структурированные опции мержа, PR или уборки
3
+ description: "Заверши проверенную git-поставку: выполни уже согласованный merge/PR/сохранение либо запроси недостающий выбор. Безопасно сохрани или убери worktree, учитывая незакоммиченную и неотправленную работу."
4
4
  ---
5
5
 
6
- # Finishing a Development Branch
6
+ # Завершение git-поставки
7
7
 
8
- > Источник: ~/.config/opencode/superpowers/skills/finishing-a-development-branch/SKILL.md, upstream 6efe32c (2026-04-23).
9
- > Владелец шага: executor-lead; финальное решение (особенно мерж в main) — за владельцем.
8
+ ## Предусловия
10
9
 
11
- ## Трассировка адаптации
10
+ Ответственный — L1 с действующими правами. Проверь ACCEPTANCE/ограничения, валидные проверки, project base branch, worktree list и состояние рабочей копии. Сохрани task branch, абсолютный worktree path, base/head и uncommitted/untracked до переключений. Не повторяй full check, если evidence всё ещё применимо; объединённый результат требует проверки.
12
11
 
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` |
12
+ ## Выбор
20
13
 
21
- ## Обзор
14
+ Если пользователь уже поручил конкретный финал и условия выполнены, исполни его без повторного вопроса. Иначе предъяви применимые варианты с последствиями: merge, push/PR, оставить, удалить. Не предлагай недоступное действие как исполнимое.
22
15
 
23
- Проведи финал работы через ясные опции и исполнение выбранного сценария.
16
+ ### Merge
24
17
 
25
- **Принцип:** верифицируй тесты → предъяви опции → исполни выбор → приберись.
18
+ Требуется действующее поручение на merge. Проверь актуальность согласованного base; fetch/pull выполняй по политике, не слепо. Если base уже занят другим worktree, интегрируй в его рабочей копии только с проверкой чистоты и владельца; не делай checkout занятой ветки.
26
19
 
27
- **Анонс в начале:** «Использую скилл finishing-a-development-branch для завершения этой работы».
20
+ Конфликты разрешай по требованиям, проверяй итоговые изменения и integration/full gate на merged revision. Не удаляй branch/worktree до подтверждения успешной интеграции и сохранности нужных evidence.
28
21
 
29
- ## Процесс
22
+ ### Push и PR
30
23
 
31
- ### Шаг 1: верифицируй тесты
24
+ Используй разрешённый remote/branch. PR описывает проблему, итоговое поведение, проверки и ограничения; тело передавай структурированно или файлом. Draft допустим для незавершённого ревью/известных падений, если это явно соответствует поручению; ready PR не должен скрывать провал обязательных проверок.
32
25
 
33
- **До предъявления опций — прогнать тесты:**
26
+ После PR сохраняй ветку и worktree для исправлений, если пользователь не поручил безопасную уборку отдельно. Сообщи ссылку и статус; создание PR не означает merge.
34
27
 
35
- ```bash
36
- npm run check # тестовая команда проекта
37
- ```
28
+ ### Оставить
38
29
 
39
- **Упали:**
30
+ Сохрани ветку/worktree, сообщи head, путь, dirty-state и следующий шаг. Не запускай cleanup.
40
31
 
41
- ```
42
- Тесты падают (<N> падений). Надо починить до завершения:
32
+ ### Удалить
43
33
 
44
- [показать падения]
34
+ Покажи точный путь, ветку, неслитые/неотправленные коммиты, uncommitted/untracked и последствия. При отсутствии уже однозначного разрешения запроси подтверждение конкретного удаления. Не требуй кодовое слово, если разрешение ясно и соответствует этой работе.
45
35
 
46
- Нельзя продолжать merge/PR, пока тесты не зелёные.
47
- ```
36
+ Для сохранения предложи patch/backup при необходимости. Удали собственный worktree обычной git worktree remove; затем свою ветку. Если git отказывается из-за dirty-state, не добавляй force автоматически. Force допустим только в явно разрешённом объёме. Не удаляй общую base branch.
48
37
 
49
- Стоп. Не переходить к шагу 2.
38
+ ## Итог
50
39
 
51
- **Зелёные:** → шаг 2.
52
-
53
- ### Шаг 2: определи базовую ветку
54
-
55
- Правило проекта — trunk-based: базовая ветка всегда `main` (main — истина).
56
-
57
- ```bash
58
- git merge-base HEAD main
59
- ```
60
-
61
- При сомнении спроси: «Ветка отделилась от main — верно?»
62
-
63
- ### Шаг 3: предъяви опции
64
-
65
- Ровно эти 4 опции:
66
-
67
- ```
68
- Реализация завершена. Что делаем?
69
-
70
- 1. Смержить обратно в <base-branch> локально
71
- 2. Запушить и создать Pull Request
72
- 3. Оставить ветку как есть (разберусь позже)
73
- 4. Выбросить эту работу
74
-
75
- Какая опция?
76
- ```
77
-
78
- **Без пояснений** — опции краткие.
79
-
80
- ### Шаг 4: исполни выбор
81
-
82
- #### Опция 1: мерж локально
83
-
84
- Только по явному поручению владельца (правило проекта: main — истина, мерж — осознанное решение владельца).
85
-
86
- ```bash
87
- git checkout main
88
- git pull
89
- git merge <feature-branch>
90
-
91
- # Верифицировать тесты на смерженном результате
92
- npm run check
93
-
94
- # Если зелёные
95
- git branch -d <feature-branch>
96
- ```
97
-
98
- Затем: уборка worktree (шаг 5).
99
-
100
- #### Опция 2: пуш и PR
101
-
102
- ```bash
103
- git push -u origin <feature-branch>
104
-
105
- gh pr create --title "<заголовок>" --body "$(cat <<'EOF'
106
- ## Summary
107
- <2-3 буллета что изменилось>
108
-
109
- ## Test Plan
110
- - [ ] <шаги верификации>
111
- EOF
112
- )"
113
- ```
114
-
115
- Затем: уборка worktree (шаг 5).
116
-
117
- #### Опция 3: оставить как есть
118
-
119
- Доложить: «Оставляю ветку <имя>. Worktree сохранён: <путь>».
120
-
121
- **Worktree не убирать.**
122
-
123
- #### Опция 4: выбросить
124
-
125
- **Сначала подтверждение:**
126
-
127
- ```
128
- Это навсегда удалит:
129
- - Ветку <имя>
130
- - Все коммиты: <список-коммитов>
131
- - Worktree <путь>
132
-
133
- Введи 'discard' для подтверждения.
134
- ```
135
-
136
- Ждать дословного подтверждения.
137
-
138
- Если подтверждено:
139
-
140
- ```bash
141
- git checkout main
142
- git branch -D <feature-branch>
143
- ```
144
-
145
- Затем: уборка worktree (шаг 5).
146
-
147
- ### Шаг 5: уборка worktree
148
-
149
- **Для опций 1, 2, 4:**
150
-
151
- Проверить, находишься ли в worktree:
152
-
153
- ```bash
154
- git worktree list | grep $(git branch --show-current)
155
- ```
156
-
157
- Если да:
158
-
159
- ```bash
160
- git worktree remove <worktree-path>
161
- ```
162
-
163
- **Для опции 3:** worktree сохранить.
164
-
165
- ## Быстрая шпаргалка
166
-
167
- | Опция | Мерж | Пуш | Сохранить worktree | Удалить ветку |
168
- | -------------------- | ---- | --- | ------------------ | ------------- |
169
- | 1. Мерж локально | ✓ | - | - | ✓ |
170
- | 2. Создать PR | - | ✓ | ✓ | - |
171
- | 3. Оставить как есть | - | - | ✓ | - |
172
- | 4. Выбросить | - | - | - | ✓ (force) |
173
-
174
- ## Частые ошибки
175
-
176
- **Пропуск верификации тестов**
177
-
178
- - **Проблема:** смержить сломанный код, создать падающий PR
179
- - **Фикс:** всегда верифицировать тесты до предъявления опций
180
-
181
- **Открытые вопросы**
182
-
183
- - **Проблема:** «Что делать дальше?» → двусмысленность
184
- - **Фикс:** предъявлять ровно 4 структурированные опции
185
-
186
- **Автоматическая уборка worktree**
187
-
188
- - **Проблема:** удалить worktree, который ещё нужен (опции 2, 3)
189
- - **Фикс:** уборка только для опций 1 и 4
190
-
191
- **Без подтверждения для discard**
192
-
193
- - **Проблема:** случайно удалить работу
194
- - **Фикс:** требовать дословный ввод «discard»
195
-
196
- ## Red flags
197
-
198
- **Никогда:**
199
-
200
- - Не продолжать с падающими тестами
201
- - Не мержить без верификации тестов на результате
202
- - Не удалять работу без подтверждения
203
- - Не форс-пушить без явного запроса
204
-
205
- **Всегда:**
206
-
207
- - Верифицировать тесты до предъявления опций
208
- - Предъявлять ровно 4 опции
209
- - Получать дословное подтверждение для опции 4
210
- - Убирать worktree только для опций 1 и 4
211
-
212
- ## Интеграция
213
-
214
- **Вызывается из:**
215
-
216
- - **wolf-sdd** (финальный шаг) — после завершения всех задач
217
- - **wolf-execute** (финальный шаг) — после завершения всех батчей
218
-
219
- **Пара с:**
220
-
221
- - **using-git-worktrees** — убирает worktree, созданный тем скиллом
222
-
223
- ## Интеграция с Wolf
224
-
225
- - **Правило проекта**: trunk-based — main = истина, работа в worktree-ветках, релизы тегами; мерж в main — только по явному поручению владельца.
226
- - **Решение о финале ветки** (выбрана опция, особенно discard) — значимое решение: `wolf add --type decision` с контекстом («ветка X выброшена, потому что...»).
227
-
228
- ## Конвейер (2.15)
229
-
230
- Проект на trunk-based: main = истина; работа в worktree-ветках; влитие потока —
231
- merge в main с зелёным `npm run check`; релизы — тегами `v*` (npm version).
232
- «Ветвь» не живёт дольше волны.
40
+ Запиши выполненное действие, revision, проверки, PR/merge outcome и сохранённое/удалённое. Неопределённый исход внешнего действия сначала проверь, не повторяй push/PR вслепую. Значимое решение сохраняй разрешённым каналом памяти. Автоматическая публикация релиза не входит в этот скилл.