152 lines
4.6 KiB
Markdown
152 lines
4.6 KiB
Markdown
---
|
||
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 过程中发现的必要检查项。
|
||
|
||
### 已知必要检查
|
||
|
||
(暂无)
|