# Eo Handoff

> |

- **Type:** Skill
- **Install:** `agentstack add skill-simpleeve-eo-skills-eo-handoff`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [SimpleEve](https://agentstack.voostack.com/s/simpleeve)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [SimpleEve](https://github.com/SimpleEve)
- **Source:** https://github.com/SimpleEve/eo-skills/tree/main/eo-handoff

## Install

```sh
agentstack add skill-simpleeve-eo-skills-eo-handoff
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# eo-handoff — 跨会话状态交接

## 定位

**clear 前的最后一步**：把"下次会话要立刻接着干"所需的最少信息写到 `/tmp/-handoff.md`。

和容易混淆的两个东西的边界：

| 名称 | 对端 | 性质 |
|------|------|------|
| 内置 `/compact` | 同一会话续命 | 机械压缩对话流，保留所有信息 |
| `/eo-flow` | 同时存在的另一个 agent (codex pane) | 跨 agent 任务派发 |
| **`/eo-handoff`** | **clear 之后的下一个会话（"未来的自己"）** | **定向提取当前状态 + 决策口径，主动丢弃探索过程** |

核心区别：eo-handoff **不是总结**，是"开机指令"。读者是新会话的自己，目标是 5 分钟内回到当前节点。

## 不依赖 .eo-project.json

`tmp/` 是工作区机制，任何 git 仓库都能用，不归 `eo-doc/` 体系管。即使没跑过 `/eo-project-init` 也能用本 skill。

## 输入

- **topic 名**：从最近上下文推断（最近聊的 module / change-id / 任务名）。推不出再问用户一次。
  - 文件名：`tmp/-handoff.md`，`` 用 kebab-case
- **可选口头加权**：用户说"重点记 X / 别记 Y / 把这段对话原文带上" → 写入时按指示偏置
- **tmp/ 目录**：不存在则建。**已存在的同名文件直接覆盖**（默认行为；老的 handoff 已经过期没价值）。如果用户希望保留历史，自行加日期后缀。

## 文件骨架（6 段固定）

每段没有内容就写 `_无_`，**不要省略段落**——固定结构便于下一个会话按位置取信息。

```markdown
#  — 会话交接快照

>  由 /eo-handoff 生成。
> 用途：`/clear` 后载入本文件即可从「」继续。

## 1. 当前状态

- 在做什么、卡在哪个节点
- 关键产物路径 + status（spec / change / review 等的 frontmatter status）
- 上下游依赖是否就绪

## 2. 基线

- 仓库 HEAD：`` on ``
- 关键文件清单（路径 + 一句话作用），区分「已存在」「待新增」
- 工作目录 dirty / clean 状态

## 3. 下一步分叉

等用户决策的点，列出候选：
- **A) **：…（适用场景 / 取舍）
- **B) **：…
- **C) 待定**：还没成型的方向

如果没有分叉、就一条路走到黑，写「无分叉，下一步：」。

## 4. 关键口径清单 ⭐ 最重要

跨 clear 必须保持一致的决策与不变量。每条带「**为什么**」一行，便于新会话判断边界情况。

- [ ] ：。为什么：
- [ ] ：…
- …

这一段是 handoff 的核心价值——探索过程可以丢，但收敛出来的决策不能丢。

## 5. 开机动作序列

clear 后新会话该做的第一组动作（有序）：
1. 读 （拿到 ）
2. 跑 `` 验证 
3. 问用户  后再动手
4. …

## 6. 明确不写的

主动丢弃了哪些内容，让用户最后检查一遍：
- （理由：探索过程，已收敛到 §4）
- （理由：与 git log / 当前代码重复）
- …
```

## 执行步骤

### 1. 推断 topic

扫最近 ~20 轮对话，找最高频出现的具体名词（module 名 / change-id / 文件路径根）。例：用户在拆 `residence` 模块的 bootstrap change → `topic = residence-next-steps` 或 `residence`。

推不出（话题分散） → 一次性问用户："这次 handoff 的主题是什么？我建议 `` 或 ``"。

### 2. 询问加权（可选）

如果用户的初次触发已经带了指示（"重点记口径"/"把方案 B 的细节带上"），跳过；否则一句话问："有什么必须记 / 必须丢的吗？没有就按默认骨架走。"

### 3. 拉基线

- `git rev-parse --short HEAD` + `git branch --show-current`
- `git status --short`（dirty 状态进 §2）
- 不跑 `git log` 长输出——历史在 git 里，不要复制到 handoff

### 4. 起草 6 段

按上面骨架逐段填。判断标准：

- **§1 当前状态**：写到下一个会话能立刻回答"我现在在哪"。不写"我们之前讨论了 X、Y、Z"。
- **§2 基线**：只写**路径**和**状态**，不复制文件内容（新会话自己去读）。
- **§3 下一步分叉**：每个候选限 2-3 行说明，长篇论证压到 §4 关键口径里。
- **§4 关键口径**：**密度第一**。每条一行结论 + 一行「为什么」。决策、不变量、硬约束、踩过的坑都进这里。
  - 用户给的例子里有 13 条，那个密度是合格的。如果只写出 2-3 条，多半是漏了——再扫一遍对话有没有"我们决定…"/"不能…"/"必须…"的点。
- **§5 开机动作**：可执行的，有序。不写"先理解一下背景"这种虚的。
- **§6 明确不写的**：列 3-5 条最大头的丢弃项，让用户能一眼看出有没有漏。

### 5. 落盘 + 提示

写到 `/tmp/-handoff.md`。`tmp/` 不存在先建。

完成后告知用户**三件事**：
1. 文件路径
2. 关键口径条数（密度自检）
3. clear 后的开机指令模板，例如：
   ```
   读 tmp/-handoff.md，按 §5 开机动作序列执行
   ```

不要在终端里把整个 md 内容贴出来——文件已经写进去了，贴一遍是噪音。

## 关键约束

| 约束 | 说明 |
|------|------|
| 不是对话总结 | 探索过程主动丢；只留收敛后的状态、决策、动作 |
| 6 段固定不省略 | 没内容就写 `_无_`，结构稳定便于新会话按位置取信息 |
| 每条口径带「为什么」 | 没有原因的口径就是规则，规则在边界情况会被滥用 |
| §4 密度第一 | 口径太少（<5 条）多半是漏了，重新扫对话 |
| 不复制文件内容到 handoff | 只写路径，新会话自己读；handoff 是地图不是百科 |
| tmp/ 用户管 | 默认覆盖同名文件；不自动清理历史；不进 .gitignore（由项目自决） |
| 不依赖 eo-doc/ | 工作区级机制，任何项目能用，不读 .eo-project.json |
| 不替代 /compact 或 /eo-flow | 看「定位」表格，三者职责互不重叠 |

## 示例（最小完整版）

用户："我快 clear 了，存一下 residence 拆 change 的进度。"

Claude:
1. 推断 topic = `residence`
2. 不问加权（用户没给特殊指示）
3. 拉 HEAD = `243ebcf` on `main`，clean
4. 起草 6 段，§4 收敛 13 条口径（候补池存储 / 合批硬约束 / IsActive 过滤 / Proto 锁死方案 …）
5. 写到 `tmp/residence-handoff.md`
6. 告知用户：
   ```
   已写 tmp/residence-handoff.md（§4 关键口径 13 条）。
   clear 后第一句话发：读 tmp/residence-handoff.md，按 §5 开机动作序列执行。
   ```

## 与其它 skill 的关系

- 内置 `/compact`：续命当前会话，保留全量；本 skill 是清空当前会话前的状态导出
- `/eo-flow`：跨 agent 任务派发；本 skill 是跨会话状态交接，不涉及第二个 agent
- `/eo-project-update` / `/eo-project-lesson`：项目级长期记录（roadmap / 经验），活在 `eo-doc/` 或 vault；本 skill 是工作区临时快照，活在 `tmp/`
- 任何 eo-* 流程节点（spec/change/implement/test/review/archive）都可以在中途调用本 skill 做 clear 前快照

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [SimpleEve](https://github.com/SimpleEve)
- **Source:** [SimpleEve/eo-skills](https://github.com/SimpleEve/eo-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-simpleeve-eo-skills-eo-handoff
- Seller: https://agentstack.voostack.com/s/simpleeve
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
