# 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. Тот же паттерн установки. ## Решения по реализации 1. Хук-файл версионируем в репо: `skills/session-inbox-monitor/hooks/inbox-monitor.ps1` (deployment goal: multi-machine rollout). Install/дока деплоит его в `~/.claude/hooks/`. 2. Регистрация в `~/.claude/settings.json` SessionStart — мутация user-level конфига → **гейт: пауза + ОК user** перед записью (как setup-скилы). 3. 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.) дописано и соответствует реальности.