{"skill":{"slug":"handoff-session","displayName":"A cross-session handoff protocol for Claude Code and other AI agents.  handoff is not a summarization tool. It's a protocol for freezing your work context, packaging it, and resuming execution — in any session, any agent, any device.","summary":"跨会话交接协议。用户只要表现出“现在先停一下，下一会话接着干”“继续刚才那一轮”“上下文太长要迁移工作现场”等意图，就必须使用此 skill。 `handoff out` 生成一个最小可执行的 handoff 包；`handoff in <id|latest>` 先读取 handoff 包并给出恢复预览，获得用户...","description":"---\nname: handoff-v2\ndescription: >\n  跨会话交接协议。用户只要表现出“现在先停一下，下一会话接着干”“继续刚才那一轮”“上下文太长要迁移工作现场”等意图，就必须使用此 skill。\n  `handoff out` 生成一个最小可执行的 handoff 包；`handoff in <id|latest>` 先读取 handoff 包并给出恢复预览，获得用户同意后才继续执行；`handoff list` 查看最近的交接记录。\n  整个协议只允许一个载体：handoff.md，不生成额外 prompt，不要求用户重新讲背景。\n---\n\n# Handoff Protocol V2\n\n`handoff` 不是总结工具，而是一套“冻结现场 → 封装状态 → 恢复执行”的交接协议。\n\n目标只有一个：**让下一会话不追问背景，直接继续干活。**\n\n## 一、协议对象\n\n每一次 handoff，都是一个 **handoff 包**：\n\n```text\n~/.agents/handoff_context/<handoff_id>/handoff.md\n```\n\n这个包只承担一件事：保存“继续执行”所需的最小状态。\n\n协议约束：\n\n- 唯一载体是 `handoff.md`\n- 不额外生成 prompt\n- 不转储聊天记录\n- 不追求完整，只追求可恢复\n- 写完后必须能让下一会话马上开工\n\n## 二、三种动作\n\n### `handoff out`\n\n把当前工作现场冻结成一个 handoff 包。\n\n触发信号：\n\n- `handoff out`\n- 帮我做会话交接\n- 上下文太长了 / 该换会话了\n- 我稍后继续 / 先把现场存一下\n- 把当前状态交给下个会话\n\n### `handoff in <id|latest>`\n\n读取一个 handoff 包，先恢复理解，再在用户同意后继续执行。\n\n触发信号：\n\n- `handoff in <id>`\n- `handoff in latest`\n- 继续刚才那个\n- 继续上一个会话\n- 从交接文档恢复\n- 接着上次任务做\n\n解析规则：\n\n- 给了 `<id>` → 读取该包\n- 写了 `latest` → 读取最近一次包\n- 没给 ID，但语义明显是“继续最近一次” → 按 `latest` 处理\n\n### `handoff list`\n\n列出最近 handoff 包，帮助用户找回某次交接。\n\n触发信号：\n\n- `handoff list`\n- 列出最近的 handoff\n- 看看最近交接\n\n## 三、八槽交接包\n\n每个 `handoff.md` 必须包含 8 个槽位，缺一不可：\n\n1. **当前任务**：现在到底在做什么\n2. **当前状态**：做到哪一步了，卡在哪里\n3. **已完成**：已经落地的结果\n4. **关键决策**：已经定下来的结论\n5. **关键约束**：不能破坏的限制\n6. **关键文件**：下一会话要先看的文件\n7. **下一步**：可以立刻执行的动作\n8. **待确认**：唯一阻塞项；没有就写 `无`\n\n填写标准：\n\n- `关键文件` 用 `path:line` + 一句话说明\n- `下一步` 必须是动作，不允许写“继续推进”“再看看”\n- `关键决策` 只写结论，不写讨论史\n- `待确认` 只写阻塞项，不能塞杂项\n- 没有内容时写 `未记录` 或 `无`，不能留空\n\n## 四、`handoff out` 协议\n\n按顺序执行：\n\n1. 用一句话确定主题\n2. 调用 `scripts/handoff_file.sh create \"{主题}\"`\n3. 填满 8 个槽位\n4. 做一次压缩，把不能帮助恢复执行的内容全部删掉\n5. 做一次恢复检查：假设自己已经失忆，只靠这份文档能否继续干活\n6. 向用户输出固定结果块\n\n压缩原则：\n\n- 保留事实，删除过程\n- 保留结论，删除讨论\n- 保留动作，删除叙述\n- 保留阻塞，删除情绪\n- 如果一行不能帮助下一会话动手，就删掉\n\n长度规则：\n\n- 目标长度：100 行内\n- 建议上限：120 行内\n- 复杂任务的例外上限：150 行内\n- 超过 120 行时，先主动压缩一次\n- 超过 150 行时，视为 handoff 失焦，需要重写\n\n固定输出块必须包含：\n\n```text\nHandoff saved.\n\n  ID:   {handoff_id}\n  File: ~/.agents/handoff_context/{handoff_id}/handoff.md\n\n  Next session → handoff in {handoff_id}\n```\n\n可以在前后补一句解释，但这三行的结构不能变。\n\n## 五、`handoff in` 协议\n\n按顺序执行：\n\n1. 解析目标 handoff 包\n2. 读取 `handoff.md`\n3. 用 3-5 条 bullets 复述恢复结果\n4. 明确告诉用户准备执行的下一步\n5. 先询问用户是否同意继续执行\n6. 只有在用户同意后，才打开 `关键文件` 并执行 `下一步`\n7. 若用户不同意，则停在恢复预览阶段，等待新的指令\n8. 若 `待确认` 阻塞执行，也只提出 1 个最关键问题\n\n恢复 bullets 至少覆盖：\n\n- 当前任务\n- 当前状态\n- 关键文件\n- 下一步\n- 是否存在阻塞\n\n建议询问句式：\n\n- `我已恢复现场，下一步是：{下一步}。是否继续执行？`\n\n禁止行为：\n\n- 不重新收集背景\n- 不让用户复述上一会话\n- 不把 handoff 当成总结报告来讲\n- 不在用户同意前就直接执行下一步\n- 不在 `handoff in` 时顺手再生成新的 handoff\n\n## 六、`handoff list` 协议\n\n执行：`scripts/handoff_file.sh list`\n\n输出格式：\n\n```text\n<handoff_id>  <topic>\n```\n\n一行一个，默认最近 5 条。\n\n## 七、恢复成功的判定标准\n\n一份合格 handoff，必须同时满足：\n\n- 新会话知道现在要做什么\n- 新会话知道已经做到哪一步\n- 新会话知道哪些限制不能碰\n- 新会话知道先看哪些文件\n- 新会话知道下一步立刻做什么\n- 新会话不需要用户重新讲故事\n- 用户同意后可以无缝继续执行\n\n只要有一项做不到，这份 handoff 就不合格，需要重写。\n\n## 八、异常处理\n\n- 找不到指定 ID：明确报错，并提示用户先执行 `handoff list`\n- 没有任何 handoff：明确说明还没有交接记录\n- `关键文件` 有部分不存在：指出缺失项，但继续基于剩余信息给出恢复预览\n- 文档里某槽位缺失：先用已有槽位恢复；只有在真的阻塞时才问 1 个问题\n\n## 九、资源\n\n- 脚本：`scripts/handoff_file.sh`\n- 模板：`references/templates.md`\n- 说明：`使用文档.md`\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":598,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":1},"createdAt":1773617792364,"updatedAt":1778491933006},"latestVersion":{"version":"1.0.0","createdAt":1773617792364,"changelog":"- Initial release of the handoff-session skill, implementing the Handoff Protocol V2.\n- Supports three core actions: handoff out (freeze current session), handoff in (restore session), and handoff list (view recent handoffs).\n- Each handoff stores a minimal execution state in a standardized handoff.md file with eight required fields, enabling seamless workflow transfer across sessions.\n- Ensures next sessions can resume work immediately, without re-collecting background or user restatement.\n- Includes strict protocols for output, field filling, error handling, and session recovery to maintain consistency and reliability.","license":"MIT-0"},"metadata":null,"owner":{"handle":"allen-cao","userId":"s176ngf429xmj1ykhgy0ay60z183jpv2","displayName":"Allen-Cao","image":"https://avatars.githubusercontent.com/u/59598656?v=4"},"moderation":null}