From d304549768ad98f4d7a2cbc151d4b42a3a182847 Mon Sep 17 00:00:00 2001 From: vitya Date: Wed, 12 Aug 2026 20:13:19 +0300 Subject: [PATCH] =?UTF-8?q?docs(session-handoff):=20v0.5.0=20=E2=80=94=20h?= =?UTF-8?q?eadless=20ritual=20now=20built=20(session-close-ritual=20extens?= =?UTF-8?q?ion),=20agent=5Fend=20rationale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RISK-2 drift fix: 'Не построен — follow-up' → points at the deployed extension (.common/lib/pi-extensions/session-close-ritual.ts), records why agent_end not agent_settled (live-verified), bump 0.4.0→0.5.0 (MINOR), dist rebuilt. --- dist/session-handoff.skill | Bin 11287 -> 11448 bytes skills/session-handoff/SKILL.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/session-handoff.skill b/dist/session-handoff.skill index 8f9549f81c7b1f9e0c9c97b7b3c9d5ce18a5f846..d99af93d7c7c30f4661dbbf58f13792e694e9dd1 100644 GIT binary patch delta 5831 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 R0x}_!;43i(Vk-au008B`2#Ejy delta 5665 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 H00000fd#}u diff --git a/skills/session-handoff/SKILL.md b/skills/session-handoff/SKILL.md index 8fe0f0a..7344c04 100644 --- a/skills/session-handoff/SKILL.md +++ b/skills/session-handoff/SKILL.md @@ -1,7 +1,7 @@ --- name: session-handoff author: ours -version: 0.4.0 +version: 0.5.0 description: "Sliding handoff between CC sessions via .tasks/NEXT_SESSION.md. Read on session start: orient agent, ask user before action. Write on session-end phrase or substantive commit. On session-end the agent ALSO runs the closing ritual on its own (idea 7: no invitation needed): handoff write + PROPOSE wiki-ingest of session knowledge + PROPOSE task-board closes — mutations only after user confirmation. Session-end phrases: «завершаем сессию», «сворачиваемся», «закругляемся», «wrap up session», «end session», «we're done for now». Trigger-line in CLAUDE.md: `session handoff: read on start, write on end`. Skip task-zone phrases: «закрываем эту таску», «pause», «отбой», «разбегаемся»." --- @@ -121,7 +121,7 @@ Forward-looking, не timeline: handoff = связка новых вещей к **Триггер:** ритуал на session-end фразе; на substantive commit'е — только handoff-write, ритуал НЕ гонять (mid-session коммит ≠ конец сессии, иначе спам предложений). -**Headless (pi, дизайн):** для автоматического запуска без интерактива нужен pi-extension на `agent_settled` с дедуп-гардом (по образцу inbox-monitor). Не построен — зафиксировано как follow-up; скил покрывает интерактивные харнессы. +**Headless (pi):** pi-extension `session-close-ritual` (источник: `.common/lib/pi-extensions/session-close-ritual.ts`, деплой `~/.pi/agent/extensions/`) инжектит «прогони ритуал» один раз за сессию на `agent_end` в print-режиме (`pi -p`), с дедуп-гардом и opt-in (та же trigger-строка + `.tasks/` + git). Почему `agent_end`, а не `agent_settled`: settle = «no follow-up left», процесс в teardown — followUp уже не обработается (проверено live); `agent_end` срабатывает сразу после рана, пока followUps ещё доставляются. Интерактив — фразовый триггер (ниже), не инжекция. ## Failure modes