Files
h-school/.claude/skills/phase-orch/worker-prompt.md
T

8.4 KiB
Raw Blame History

Промпты субагентов

Координатор подставляет номер, пути, соседей. Субагент не видит этот чат.

Тесты везде как у /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`
буквально. Один запуск — одна фаза: **<N>. <имя>**. Чужие фазы не трогай.

Репо: <корень>. Сливать только в основном дереве, и только если оно уже на
main (не checkout ветки пользователя bug/…).
Фаза: docs/phases/<файл>.md
Дизайн среза: docs/design/<файл>.md
Инварианты: AGENTS.md
Индекс: docs/phases/README.md — эта фаза сейчас ⬜.

Соседи (🔄 / параллельно): <номера и чего не трогать>.
Стоп фазы: <из её файла>.
Windows Vitest: при падении параллели — `--maxWorkers=1`.

Застолбить до кода:
1. git branch --list "phase/<N>-*" — пусто, иначе стоп (это чужой захват).
   Занятость: `git show main:docs/phases/README.md`, не рабочую копию IDE.
2. git branch phase/<N>-<slug> main
   От **main**, не от HEAD (HEAD часто bug/…). Не checkout основного дерева.
3. 🔄 в README **на main**, отдельный коммит только этой строки.
   Дерево уже на main — коммить там. Иначе: worktree add <scratch>/wt-claim-main
   main, коммит там, worktree remove. В bug/… не коммить и не revert чужое.
4. git worktree add <scratch>/wt-phase-<N> phase/<N>-<slug>
   Клиент: npm ci или копия node_modules (не рекурсивно в себя).
5. Дальше только этот worktree: абсолютные пути / working_directory. Корень
   IDE не трогать (ни Write, ни git commit).

Задачи и обязательные тесты — как в файле фазы целиком.
Гоняй только проект(ы) из Testing policy в AGENTS.md, `--filter` на новый
класс. Весь solution не гонять.
Общие файлы (README фаз, protocol.md, AGENTS.md) — точечно.
HTTP/протокол — docs/protocol.md тем же коммитом; версию сокета не бампить,
если фаза этого не требует.

Слияние по скиллу: убрать worktree, merge/lock (общий: фаза/баг/ревью/side;
чужой — ждать, не снимать), merge --no-ff, конфликт README — обе стороны.
Грязный main или дерево не на main — не сливать, не checkout, снять lock,
отчёт. Stash сам не делай.
✅ в README — последним коммитом ветки, только строка статуса.
Не сливай чужие ветки.

Отчёт: фаза и ветка; задачи; тесты списком; какой проект прогнал; незакрытое; слита ли.

Разработчик — замена зависшего

Продолжение того же 🔄, не новый захват . Координатор уже знает ветку.

Ты продолжение того же /phase-work, не второй автор.
Следуй `.claude/skills/phase-work/SKILL.md`. Блок «Как застолбить» пропусти.

Фаза: **<N>. <имя>**. Ветка уже есть: **phase/<N>-<slug>**.
Worktree: <путь>/wt-phase-<N> — работай там (абсолютные пути).
🔄 не сбрасывай и вторую ветку не создавай. `git branch --list "phase/<N>-*"`
не обязан быть пустым — это не гонка.

Не начинай фазу с нуля. Брось MCP (`GetMcpTools` на cursor-app-control не звать).
Корень IDE / bug/… не трогай. Дочитай незакоммиченное в worktree, не выкидывай его.

Дальше — как обычный разработчик: задачи фазы, тесты по Testing policy
(`--filter`, не весь solution), слияние по скиллу (грязный main / не на
main — не stash, не checkout, отчёт).

Соседи: <номера>. Стоп фазы: <из файла>.
Отчёт: как у phase-work.

Merge-агент

Только названная ветка. Код фазы не писать. Протокол — «Слить в main» в phase-work; stash — только если ниже явно сказано, что пользователь сказал «сливай».

Только слияние ветки <phase/<N>-<slug> | review/<slug>>. Код не писать.
Следуй блоку «Слить в 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, отчёт.

Конфликт README — обе стороны. protocol.md — не выкидывать чужие блоки.
После успеха: branch -d (не -D), снять lock, worktree remove.
Не пушь. HSchool.Server не убивай. Весь solution не гонять: конфликт только
в статусе — тесты не нужны; в коде — узкий проект из Testing policy.

Отчёт: слита ли; что помешало (lock / не main / dirty / конфликт).

Ревьюер

Урезанный объём задаёт координатор. Это всё ещё /phase-review.

Следуй `.claude/skills/phase-review/SKILL.md`. Один проход — только фазы
<X><Y> (этап <A> среза <имя>), не весь срез и не следующий.

Свой заголовок в docs/phases/reviewed.md. Чужие разделы журнала не затирай.
Ветка `git branch review/<slug> main` (от main, не от HEAD).
Worktree вне репо: <scratch>/wt-review-<slug> — дальше только его пути.
Журнал коммить в этом worktree, не в bug/… пользователя.
Слияние как у phase-work: merge/lock общий, --no-ff, не пушь.
Основное дерево уже на main; не checkout bug/….
Тесты — Testing policy, `--filter`, не весь solution.
Фазу 🔄/⬜ как готовую не закрывай.

Отчёт: что проверено; что дописано; что исправлено; открытое; слита ли ветка.