--- name: deferred-decisions description: >- Records deferred technical decisions and proactively reminds the user when related tasks arise. Triggers when the conversation contains semantics like "以后再做", "先不做", "defer", "延期方案", "备选方案", "递进方案". Also used for browsing and managing existing deferred items. --- # Deferred Decisions Skill 追踪开发中被延期的技术方案,在合适时机主动提醒用户。 ## 存储 **数据文件**: `.claude/deferred/registry.md` 该文件是 Agent 的结构化记忆,不是面向人类的文档。每个 deferred item 是一个 H3 级标题块。 ## 操作 A:记录延期方案 ### 触发识别 当对话中出现以下模式时,Agent 应主动提议记录: - 讨论了多种方案,选择了一种,明确说其余"以后再做" - 实现了基础版本,提到了可递进升级的高级版本 - 发现了可以改进的点,但当前优先级不够 ### 流程 ``` 1. 从对话中提炼: - 选择了什么方案(chosen_alternative) - 延期了什么(标题 + context) - 为什么延期(deferred_reason) - 什么时候可以做(prerequisite) - 涉及哪些领域(tags)和文件(related_files) 2. 生成 slug 形式的唯一 ID(如 ecosystem-lod-switching) 3. 读取 .claude/deferred/registry.md(不存在则用模板创建) 4. 在 "## Active Items" 区域末尾、"---" 分隔线之前追加新条目 5. 向用户确认已记录,展示条目摘要 ``` ### 条目模板 ```markdown ### [item-slug] 简短标题 - **status**: deferred - **tags**: tag1, tag2, tag3 - **recorded**: YYYY-MM-DD - **source_chat**: [简短描述](chat-uuid) - **prerequisite**: 实施前提条件(可选,无则写 "无") - **related_files**: - path/to/file1.cs - path/to/file2.cs - **context**: | 延期方案的具体内容,2-5 行描述。 包含方案的要点和实施思路。 - **chosen_alternative**: 当时选择的方案简述 - **deferred_reason**: 延期的原因 ``` ### 字段说明 | 字段 | 必填 | 说明 | |---|---|---| | ID(方括号内) | 是 | slug 形式,全局唯一 | | status | 是 | `deferred` / `reminded` / `in_progress` / `done` / `cancelled` | | tags | 是 | 逗号分隔的领域标签,用于关联匹配 | | recorded | 是 | 记录日期 | | source_chat | 否 | 来源对话标识 | | prerequisite | 否 | 实施前提条件 | | related_files | 否 | 关联代码文件路径 | | context | 是 | 延期方案的具体内容 | | chosen_alternative | 是 | 当时选择了什么 | | deferred_reason | 是 | 延期原因 | ## 操作 B:关联提醒 ### 触发条件 由 `.claude/rules/common/deferred-recall.md` 触发,或当用户任务涉及已有 deferred item 的领域时自动触发。 ### 流程 ``` 1. 读取 .claude/deferred/registry.md 2. 提取当前任务的关键词和涉及文件 3. 匹配 status=deferred 的 items: - tags 与当前任务关键词有交集 - related_files 与当前任务涉及文件有重叠 - prerequisite 描述的条件可能已满足 4. 如匹配到,在回复开头简要提醒: "提醒:你之前有一个延期方案 [item-title] 与当前任务相关。要一并处理吗?" 5. 如用户同意,将该 item 的 status 改为 in_progress ``` ### 提醒原则 - 每个 item 在同一会话中最多提醒一次 - 只提醒 status=deferred 的 items(reminded/in_progress 不重复提醒) - 提醒应简洁,不打断用户的主线任务 ## 操作 C:状态管理 | 用户动作 | 状态变更 | 额外操作 | |---|---|---| | "开始做 X" | deferred → in_progress | 无 | | "X 完成了" | in_progress → done | 移到 "Completed / Cancelled Items" 区域 | | "X 不需要了" | any → cancelled | 移到 "Completed / Cancelled Items" 区域 | | Agent 提醒后用户确认 | deferred → in_progress | 无 | ### 移动条目 将条目从 "Active Items" 剪切到 "Completed / Cancelled Items" 区域时,保留完整内容,仅修改 status。 ## 操作 D:浏览/回顾 当用户问"有哪些延期方案"、"deferred list"、"待办方案"等时: ``` 1. 读取 registry.md 2. 列出所有 status=deferred 的 items 摘要表: | ID | 标题 | Tags | 记录日期 | 前提条件 | 3. 如用户要求按 tag 过滤,只展示匹配项 ``` ## Registry 文件模板 当 `.claude/deferred/registry.md` 不存在时,用此模板创建: ```markdown # Deferred Decisions Registry ## Active Items (暂无延期方案) --- ## Completed / Cancelled Items (暂无已完成或已废弃的方案) ``` ## 自迭代日志 本节记录使用本 Skill 过程中发现的必要检查项。 ### 已知必要检查 (暂无)