From f6b9b3b8e30c02de78786b3d1d90b3e9b8309718 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sun, 5 Jul 2026 23:33:26 +0300 Subject: [PATCH] =?UTF-8?q?feat(skill):=20coordinator-loop=20=E2=80=94=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=20=D0=B0=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D0=BD=D0=BE=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit По предложению Codex из ретро: скилл проектировался под сценарий «передал очередь issue и ушёл», но входной контракт и мандат были неявными. Новый раздел фиксирует вход (issue, порядок, «зачем»), мандат (весь цикл без уточняющих вопросов; за пределы локального репозитория — только по поручению) и сводку стоп-условий со ссылками на их разделы — без пересказа правил, чтобы не разъезжались. Предупреждение о третьем круге уточнено: это не вопрос, ответа не ждать. Co-Authored-By: Claude Fable 5 --- .../.agents/skills/coordinator-loop/SKILL.md | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/agents/.agents/skills/coordinator-loop/SKILL.md b/agents/.agents/skills/coordinator-loop/SKILL.md index b2e049e..7ee503e 100644 --- a/agents/.agents/skills/coordinator-loop/SKILL.md +++ b/agents/.agents/skills/coordinator-loop/SKILL.md @@ -4,7 +4,8 @@ disable-model-invocation: true description: >- Координаторский цикл по цепочке готовых issue: на каждый — worker-субагент по TDD с независимым ревью, коммит делает координатор. Контекст координатора - держится чистым — в него входит только индекс находок, не diff. Узкий навык, только + держится чистым — в него входит только индекс находок, не diff. Рассчитан на + автономный прогон очереди issue без присмотра пользователя. Узкий навык, только по явному вызову /coordinator-loop. --- @@ -38,6 +39,31 @@ description: >- (параллель), однофайловые правки, задачи без тестовой базы. Если цепочка не подходит — скажи об этом пользователю, а не тяни цикл силой. +## Контракт автономного прогона + +Основной сценарий скилла: пользователь передаёт очередь подготовленных issue и уходит — +координатор ведёт конвейер сам, а не ждёт инструкций на каждом шаге. + +**Вход** — что пользователь даёт при вызове: +- список issue и порядок (или правило зависимостей); +- где лежит «зачем» (PRD/спека), если это не очевидно из самих issue; +- ожидаемый финал, если он отличается от стандартного (см. «Финал цепочки»). + +**Мандат**: весь цикл — worker, ревью, коммит-гейт, статусы, журнал, handoff — +координатор ведёт без уточняющих вопросов. Локальные коммиты рабочих срезов входят в +мандат по умолчанию; push, теги и всё, что уходит за пределы локального репозитория +или разрушает данные вне рабочего дерева, — только по явному поручению. + +**Стоп-условия** — сводка, сами правила в своих разделах: чужие правки в дереве +(шаг 1); мутный или неготовый issue («Когда применять», шаг 2); спор, переживший +узкий усиленный гейт, и потолок кругов ревью (шаг 5); действие за пределами мандата. +Проверка, которую может сделать только человек (ручная приёмка, живой стенд), цепочку +не останавливает: worker сдаёт её как `DONE_WITH_CONCERNS` с готовой командой +(статус-контракт), а остаток уходит в handoff открытым риском. + +**Выход** — по «Финалу цепочки»: чистое дерево, список коммитов, статусы issue, +handoff с открытыми рисками. + ## Роли - **Координатор** — ты. Порядок issue, богатый контракт, запуск ревьюеров, политика @@ -107,7 +133,8 @@ worker-у их индексы **дословно**, без своих интер вопросу на усиленном уровне мышления; - спор пережил и узкий усиленный гейт → стоп, решение человека; - **третий круг на issue** — предупреди пользователя, не дожидаясь потолка: расход - растёт, причина (что именно не сходится), продолжаешь или нужен стоп; + растёт, причина (что именно не сходится). Это предупреждение, не вопрос: ответа + не жди, работу продолжай — жёсткая граница ниже; - независимо от споров больше **четырёх** кругов ревью на issue → стоп, вынеси человеку вопрос «дробить issue или принимать риск». 6. **Классифицируй по индексу — только chain-level** (см. «Классификация»).