diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 60ee37d..f19e1fc 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1457,3 +1457,33 @@ Findings → follow-up tasks через tasks_create в claude-skills (slug `ses --- + +## ⚪ [session-handoff-posttooluse-hook] — Автоматизировать substantive-commit detection в session-handoff через PostToolUse hook (settings.json), вместо поведенческой памяти agent'а. + +**Reason:** в текущем SKILL.md (v0.2.0) substantive-commit detection — поведенческое: agent сам после `git commit` помнит проверить эвристику `prefix-exclude AND (body>200 OR files>3) AND (первый non-trivial всегда)`. Менее robust, чем harness-уровневый hook. Один пропущенный «вспомнить» на середине сессии — handoff не обновляется, next агент работает с устаревшим состоянием. + +**Scope:** настройка через update-config skill, hook в user-level settings.json (~/.claude/settings.json), matcher `Bash` с command pattern на `git commit`. Hook парсит результат коммита и решает write-mode trigger. + +**Опционально (не блокер):** project-level settings.local.json override per-project — если в каком-то проекте substantive threshold должен быть другой. + +**NB:** это harness-оптимизация поверх скила, не часть самого session-handoff. Скил остаётся работоспособным и без hook'а — просто менее автоматизирован. Bump SKILL.md MINOR не требуется (skill behavior не меняется). + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** 1. Открыть update-config flow (или вручную ~/.claude/settings.json). +2. Добавить PostToolUse hook: + - matcher: `Bash` + - command pattern: содержит `git commit` (исключая `git commit --amend`? — design-вопрос) + - action: вызов helper-скрипта, который читает последний commit (`git log -1 --format`), парсит prefix/body/files, решает substantive vs trivial, и при substantive — invoke session-handoff write-mode на agent-стороне (через notification или прямое stdout-сообщение в agent). +3. Helper-скрипт — bash/powershell, лежит в ~/projects/claude-skills/skills/session-handoff/hooks/ (если решим, что hooks — часть скила и distribuируются вместе с install.sh). +4. Smoke test: сделать substantive commit в тестовом проекте → handoff должен обновиться без user-запроса. Сделать trivial `chore:` commit → handoff не трогать. +5. Документировать в SKILL.md секции When to use — «substantive-commit trigger автоматизирован через PostToolUse hook (см. hooks/)» — но только после успешного smoke. До этого момента — оговорка в SKILL.md остаётся «agent-side эвристика». + +**Design-вопросы для реализатора:** +- Хук распределяется через install.sh скила (тогда нужно расширять install.sh) или конфигурируется через update-config вручную user'ом? Recommendation: install.sh добавляет hook автоматически, чтобы скил работал «из коробки». +- `git commit --amend` — триггерить или нет? (recommend: НЕ триггерить — амэнд обычно правка предыдущей сессии). +- Cherry-pick / rebase — каскад из множества коммитов, не должен спамить handoff write'ами. Recommend: триггер только на оригинальный commit-event (HEAD@{1} != HEAD предыдущий). +**Branch:** n/a + + +---