@modus-ai/modus 0.1.8 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: modus-plan
3
- description: Use this skill when executing /modus:plan command to generate structured planning documents (proposal, design, tasks) backed by up-to-date business Skills. Trigger on /modus:plan command or when user wants to plan a feature with full business context. Supports --quick flag to skip design.md. Auto-routes to simple/medium/complex depth based on complexity assessment.
3
+ description: Use this skill when executing /modus:plan command to generate a single structured plan.md backed by up-to-date business Skills. Trigger on /modus:plan command or when user wants to plan a feature with full business context. Loads Skill domains first, falls back to platform rules + source scan, then asks exactly 3 targeted questions before generating the plan. Ends with a Build confirmation loop where user can iterate on plan.md before executing code generation.
4
4
  allowed-tools: Read, Write, Glob, Bash
5
5
  disable: false
6
6
  ---
@@ -9,19 +9,9 @@ disable: false
9
9
 
10
10
  **触发条件:** 用户运行 `/modus:plan [需求描述]` 时使用此 Skill。
11
11
 
12
- 支持快速模式:`/modus:plan --quick [描述]` 跳过 design.md 和 design-brief.md,仅生成 proposal + tasks。
13
-
14
12
  ## 职责
15
13
 
16
- 功能规划入口。通过**三级渐进加载**获取业务上下文(前置更新),先评估需求复杂度自动分级(simple/medium/complex),再基于最新知识生成结构化的 proposal/design/tasks 文档(proposal 自动融入 Skill pitfall 生成已知风险章节),归档后将本次规划中的新知识回写到 Skill(后置更新),并将状态写入 `.modus-state.yaml` 支持断点续跑。
17
-
18
- ### 复杂度分级与产出物对应
19
-
20
- | 级别 | 判定标准 | 产出物 | 自动建议 |
21
- |------|----------|--------|---------|
22
- | Simple | 单域、≤3 文件变更、无架构变化、bug fix 类 | proposal + tasks | 自动建议 `--quick` |
23
- | Medium | 1-2 个域、有新接口但无架构变化、≤5 文件 | proposal + design + tasks | 完整模式 |
24
- | Complex | 跨 3+ 域 / 新增数据表 / 引入新中间件 / 重构 | proposal + design + design-brief + tasks | 完整模式(提示考虑 /spec) |
14
+ 功能规划入口。通过**两层知识检索**获取业务上下文,先评估需求复杂度自动分级(simple/medium/complex),再基于加载的知识向用户提出恰好 3 个精准澄清问题,最终生成单一 `plan.md` 规划文档。文档生成后进入 Build 确认循环,用户可反复修改直至满意后触发代码执行,并将本次规划中的新知识回写到 Skill(后置更新)。
25
15
 
26
16
  ---
27
17
 
@@ -45,11 +35,19 @@ disable: false
45
35
  - 若用户选择继续,跳到对应的未完成步骤
46
36
  - 若是全新流程,正常从 Step 1 开始
47
37
 
38
+ ---
39
+
48
40
  ### Step 1:Level 1 加载——读知识目录(~200 tokens)
49
41
 
50
42
  读取 `modus/knowledge-catalog.md`,了解当前可用 Skill 及其状态。
51
43
 
52
- 若不存在,与 vibe 模式相同的降级提示(建议先运行 /modus:init)。
44
+ 若不存在,输出降级提示:
45
+ ```
46
+ ⚠️ 未找到 modus/knowledge-catalog.md,建议先运行 /modus:init 初始化知识库。
47
+ 将使用平台规则文件和源码扫描作为替代知识来源继续执行。
48
+ ```
49
+
50
+ ---
53
51
 
54
52
  ### Step 2:域匹配与确认(有则更新,无则新增)
55
53
 
@@ -65,9 +63,11 @@ disable: false
65
63
  确认?
66
64
  ```
67
65
 
66
+ ---
67
+
68
68
  ### Step 3:复杂度评估与自动分级
69
69
 
70
- 域确认后,在澄清之前,快速评估需求复杂度并输出分级建议:
70
+ 域确认后,快速评估需求复杂度并输出分级建议:
71
71
 
72
72
  **评估维度:**
73
73
 
@@ -94,18 +94,13 @@ disable: false
94
94
  ✓ 预估 3-5 个文件变更
95
95
  ✓ 无新数据表,无新中间件
96
96
  ⚠ 有接口契约变更(影响复杂度)
97
-
98
- 建议文档深度:
99
- {Simple → 建议使用 --quick 模式(proposal + tasks)}
100
- {Medium → 完整模式(proposal + design + tasks)}
101
- {Complex → 完整模式 + design-brief,或考虑升级为 /modus:spec}
102
97
  ```
103
98
 
104
99
  **复杂度为 Complex 时的特别提示:**
105
100
 
106
101
  ```
107
102
  ⚠️ 此需求复杂度较高,建议考虑以下方案:
108
- A. 继续使用 /modus:plan(完整模式,含 design-brief)
103
+ A. 继续使用 /modus:plan(生成 plan.md,含方案对比和任务清单)
109
104
  B. 升级为 /modus:spec(可获得 delta specs 和 GIVEN/WHEN/THEN 验收标准)
110
105
  C. 拆分需求后分别 /modus:plan
111
106
 
@@ -114,56 +109,21 @@ disable: false
114
109
 
115
110
  若用户选择 B,退出当前 plan 流程,以相同 prompt 启动 `/modus:spec`。
116
111
 
117
- **快速模式自动建议:** 若判定为 Simple 且用户未传 `--quick`,询问:
118
- ```
119
- 需求较简单,是否使用快速模式(跳过 design.md,仅生成 proposal + tasks)?[y/N]
120
- ```
121
-
122
- ### Step 4:澄清用户意图(AskUserQuestion)
123
-
124
- 确认域后,在正式启动规划前,提出 1-3 个关键澄清问题:
125
-
126
- **提问原则:**
127
- - 聚焦影响规划方向的不确定点(范围、优先级、约束条件)
128
- - 若 prompt 已足够具体,可跳过此步
129
- - 从 Skill 中已有的 `[pitfall]` 和 `[decision]` 检查是否存在相关风险点
130
-
131
- **示例问题类型:**
132
- ```
133
- 为了生成准确的规划文档,我需要确认:
134
-
135
- 1. [范围] 这次改动是否涉及 {相邻域},还是严格限定在 {domain} 域内?
136
- 2. [优先级] 功能上线有时间限制吗?影响 Sprint 拆分方式。
137
- 3. [兼容性] {已有接口/数据结构} 是否可以修改,还是需要向后兼容?
138
- 4. [规模] 预期数据量级是多少?影响技术方案选型。
139
- 5. [风险] ⚠️ Skill 中记录了已知坑:{pitfall},是否已考虑到?
140
- ```
141
-
142
- 等待用户回答后,输出意图摘要:
143
-
144
- ```
145
- 理解已确认:
146
- - 目标: {一句话概括}
147
- - 边界: {在范围内 / 不在范围内}
148
- - 约束: {技术/业务约束}
149
- - 项目硬性规则: {来自 constitution 的关键规则}
150
-
151
- 开始前置更新 Skill,然后生成规划文档。
152
- ```
112
+ ---
153
113
 
154
- ### Step 5:前置 Skill 更新(Level 2 加载,含 hash 检查)
114
+ ### Step 4:Skill 业务域加载(Level 2,含 hash 检查)
155
115
 
156
- 确认域和意图后,对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
116
+ 域确认后,对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
157
117
 
158
- #### Step 5a:读取 Skill frontmatter(轻量操作,仅读前 20 行)
118
+ #### 4-1:读取 Skill frontmatter(轻量操作,仅读前 20 行)
159
119
 
160
120
  读取 `.codebuddy/skills/modus-biz-{domain}/SKILL.md` 的 YAML frontmatter,提取:
161
121
  - `last_hash`:上次记录的 key_files 内容摘要
162
122
  - `key_files`:关键源文件列表
163
123
 
164
- 若 Skill 不存在,跳到 Step 5d(新建)。
124
+ 若 Skill 不存在,跳到 4-4(新建)。
165
125
 
166
- #### Step 5b:计算当前 key_files 的 hash
126
+ #### 4-2:计算当前 key_files 的 hash
167
127
 
168
128
  使用 Bash 对 `key_files` 列出的文件内容做 SHA-1 摘要:
169
129
 
@@ -175,19 +135,19 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
175
135
  - 若某个 `key_files` 中的文件不存在(可能已被重命名/删除),视为「已变化」,强制更新
176
136
  - 若 `key_files` 为空或缺失,视为「已变化」,强制更新
177
137
 
178
- #### Step 5c:对比 hash,决定是否跳过
138
+ #### 4-3:对比 hash,决定是否跳过
179
139
 
180
140
  ```
181
141
  当前 hash == last_hash(且 last_hash 非空)
182
142
  → ✓ modus-biz-{domain} Skill 无变化(hash 匹配),跳过前置更新(节省 ~2000 tokens)
183
143
  → 仅更新 last_referenced 日期(不读取完整代码,不修改 Skill 内容)
184
- → 继续 Step 6
144
+ → 继续 Step 5
185
145
 
186
146
  当前 hash != last_hash OR last_hash 为空
187
- → 进入 Step 5d 执行完整更新
147
+ → 进入 4-4 执行完整更新
188
148
  ```
189
149
 
190
- #### Step 5d:完整前置更新(仅在 hash 不匹配时执行)
150
+ #### 4-4:完整前置更新(仅在 hash 不匹配时执行)
191
151
 
192
152
  启动「Skill 更新 SubAgent」(`modus-harness-00-skills-builder` 模式 B),执行:
193
153
 
@@ -196,7 +156,7 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
196
156
  3. 对比 Skill 内容与代码现实,识别差异
197
157
  4. 更新 Skill 文件中过时的信息,更新 `last_referenced`、`usage_count` 和 `last_hash`
198
158
 
199
- **输出变更摘要 block(透明度关键):**
159
+ **输出变更摘要 block:**
200
160
 
201
161
  ```
202
162
  ✓ modus-biz-order Skill 已更新
@@ -212,195 +172,202 @@ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{
212
172
 
213
173
  若有未初始化的域,调用模式 A 新建 Skill(`last_hash` 留空,`key_files` 由 AI 填写)。
214
174
 
215
- ### Step 6:生成计划文档
175
+ **若所有域均已初始化且 Skill 加载成功,直接进入 Step 6,跳过 Step 5。**
216
176
 
217
- 基于更新后的 Skill 和已澄清的意图,生成文档到 `modus/plans/{name}/`。
177
+ ---
218
178
 
219
- **写入状态文件:**
220
- 创建 `modus/plans/{name}/.modus-state.yaml`:
221
- ```yaml
222
- mode: plan
223
- name: {name}
224
- status: in-progress
225
- complexity: medium # simple | medium | complex(来自 Step 3 评估)
226
- quick_mode: false # --quick flag 或 simple 复杂度时用户选择跳过 design
227
- domains: [{domain1}, {domain2}]
228
- completed: []
229
- pending: [proposal, design, design-brief, tasks] # quick_mode 时 pending 仅含 proposal + tasks
230
- created: {ISO8601时间戳}
231
- ```
179
+ ### Step 5:平台知识兜底扫描(仅在 Step 4 无命中时执行)
232
180
 
233
- **确定 plan 名称:**
234
- - 从用户 prompt 提取关键词,生成 kebab-case 名称(如 `add-batch-approve`)
235
- - 如果目录已存在,提示用户确认
181
+ `knowledge-catalog.md` 不存在,或当前需求涉及的域全部未初始化时,切换到平台知识扫描模式:
182
+
183
+ **按已启用平台依次扫描规则文件:**
184
+
185
+ | 平台 | 扫描路径 |
186
+ |------|---------|
187
+ | CodeBuddy | `.codebuddy/skills/*/SKILL.md` |
188
+ | Claude | `CLAUDE.md` + `.claude/agents/*.md` |
189
+ | Cursor | `.cursor/rules/*.mdc` |
190
+ | Copilot | `.github/copilot-instructions.md` |
236
191
 
237
- **快速模式(`--quick`)产出物:** proposal.md + tasks.md(跳过 design.md 和 design-brief.md)
192
+ 扫描完规则文件后,通过 Glob/Read 检索与用户需求关键词相关的源码文件(最多 5 个),提取架构约束与已有模式。
238
193
 
239
- **产出物依赖(完整模式):**
194
+ **输出兜底加载摘要:**
240
195
 
241
196
  ```
242
- proposal.md ─────────────┐
243
-
244
- design.md ────────────► design-brief.md ────────────► tasks.md
197
+ ⚠️ 未找到已初始化的业务 Skill,已切换到平台知识扫描模式
198
+ 已读取: .cursor/rules/modus-biz-order.mdc(Cursor 规则)
199
+ 已读取: CLAUDE.md(项目约定)
200
+ 已扫描: OrderService.java、OrderMapper.java(相关源码,共 2 个文件)
201
+ 建议后续运行 /modus:init 正式初始化该业务域 Skill
245
202
  ```
246
203
 
247
- **1. proposal.md** — 意图与范围
204
+ ---
248
205
 
249
- ```markdown
250
- # Proposal: {功能名称}
206
+ ### Step 6:精准 3 问(AskUserQuestion)
251
207
 
252
- ## 意图
253
- {为什么做,业务价值}
208
+ 基于 Step 4 或 Step 5 已加载的知识内容,向用户提出**恰好 3 个**澄清问题。
254
209
 
255
- ## 范围
256
- 在范围内:
257
- - {具体事项}
258
- 不在范围内:
259
- - {明确排除}
210
+ **生成规则(按优先级排序,必须输出恰好 3 个):**
260
211
 
261
- ## 关键约束(来自项目宪法)
262
- - {constitution.hard_rules 中与本次相关的规则}
212
+ 1. **P1 — Skill pitfall 关联问题**(最高优先级)
213
+ 若加载内容中有与当前需求相关的 `[pitfall]`,必问。
214
+ 示例:`Skill 中记录了「并发创建订单需加分布式锁」的坑,本次改动是否涉及并发写入场景?`
215
+ 若有多个相关 pitfall,选取与本次需求匹配度最高的 1 个。
263
216
 
264
- ## 已知风险 ⚠️
265
- <!-- 自动从相关业务 Skill 的 [pitfall] 标签中提取,并结合本次改动范围筛选 -->
266
- - [pitfall | 来源: modus-biz-order] {具体风险描述,如:并发创建订单时需加分布式锁}
267
- - [pitfall | 来源: modus-team-conventions] {具体风险描述,如:@Transactional 内部调用不生效}
268
- <!-- 若相关 Skill 中无 [pitfall] 记录,此章节留空或注明"暂无已知风险" -->
217
+ 2. **P2 — 范围/边界问题**
218
+ 影响规划深度的不确定点(跨域边界、兼容性要求、数据量级)。
219
+ 示例:`这次改动是否需要向后兼容旧的导出格式,还是可以直接替换?`
269
220
 
270
- ## 影响分析
271
- 涉及文件变更(预估):
272
- - {文件路径} — {新增/修改/删除,一句话说明变更目的}
221
+ 3. **P3 — 优先级/约束问题**
222
+ 时间窗口、技术选型偏好、外部依赖。
223
+ 示例:`功能是否有明确的上线时间节点?这会影响 Sprint 拆分方式。`
224
+
225
+ **若 pitfall 不存在**,P1 改为「核心目标澄清」:本次改动的最高优先级目标是什么?
226
+
227
+ 等待用户回答后,输出意图确认摘要:
273
228
 
274
- ## 方案概述
275
- {技术路径的高层描述}
276
229
  ```
230
+ 理解已确认:
231
+ - 目标: {一句话概括}
232
+ - 边界: {在范围内 / 不在范围内}
233
+ - 约束: {技术/业务约束}
234
+ - 项目硬性规则: {来自 constitution 的关键规则}
277
235
 
278
- **已知风险章节的生成规则:**
279
- 1. 从 Step 5 已加载的业务 Skill 内容中,提取所有 `[pitfall]` 标签条目
280
- 2. 结合本次改动范围(涉及的域、预估的文件变更),筛选与当前功能相关的 pitfall
281
- 3. 每条 pitfall 注明来源 Skill(`来源: modus-biz-{domain}` 或 `来源: modus-team-conventions`)
282
- 4. 若无相关 pitfall,写 `暂无已知风险(相关 Skill 中未记录 pitfall)`,而非省略章节
236
+ 开始生成 plan.md。
237
+ ```
283
238
 
284
- **2. design.md** — 技术方案
239
+ ---
285
240
 
286
- ```markdown
287
- # Design: {功能名称}
241
+ ### Step 7:生成 plan.md
288
242
 
289
- ## 技术方案
290
- {详细实现路径,引用具体的类/方法/接口}
243
+ 基于已加载的知识和用户确认的意图,生成单一规划文档到 `modus/plans/{name}/plan.md`。
291
244
 
292
- ## 架构决策记录(ADR)[decision]
293
- <!-- 每个有技术选型的决策点独立记录,后续可沉淀到 modus-tech-wiki -->
245
+ **确定 plan 名称:**
246
+ - 从用户 prompt 提取关键词,生成 kebab-case 名称(如 `add-batch-approve`)
247
+ - 如果目录已存在,提示用户确认
294
248
 
295
- ### ADR-01: {决策点标题,如"选择异步 MQ 而非同步 RPC"}
249
+ **写入状态文件:**
250
+ 创建 `modus/plans/{name}/.modus-state.yaml`:
251
+ ```yaml
252
+ mode: plan
253
+ name: {name}
254
+ status: in-progress
255
+ complexity: medium # simple | medium | complex(来自 Step 3 评估)
256
+ domains: [{domain1}, {domain2}]
257
+ completed: []
258
+ pending: [plan]
259
+ created: {ISO8601时间戳}
260
+ ```
296
261
 
297
- | 字段 | 内容 |
298
- |------|------|
299
- | 状态 | 已采纳 / 被否决 / 待评估 |
300
- | 背景 | {为什么需要做这个决策,2-3 句话} |
301
- | 选项 | A. {方案A} / B. {方案B} / C. {方案C} |
302
- | 决策 | 选择方案 {X} |
303
- | 原因 | {选择理由,包括技术/业务/成本考量} |
304
- | 放弃理由 | 方案 {Y}:{为什么不选,如:实时性要求高不适合 MQ} |
305
- | 影响 | {此决策对系统的长期影响,如:引入 MQ 后需维护消费者幂等性} |
262
+ **plan.md 内容结构(对齐 Cursor CreatePlan 风格):**
306
263
 
307
- <!-- 若有多个决策点,继续添加 ADR-02, ADR-03... -->
264
+ ```markdown
265
+ # Plan: {功能名称}
308
266
 
309
- ## 数据流
310
- {文字或 mermaid 图}
267
+ ## 概述
268
+ {1-2 句话,说明做什么、为什么做,以及核心业务价值}
311
269
 
312
- ## 涉及文件变更
313
- - {文件路径} — {新增/修改/删除,一句话说明变更目的}
314
- ```
270
+ ## 关键约束(来自项目宪法)
271
+ - {constitution.hard_rules 中与本次相关的规则}
272
+ <!-- 若无相关规则,写「以通用团队约定为准」 -->
315
273
 
316
- **ADR 使用规则:**
317
- - 每个有选型空间的技术决策都应记录一个 ADR
318
- - 若 Skill 中有 `[decision]` 标签记录了类似决策,在 ADR 背景中引用:`(参考 modus-biz-order 的历史决策:...)`
319
- - 后置 Skill 更新时,每个 ADR 条目将自动提取为 `[decision]` 写入 `modus-tech-wiki`
274
+ ## 已知风险 ⚠️
275
+ <!-- 自动从相关业务 Skill 的 [pitfall] 标签中提取,结合本次改动范围筛选 -->
276
+ - [pitfall | 来源: modus-biz-order] {具体风险描述,如:并发创建订单时需加分布式锁}
277
+ - [pitfall | 来源: modus-team-conventions] {具体风险描述,如:@Transactional 内部调用不生效}
278
+ <!-- 若无相关 pitfall,写「暂无已知风险(相关 Skill 中未记录 pitfall)」 -->
320
279
 
321
- **3. design-brief.md** — 设计方案(代码开发前的精确实现指南)
280
+ ## 方案选项对比
281
+ - 方案 A(推荐):{简述实现路径} — 优:{优点};劣:{劣点或适用前提}
282
+ - 方案 B:{简述替代路径} — 优:{优点};劣:{劣点或排除理由}
283
+ <!-- 若只有一种可行方案,写「仅一种可行方案,原因:{说明}」 -->
322
284
 
323
- 调用 `modus-design-brief` Skill,传入:
324
- - `mode: plan`
325
- - `output_path: modus/plans/{name}/design-brief.md`
326
- - `analysis_doc: proposal.md 内容`
327
- - `business_skills: 已加载的 Skill 内容`
328
- - `constitution: constitution 字段`
285
+ ## 实现 Todos
286
+ - [ ] 1. 数据层:{具体任务,如「新增 order_export 表,含 status/created_by 字段」}
287
+ - [ ] 2. 服务层:{具体任务}
288
+ - [ ] 3. 接口层:{具体任务}
289
+ - [ ] 4. 测试:单元测试 + 接口联调
329
290
 
330
- 生成后更新 `.modus-state.yaml` 的 `completed` 列表(追加 `design-brief`),并在 `pending` 中移除。
291
+ ## 影响文件(预估)
292
+ - `{文件路径}` — {新增/修改/删除,一句话说明变更目的}
293
+ ```
331
294
 
332
- **4. tasks.md** — 实现清单
295
+ **已知风险生成规则:**
296
+ 1. 从 Step 4/5 已加载内容中,提取所有 `[pitfall]` 标签条目
297
+ 2. 结合本次改动范围筛选相关条目,每条注明来源 Skill
298
+ 3. 若无相关 pitfall,明确写出而非省略章节
333
299
 
334
- ```markdown
335
- # Tasks: {功能名称}
300
+ 生成完成后更新 `.modus-state.yaml` 的 `completed` 列表(追加 `plan`)并从 `pending` 中移除。
336
301
 
337
- ## 1. 数据层
338
- - [ ] 1.1 {具体任务}
302
+ ---
339
303
 
340
- ## 2. 服务层
341
- - [ ] 2.1 {具体任务}
304
+ ### Step 8:Build 确认循环 ⏸️ 【人工审批节点】
342
305
 
343
- ## 3. 接口层
344
- - [ ] 3.1 {具体任务}
306
+ plan.md 生成后,展示结果并进入确认循环:
345
307
 
346
- ## 4. 测试
347
- - [ ] 4.1 单元测试
348
- - [ ] 4.2 接口联调
349
308
  ```
309
+ ✅ plan.md 已就绪:modus/plans/{name}/plan.md
350
310
 
351
- 生成每份文档后更新 `.modus-state.yaml` 的 `completed` 列表。
352
-
353
- ### Step 7:询问归档 ⏸️ 【人工审批节点】
311
+ ──────────────────────────────────────────
312
+ 你可以:
313
+ [修改] 直接说出修改意见,我会更新 plan.md,更新后再次展示
314
+ [Build] 确认方案,开始按 plan.md 中的 Todos 生成代码
315
+ [归档] 仅保存文档,暂不执行代码生成
354
316
 
317
+ 等待你的指令。
355
318
  ```
356
- 计划文档已生成:
357
- modus/plans/{name}/proposal.md
358
- modus/plans/{name}/design.md
359
- modus/plans/{name}/design-brief.md
360
- modus/plans/{name}/tasks.md
361
319
 
362
- 状态文件:modus/plans/{name}/.modus-state.yaml
320
+ ⏸️ **等待人工确认**
363
321
 
364
- 是否归档?归档后文档将移动到 modus/plans/archive/{YYYY-MM-DD}-{name}/
365
- (归档前可以继续编辑文档)
366
- ```
322
+ **循环逻辑:**
323
+ - 用户提出修改意见 → 更新 `plan.md` → 重新输出上述确认提示(循环,无次数限制)
324
+ - 用户回复「Build」/「开始」/「执行」→ 退出循环,以 `plan.md` 中的 Todos 为输入,启动 `/modus:vibe` 执行代码生成
325
+ - 用户回复「归档」/「稍后」→ 走归档流程,不启动代码生成
367
326
 
368
- ⏸️ **等待人工确认**(支持异步:可以在任意时间、任意设备上回复)
327
+ **Build 触发后:**
328
+ ```
329
+ 🚀 开始执行 plan.md 中的 Todos,启动 /modus:vibe...
330
+ 读取: modus/plans/{name}/plan.md
331
+ 执行范围: {Todos 列表}
332
+ ```
369
333
 
370
- 用户确认归档后:
371
- 1. 将目录移动到 `modus/plans/archive/{date}-{name}/`
334
+ **归档流程(用户选择归档时):**
335
+ 1. 将目录移动到 `modus/plans/archive/{YYYY-MM-DD}-{name}/`
372
336
  2. 更新 `.modus-state.yaml`:`status: archived`
373
- 3. 回复:`✓ 已归档到 modus/plans/archive/{date}-{name}/`
337
+ 3. 输出:`✓ 已归档到 modus/plans/archive/{YYYY-MM-DD}-{name}/,可随时运行 /modus:vibe 参考此文档开始编码`
338
+
339
+ ---
374
340
 
375
- ### Step 8:后置 Skill 更新(知识回写)
341
+ ### Step 9:后置 Skill 更新(知识回写)
376
342
 
377
- 归档完成后(或用户选择不归档但完成了规划),执行后置 Skill 更新(模式 C):
343
+ 无论用户选择 Build 还是归档,规划阶段完成后即执行后置知识回写(模式 C):
378
344
 
379
- 1. 从本次生成的 design.md 中提取所有 ADR 条目:
380
- - 每个 ADR → `[decision]` 写入 `modus-tech-wiki`(跨项目决策)或对应业务 Skill(域特有决策)
381
- - ADR 中的「影响」字段若包含风险点 → 同时写为 `[pitfall]`
382
- 2. 从 proposal.md 的「已知风险」章节中提取任何**本次新发现的**风险(非来自现有 Skill 的已有记录):
345
+ 1. `plan.md` 的「方案选项对比」中提取技术决策:
346
+ - 每个有选型依据的决策 → `[decision]` 写入 `modus-tech-wiki`(跨项目)或对应业务 Skill(域特有)
347
+ 2. 从「已知风险」章节中提取**本次新发现的**风险(非来自现有 Skill 的已有记录):
383
348
  - 新发现的风险 → `[pitfall]` 追加到对应业务 Skill
384
- 3. tasks.md 中提取具体的编码模式或约束 → `[guideline]`
349
+ 3. 从「实现 Todos」中提取具体的编码模式或约束 → `[guideline]`
385
350
  4. 更新 `modus/knowledge-catalog.md` 的 `last_referenced` 和 maturity
386
351
  5. 输出更新摘要:
387
352
  ```
388
353
  📚 知识已回写到 Skill:
389
- - [decision] tech-wiki:批量审批走 MQ 异步(ADR-01)
390
- - [decision] tech-wiki:Redis 分布式锁 key 格式规范(ADR-02)
354
+ - [decision] tech-wiki:批量审批走 MQ 异步
391
355
  - [guideline] order 域:批量操作上限 50 条,防止内存溢出
392
- - [pitfall] order 域:MQ 消费者需保证幂等性(来自 ADR-01 影响分析)
356
+ - [pitfall] order 域:MQ 消费者需保证幂等性
393
357
  maturity 变化: modus-biz-order draft→verified
394
358
  ```
395
359
 
396
- ### Step 9:多平台 Skill 同步(后置)
360
+ ---
361
+
362
+ ### Step 10:多平台 Skill 同步(后置)
397
363
 
398
364
  知识回写完成后,对所有本次**更新或新建**的业务 Skill 执行多平台同步。
399
365
 
400
366
  **逻辑:**
401
367
 
402
368
  1. 读取 `modus/config.yaml` 的 `platforms` 字段
403
- 2. 对受影响的每个业务域(Step 5 前置更新 / 新建的域),按以下规则同步:
369
+ 2. 对受影响的每个业务域(Step 4 前置更新 / 新建的域),按以下规则同步:
370
+ - **CodeBuddy** → 源文件即 `.codebuddy/skills/modus-biz-{domain}/SKILL.md`(已更新,无需额外操作)
404
371
  - **Claude** → 写入 `.claude/agents/modus-biz-{domain}.md`(覆盖旧版本)
405
372
  - **Cursor** → 写入 `.cursor/rules/modus-biz-{domain}.mdc`(带 frontmatter,覆盖旧版本)
406
373
  - **Copilot** → 在 `.github/copilot-instructions.md` 中替换对应域的标记段落
@@ -424,15 +391,9 @@ modus/
424
391
  ├── plans/
425
392
  │ ├── add-batch-approve/ ← 活跃计划(未归档)
426
393
  │ │ ├── .modus-state.yaml ← 状态文件(断点续跑用)
427
- │ │ ├── proposal.md
428
- │ │ ├── design.md
429
- │ │ ├── design-brief.md ← 设计方案(代码开发前的实现指南)
430
- │ │ └── tasks.md
394
+ │ │ └── plan.md ← 唯一规划文档(概述/风险/方案对比/Todos/影响文件)
431
395
  │ └── archive/
432
396
  │ └── 2026-04-20-add-batch-approve/
433
397
  │ ├── .modus-state.yaml ← status: archived
434
- ├── proposal.md
435
- │ ├── design.md
436
- │ ├── design-brief.md
437
- │ └── tasks.md
398
+ └── plan.md
438
399
  ```