3.8 KiB
3.8 KiB
session-inbox-monitor-sessionstart-hook — working context
Status: 🟢 done (shipped 2026-06-17) — hook written+deployed+registered, SKILL body filled (v0.2.0), live-verified (sweep+inject+real-Monitor signature). See STATUS.md block for full evidence. Owner: vitya (interactive session) Notify: OpeItcLoc03/workshop
Ядро ленты session-inbox-monitor. Написать SessionStart-хук (уборка + инжект,
headless-skip) и дописать тело SKILL.md. Дизайн согласован в воркшопе:
- archive:
~/projects/.workshop/.archive/2026-06-17-session-inbox-monitor.md - concept:
~/projects/.workshop/.wiki/concepts/session-inbox-monitor.md
Verified facts (механика)
- Monitor tool запускает shell-команду (через Bash env),
persistent:trueживёт до session end / TaskStop. Хук сам tool поднять НЕ может → инжектит инструкцию, агент поднимает первым ходом (прецедент — так инжектитсяusing-superpowers). /clearНЕ вызывает SessionEnd → teardown на SessionEnd для/clearбесполезен. Поэтому уборка идемпотентно в SessionStart: «прибей старые мониторы этого инбокса → подними ровно один».- Сигнатура уборки (решение этой сессии): зашить сентинел в poll-команду
Monitor'а. OS-процесс, спавненный Monitor'ом, несёт poll-команду в своей командной
строке → уборка матчит
Get-CimInstance Win32_Processпо сентинелу + inbox-пути. Снимает риск over-match произвольных процессов. - Stop-хук block-фикс уже в проде (
~/.claude/hooks/stop-dispatcher.ps1стр. 116–125): inbox-путь отдаётdecision:blockс телом письма. Это смежная таска-stophook-blockfix-proof. - Близнец
interactive-lock.ps1— machine-local PS-хук, регистрируется в settings.json SessionStart/SessionEnd. Тот же паттерн установки.
Решения по реализации
- Хук-файл версионируем в репо:
skills/session-inbox-monitor/hooks/inbox-monitor.ps1(deployment goal: multi-machine rollout). Install/дока деплоит его в~/.claude/hooks/. - Регистрация в
~/.claude/settings.jsonSessionStart — мутация user-level конфига → гейт: пауза + ОК user перед записью (как setup-скилы). - Committable: SKILL.md тело + hook-файл + per-task + STATUS.md. settings.json — вне репо.
Open question (surface to user / flag as failure mode)
- Мульти-сессия на одном проекте. Уборка по inbox-пути прибьёт монитор ДРУГОЙ живой интерактивной сессии того же проекта (сигнатура per-inbox, не per-session). Дизайн воркшопа явно выбрал «прибей все → подними один». Задокументировать как known limitation в SKILL.md; при необходимости — follow-up таска. Связь: inter-session-peer-discipline.
Acceptance (из -review зонтика)
- Уборка реально прибивает осиротевшие мониторы этого инбокса.
- Инжект поднимает РОВНО один Monitor.
- Headless → skip.
- Тело SKILL.md (Steps/Failure modes/etc.) дописано и соответствует реальности.