19 KiB
name, description, whenToUse
| name | description | whenToUse |
|---|---|---|
| task-execution | Выполняет любую нетривиальную задачу по процессу «план → ревью сеньёром → правки → выполнение → ревью результата → правки». План и результат проверяет субагент в роли senior developer; каждый цикл повторяется, пока не устранены блокирующие замечания. Ниты и уточнения формулировок не блокируют одобрение — они фиксируются и могут остаться неисправленными. При неясностях агент задаёт вопросы пользователю. Загружай для реализации фичи, исправления бага, рефакторинга, написания кода или документации, когда задача не сводится к одному тривиальному действию. | Пользователь просит выполнить задачу (написать код, починить баг, отрефакторить, задокументировать, что-то исследовать и внедрить) и задача не является тривиальным одношаговым действием. Для тривиальных правок скил можно не применять. |
Выполнение любой задачи: план → сеньёр → выполнение → сеньёр
Контекст
Любая нетривиальная задача выполняется строго по циклу: сначала план, затем ревью плана сеньёром с правками до одобрения, затем выполнение по одобренному плану, затем ревью результата сеньёром с правками, пока не устранены блокирующие замечания. Замечания делятся на блокирующие (исправляются обязательно) и ниты (фиксируются, но не блокируют одобрение и могут остаться неисправленными). На каждом этапе, если что-то неясно, задаются вопросы пользователю.
Классификация замечаний
- Блокирующее ([BLOCKER]) — влияет на функциональность, корректность, безопасность, целостность данных, совместимость, достижимость шага плана, ломает сборку/тесты, нарушает конвенции проекта, создаёт регрессию. Такие замечания исправляются все, без исключения.
- Нит ([NIT]) — уточнение формулировки, стиль, типографика, «на будущее», рекомендация без реального риска, альтернатива, которая не меняет поведение. Ниты фиксируются (в файле состояния или
todo/), но НЕ обязательны к исправлению и не блокируютAPPROVED. - Метку ставит сеньёр в каждом замечании. Если метка отсутствует или неоднозначна — трактуй замечание как блокирующее (осторожность в пользу качества); при сомнении можно спросить пользователя.
Роли
- Исполнитель — ты (агент). Составляешь план, выполняешь, правишь по блокирующим замечаниям, фиксируешь ниты.
- Сеньёр (senior developer) — отдельный субагент, запускаемый через
subagentодин раз на задачу и переиспользуемый между раундами черезsend_message(он помнит свои предыдущие замечания и дельты — не противоречит себе и не перечитывает весь файл состояния каждый раунд). Он не видит наш диалог, поэтому каждый промпт ревью должен быть самодостаточным — но самодостаточность достигается за счёт внешнего файла состояния, а не дублирования всего плана в промпте (см. правило 9). Новый сеньёр создаётся только при смене задачи или переполнении контекста субагента (тогда — со сводкой уже принятых решений). - Пользователь — источник требований и финальный судья. Ему задаются вопросы при неясностях.
Обязательные правила
- Сначала план — потом выполнение. Не начинай выполнение, пока сеньёр не одобрил план (ответил
APPROVED). - Ревью плана и результата — только через субагента в роли senior developer (см. шаблоны промптов ниже). Создай сеньёра один раз (первый раунд —
subagentсrun_in_background: true), далее каждый раунд —send_messageтому же субагенту с дельтой. Ответ субагента приходит уведомлением (не синхронно): пока он работает, продолжай независимые шаги, по уведомлению забирай результат. - Блокирующие замечания исправляются все, без выбора. Нельзя отбрасывать
[BLOCKER]«потому что не согласен»: если не согласен — верни уточняющий вопрос сеньёру или спроси пользователя. Ниты ([NIT]) исправлять не обязательно: зафиксируй их в файле состояния илиtodo/и продолжай. - Цикл повторяется, пока сеньёр не вернёт
APPROVED— и для плана, и для результата.APPROVEDдостижим при наличии только нитов (сеньёр может вернутьAPPROVED (ниты: ...)); блокирует цикл только наличие[BLOCKER]. - Неясно — спроси. На любом этапе (задача, шаг плана, замечание сеньёра) при неоднозначности задай вопрос пользователю через
ask_user_question. Догадки вместо вопросов — ошибка. - Отслеживай прогресс через
todo_write: план из шага 2 переносится в todo-список, пункты отмечаются по мере выполнения. - Профильные скилы (например
create-go-module) — источник правил «как делать» для конкретной задачи. Этот скил управляет процессом «как вести задачу»; оба применяются вместе. - Бюджет раундов ревью — 3 на цикл (план и результат отдельно). В шаблонах промптов требуй от сеньёра перечислить все замечания одним списком за один заход с метками
[BLOCKER]/[NIT]. После 3 раундов с неисправленными[BLOCKER]остановись и спроси пользователя: продолжать цикл или зафиксировать оставшиеся блокеры как известные ограничения (не растягивай полировку на десятки раундов). - Дифф-ревью и внешнее состояние. План, чек-лист и учёт замечаний держи во внешнем файле состояния (например,
.dsh/task-plan.md). Промпт ревью содержит: задачу, путь к файлу состояния, короткую дельту «что изменилось с прошлого раза» иgit diffизменённых файлов. Не пересказывай ревьюеру весь план и всю историю замечаний — файл состояния он прочитает сам (это его контекст, а не наш). - Саморевью до отправки. Перед первым и каждым повторным ревью прогоняй фактические проверки, которые сеньёр всё равно сделает: поведение функций на реальных данных (например,
Transliterate("photo.png"),http.DetectContentType,filepath.Ext("x.PNG?v=2")), чтение сгенерированного кода (pb.gw.go и пр.), арифметику лимитов. «Ревью результата» отправляй какgit diff+ выводы проверок, а не как пересказ плана.
Шаги
1. Уточни задачу
Разберись, что именно нужно сделать. Если неясны цель, объём, ограничения или критерии приёмки — задай вопросы пользователю до составления плана.
2. Составь план
План должен содержать:
- Цель и ожидаемый результат;
- Шаги с конкретными файлами, командами и артефактами;
- Проверки (сборка, тесты, линтеры, вёрстка и т.п.);
- Критерии готовности — что считается «сделано»;
- Риски и открытые вопросы (если есть).
Заведи todo-список через todo_write в соответствии с планом.
3. Ревью плана сеньёром
Сохрани план и критерии в файл состояния (например, .dsh/task-plan.md), прогони саморевью (правило 10), затем создай сеньёра (subagent, первый раунд) с промптом по шаблону «Ревью плана» (ниже) и дождись его ответа. Сеньёр возвращает либо APPROVED, либо список замечаний с метками.
4. Цикл правок плана
- Есть блокирующие замечания → исправь их в файле состояния (и todo-список), отправь на ревью повторно ТОМУ ЖЕ сеньёру через
send_message: в промпт добавь только дельту «что изменилось с прошлого раза» (правило 9). - Ниты → зафиксируй в файле состояния (раздел «Ниты / известные ограничения») или
todo/, не обязательно исправляй. - Повторяй, пока не получишь
APPROVED; после 3 раундов с неисправленными[BLOCKER]— спроси пользователя (см. «Ограничение итераций»).
5. Выполнение
Выполняй строго по одобренному плану, отмечая прогресс в todo_write. Если в ходе выполнения стало ясно, что план нужно изменить — не отклоняйся молча: вернись к шагу 3 с обновлённым планом.
6. Ревью результата
Сначала сам проверь результат (прогони проверки из плана, правило 10), затем отдай его сеньёру по шаблону «Ревью результата» через send_message (тот же субагент): git diff изменённых файлов + выводы проверок. Сеньёр сверяет результат с планом (файл состояния) и критериями, проверяет корректность и соблюдение конвенций проекта.
7. Цикл правок результата
Исправляй блокирующие замечания, повторяй ревью тому же сеньёру через send_message, пока не вернёт APPROVED. Ниты — фиксируй в todo/ или файле состояния, не обязательно исправляй. При каждом повторе сообщай сеньёру только дельту — что изменилось с прошлого раза (правило 9). После 3 раундов с неисправленными [BLOCKER] — спроси пользователя.
8. Финальный отчёт
Кратко сообщи пользователю: что сделано, какие файлы затронуты, как проверялось, что план и результат одобрены сеньёром.
Шаблон: промпт «Ревью плана»
План и критерии — в файле состояния (путь ниже); в промпт включай только задачу, путь к файлу, дельту с прошлого раза (если есть) и diff, если правился код.
Ты — senior developer. Оцени план выполнения задачи.
Задача: <текст задачи>
План и критерии готовности: <путь к файлу состояния, например .dsh/task-plan.md> (прочитай сам)
Изменения с прошлого раза: <дельту или «первое ревью»>
Проверь: полноту (нет ли пропущенных шагов), достижимость, корректность
подхода, риски, соответствие конвенциям проекта, отсутствие лишних шагов.
Классифицируй каждое замечание:
- [BLOCKER] — влияет на функциональность, корректность, безопасность,
целостность данных, достижимость шага, ломает сборку/тесты, нарушает
конвенции проекта, создаёт регрессию. Такие обязательны к исправлению.
- [NIT] — уточнение формулировки, стиль, типографика, «на будущее»,
рекомендация без реального риска. Ниты не блокируют APPROVED.
Перечисли ВСЕ замечания одним списком за один заход — включая мелочи и
ниты; не растягивай на несколько раундов.
Ответь СТРОГО одним из двух вариантов:
- APPROVED (можно с пометкой «ниты: ...») — если блокирующих замечаний нет;
- список замечаний, каждое в формате «[BLOCKER]|[NIT] <что не так> → <как исправить>».
Шаблон: промпт «Ревью результата»
Ты — senior developer. Оцени результат выполнения задачи.
Задача: <текст задачи>
План и критерии готовности: <путь к файлу состояния> (прочитай сам)
Результат: git diff изменённых файлов + выводы проверок (build/vet/test/race)
Изменения с прошлого раза: <дельту или «первое ревью»>
Проверь: результат соответствует плану и критериям готовности, код/текст
корректен, соблюдены конвенции проекта, нет регрессий.
Классифицируй каждое замечание:
- [BLOCKER] — влияет на функциональность, корректность, безопасность,
целостность данных, ломает сборку/тесты, нарушает конвенции, регрессия.
Такие обязательны к исправлению.
- [NIT] — уточнение формулировки, стиль, типографика, «на будущее»,
рекомендация без реального риска. Ниты не блокируют APPROVED.
Перечисли ВСЕ замечания одним списком за один заход — включая мелочи и ниты.
Ответь СТРОГО одним из двух вариантов:
- APPROVED (можно с пометкой «ниты: ...») — если блокирующих замечаний нет;
- список замечаний, каждое в формате «[BLOCKER]|[NIT] <что не так> → <как исправить>».
Ограничение итераций
Если в одном цикле (план или результат) после 3 раундов остаются неисправленные [BLOCKER] — остановись и спроси пользователя: продолжать цикл или зафиксировать оставшиеся блокеры как известные ограничения. Ниты не считаются причиной продолжения цикла: при одних нитах сеньёр возвращает APPROVED (ниты: ...), а исполнитель фиксирует их в файле состояния или todo/.
Критерии готовности
- План составлен и одобрен сеньёром (
APPROVED) до начала выполнения. - Все блокирующие замечания сеньёра по плану устранены; ниты зафиксированы (в плане/
todo/) и не блокируют одобрение. - Результат соответствует плану и критериям готовности.
- Все блокирующие замечания сеньёра по результату устранены, получен
APPROVED; ниты зафиксированы. - Пользователю дан финальный отчёт.