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.
- package/package.json +1 -1
- package/templates/.wolf/router.log +1 -1
- package/templates/base/AGENTS.md +3 -2
- package/templates/base/agents/executor-lead.md +4 -0
- package/templates/base/agents/mr-wolf.md +3 -2
- package/templates/base/agents/steward.md +4 -2
- package/templates/base/agents/worker-implementer.md +5 -2
- package/templates/base/agents/worker-researcher.md +4 -2
- package/templates/base/agents/worker-reviewer.md +9 -7
- package/templates/base/commands/analyze-doc.md +1 -1
- package/templates/base/commands/complain.md +1 -1
- package/templates/base/commands/doc-review.md +1 -1
- package/templates/base/playbooks/executor-lead-playbook.md +10 -5
- package/templates/base/playbooks/steward-nastavnik.md +5 -4
- package/templates/base/playbooks/worker-implementer-playbook.md +17 -7
- package/templates/base/playbooks/worker-researcher-playbook.md +5 -2
- package/templates/base/playbooks/worker-reviewer-playbook.md +21 -8
- package/templates/base/skills/finishing-a-development-branch/SKILL.md +19 -211
- package/templates/base/skills/receiving-code-review/SKILL.md +12 -28
- package/templates/base/skills/requesting-code-review/SKILL.md +11 -110
- package/templates/base/skills/test-driven-development/SKILL.md +18 -396
- package/templates/base/skills/using-git-worktrees/SKILL.md +15 -177
- package/templates/base/skills/using-skills/SKILL.md +38 -123
- package/templates/base/skills/verification-before-completion/SKILL.md +16 -157
- package/templates/base/skills/wolf-brainstorm/SKILL.md +17 -168
- package/templates/base/skills/wolf-debug/SKILL.md +15 -281
- package/templates/base/skills/wolf-design/SKILL.md +16 -35
- package/templates/base/skills/wolf-execute/SKILL.md +13 -101
- package/templates/base/skills/wolf-handoff/SKILL.md +22 -88
- package/templates/base/skills/wolf-plan/SKILL.md +18 -181
- package/templates/base/skills/wolf-review/SKILL.md +25 -64
- package/templates/base/skills/wolf-sdd/SKILL.md +17 -248
- package/templates/base/skills/wolf-skill-intake/SKILL.md +14 -57
- package/templates/base/skills/wolf-testplan/SKILL.md +15 -27
- package/templates/base/skills/writing-skills/SKILL.md +16 -30
- package/templates/opencode/plugins/wolf-router.ts +2 -1
- package/templates/opencode/plugins/wolf-session-start.js +11 -9
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-10-
|
|
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
|
package/templates/base/AGENTS.md
CHANGED
|
@@ -7,10 +7,11 @@
|
|
|
7
7
|
## Протокол холодного старта (каждая свежая сессия)
|
|
8
8
|
|
|
9
9
|
1. **Начинай с состояния проекта:** запусти `wolf call` и `wolf brief`
|
|
10
|
-
(CLI: `node dist/bootstrap/cli.js
|
|
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`, блокеры —
|
|
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/
|
|
27
|
+
категории Critical/Major/Minor). Нет playbook'а — работай
|
|
28
28
|
по рамке (безликий режим).
|
|
29
|
-
- **ДОСТАВКА** — plugin-inject (основной); fallback:
|
|
30
|
-
|
|
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"`,
|
|
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"` —
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
- ДО задачи:
|
|
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",
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
24
|
+
6. Верни отчёт по формату ниже.
|
|
24
25
|
|
|
25
|
-
## ФОРМАТ ОТЧЁТА
|
|
26
|
+
## ФОРМАТ ОТЧЁТА (RESULT)
|
|
26
27
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
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
|
-
- ДО задачи:
|
|
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: Прочитай файлы и требования брифа | Пройди
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- ДО задачи:
|
|
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:
|
|
3
|
+
description: "Заверши проверенную git-поставку: выполни уже согласованный merge/PR/сохранение либо запроси недостающий выбор. Безопасно сохрани или убери worktree, учитывая незакоммиченную и неотправленную работу."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Завершение git-поставки
|
|
7
7
|
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
+
Конфликты разрешай по требованиям, проверяй итоговые изменения и integration/full gate на merged revision. Не удаляй branch/worktree до подтверждения успешной интеграции и сохранности нужных evidence.
|
|
28
21
|
|
|
29
|
-
|
|
22
|
+
### Push и PR
|
|
30
23
|
|
|
31
|
-
|
|
24
|
+
Используй разрешённый remote/branch. PR описывает проблему, итоговое поведение, проверки и ограничения; тело передавай структурированно или файлом. Draft допустим для незавершённого ревью/известных падений, если это явно соответствует поручению; ready PR не должен скрывать провал обязательных проверок.
|
|
32
25
|
|
|
33
|
-
|
|
26
|
+
После PR сохраняй ветку и worktree для исправлений, если пользователь не поручил безопасную уборку отдельно. Сообщи ссылку и статус; создание PR не означает merge.
|
|
34
27
|
|
|
35
|
-
|
|
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
|
-
|
|
47
|
-
```
|
|
36
|
+
Для сохранения предложи patch/backup при необходимости. Удали собственный worktree обычной git worktree remove; затем свою ветку. Если git отказывается из-за dirty-state, не добавляй force автоматически. Force допустим только в явно разрешённом объёме. Не удаляй общую base branch.
|
|
48
37
|
|
|
49
|
-
|
|
38
|
+
## Итог
|
|
50
39
|
|
|
51
|
-
|
|
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 вслепую. Значимое решение сохраняй разрешённым каналом памяти. Автоматическая публикация релиза не входит в этот скилл.
|