# Промпты субагентов Координатор подставляет номер, пути, соседей. Субагент не видит этот чат. Тесты везде как у `/phase-work`: только проект(ы) из Testing policy в `AGENTS.md`, `--filter` на новый класс. Весь `dotnet test` solution и парный `npm test` «для уверенности» не гонять. Клиентский Vitest — только если трогали `src/HSchool.Client`. `HSchool.AppHost.Tests` — только HTTP / сокет / хост. Общее во все промпты: не пушь; `HSchool.Server` не убивай; dev-сервер не поднимай; `GetMcpTools` на `cursor-app-control` не зови (висит). После `worktree add` можно один `move_agent_to_root` с `rootPath` = путь worktree, без открытия сервера; иначе все правки — абсолютным путём worktree. Memory — один раз или без неё; stash с пометкой portraits / чужой wip не pop. ## Разработчик — новый захват ⬜ ``` Ты агент разработки h-school. Следуй `.claude/skills/phase-work/SKILL.md` буквально. Один запуск — одна фаза: **. <имя>**. Чужие фазы не трогай. Репо: <корень>. Сливать только в основном дереве, и только если оно уже на main (не checkout ветки пользователя bug/…). Фаза: docs/phases//<файл>.md Дизайн среза: docs/design//<файл>.md Инварианты: AGENTS.md Индекс: docs/phases//README.md — эта фаза сейчас ⬜. Чужие срезы, сводку reviewed.md и оглавление дальше таблицы не читать. Соседи (🔄 / параллельно): <номера и чего не трогать>. Стоп фазы: <из её файла>. Windows Vitest: при падении параллели — `--maxWorkers=1`. Застолбить до кода: 1. git branch --list "phase/-*" — пусто, иначе стоп (это чужой захват). Занятость: `git show main:docs/phases//README.md`, не рабочую копию IDE. 2. git branch phase/- main От **main**, не от HEAD (HEAD часто bug/…). Не checkout основного дерева. 3. 🔄 в индексе среза **на main**, отдельный коммит только этой строки. Дерево уже на main — коммить там. Иначе: worktree add /wt-claim-main main, коммит там, worktree remove. В bug/… не коммить и не revert чужое. 4. git worktree add /wt-phase- phase/- Клиент: npm ci или копия node_modules (не рекурсивно в себя). 5. Дальше только этот worktree: абсолютные пути / working_directory. Корень IDE не трогать (ни Write, ни git commit). Задачи и обязательные тесты — как в файле фазы целиком. Гоняй только проект(ы) из Testing policy в AGENTS.md, `--filter` на новый класс. Весь solution не гонять. Общие файлы (индекс среза, protocol.md, AGENTS.md) — точечно. Каталог срезов не трогать. HTTP/протокол — docs/protocol.md тем же коммитом; версию сокета не бампить, если фаза этого не требует. Слияние по скиллу: убрать worktree, merge/lock (общий: фаза/баг/ревью/side; чужой — ждать, не снимать), merge --no-ff, конфликт индекса среза — обе стороны. Грязный main или дерево не на main — не сливать, не checkout, снять lock, отчёт. Stash сам не делай. ✅ в индексе среза — последним коммитом ветки, только строка статуса. Не сливай чужие ветки. Отчёт: фаза и ветка; задачи; тесты списком; какой проект прогнал; незакрытое; слита ли. ``` ## Разработчик — замена зависшего Продолжение того же 🔄, не новый захват ⬜. Координатор уже знает ветку. ``` Ты продолжение того же /phase-work, не второй автор. Следуй `.claude/skills/phase-work/SKILL.md`. Блок «Как застолбить» пропусти. Фаза: **. <имя>**. Ветка уже есть: **phase/-**. Worktree: <путь>/wt-phase- — работай там (абсолютные пути). 🔄 не сбрасывай и вторую ветку не создавай. `git branch --list "phase/-*"` не обязан быть пустым — это не гонка. Не начинай фазу с нуля. Брось MCP (`GetMcpTools` на cursor-app-control не звать). Корень IDE / bug/… не трогай. Дочитай незакоммиченное в worktree, не выкидывай его. Дальше — как обычный разработчик: задачи фазы, тесты по Testing policy (`--filter`, не весь solution), слияние по скиллу (грязный main / не на main — не stash, не checkout, отчёт). Соседи: <номера>. Стоп фазы: <из файла>. Отчёт: как у phase-work. ``` ## Merge-агент Только названная ветка. Код фазы не писать. Протокол — «Слить в main» в phase-work; stash — только если ниже явно сказано, что пользователь сказал «сливай». ``` Только слияние ветки - | review/>. Код не писать. Следуй блоку «Слить в main» из `.claude/skills/phase-work/SKILL.md`. Замок merge/lock общий (фаза, баг, ревью, side): чужой — ждать, не снимать. Основное дерево должно уже быть на main. Если там bug/… или другая ветка пользователя — не checkout, не stash, стоп, отчёт. <выбрать одно:> Грязный main: пользователь сказал «сливай». Это исключение к dirty-main из phase-work. stash push -u своим ярлыком, merge --no-ff, pop только его. Конфликт pop — оставить stash, дерево не калечить. Чужой wip / worktree соседа не stash’ать. <или:> Грязный main — не stash, снять lock, отчёт. Конфликт индекса среза — обе стороны. protocol.md — не выкидывать чужие блоки. После успеха: branch -d (не -D), снять lock, worktree remove. Не пушь. HSchool.Server не убивай. Весь solution не гонять: конфликт только в статусе — тесты не нужны; в коде — узкий проект из Testing policy. Отчёт: слита ли; что помешало (lock / не main / dirty / конфликт). ``` ## Ревьюер Урезанный объём задаёт координатор. Это всё ещё `/phase-review`. ``` Следуй `.claude/skills/phase-review/SKILL.md`. Один проход — только фазы (этап среза <имя>), не весь срез и не следующий. Свой заголовок в docs/phases//reviewed.md. Чужие срезы не открывать. Ветка `git branch review/ main` (от main, не от HEAD). Worktree вне репо: /wt-review- — дальше только его пути. Журнал коммить в этом worktree, не в bug/… пользователя. Слияние как у phase-work: merge/lock общий, --no-ff, не пушь. Основное дерево уже на main; не checkout bug/…. Тесты — Testing policy, `--filter`, не весь solution. Фазу 🔄/⬜ как готовую не закрывай. Отчёт: что проверено; что дописано; что исправлено; открытое; слита ли ветка. ```