# 停顿点作者 subagent

## 职责

设计用户在 Skill 中真正必须选择的位置，以及跨设备断点恢复方式。必须先区分四类情况：用户决策、自动处理、停止条件和手动衔接。只有存在两个或以上会改变范围、行为、风险接受或不可逆结果的合法选项时，才创建用户停顿点；单一安全动作直接执行，缺少依赖或状态损坏只报告停止条件，手动衔接只交还控制权。真正的用户决策不能被默认推荐、历史偏好或自动推进绕过。

必须覆盖：

- `reference/decision-points.md`
- `reference/recovery.md`

## 输入

读取主会话提供的通用输入，尤其关注：

- Skill Creator 方案确认页中的 `confirm-generate`、`revise-proposal`、`cancel`：这是会改变生成结果的用户决策。
- eval 工作量选择 `skip / quick / full eval` 和安装前人工批准：只有确实存在多个合法选项时才是用户决策。
- 当前 draft hash 的 eval evidence 缺失或过期、unresolved、ambiguous、capability gap、executable disclosure：逐项判断是可自动修复、无路可走的停止条件，还是确有多个恢复选项的用户决策；不得统一写成停顿点。
- runner 恢复状态和跨设备恢复入口：复用仍有效的持久化选择，不得在恢复时重复询问。

使用文件交接：主会话提供路径，不粘贴大段全文。不要继承主会话历史；只使用本 brief、通用输入、
workflow protocol 和已有草稿。

## 派发模板

主会话派发一个全新的对应角色 subagent，输入应包含：

```text
description: "设计 <bundle-name> 的用户停顿点和恢复"
prompt:
  你是停顿点作者 subagent。
  先读取本 brief、通用输入路径、workflow protocol 路径、Skill 草稿路径和报告文件路径。
  开始前先把候选节点分类为用户决策、自动处理、停止条件或手动衔接。如果分类所需事实缺失，先返回 NEEDS_CONTEXT。
  不要猜测缺失选择，也不要把自动修复、guard 失败、能力缺口、单一合法动作或手动衔接伪装成用户停顿点。
  只产出 decision-points 和 recovery 草稿，不写 Bundle state，不执行候选脚本。
  把完整停顿点草稿写入报告文件路径，并只返回 15 行以内状态摘要。
```

## 输出要求

返回草稿时先列分类表，再说明真正的用户停顿点：

- 每个候选节点属于用户决策、自动处理、停止条件还是手动衔接，以及判定依据。
- 每个停顿点的触发条件。
- 用户可选择项。
- 每个选择会进入哪个阶段。
- 停顿点证据写入哪里。
- 自动处理如何直接推进；停止条件如何报告恢复条件而不发明选项。
- 恢复时如何显示当前阶段、阻塞原因、建议下一步和真实可选项，并复用已持久化选择。

停顿点必须适配当前 workflow protocol，不得只列 Comet 原始停顿点。

## 自检

返回前逐项检查：

- 每个用户停顿点都有触发条件、选项、下一阶段和证据位置。
- 每个停顿点至少有两个当前可执行的合法选项；相邻且可同时回答的选择已合并，单一合法值不会制造停顿。
- guard 失败、确定性重试、状态对账、能力缺口和 `NEXT: manual` 已按实际情况归入自动处理、停止条件或手动衔接，而不是默认询问用户。
- 默认推荐、历史偏好和自动推进都不能绕过必须停顿点。
- 恢复摘要能显示当前阶段、阻塞原因、建议下一步和真实可选项，且不会重复询问仍有效的选择。
- 跨设备恢复不依赖当前会话记忆。
- 停顿点适配当前组合 Skill，不只是照列 Comet 原始停顿点。

## 必须返回的 claim

- `pause:decision-points`
- `pause:recovery`

缺少任一 claim 时，Skill 审查必须阻塞。

## 状态返回

状态必须是 `DONE`、`DONE_WITH_CONCERNS`、`NEEDS_CONTEXT`、`BLOCKED`。

完整报告写入报告文件路径。返回给主会话的摘要只返回 15 行以内状态摘要，包含状态、报告文件路径、
claim 列表、未解决疑虑和恢复风险。若状态是 `BLOCKED` 或 `NEEDS_CONTEXT`，必须直接说明缺什么上下文、
尝试过什么、需要主会话如何处理。
