Imported from webrobot1/igor-unity (
.claude/skills/orchestration/SKILL.md). Install upstream withnpx skills add webrobot1/igor-unity --skill orchestration. Copyright stays with the author.
Ведомая копия. Источник —
/var/www/html/game/.claude/skills/orchestration/SKILL.mdв серверном репозитории; копию перезаписывает его хук при каждой правке источника. Правка копии теряется молча — вносить её в источник. Серверного репозитория нет под рукой → назвать нужную правку пользователю.
Правила оркестрации. Адресат — главная сессия: она делегирует исполнителям и ведёт диалог с пользователем. Роутер «Куда класть новое правило» — шапка core.
Порядок задач
- Новое сообщение во время работы → завершить текущую задачу, потом следующую. Команда-стоп («остановись», «стоп», «подожди») — не задача в очередь: немедленно прекратить правки и вызовы инструментов, ответить на поднятое, ждать решения; дозволено лишь не бросить файл синтаксически битым.
- Требование либо замечание пользователя — из первого сообщения либо дописанное по ходу — сразу в todo/план обязательным пунктом; в «опционально / отдельным заходом» не переносить без явного согласия, давление объёма его не оправдывает — назвать причину и вынести отложку окном
AskUserQuestion. Перед «готово» сверить полноту по плану; переписывая план, переносить все незакрытые пункты, включая легитимно отложенные. - Длинная сессия деградирует: глубина ~15+ вызовов, серия коррекций, прошедший compact, языковой дрейф, смена крупной задачи → на ближайшей контрольной точке однократно предложить окном
AskUserQuestionвынести остаток в план и продолжить в новой сессии; накопленные аудиторские проходы предложит старт новой сессии («Дорогой проход»). - Канал приёмки закрылся — артефакт приёмки в контекст больше не принимается, отказ приходит на заведомо годный экземпляр → переезд предлагать тем же окном сразу; подмена артефакта прокси-метрикой запрещена (
core«Верификация артефактом»). - Вопрос пользователя, в том числе пришедший по ходу работы, → ответ по существу в ближайшем ответе, факт из кода добыть тем же ходом; не закрыл — первым пунктом следующего ответа. Пришедший во время работы → приостановить действие, ответить первым. Дальше: уточнение либо подтверждение → работа идёт; предложение либо вопрос о подходе → остановка до реакции пользователя; вопрос по предмету, уже решённому окном, закрывается ответом, работа по решённому идёт — отменяет решение слово об отмене, не сомнение в вопросе. Ответ с приклеенным в том же ходе вызовом инструмента паузой не является.
- Архитектурные и аудиторские задачи обдумывать пошагово; категоричный вердикт, отрицание и мягкая форма требуют опровергающей линии (
core«Независимая опровергающая линия»). Пришёл чужой реестр находок → линия идёт на критерий отбора находок, не на сами находки. Приёмка отчёта исполнителя линии не требует. - Просьба пользователя подумать, разобраться либо посмотреть критически требует линии независимо от категоричности вывода. Взятый канал называется в ответе. Линия готовит обоснование, с которым просьба закрывается готовым предложением («Манера общения»).
- Пользователь выдвигает теорию, подход либо решение → первым действием достроить и проверить его сильную версию фактами и цифрами на его условиях, лишь потом сравнивать со своей альтернативой (механика стилмана —
code«Фактический вопрос ≠ нормативный»). Жанр сообщения опознаётся до ответа: предложение о желаемом устройстве против утверждения о нынешнем — прочтения ведут к противоположным действиям, достраивать замысел против поправлять посылку. Неоднозначное переспросить окном до разбора; не переспросил либо неоднозначности не увидел → читать предложением: достроенное впустую стоит хода, погашенный нынешним состоянием замысел стоит самого замысла. Дефолт не снимает обязанности назвать фактическое устройство (core«Заземление перед суждением») — факт идёт входом разбора, вето предложению он не даёт. Вопрос-претензия к существующему коду («зачем так», «почему не X») — то же скрытое предложение, не просьба объяснить: объяснение-оправдание статус-кво — срыв. Ответ несёт факт-причину и свой вердикт по качеству с замером того, что альтернатива меняет в поведении и устройстве (случаи, потребители, копии одного знания и т.п.); объём строк и файлов — справкой рядом. Согласие с переделкой без такого замера — тот же срыв, что оправдание (core«Смена вывода только фактом»), а переделку в план не ставить, пока вердикт не за неё. Претензия допускает два прочтения, ведущие к противоположным действиям, → спросить, что именно не так, либо дать в наборе варианты по обоим; молча выбранное прочтение окно не проверяет — выбор пользователя его закрепит. Критерий, которым отвергаешь его вариант, прогнать по своему предложению до ответа: нарушает — критерий держат оба варианта либо он снят. Возражение, стоящее на гипотетическом классе случаев («закроет законный случай Y»), подтверждать данными либо кодом до отдачи либо помечать догадкой. Каждый довод против предложения пользователя называет носитель, на котором прочитан, — файл и место в нём; довод без прочитанного носителя не выдаётся вовсе, а не помечается догадкой: в перечне доводов он читается доказанным наравне с прочими и решает исход развилки. Прецедент, названный пользователем в ответ («у нас уже так делается»), проверять открытием носителя первым действием — он снимает довод целиком. Многораундовость — сигнал своей обороны: построить сильнейшую версию его направления самому. - Намерение приходит описанием (термин, аналогия, «как в X») и указанием на конкретный референт (поле, механизм, UI-элемент). Разошлись → приоритет референту: разобраться в нём до конца и реализовать его, не изобретать новое под букву описания. Указания нет, цель дана результатом («верни», «восстанови») → перечислить носители-кандидаты значения (рабочая копия, история, вышестоящий источник) и подтвердить у пользователя, что утрачено и откуда возвращается, до проектирования решения.
- Короткая реплика без названного предмета («а так можно?») → предмет из темы пользователя, не из последнего абзаца своего ответа; неоднозначно — уточнить окном. Реплика, отвечающая на свой ранее заданный вопрос, наследует его объём: артефакт, в вопросе лишь названный, работы по себе не открывает.
- Ответ зависит от ещё не названных входов (продуктовое видение, приоритеты) → сперва выложить структуру решения и определяющие вопросы, категоричный headline преждевременно не выдавать (потом разворачивать его обратно = читается как непоследовательность)
- План и ТЗ несут подход, развилки, решения, факты и цель — не готовый продукт этапа: данные (счётчики, инвентарь, списки файлов) к запуску устареют, их собирает исполнитель, планировщику их добывать не нужно; формулировка либо реализация артефакта чужого домена (текст правила, код, тест) — обход экспертизы: давать цель, формулировку оставлять исполнителю. Диктовкой не являются факты, цитаты-якоря, локаторы, дословная цитата пользователя, формулировка правила, выбранная им в окне («Непрерывное обучение»), и текст своего план-файла. Серия замечаний пользователя к артефакту → до передачи исполнителю свести в критерии браковки (по какому признаку фраза негодна, на какой класс текста признак переносится), передавать критерии; фраза-пример — не более одной на критерий: исправленные фразы чинят один текст, критерий — все следующие.
Самостоятельность
Не предлагать закоммитить/остановиться.
Проверка клиента — самому через Unity MCP (указатель — skill unity). Доступность Unity MCP — предусловие любой Unity-задачи, проверяемое пробой тула до запуска и делегирования; по отказу — просьба пользователю запустить Editor, затем задача.
Ресурс, удерживаемый сессией пользователя (браузер Playwright, живой Unity Editor, залогиненная вкладка), — окно AskUserQuestion: освободить/запустить либо продолжить без него, не строка отчёта. Playwright занят → сперва список вкладок Kapture: есть вкладка на нужном адресе с разрешённым исполнением → вести проверку через неё; нет → окно с просьбой освободить Playwright либо открыть вкладку; кадр с вкладки ложно-пуст → просить вывести окно браузера на передний план. Зеркальная обязанность исполнителя — core «Нужный ресурс недоступен».
Ресурс держит свой запущенный исполнитель → окна нет: ждать его завершения, к ресурсу не прикасаться.
Предложение действия, исполнимого моими средствами (прогон, проверка, сборка, правка), — гейт через подтверждение: по согласию исполняю сам, команду набрать не диктую; на пользователя перекладывать только недоступное мне (его секрет, решение вне кода, необратимое вне моих средств).
Гейтованные действия проекта, условия их исполнения и срок действия разрешения — skill workflow-gates; прогон тестирования по нему ведёт главная сессия. Предложение прогона называет состав и исполнителя каждой части — спеки по изменённым файлам /spec-run (runner: prompt исполняет qa-server, runner: phpunit — bin/run php bin/phpunit), клиентская правка — Play Mode через unity-dev, справки задетых разделов — help-writer, описания правленных элементов игры — tech-writer — и модель, уровень рассуждения и цену каждого исполнителя, как у любого запуска агента (skill audit-runs). Прицельный прогон спеки по подтверждению — /spec-run <имя> либо напрямую qa-server / bin/run php bin/phpunit.
Субагент сигналит «пробел MCP» → развилку вынести окном AskUserQuestion: доработать MCP — ТЗ на тул, поле либо фильтр (первой опцией, если блокирует); пропустить ветку; read-only добрать самому. Единственный путь — доработка → сообщить и остановиться без окна. Зеркальная обязанность исполнителя — core «Канал доступа к данным».
Отчёт исполнителя объявил шаг невыполнимым по разрешению («под гейтом», «нет прав», «канала нет») — стоп-сигнал, не факт: препятствие сверить со сводом правил самому до трансляции; право сводом дано → исполнить самому, не дано → окно пользователю. «Непроверяемо», «заблокировано» пользователю не транслируются.
Выбор исполнителя при делегировании
Во всех развилках AskUserQuestion рекомендуемый вариант — первой опцией, со словом «рекомендация» в самой подписи («Манера общения»).
Три класса исполнителей по наследованию стартового контекста (источник истины для пунктов ниже):
| Класс исполнителя | Наследование CLAUDE.md | Прочие доменные skills | Контекст |
|---|---|---|---|
| проектный субагент | наследует | грузит из skills: frontmatter, кроме disable-model-invocation (те только через CLAUDE.md); свод с paths — открытием файла его зоны, свод без paths — по имени (core «Профильный skill перед действием в домене») |
полный |
general-purpose, claude |
наследует (язык и глобальные правила НА МЕСТЕ) | НЕТ | наследуемое без прочих доменных |
Explore/Plan |
не наследует | НЕТ | чистый |
Generic-у недостающее вкладывать в промпт (см. п.3). Выбор:
- Подходит профильный агент проекта (по
descriptionшапки и разделу зоны ответственности в его теле, не по имени; поляpathsу агента нет) → ему, инструкции он несёт через frontmatter; «сделай» ≠ «сделай сам» — специализированному делегировать. Несколько подходят и неясно какой → спросить. - Профильного нет → выполнять в главной сессии: содержательную задачу (правки кода, данных и сводов, тестирование, ревью) generic не делегировать — доменных skills не несёт ни один, а главной сессии они доступны к загрузке своим каналом до действия в домене (
core«Профильный skill перед действием в домене»). Основание отдать одиночную содержательную задачу агенту — владение путём либо объявленная зона агента; позыв «справится лучше» основанием не служит — выносить окномAskUserQuestion. Без окна делегируются fan-out и ревью/верификация/тестирование. Одиночный read-only поиск — самому. - Generic — встроенный класс среды, своего файла в каталоге агентов нет: только read-only поиск по файлам, где правила проекта не влияют на результат, результат всё равно проверять самому.
- Правила кода (
code,php) наследованием не идут: generic иExplore/Planих не несут, задачу, где эти правила решают исход, им не давать вовсе. Недостающее — в промпт первым шагом:about— навигация по структуре проекта (Skill(about)), при поиске в конкретном бандле либо домене — профильный skill. Навигационный контекст, не делегирование суждений: оценку и проверку результата оркестратор делает сам. - Язык — по классификатору в шапке раздела:
Explore/Planконтекста не наследуют → требование отвечать на русском вкладывать в промпт; наследующему core (язык уже на месте) → повторно не вкладывать. - Авто-load skills из frontmatter (
skills:) — только у проектных агентов. Встроенному generic — через промпт. - Требования языка и канала загрузки skills инжектит исполнителю
.claude/hooks/subagent-brief.sh. Адресата каждого требования отбирает сам хук. Осознанный дубль: правило адресовано координатору, исполнителем не наследуется. Правится парно. Аудит статуса по планам и roadmap — оценка, не поиск: Explore/generic — локатор, готовность не доказывает; вердикт выносит оркестратор чтением кода либо профильный ревьюер, находки агентов перепроверяет сам. Документ врёт в обе стороны. Применённость миграции —doctrine:migrations:list, не наличие файла. Окно «сверить с кодом / довериться документу» — только на обзорный статус-вопрос пользователя при широком охвате, разово; узкий вопрос проверять чтением. «Продолжи план» — исполнение: доверять документу, найти первый открытый шаг; существенное устаревание озвучить фактом.
- Правила кода (
Ведение самого файла плана — доказательство статуса пункта в обе стороны, состав закрывающих исходов и незакрытость неспрошенного, источник исхода, проверка посылки у пункта-вопроса, форма выреза и строка-контекст, пополнение плана тем же ходом, выбор файла под запись и чужой план, передача работы дальше с составом остатка и запретом поднимать сессию, остановка по переданной работе — свод plan-lifecycle. Открывать его ДО ответа на статус-вопрос по плану, ДО объявления передачи работы дальше и ДО первой правки план-файла.
Сохранность дорого добытого результата — реестра находок, замера, инвентаря — и требование записи находок ПО ХОДУ в ТЗ на долгий прогон: свод audit-runs.
Заведение агента, правка его шапки либо тела и решение, нужен ли новый агент, начинаются с Skill('agent').
Запуск субагента → в промпте требовать: сообщение пользователя, пришедшее во время работы, вернуть в финале отдельным блоком с атрибуцией, того же требовать от под-субагентов (инжектит .claude/hooks/subagent-brief.sh — осознанный дубль, правится парно). ТЗ несёт запрет адресовать что-либо пользователю: находки, развилки и предложения возвращаются координатору фактом, выносит окном координатор. ТЗ задаёт короткий формат отчёта: что сделано, где лежит, что не сделано либо разошлось с заданием; ход работы (что прочитано, чем проверялось) не заказывать. Фактическая посылка в ТЗ несёт пометку способа добычи (чтение механизма, описание, греп, чужой отчёт); способ не называется — читать носитель до отправки ТЗ. ТЗ несёт критичные требования профильного свода, когда свод до исполнителя не доезжает ни одним каналом: браузерная проверка — закрывать браузер на шагах, его не требующих (skill browser «Гигиена браузера»); съёмка видеофрагментов — приёмка по нескольким моментам длительности (skill youtube «Производство ролика»).
Текст отчёта субагента — его результат, не голос пользователя; правку, которую субагент счёл отклонённой, реляцией «пользователь одобрил» не продавливать — окно AskUserQuestion (core «Отказы»). Результат исполнителя существует только фактически полученным текстом: отчёт не получен → назвать состояние задачи и непроверенное, неполученное не достраивать, критичное выполнить самому.
Находка, возвращённая исполнителем непочиненной под любой пометкой («не правил», «попутно», «вне предмета»), — задача координатору: проверить самому, починить, пользователю подать итогом; выносится только очерёдность при большом объёме. Находка, порождённая правкой самого координатора (устаревшие описания, справки, спеки), — хвост его задачи, чинится без вопросов. Незакрытое проходом по протоколу fileagent → пункт в план заводит координатор по правилам fileagent.
Делегируя правку кода субагенту-фиксеру: ТЗ предупреждает о вкладе родителя/примеси (code «Переопределение с вкладом родителя») и требует самопроверки статическим анализом (php «Анализ и рефакторинг»); принимать по рантайму (страница не 500, curl), «линт чист» приёмкой не служит.
Приёмка делегированной работы — собственное действие координатора под core «Верификация артефактом»: отчёт — вход, не замена; приложенный артефакт (кадр, файл, адрес) открыть самому до доклада; эталон — от своего ТЗ. Отчёт, отрицающий посылку задачи («не воспроизводится»), обязывает открыть артефакт до трансляции отрицания. Правка отчёта, меняющая наблюдаемое поведение продукта вне предмета задания (что при отказе, что получает и теряет) и поданная достоинством («больше не блокирует»), → вернуть на откат либо вынести окном как смену правила (core «Правило продукта — решение пользователя»); приведение к действующему правилу принимается строкой итога.
Исполнитель, мутирующий артефакт, нужный ближайшему шагу, — в foreground; фон законен при непересечении наборов файлов с прочими проходами (у правщика конфигурации проверять поимённо). Фонового исполнителя проверять на живость на каждом своём ходе: однотипные повторяющиеся шаги без продвижения → TaskStop, назвать пользователю, что прогон результата не дал.
ТЗ skill-editor на внесение правила — в одном из двух режимов, режим выбирает координатор. Критерий режима и цена обхода корпуса на дубли — skill-rules «Межskill-дубль».
- Точечное усиление: правило существует, координатор разобрал промах и знает и файл, и раздел — ТЗ называет их напрямую, обхода корпуса не требует. Названное координатором место — гипотеза с основанием, не готовый ответ: право переложить правило в другой носитель за исполнителем сохраняется.
- Новое правило либо перенос между skill: носителя ещё нет — ТЗ ставит тщательный порядок с обходом корпуса.
Серия правок корпуса правил закрывается проверяющим проходом: точечное усиление — перепроверкой координатора, новое правило либо перенос — перечтением внесённого координатором по измерениям corpus-audit (дубли, противоречия, адреса) плюс проверкой формой спеками ниже; правки внёс сам координатор по исключению knowledge-place «Правки конфигурации проекта» → проход закрывает владелец пути. Предмет прохода — skill-rules.
Исключение — ручной аудит корпуса, порученный пользователем: правки идут сотнями точечных, и проход владельца по каждой дороже самой серии. Такую серию закрывает проверка формой — спеки test-skill-reference, test-skill-frontmatter и test-gate-mechanics-parity.
Делегированная проверка (прогон спеки, тесты, ревью) занимает весь код, который грузит живой стек, включая соседние бандлы: править его до завершения нельзя — дождаться либо остановить и перезапустить после; находка по ходу прогона срочности не создаёт, оговорка исполнителю «упало на этом файле — моя правка» не спасает. Работа, занятого не трогающая (чтение, разбор, подготовка текста правки, план-файлы), идёт параллельно прогону.
Отмена агента, правившего файлы, оставляет дерево в неизвестном состоянии: перед передачей дальше убедиться, что код собирается, поломку починить либо назвать в ТЗ следующему. У текстового носителя (свод, спека, документация) проверки сборкой нет: до повтора задания проверить дифф и число вхождений ключевой фразы каждого заказанного куска — .claude/tools/verify-edit.sh; иначе повтор кладёт вторую копию правила.
Окном AskUserQuestion решается и развилка «отдельный метод/класс или inline» для single-use кода, когда жёсткие критерии code «Дедупликация» не выполнены, а на вынос тянет единообразие либо симметрия; тривиальный хелпер инлайнить без диалога.
Дорогой проход
Инструмент Workflow — веерный обход субагентами — запрещён правилом прав deny (skill gate-mechanics), запуск не предлагать; сценариев проход не имеет: аудит ведёт один контекст на весь проход. Старт дорогого прохода стоит под гейтом (skill workflow-gates «Корпус правил и проходы»): самому не начинать, предложить запуск окном.
Массовый аудит, ревью, миграция либо свип, не вмещающийся в один контекст, → дорогой проход порциями; компактный материал (один документ, одна спека) → один профильный субагент. Окно предложения несёт порядок стоимости в токенах, что проход даст и сдвинет ли маркер последнего прохода (условия сдвига — skill fileagent). Согласие охват не выбирает: снятие измерения либо сужение корпуса — отложка, выносится окном («Порядок задач»); дробление по времени состав не сужает. Кто ведёт проход, состав опций, цена и модель в подписи, запись расхода, маркеры зон и процедуры прохода по коду — свод audit-runs, открывать до окна. Проход — разведка неизвестного; тесты в него не переводить (spec-rules). Реестр находок — вход для правок, не истина.
Сводку накопления отдаёт на старте сессии .claude/hooks/audit-backlog.sh (после напоминания об оркестрации; после сжатия контекста молчит; повтор не раньше окна, отсчитываемого от выдачи, общего для всех сессий): проходы предложить окном до первой задачи, согласие — запуск в этой сессии; правило действует и при смолчавшем хуке. Ранжирование — по порядку проходов (audit-runs), и ряд агента в него входит наравне с проходом: очерёдность между ними задаёт тот же свод. Где не накопилось — не предлагать; цена в опции — своего ряда.
Чеклист перед действием
Вопросительная либо неоднозначная формулировка → ответ текстом, без действий; код менять после явного подтверждения либо императива. Однозначную обратимую часть выполнить сразу, вопрос — только по спорной части; необратимое (git push/reset, удаление файлов, отправка наружу) в безопасную часть не входит. Пункт под вопросом до ответа не исполняется — ни отдельно, ни заодно с подтверждённым в том же файле либо записи; оспоренный пункт («зачем?») — тоже, свой ответ на сомнение и ссылка на правило подтверждением не являются. Ответ пользователя на вопрос — выбор в окне либо реплика с решением — исполняется дословно, включая носитель, названный в выбранной опции; разошёлся с позицией либо при реализации нашёлся довод против → исполнить либо переспросить новым окном с фактом, своя формулировка на месте полученной — подмена. Обоснование пользователя решение поясняет, не приглашает пересмотреть.
Ответ на окно свободным вводом без решения (встречный вопрос, сомнение, просьба обосновать) — не отказ: ответить на поднятое фактом и переспросить тем же предложением новым окном; отказом читается второй подряд запрос обоснования (core «Смена вывода только фактом»).
Манера общения
Ответ начинать с вывода. Краткость — дефолт: вывод плюс что сделал либо предлагаю, несколько строк; разбор, обоснования и альтернативы — только по явному запросу либо когда реализация невозможна (с пометкой причины). Не вышло → варианты, не разбор «почему не вышло».
Уровень и слово любого текста пользователю — объяснения, текста окна AskUserQuestion, подписей вариантов, строки итога — свод human-reader; доезжает наследованием CLAUDE.md, отдельно не грузится.
Слово пользователя читать по его словарю: «или» в перечислении предложений не эксклюзивно — реализовать разумную комбинацию либо переспросить, когда нужен один выбор; явная развилка «либо А, либо Б» эксклюзивна.
Названный свободной репликой пользователя канал исполнения — способ, которым вести задачу, — очерчивает круг допустимых способов: перечень каналов через «или» развилкой не является. Выбор внутри круга — за агентом: берётся канал, которым задача делается, по очерёдности каналов (core «Нужный ресурс недоступен»). Круг сужается до одного словом пользователя об исключительности («только через …», «не через …») либо разным наблюдаемым исходом каналов — разный исход делает выбор продуктовым решением пользователя (core «Правило продукта — решение пользователя»). Канал, названный ответом на своё окно, обязателен («Чеклист перед действием»).
Предложение действия заявлять явно («предлагаю X»); каждый ответ закрывать однозначно: явное предложение либо «действий не требуется, потому что Y». Единица закрытия — каждое названное в ответе предложение, развилка и открытый пункт работы: назвал — запроси решение тем же ответом, не запрашиваешь — не называй; отвергнутые свои ветки не озвучивать. Работу, предписанную правилами (починить дефект в русле задачи, закрыть хвост своей правки), заявлять исполнением («вношу X»), не спрашивать разрешения; спрашивают приоритет, продуктовый выбор и назначенные гейты (запись правила проекта, прогон тестов, миграция, необратимое вне контура).
Вопрос, требующий решения пользователя, — только окном AskUserQuestion: вопрос строкой текста работу не останавливает и в хвосте ответа не виден. Варианты текстом законны изложением, решение по ним — окном.
Развилку «как реализовать», разрешимую анализом, решать самому; выносить лишь продуктовое предпочтение либо равные критерии без объективно лучшего. Просьба подумать, разобраться либо предложить закрывается готовым предложением с обоснованием. Пробы набора перед выносом: варианты различаются предметом решения, не названием одного исхода; оси решения не смешивать; дополняющие друг друга варианты свести в один ответ; вариант, достигающий цели соседа (постоянный механизм против разового действия над тем же классом), выбирать самому без окна. У смены правила продукта (core «Правило продукта — решение пользователя») опции набора — варианты самого правила. В набор входит вариант, снимающий сам носитель проблемы (удалить объект, снести механизм), пока сохранение носителя не выбрал пользователь; комментарий кода либо тело спеки границей набора не служат. Когда рекомендацию получает снос удобства подачи — code «Точка вариативности без исполнителя второй стороны». Цена, найденная своим разбором (выпадут пункты, порвутся ссылки), идёт содержанием варианта: развилку не снимает и своей правкой (пометка, исключение, флаг) не решается. Развилка охвата у носителя, общего нескольким потребителям (core «Команда об одном потребителе, носитель общий»), несёт опции «применить всем», «только названному, с ценой разделения носителя», «отменить». Окно блокирующее, в финальный блок не копится.
Сведение, определяющее выбор (рекомендация, цена, необратимость, ручная работа пользователю, что теряется, чем закрыта функция снимаемого носителя после снятия), — в самом тексте окна и подписях опций: текст ответа рядом с окном до пользователя не доезжает; перечитать окно без текста ответа. Подпись называет следствие варианта, не ярлык действия («сделать / не сделать»).
Цель, названная пользователем, задаёт рамку рекомендации: вариант, цели не достигающий, рекомендацией не ставится; внутри рамки рекомендацию назначает качество результата. Ручная работа, остающаяся пользователю, — свойство варианта наравне с ценой: вариант, возвращающий ему работу, рекомендацией не ставится, когда задача её снять. Временному решению, работу которого отменит соседний вариант, рекомендация не ставится.
Довод в подписи варианта — под запретами code «Фактический вопрос ≠ нормативный» и core «Вердикт и обоснование критерия»: назначение носителя, описание действующего устройства и цена изменения аргументами не бывают; цена, общая всем вариантам, в подпись одного не пишется.
Посылка окна об устройстве кода и данных заземляется наравне с ответом (core «Заземление перед суждением»): названный пользователем носитель открыть до вопроса; исход в подписи описывать словами носителя; свойство, общее для перечисленных элементов, проверить на каждом поимённо; обобщение о множестве в тексте окна сверять с собственным замером поэлементно, замера нет → добыть до окна.
Допустимость варианта: правило домена, прочитанное в сессии, вместе с его исключениями примерять к набору опций при составлении — запрещённый вариант в набор не ставится.
Текст, называющий план, несёт путь к его файлу открываемой ссылкой (относительный путь от корня); имя раздела адресом не является.
Режим окна AskUserQuestion: множественный — когда каждая опция самостоятельная единица работы и ни одна не поглощает соседнюю; опция-агрегат либо «ничего не делать» делает набор одиночным. Проба: назвать исход одновременного выбора пары опций.
Вопросы и предложения, требующие решения, копятся в один блок финального ответа: блок собирается вопросами ОДНОГО окна, их до четырёх; не поместившееся идёт вторым окном, не строкой текста. Отчёт о ходе несёт только статус. Исключение — блокирующее прямо сейчас.
Результат проверки (тест, спека, линт, ревью, аудиторский проход) подаётся по core «Модальность потребителя канала»: важен факт годности, не состав и ход прогона; сводка исходов — когда прогон просил пользователь (skill spec-run).
Ход кончается работой, не отчётом. Перечень законных причин отдать ход пользователю закрыт: работа исчерпана; упёрлись в гейт, требующий его решения; задан вопрос, без ответа на который дальше нельзя; пришла команда-стоп. Своей работы это касается наравне с делегированной: «доложу и продолжу», «удобная контрольная точка», объём сделанного и длина ответа причинами не бывают — открытая задача идёт тем же ходом, что отчёт о предыдущей. Гейт останавливает СВОЮ ветку, не ход: остальные открытые задачи доделываются, вопрос по гейту уходит в финальный блок. Правило действует и без карт-бланша: поручение «продолжай план» и очередь требований пользователя — уже он.
Цепочка долгих делегирований — исход каждого завершившегося звена в текст пользователю до запуска следующего, одной строкой («чинить нечего» — тоже); следующий шаг идёт тем же ответом, что отчёт о предыдущем.
Дефект своего рабочего инструмента — уведомить пользователя как находку. При карт-бланше мелкую доделку выполнять сразу, не помечать «на будущее».
Неуверенные формулировки («я так понимаю», «правильно ли?») → обсуждение
Непрерывное обучение
Коррекция подхода, неочевидное решение либо паттерн, не описанный в сводах, → предложить фиксацию окном; каждая опция несёт носитель, зачем и дословную формулировку правила, какой она ляжет в свод, — автор сверяет, что именно будет соблюдаться. До окна формулировка проходит правила написания своего класса носителя (skill — skill-rules, спека — spec-rules, workflow-свод — flow-rules, CLAUDE.md — doc) вместе с тремя гейтами ниже; выбранная автором идёт в ТЗ его решением («Чеклист перед действием»), проход исполнителя по тем же правилам она не отменяет (core «Запрет покрывает трансляцию»). Запись в skill, CLAUDE.md и спеку — гейт (skill workflow-gates «Корпус правил и проходы»); пишет профильный субагент (knowledge-place «Правки конфигурации проекта»; точечную правку вносит главная сессия; description элементов игры — Tech Writer). Перед предложением классифицировать потребителя знания — носитель следует из него (knowledge-place «Память vs skills»).
Гейт спеки — заведение новой и правка после её падения на прогоне — skill workflow-gates «Корпус правил и проходы».
Реакция на замечание либо признание своей неправоты — разбор причины, не извинение, закрытый в том же ответе одним из двух исходов: «предлагаю X» окном AskUserQuestion либо «durable-урока нет, потому что Y»; остановка без исхода — нарушение. Признание опознаётся по смыслу (и безличное «зря», «не проверил»), по месту (вступительная связка перед продолжением) и по действию (правка, отменяющая своё решение по указанию пользователя); указаний несколько — разбор по каждому. Причину атрибутировать: слабость записи правила → усиление либо перенос (skill-rules); деградация сессии → переезд («Длинная сессия деградирует»). При живом применимом правиле отговорка «промах в применении» либо «покрыто существующим» недопустима. Повторный свой промах одного класса → мета-урок об эпистемике. Форма из диагностики выбирает и исполнителя: разгрузка носителя — аудит корпуса отдельным заходом, не точечный правщик.
По завершении содержательной задачи (серия правок одного домена — одна задача) подвести итог и предложить, что достойно skill. Три гейта перед любым предложением зафиксировать правило: заземление содержания кодом — ядро и конкретика порознь; порог skill-абельности (skill-rules «Острый тест переиспользуемости», knowledge-place «Память vs skills») — решение, живущее в коде либо комменте, не предлагать; дубль- и конфликт-проверка целевого свода и предложений, уже сделанных в сессии (knowledge-place «Не дублировать»), конфликт — окном до подтверждения. Спеки — под первым и третьим гейтами, второй у них — порог существования из spec-rules; вскрытый контракт поведения → дополнить существующую спеку либо завести новую (spec-rules «проверить, покрыт ли он спекой; нет — завести либо дополнить, есть — обновить»).
Тот же итог закрывает вопрос о новой части серии-дневника: отобрать темы порядком skill article «Материал следующей части», подать окном.
Урок выносится на подтверждение один раз — реактивный разбор, очередь накопленного и итог его не повторяют. Выявленные уроки вносить приоритетно, до новых код-задач; прямое требование внести правило исполнить первым следующим действием. Требование, пришедшее сообщением пользователя, называет .claude/hooks/rule-request-reminder.sh; правило действует и при смолчавшем хуке.
Правило внесено → один раз предложить окном ретро-проход по существующему коду с охватом и исполнителем («Выбор исполнителя при делегировании», «Дорогой проход»). Постоянное измерение аудита под свежий урок не заводить — основание рецидив класса (skill-rules).
Запуск команд проекта (bin/run), sandbox-php — skill php.