diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 0264f41..25d65c0 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1007,7 +1007,44 @@ No `consult` was needed; nothing irreversible or cross-cutting. Files changed: ` --- -## ⚪ [task-loop-skill] — Написать скил `task-loop` для интерактивных Claude Code сессий. +## ⚪ [task-loop-skill] — **Цель:** агент в открытой сессии может взять задачи из task board и выполнять их одну за другой прямо в этой сессии — без отдельного daemon-процесса, без спауна новых claude-процессов. + +**Что делает скил (поведение):** +1. Вызвать `tasks_claim_next` (с учётом POLLER_PROJECTS из env или аргумента) +2. Если задача найдена — прочитать description, выполнить работу в текущей сессии (все инструменты доступны), закрыть через `tasks_close` +3. Если задач нет — **выйти из цикла**, доложить пользователю («очередь пуста»). Не вызывать ScheduleWakeup напустую — это сжигало бы токены каждые N секунд ради пустой проверки. +4. Повторить с п.1 +5. Остановиться при явном сигнале пользователя (сообщение в чат) или при `budget.remaining() < threshold` + +**Только скил, программных изменений нет.** Все нужные инструменты (`tasks_claim_next`, `tasks_close`) уже существуют. + +**Примечание о токенах:** +- «Нет задач → нет токенов» достигается просто: при пустой очереди цикл останавливается, а не polling-ит. +- `ScheduleWakeup` допустим только по явному запросу пользователя («работай пока не скажу стоп») с большим интервалом (≥1200s). +- Inbox-driven wakeup (stop-hook читает `.claude-inbox/`) пока не реализован для новых задач: в inbox поступают только completion-уведомления (closed/delivery-failed/blocked от поллера). Реализация — отдельная programming задача. + +**TDD — обязательно:** +- Сначала написать baseline сценарий (subagent без скила): агент получает задачу, что он делает? Зафиксировать нарушения. +- Написать SKILL.md закрывающий эти нарушения +- Прогнать compliance-сценарий с скилом: агент следует loop корректно +- Проверить edge cases: нет задач, задача провалилась, пользователь прервал + +**Acceptance criteria:** +1. Агент с скилом корректно claim → work → close → repeat +2. При отсутствии задач — останавливает цикл (не polling, не ScheduleWakeup), сообщает пользователю +3. При ошибке в задаче — паркует (tasks_update status=paused), не виснет +4. Heartbeat: либо документировано как использовать с длинным TTL, либо со ссылкой на `heartbeat-side-channel` +5. Скил задокументирован по стандарту superpowers (frontmatter name/description, CSO-оптимизация) +6. TDD-цикл завершён: есть baseline + compliance тест, оба описаны в PR/commit + +**Обязательные скилы перед работой:** +- `superpowers:writing-skills` — методология написания скилов (TDD-цикл обязателен) +- `superpowers:test-driven-development` — RED-GREEN-REFACTOR для документации +- `using-tasks` — управление статусом этой задачи +- `project-discipline` — дисциплина коммитов/semver в claude-skills + +**Weight:** needs-claude +**Notify:** OpeItcLoc03/workshop **Цель:** агент в открытой сессии может взять задачи из task board и выполнять их одну за другой прямо в этой сессии — без отдельного daemon-процесса, без спауна новых claude-процессов.