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

126 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Промпты субагентов
Координатор подставляет номер, пути, соседей. Субагент не видит этот чат.
Тесты везде как у `/phase-work`: только проект(ы) из Testing policy в
`AGENTS.md`, `--filter` на новый класс. Весь `dotnet test` solution и парный
`npm test` «для уверенности» не гонять. Клиентский Vitest — только если
трогали `src/HSchool.Client`. `HSchool.AppHost.Tests` — только HTTP / сокет / хост.
Общее во все промпты: не пушь; `HSchool.Server` не убивай; dev-сервер не
поднимай; `cursor-app-control` не вызывай; 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>-*" — пусто, иначе стоп (это чужой захват).
2. git branch phase/<N>-<slug>
3. 🔄 в README основного дерева, отдельный коммит только этой строки.
4. git worktree add <scratch>/wt-phase-<N> phase/<N>-<slug>
Клиент: npm ci или копия node_modules (не рекурсивно в себя).
Задачи и обязательные тесты — как в файле фазы целиком.
Гоняй только проект(ы) из 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 (cursor-app-control не звать).
Дочитай незакоммиченное в 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. Чужие разделы журнала не затирай.
Ветка review/<slug>, worktree вне репо: <scratch>/wt-review-<slug>.
Слияние как у phase-work: merge/lock общий, --no-ff, не пушь.
Основное дерево уже на main; не checkout bug/….
Тесты — Testing policy, `--filter`, не весь solution.
Фазу 🔄/⬜ как готовую не закрывай.
Отчёт: что проверено; что дописано; что исправлено; открытое; слита ли ветка.
```