@modus-ai/modus 0.2.8 → 0.2.10
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.
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/generators/claude.js +2 -2
- package/dist/generators/claude.js.map +1 -1
- package/dist/generators/codebuddy.d.ts.map +1 -1
- package/dist/generators/codebuddy.js +3 -1
- package/dist/generators/codebuddy.js.map +1 -1
- package/dist/generators/codex.js +1 -1
- package/dist/generators/codex.js.map +1 -1
- package/dist/generators/copilot.js +1 -1
- package/dist/generators/copilot.js.map +1 -1
- package/dist/generators/cursor.d.ts.map +1 -1
- package/dist/generators/cursor.js +7 -2
- package/dist/generators/cursor.js.map +1 -1
- package/dist/utils/config.js +1 -1
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
- package/templates/commands/cr.md +74 -0
- package/templates/commands/plan.md +36 -13
- package/templates/skills/modus-cr/SKILL.md +386 -0
- package/templates/skills/modus-plan/SKILL.md +327 -39
|
@@ -27,6 +27,7 @@ disable: false
|
|
|
27
27
|
--help → 输出帮助文档,结束执行
|
|
28
28
|
--design → DESIGN_MODE=true(进入设计评审分支,见「Design Mode 流程」)
|
|
29
29
|
--continue X → CONTINUE_MODE=true,PLAN_NAME=X(进入接力分支,见「Continue 流程」)
|
|
30
|
+
--code X → CODE_MODE=true,CODE_PLAN=X(进入任务驱动编码分支,见「Code Mode 流程」)
|
|
30
31
|
--quick → QUICK_MODE=true(跳过域确认和澄清问题)
|
|
31
32
|
--story X → STORY_ID=X(关联 TAPD Story)
|
|
32
33
|
--project X → PROJECT=X(多项目指定)
|
|
@@ -43,8 +44,11 @@ disable: false
|
|
|
43
44
|
检测到 --continue X?
|
|
44
45
|
是 → 跳转到「Continue 流程」(完整独立流程,不执行 Step 0-9)
|
|
45
46
|
|
|
47
|
+
检测到 --code X?
|
|
48
|
+
是 → 跳转到「Code Mode 流程」(完整独立流程,不执行 Step 0-9)
|
|
49
|
+
|
|
46
50
|
检测到 --design?
|
|
47
|
-
是 → 执行 Step 0→Step 1→Step 2→Step 3→Step 4→Step 5→Step 6→Design Mode Step 7(生成
|
|
51
|
+
是 → 执行 Step 0→Step 1→Step 2→Step 3→Step 4→Step 5→Step 6→Design Mode Step 7(生成 design.md + tasks.md 后暂停)
|
|
48
52
|
否 → 执行标准流程(Step 0 → Step 9)
|
|
49
53
|
```
|
|
50
54
|
|
|
@@ -383,82 +387,226 @@ created: {ISO8601时间戳}
|
|
|
383
387
|
|
|
384
388
|
---
|
|
385
389
|
|
|
386
|
-
### Step 7(Design Mode
|
|
390
|
+
### Step 7(Design Mode 分支):多 Artifact 设计文档生成 ⏸️ 【人工审批节点】
|
|
387
391
|
|
|
388
392
|
> **仅在 DESIGN_MODE=true 时执行此分支,替代标准 Step 8(Build 循环)。**
|
|
393
|
+
> 参考:speckit.plan 三阶段 + opsx:propose DAG 状态机
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
#### Phase R:Research(技术可行性研究)
|
|
389
398
|
|
|
390
|
-
|
|
399
|
+
> **来源:speckit.plan Phase 0** — 先消除所有「NEEDS CLARIFICATION」再进入设计
|
|
391
400
|
|
|
392
|
-
|
|
401
|
+
**复杂度 ≥ medium 时执行,生成 `research.md`;simple 时跳过(研究内容内联融入 design.md)。**
|
|
402
|
+
|
|
403
|
+
执行步骤:
|
|
404
|
+
1. 基于 Step 4/5 已加载的业务 Skill,定位关键源码文件(`key_files` + 额外 Glob 扫描)
|
|
405
|
+
2. 扫描目标:
|
|
406
|
+
- 现有代码中与本需求相关的类/方法(复用点 + 修改点)
|
|
407
|
+
- 依赖库版本与 API 兼容性
|
|
408
|
+
- 数据库现有表结构(如有变更)
|
|
409
|
+
- 外部接口契约(如有跨服务调用)
|
|
410
|
+
3. 识别所有「NEEDS CLARIFICATION」点,若有未澄清项且 Step 6 未覆盖,补问(最多 2 个)
|
|
411
|
+
4. 复杂度 ≥ medium 时落盘 `modus/plans/{name}/research.md`:
|
|
393
412
|
|
|
394
413
|
```markdown
|
|
395
|
-
|
|
414
|
+
# Research: {功能名称}
|
|
415
|
+
|
|
416
|
+
## 现有代码分析
|
|
417
|
+
| 类/方法 | 文件路径 | 与本需求的关系 | 变更类型 |
|
|
418
|
+
|---|---|---|---|
|
|
419
|
+
| {ClassName#method} | {路径} | {复用/修改/新建} | {说明} |
|
|
420
|
+
|
|
421
|
+
## 技术可行性
|
|
422
|
+
- **依赖版本**:{版本信息与兼容性说明}
|
|
423
|
+
- **现有模式**:{项目已有的相似实现,可复用的设计模式}
|
|
424
|
+
- **技术障碍**:{如有,列出并说明解决思路}
|
|
425
|
+
|
|
426
|
+
## 已消除的模糊点
|
|
427
|
+
| 原问题 | 澄清结果 | 来源 |
|
|
428
|
+
|---|---|---|
|
|
429
|
+
| {模糊点描述} | {明确结论} | {Skill/代码扫描/用户确认} |
|
|
430
|
+
|
|
431
|
+
## 数据库影响(如有)
|
|
432
|
+
- {表名}:{新增字段/新建表/索引变更}
|
|
433
|
+
|
|
434
|
+
## 外部依赖(如有)
|
|
435
|
+
- {服务/接口}:{调用方式/影响说明}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**更新 `.modus-state.yaml` 中的 artifact 状态:**
|
|
439
|
+
```yaml
|
|
440
|
+
artifacts:
|
|
441
|
+
research: done # 或 skipped(simple 复杂度时)
|
|
442
|
+
design: ready
|
|
443
|
+
tasks: blocked # 依赖 design
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
#### Phase D:Design(DAG 顺序生成 design.md + tasks.md)
|
|
449
|
+
|
|
450
|
+
> **来源:opsx:propose DAG 状态机 + speckit.tasks T-ID 任务格式**
|
|
451
|
+
|
|
452
|
+
**DAG 依赖:** `research(done|skipped) → design(ready) → tasks(ready after design done)`
|
|
453
|
+
|
|
454
|
+
**Artifact 1:`modus/plans/{name}/design.md`**
|
|
455
|
+
|
|
456
|
+
生成完整技术设计文档(9 节结构):
|
|
457
|
+
|
|
458
|
+
```markdown
|
|
459
|
+
---
|
|
460
|
+
schema_version: "1.2"
|
|
461
|
+
agent: "plan"
|
|
462
|
+
design_mode: true
|
|
463
|
+
status: "pending_review"
|
|
464
|
+
risk_level: "{low|medium|high}"
|
|
465
|
+
estimated_effort: "{XS|S|M|L|XL}"
|
|
466
|
+
continue_token: ""
|
|
467
|
+
---
|
|
396
468
|
|
|
397
|
-
|
|
469
|
+
# Design: {功能名称}
|
|
470
|
+
|
|
471
|
+
## 1. 需求解读(5W1H)
|
|
398
472
|
| 维度 | 内容 |
|
|
399
473
|
|------|------|
|
|
400
|
-
| Who
|
|
474
|
+
| Who | {谁发起/谁受益} |
|
|
401
475
|
| What | {要做什么} |
|
|
402
|
-
| Why
|
|
476
|
+
| Why | {业务价值/驱动因素} |
|
|
403
477
|
| When | {预期上线时间/Sprint} |
|
|
404
478
|
| Where | {涉及系统/服务范围} |
|
|
405
|
-
| How
|
|
479
|
+
| How | {核心实现思路} |
|
|
406
480
|
|
|
407
|
-
|
|
481
|
+
## 2. 技术方案对比(3 个候选方案)
|
|
408
482
|
|
|
409
483
|
| | 方案 A(推荐) | 方案 B | 方案 C |
|
|
410
484
|
|---|---|---|---|
|
|
411
485
|
| 实现思路 | ... | ... | ... |
|
|
412
|
-
| 优点
|
|
486
|
+
| 优点 | ... | ... | ... |
|
|
413
487
|
| 缺点/风险 | ... | ... | ... |
|
|
414
488
|
| 实现成本 | ... | ... | ... |
|
|
415
489
|
|
|
416
|
-
**推荐方案:方案 A**
|
|
490
|
+
**推荐方案:方案 A**
|
|
417
491
|
理由:{1-2 句话}
|
|
418
492
|
|
|
419
|
-
|
|
493
|
+
## 3. 影响范围(方法级)
|
|
420
494
|
| 文件 | 类/方法 | 变更类型 | 影响说明 |
|
|
421
495
|
|------|--------|---------|---------|
|
|
422
496
|
| {路径} | {类名.方法名} | 新增/修改/删除 | {说明} |
|
|
423
497
|
|
|
424
|
-
|
|
425
|
-
{
|
|
498
|
+
## 4. API 契约草稿
|
|
499
|
+
{若有接口新增/修改,列出方法签名和请求/响应结构}
|
|
500
|
+
|
|
501
|
+
## 5. 数据模型变更(如有)
|
|
502
|
+
{DDL 变更 / 实体字段新增 / 枚举定义}
|
|
426
503
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
504
|
+
## 6. 关键约束(来自项目宪法)
|
|
505
|
+
- {constitution.hard_rules 中与本次相关的规则}
|
|
506
|
+
|
|
507
|
+
## 7. 已知风险 ⚠️
|
|
508
|
+
| 风险 | 等级 | 应对方案 | 来源 Skill |
|
|
509
|
+
|------|------|---------|-----------|
|
|
510
|
+
| {风险描述} | P1/P2 | {方案} | {Skill 名称} |
|
|
431
511
|
|
|
432
|
-
|
|
512
|
+
## 8. 估时
|
|
433
513
|
- 预估工作量:{XS/S/M/L/XL}({N 个工作日})
|
|
434
514
|
- 主要耗时点:{1-2 句话}
|
|
515
|
+
|
|
516
|
+
## 9. 相关文档
|
|
517
|
+
- research.md: {存在时附路径,否则「已跳过(simple 复杂度)」}
|
|
518
|
+
- tasks.md: {路径}
|
|
435
519
|
```
|
|
436
520
|
|
|
437
|
-
|
|
521
|
+
**更新 `.modus-state.yaml`:** `artifacts.design: done`,`artifacts.tasks: ready`
|
|
522
|
+
|
|
523
|
+
**Artifact 2:`modus/plans/{name}/tasks.md`**
|
|
524
|
+
|
|
525
|
+
生成 spec-kit 风格的带 T-ID 任务清单:
|
|
526
|
+
|
|
527
|
+
```markdown
|
|
528
|
+
# Tasks: {功能名称}
|
|
529
|
+
> 来源:design.md | 生成时间:{YYYY-MM-DD}
|
|
530
|
+
|
|
531
|
+
## Phase 1:数据层
|
|
532
|
+
- [ ] T001 [P1] [Req:数据模型] 创建/修改 {表名} — `{路径/文件名}`
|
|
533
|
+
- [ ] T002 [P1] [Req:数据模型] 新增 {MapperClass}#{method} — `{路径}`
|
|
534
|
+
|
|
535
|
+
## Phase 2:服务层
|
|
536
|
+
- [ ] T003 [P1] [Req:核心逻辑] 实现 {ManagerClass}#{method}(@Transactional) — `{路径}`
|
|
537
|
+
- [ ] T004 [P2] [Req:核心逻辑] 单元测试:{TestClass}#{testMethod} — `{路径}`
|
|
538
|
+
|
|
539
|
+
## Phase 3:接口层
|
|
540
|
+
- [ ] T005 [P1] [Req:接口契约] 实现 {FacadeClass}#{method}(含参数校验) — `{路径}`
|
|
541
|
+
- [ ] T006 [P2] [Req:接口契约] 接口测试:{TestClass}#{integrationTest} — `{路径}`
|
|
542
|
+
|
|
543
|
+
## Phase 4:配套工作
|
|
544
|
+
- [ ] T007 [P3] [Req:可观测性] 补充关键日志(入参/出参/异常) — `{路径}`
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
**任务格式规范(强制):**
|
|
548
|
+
- 任务 ID:`T{三位数字}`,在本 tasks.md 内唯一递增
|
|
549
|
+
- 优先级:`[P1]`(必须完成)、`[P2]`(应该完成)、`[P3]`(建议完成)
|
|
550
|
+
- 需求引用:`[Req:{简短描述}]`,对应 design.md 中的需求点
|
|
551
|
+
- 文件路径:以 `— \`{相对路径}\`` 结尾(供 `--code` 模式快速定位)
|
|
552
|
+
- 测试任务(含「测试」「Test」关键词)在同 phase 内置于实现任务之后
|
|
553
|
+
|
|
554
|
+
**更新 `.modus-state.yaml`:** `artifacts.tasks: done`
|
|
438
555
|
|
|
439
|
-
```yaml
|
|
440
|
-
---
|
|
441
|
-
schema_version: "1.2"
|
|
442
|
-
agent: "plan"
|
|
443
|
-
design_mode: true
|
|
444
|
-
status: "pending_review"
|
|
445
|
-
risk_level: "{low|medium|high}"
|
|
446
|
-
estimated_effort: "{XS|S|M|L|XL}"
|
|
447
|
-
continue_token: ""
|
|
448
556
|
---
|
|
557
|
+
|
|
558
|
+
#### Phase A:Analyze(自检一致性,只读)
|
|
559
|
+
|
|
560
|
+
> **来源:speckit.analyze** — 禁止修改任何文件,仅输出内联分析报告
|
|
561
|
+
|
|
562
|
+
**交叉检查 design.md × tasks.md:**
|
|
563
|
+
|
|
564
|
+
| 检查项 | 说明 | 严重度 |
|
|
565
|
+
|--------|------|--------|
|
|
566
|
+
| 任务覆盖缺失 | design.md 中某需求点在 tasks.md 无对应任务 | HIGH |
|
|
567
|
+
| 任务冗余 | tasks.md 中某任务无法追溯到 design.md 需求点 | MEDIUM |
|
|
568
|
+
| 风险未对应任务 | design.md「已知风险」中 P1 风险无对应防护任务 | HIGH |
|
|
569
|
+
| 估时与任务量不匹配 | 任务总量与估时明显不符(如 XS 却有 20+ 任务) | MEDIUM |
|
|
570
|
+
| 关键约束未落地 | constitution.hard_rules 中某规则在任务中无体现 | HIGH |
|
|
571
|
+
| 测试任务缺失 | Phase 2/3 无任何测试任务 | MEDIUM |
|
|
572
|
+
|
|
573
|
+
**严重度处理规则:**
|
|
574
|
+
- **HIGH** → 输出警告,列出具体缺失项,**暂停并询问用户是否修正**
|
|
575
|
+
- **MEDIUM** → 列出建议,但**不阻塞**,继续到暂停节点
|
|
576
|
+
- **LOW** → 仅记录,不展示
|
|
577
|
+
|
|
578
|
+
**输出示例:**
|
|
579
|
+
```
|
|
580
|
+
🔍 一致性自检完成
|
|
581
|
+
HIGH(需确认):
|
|
582
|
+
⚠️ design.md 第 7 节风险「并发写入需加分布式锁」在 tasks.md 中无对应任务
|
|
583
|
+
建议:在 Phase 2 新增 T00X [P1] 实现分布式锁保护
|
|
584
|
+
MEDIUM(建议):
|
|
585
|
+
ℹ️ Phase 3 缺少接口集成测试任务,建议补充
|
|
586
|
+
|
|
587
|
+
是否根据以上建议更新 design.md / tasks.md?[Y/n]
|
|
449
588
|
```
|
|
450
589
|
|
|
451
|
-
|
|
590
|
+
- **用户确认修正** → 自动更新对应文件,重新执行 Phase A 检查
|
|
591
|
+
- **用户跳过** → 直接进入暂停节点
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
#### Design Mode 暂停节点 ⏸️
|
|
452
596
|
|
|
453
597
|
```
|
|
454
|
-
✅
|
|
455
|
-
|
|
598
|
+
✅ 设计文档已就绪:modus/plans/{name}/
|
|
599
|
+
├── research.md — {已生成 | 已跳过(simple 复杂度)}
|
|
600
|
+
├── design.md — 待评审 | 风险:{level} | 估时:{effort}
|
|
601
|
+
└── tasks.md — {N} 个任务(P1: {n1} / P2: {n2} / P3: {n3})
|
|
456
602
|
|
|
457
603
|
──────────────────────────────────────────
|
|
458
|
-
📋
|
|
604
|
+
📋 设计文档包含:5W1H / 3 个候选方案 / 方法级影响范围 / API 草稿 / 风险点 / 估时
|
|
605
|
+
📋 任务清单:{N} 个带 T-ID 和优先级的任务,按 phase 分组
|
|
459
606
|
|
|
460
|
-
⏸️
|
|
461
|
-
/modus:plan --continue {name}
|
|
607
|
+
⏸️ 等待人工技术评审。评审通过后可运行:
|
|
608
|
+
A. /modus:plan --continue {name} → 接力 harness 全流程开发
|
|
609
|
+
B. /modus:plan --code modus/plans/{name}/design.md → 直接任务驱动编码
|
|
462
610
|
──────────────────────────────────────────
|
|
463
611
|
```
|
|
464
612
|
|
|
@@ -585,12 +733,15 @@ plan.md 生成后,展示结果并进入确认循环:
|
|
|
585
733
|
modus/
|
|
586
734
|
├── plans/
|
|
587
735
|
│ ├── add-batch-approve/ ← 活跃计划(未归档)
|
|
588
|
-
│ │ ├── .modus-state.yaml ←
|
|
589
|
-
│ │
|
|
736
|
+
│ │ ├── .modus-state.yaml ← 状态文件(含 artifacts DAG 状态)
|
|
737
|
+
│ │ ├── plan.md ← 标准模式产出(概述/风险/方案对比/Todos/影响文件)
|
|
738
|
+
│ │ ├── design.md ← --design 模式产出(9 节技术设计文档)
|
|
739
|
+
│ │ ├── tasks.md ← --design 模式产出(spec-kit T-ID 任务清单)
|
|
740
|
+
│ │ └── research.md ← --design 模式产出(复杂度 ≥ medium 时生成)
|
|
590
741
|
│ └── archive/
|
|
591
742
|
│ └── 2026-04-20-add-batch-approve/
|
|
592
743
|
│ ├── .modus-state.yaml ← status: archived
|
|
593
|
-
│ └── plan.md
|
|
744
|
+
│ └── plan.md / design.md / tasks.md / research.md
|
|
594
745
|
```
|
|
595
746
|
|
|
596
747
|
---
|
|
@@ -681,3 +832,140 @@ SA03 将读取 plan.md 中的「实现 Todos」作为代码开发计划。
|
|
|
681
832
|
```json
|
|
682
833
|
{"ts":"{ISO8601}","type":"plan_relay","plan_name":"{name}","continue_token":"{token}","skipped_stages":["01-analysis","02-design"]}
|
|
683
834
|
```
|
|
835
|
+
|
|
836
|
+
---
|
|
837
|
+
|
|
838
|
+
## Code Mode 流程(--code 模式,独立完整流程)
|
|
839
|
+
|
|
840
|
+
> **触发条件:** 用户运行 `/modus:plan --code <技术方案路径或描述>` 时进入此流程。
|
|
841
|
+
> **来源:** opsx:apply contextFiles 状态机 + speckit.implement TDD 逐任务执行
|
|
842
|
+
|
|
843
|
+
### Code Step 0:解析 [技术方案] 参数
|
|
844
|
+
|
|
845
|
+
判断 `CODE_PLAN` 参数的输入类型并选择处理路径:
|
|
846
|
+
|
|
847
|
+
```
|
|
848
|
+
1. 文件路径(以 .md 结尾)→ FILE_MODE
|
|
849
|
+
- 读取该文件作为技术方案(design.md 或 plan.md)
|
|
850
|
+
- 在同目录查找 tasks.md
|
|
851
|
+
|
|
852
|
+
2. 目录路径(以 / 结尾,或目录存在)→ DIR_MODE
|
|
853
|
+
- 在目录内按优先级查找主文档:design.md > plan.md
|
|
854
|
+
- 在同目录查找 tasks.md
|
|
855
|
+
|
|
856
|
+
3. 内联描述(非路径字符串)→ INLINE_MODE
|
|
857
|
+
- 提示:
|
|
858
|
+
📋 未找到设计文档文件。建议:
|
|
859
|
+
A. 先运行 /modus:plan --design <描述> 生成设计文档,再运行 --code
|
|
860
|
+
B. 在此基础上继续,将自动生成简版 tasks.md(仅含基本任务结构)
|
|
861
|
+
请选择 [A/b]:
|
|
862
|
+
- 用户选 B 时:基于描述生成简版 tasks.md(跳过 research 和 design 阶段)
|
|
863
|
+
```
|
|
864
|
+
|
|
865
|
+
---
|
|
866
|
+
|
|
867
|
+
### Code Step 1:加载上下文(contextFiles)
|
|
868
|
+
|
|
869
|
+
按 opsx:apply 的 contextFiles 模式,依次读取:
|
|
870
|
+
|
|
871
|
+
1. 技术方案主文档(design.md / plan.md)
|
|
872
|
+
2. tasks.md(任务清单,含 checkbox 和 T-ID;若不存在则提示生成)
|
|
873
|
+
3. research.md(若存在,作为代码上下文补充)
|
|
874
|
+
4. `modus/config.yaml` constitution
|
|
875
|
+
5. 相关业务 Skill(从 `knowledge-catalog.md` 按域匹配,仅 hash 检查,不触发全量更新)
|
|
876
|
+
|
|
877
|
+
加载完成后输出上下文摘要:
|
|
878
|
+
|
|
879
|
+
```
|
|
880
|
+
📚 上下文加载完成
|
|
881
|
+
主文档:{design.md 路径}({功能名称})
|
|
882
|
+
任务清单:{tasks.md 路径}(共 {N} 个任务,已完成 {M} 个)
|
|
883
|
+
业务域:{domain1}, {domain2}
|
|
884
|
+
约束:{constitution.hard_rules 摘要}
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
---
|
|
888
|
+
|
|
889
|
+
### Code Step 2:任务状态检查(state machine)
|
|
890
|
+
|
|
891
|
+
扫描 tasks.md 中所有 `- [ ]` 和 `- [x]` 任务,计算状态:
|
|
892
|
+
|
|
893
|
+
```
|
|
894
|
+
state = all_done → 所有任务已完成(无 [ ] 任务)
|
|
895
|
+
state = blocked → 存在依赖未满足(tasks.md 中存在 <!-- blocked: {原因} --> 注释)
|
|
896
|
+
state = ready → 存在可执行的待完成任务
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
| state | 输出 |
|
|
900
|
+
|-------|------|
|
|
901
|
+
| `all_done` | ✅ 所有 {N} 个任务已完成!建议运行 `/modus:cr --doc {design.md 路径}` 进行代码评审 |
|
|
902
|
+
| `blocked` | ⚠️ 发现阻塞:{阻塞原因}。请先解决阻塞再继续 |
|
|
903
|
+
| `ready` | 展示待执行任务列表,确认后进入 Step 3 |
|
|
904
|
+
|
|
905
|
+
**state=ready 时的确认输出:**
|
|
906
|
+
|
|
907
|
+
```
|
|
908
|
+
📋 待执行任务({N} 个):
|
|
909
|
+
Phase {X}:{phase 名称}
|
|
910
|
+
○ T001 [P1] {任务描述} — {文件路径}
|
|
911
|
+
○ T002 [P1] {任务描述} — {文件路径}
|
|
912
|
+
○ T003 [P2] {任务描述(测试)} — {文件路径}
|
|
913
|
+
|
|
914
|
+
共 {M} 个 Phase,{N} 个任务(P1: {n1} / P2: {n2} / P3: {n3})
|
|
915
|
+
是否开始执行?[Y/n](--force 时自动确认)
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
---
|
|
919
|
+
|
|
920
|
+
### Code Step 3:分 Phase 逐任务执行
|
|
921
|
+
|
|
922
|
+
> **TDD 原则(来自 speckit.implement):** 同 Phase 内先实现接口/类签名,再写测试,最后完善实现。
|
|
923
|
+
|
|
924
|
+
**Phase 执行循环:**
|
|
925
|
+
|
|
926
|
+
```
|
|
927
|
+
for each Phase(按顺序):
|
|
928
|
+
输出:── Phase {X}:{phase 名称}({N} 个任务)──
|
|
929
|
+
|
|
930
|
+
for each Task in Phase(按 T-ID 顺序):
|
|
931
|
+
if 任务含「测试」「Test」关键词:
|
|
932
|
+
← 先建类/方法骨架,再写测试,最后补全逻辑
|
|
933
|
+
else:
|
|
934
|
+
← 根据 design.md 对应需求点和 business Skill 直接实现代码
|
|
935
|
+
|
|
936
|
+
执行完成后:
|
|
937
|
+
1. 将 tasks.md 中该任务的 `- [ ]` 改为 `- [x]`
|
|
938
|
+
2. 输出:✓ {T-ID} 已完成:{一句话说明变更内容}
|
|
939
|
+
3. 重新检查 state(出现 blocked 时暂停并说明原因)
|
|
940
|
+
|
|
941
|
+
Phase 完成后输出:
|
|
942
|
+
✅ Phase {X} 完成({已完成数}/{Total} 个任务)
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
**单任务执行规范:**
|
|
946
|
+
- 根据任务的 `— \`{路径}\`` 定位目标文件
|
|
947
|
+
- 参考 design.md 中 `[Req:{...}]` 对应的需求点作为实现依据
|
|
948
|
+
- 遵循 constitution.hard_rules 和业务 Skill 中的 `[guideline]`/`[pitfall]`
|
|
949
|
+
- 遵循「外科手术式修改(Surgical Changes)」原则:只改必改的文件
|
|
950
|
+
|
|
951
|
+
---
|
|
952
|
+
|
|
953
|
+
### Code Step 4:完成确认 + 后续建议
|
|
954
|
+
|
|
955
|
+
所有 Phase 完成后输出:
|
|
956
|
+
|
|
957
|
+
```
|
|
958
|
+
🎉 编码完成!执行摘要:
|
|
959
|
+
✅ 共完成 {N} 个任务(P1: {n1} / P2: {n2} / P3: {n3})
|
|
960
|
+
📝 修改文件:{已修改文件列表}
|
|
961
|
+
⏱️ 实际耗时对比:设计估时 {effort}
|
|
962
|
+
|
|
963
|
+
── 建议后续操作 ──────────────────────────────────
|
|
964
|
+
A. /modus:cr --doc {design.md 路径} → 代码评审(推荐)
|
|
965
|
+
B. /modus:plan --continue {name} → 接力 harness 完整流程
|
|
966
|
+
C. /modus:vibe → 修复评审后的问题
|
|
967
|
+
────────────────────────────────────────────────
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
**后置知识回写(与标准 plan Step 9 相同逻辑):**
|
|
971
|
+
扫描编码过程中新发现的 pitfall/decision,询问用户是否写回 Skill(不强制)。
|