@modus-ai/modus 0.2.4 → 0.2.6
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/README.md +100 -42
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +9 -8
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/global.js +1 -1
- package/dist/commands/global.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +37 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/generators/claude.d.ts.map +1 -1
- package/dist/generators/claude.js +1 -37
- 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.d.ts +10 -0
- package/dist/generators/codex.d.ts.map +1 -0
- package/dist/generators/codex.js +178 -0
- package/dist/generators/codex.js.map +1 -0
- package/dist/generators/copilot.d.ts.map +1 -1
- package/dist/generators/copilot.js +0 -1
- package/dist/generators/copilot.js.map +1 -1
- package/dist/generators/cursor.d.ts.map +1 -1
- package/dist/generators/cursor.js +36 -7
- package/dist/generators/cursor.js.map +1 -1
- package/dist/generators/custom.d.ts +55 -0
- package/dist/generators/custom.d.ts.map +1 -0
- package/dist/generators/custom.js +166 -0
- package/dist/generators/custom.js.map +1 -0
- package/dist/generators/index.d.ts +1 -0
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +10 -0
- package/dist/generators/index.js.map +1 -1
- package/dist/utils/config.d.ts +38 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +10 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +2 -1
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +1 -1
- package/schemas/harness-schema.yaml +178 -53
- package/schemas/knowledge-schema.yaml +111 -1
- package/templates/agents/modus-analyst.md +1 -1
- package/templates/behavior-guard.md +165 -0
- package/templates/commands/auto.md +61 -25
- package/templates/commands/commit.md +63 -0
- package/templates/commands/harness.md +97 -30
- package/templates/commands/init.md +43 -10
- package/templates/commands/modus.md +55 -28
- package/templates/commands/plan.md +60 -18
- package/templates/commands/spec.md +69 -25
- package/templates/commands/upgrade.md +54 -0
- package/templates/commands/vibe.md +56 -6
- package/templates/knowledge-catalog.md +74 -32
- package/templates/skills/modus-agents/analyst/SKILL.md +18 -3
- package/templates/skills/modus-agents/deployer/SKILL.md +114 -62
- package/templates/skills/modus-agents/designer/SKILL.md +104 -92
- package/templates/skills/modus-agents/developer/SKILL.md +107 -66
- package/templates/skills/modus-agents/perf-auditor/SKILL.md +98 -61
- package/templates/skills/modus-agents/reviewer/SKILL.md +61 -11
- package/templates/skills/modus-agents/security-auditor/SKILL.md +111 -67
- package/templates/skills/modus-agents/skill-creator/SKILL.md +30 -12
- package/templates/skills/modus-agents/tester/SKILL.md +100 -54
- package/templates/skills/modus-auto/SKILL.md +581 -109
- package/templates/skills/modus-design-brief/SKILL.md +45 -19
- package/templates/skills/modus-harness/SKILL.md +150 -85
- package/templates/skills/modus-init/SKILL.md +1145 -319
- package/templates/skills/modus-plan/SKILL.md +125 -48
- package/templates/skills/modus-platform/SKILL.md +271 -0
- package/templates/skills/modus-spec/SKILL.md +175 -331
- package/templates/skills/modus-vibe/SKILL.md +256 -55
|
@@ -1,140 +1,152 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: modus-designer
|
|
3
|
-
description: Use this skill when the Harness orchestrator needs to generate a design
|
|
3
|
+
description: Use this skill when the Harness orchestrator needs to generate a technical design brief after requirements analysis. Takes 01-analysis.md as input, prompts human for architecture decisions, and produces 01.5-design-brief.md with HANDOFF block. Contains a mandatory human confirmation pause (⏸️) for architecture choices. Triggered by modus-harness after Gate A0 passes.
|
|
4
4
|
allowed-tools: Read, Write, Glob
|
|
5
5
|
disable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# modus-designer(技术方案设计 SubAgent)
|
|
9
9
|
|
|
10
|
-
**调用方:** Harness Orchestrator
|
|
11
|
-
**输入:** `
|
|
10
|
+
**调用方:** Harness Orchestrator(Gate A0 通过后触发)
|
|
11
|
+
**输入:** `01-analysis.md` + 相关业务 Skill 内容 + constitution.hard_rules
|
|
12
12
|
**产出物:** `modus/plans/active/{story-id}/01.5-design-brief.md`
|
|
13
13
|
|
|
14
14
|
## 职责
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
在需求分析(01-analysis.md)与代码开发(SubAgent 02)之间插入设计推导层,生成结构化技术方案(design-brief),消除实现时的架构歧义。包含一个**人工架构决策确认节点**(⏸️),确保关键选型由人决定,而非由 AI 自行猜测。
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
20
|
## 执行流程
|
|
21
21
|
|
|
22
|
-
### Step 1
|
|
22
|
+
### Step 1:读取输入
|
|
23
23
|
|
|
24
|
-
1. 读取 `
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- 读取验收标准(Scenario 列表)
|
|
28
|
-
- 读取风险点(事务、并发、性能、安全)
|
|
24
|
+
1. 读取 `01-analysis.md`(需求分析报告)
|
|
25
|
+
2. 读取 Orchestrator 传入的业务 Skill 内容(已由 INIT 阶段加载)
|
|
26
|
+
3. 读取 `modus/config.yaml` 的 `constitution.hard_rules` 和 `tech_stack`
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
3. 读取 `modus/config.yaml` 的 `constitution` 字段
|
|
28
|
+
### Step 2:识别架构歧义点
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
基于 01-analysis.md 的影响范围和风险点,识别**需要人工确认的架构决策**:
|
|
34
31
|
|
|
35
|
-
|
|
32
|
+
**必须确认的决策类型:**
|
|
33
|
+
- 存在 2 种以上可行的技术选型(如同步 RPC vs 异步 MQ)
|
|
34
|
+
- 接口设计有破坏性变更(需确认兼容性策略)
|
|
35
|
+
- 业务 Skill 中有冲突的 `[decision]` 记录
|
|
36
|
+
- 01-analysis.md 标注 `risk_level: high` 时,并发/事务策略需确认
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
38
|
+
**不需要确认的情况(直接使用 constitution + Skill 的约束):**
|
|
39
|
+
- 技术栈已在 constitution 中明确规定
|
|
40
|
+
- 业务 Skill 中有对应场景的唯一 `[guideline]`
|
|
41
|
+
- 变更范围为纯新增、不影响现有接口/数据
|
|
42
|
+
|
|
43
|
+
### Step 3:⏸️ 人工架构决策确认
|
|
44
|
+
|
|
45
|
+
**若发现需要确认的决策点,必须暂停等待用户输入:**
|
|
42
46
|
|
|
43
|
-
**示例问题格式:**
|
|
44
47
|
```
|
|
45
|
-
|
|
48
|
+
⏸️ 设计方案需要确认以下架构决策:
|
|
46
49
|
|
|
47
|
-
1. [
|
|
48
|
-
|
|
50
|
+
1. [技术选型] {决策问题,如「批量操作是同步处理还是 MQ 异步?」}
|
|
51
|
+
- 方案 A: {技术方案 + 优劣}
|
|
52
|
+
- 方案 B: {技术方案 + 优劣}
|
|
53
|
+
- 推荐: {基于已有 Skill 知识的建议}
|
|
49
54
|
|
|
50
|
-
2. [
|
|
51
|
-
|
|
55
|
+
2. [接口兼容性] {如「旧的 createOrder v1 是否需要兼容?」}
|
|
56
|
+
- 方案 A: 保留 v1,新增 v2 → 维护两套代码
|
|
57
|
+
- 方案 B: 直接替换 v1 → 需协调调用方升级
|
|
58
|
+
- 推荐: {建议}
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
确认处理策略:{选项A} 还是 {选项B}?
|
|
60
|
+
请回答上述问题(直接告知选择 A/B 或给出具体方案),我将据此生成完整设计方案。
|
|
55
61
|
```
|
|
56
62
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- {决策1}: {结果}
|
|
61
|
-
- {决策2}: {结果}
|
|
62
|
-
```
|
|
63
|
+
等待用户回答后继续。
|
|
64
|
+
|
|
65
|
+
**若无需确认的决策点,直接进入 Step 4(输出标注"架构决策无歧义,直接生成")。**
|
|
63
66
|
|
|
64
|
-
### Step
|
|
67
|
+
### Step 4:生成技术方案(design-brief)
|
|
65
68
|
|
|
66
|
-
|
|
67
|
-
- `mode: harness`
|
|
68
|
-
- `output_path: modus/plans/active/{story-id}/01.5-design-brief.md`
|
|
69
|
-
- `analysis_doc: 01-analysis.md 内容`
|
|
70
|
-
- `business_skills: 已加载的 Skill 内容`
|
|
71
|
-
- `constitution: constitution 字段`
|
|
72
|
-
- `arch_decisions: Step 2 确认的决策`
|
|
69
|
+
基于确认的架构决策,生成结构化技术方案文档:
|
|
73
70
|
|
|
74
|
-
|
|
71
|
+
```markdown
|
|
72
|
+
## 1. 基本信息
|
|
73
|
+
- Story ID / 需求摘要
|
|
74
|
+
- 设计时间
|
|
75
|
+
- 依赖的业务域及 Skill 版本
|
|
76
|
+
|
|
77
|
+
## 2. 业务意图摘要
|
|
78
|
+
{1-2 句话,从 01-analysis.md 提炼}
|
|
79
|
+
|
|
80
|
+
## 3. 实体与数据模型
|
|
81
|
+
- 新增/修改的 Entity 字段(含类型、约束)
|
|
82
|
+
- DB 变更(DDL 摘要)
|
|
83
|
+
- 关键枚举新增值
|
|
84
|
+
|
|
85
|
+
## 4. API / 接口合同
|
|
86
|
+
- 新增接口(路径、方法、入参、出参)
|
|
87
|
+
- 修改接口(变更前后对比)
|
|
88
|
+
- 接口兼容性策略(v1/v2 并存 or 直接替换)
|
|
89
|
+
|
|
90
|
+
## 5. 实现蓝图(分层调用链)
|
|
91
|
+
Data: {Mapper 类/方法}
|
|
92
|
+
Service: {Manager/Service 类/方法}
|
|
93
|
+
API: {Facade/Controller 类/方法}
|
|
94
|
+
MQ: {Producer/Consumer(如有)}
|
|
95
|
+
|
|
96
|
+
## 6. 边界条件与异常处理
|
|
97
|
+
- 前置校验(哪些参数必须校验,校验规则)
|
|
98
|
+
- 异常场景(并发、超时、下游失败)的处理策略
|
|
99
|
+
- 幂等策略(如有)
|
|
100
|
+
|
|
101
|
+
## 7. 代码生成提示(供 SubAgent 02 使用)
|
|
102
|
+
- 已有的关键类路径(避免重复创建)
|
|
103
|
+
- 必须使用的注解/工具类(来自 Skill guideline)
|
|
104
|
+
- 禁止的做法(来自 Skill pitfall + constitution)
|
|
105
|
+
|
|
106
|
+
## 8. 禁止事项(汇总自 constitution + Skill)
|
|
107
|
+
{逐条列出 constitution.hard_rules + 业务 Skill [pitfall] 中与本次相关的约束}
|
|
108
|
+
|
|
109
|
+
## 9. 需求-任务追踪矩阵
|
|
110
|
+
| 需求点 | 对应实现(类/方法) | Sprint | 校验方式 |
|
|
111
|
+
|--------|-----------------|--------|---------|
|
|
112
|
+
| {需求} | {类.方法()} | Sprint N | {测试/联调} |
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Step 5:写入产出物
|
|
75
116
|
|
|
76
|
-
|
|
117
|
+
将 design-brief 写入 `modus/plans/active/{story-id}/01.5-design-brief.md`,文件头部附加 HANDOFF 块。
|
|
118
|
+
|
|
119
|
+
---
|
|
77
120
|
|
|
78
|
-
|
|
121
|
+
## 产出物格式(01.5-design-brief.md)
|
|
79
122
|
|
|
80
123
|
```markdown
|
|
81
124
|
<!--HANDOFF
|
|
82
125
|
agent: "01.5-design"
|
|
83
126
|
story_id: "{story-id}"
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
- "{com.company.XxxService#methodName}"
|
|
91
|
-
sprint_mapping:
|
|
92
|
-
Sprint1: "{Data层实现描述}"
|
|
93
|
-
Sprint2: "{Service层实现描述}"
|
|
94
|
-
Sprint3: "{API层实现描述}"
|
|
95
|
-
quality_check:
|
|
96
|
-
passed: {N}
|
|
97
|
-
total: 6
|
|
98
|
-
issues: ["{若有未通过项}"]
|
|
99
|
-
gate_status: "passed"
|
|
127
|
+
decisions_confirmed: {N}
|
|
128
|
+
design_sections: 9
|
|
129
|
+
gate_status: "{passed|warning|failed}"
|
|
130
|
+
key_decisions:
|
|
131
|
+
- "{已确认的架构决策摘要1}"
|
|
132
|
+
- "{已确认的架构决策摘要2}"
|
|
100
133
|
-->
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**gate_status 判定:**
|
|
104
|
-
- `passed`:质量自检 6/6 通过
|
|
105
|
-
- `warning`:有 `⚠️ 待补充` 标注,但不阻断流程(SubAgent 02 需关注)
|
|
106
|
-
- `failed`:关键节(节 4 / 节 5)有严重缺失,需重新生成(上报 Orchestrator)
|
|
107
134
|
|
|
108
|
-
|
|
135
|
+
# 技术方案 — {Story 标题}
|
|
109
136
|
|
|
137
|
+
{design-brief 完整内容,见 Step 4}
|
|
110
138
|
```
|
|
111
|
-
✅ SubAgent 01.5 完成 → 01.5-design-brief.md
|
|
112
|
-
设计决策: {N}个 | 追踪矩阵: {N}行 | 质量自检: {N}/6
|
|
113
|
-
关键实体: {Entity1}, {Entity2}
|
|
114
|
-
接口合同: {方法签名列表(最多3个)}
|
|
115
|
-
→ Gate A0: passed,SubAgent 02 可以启动
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
---
|
|
119
139
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
├── 01-analysis.md ← SubAgent 01 产出(输入)
|
|
125
|
-
├── 01.5-design-brief.md ← 本 SubAgent 产出(含 HANDOFF)
|
|
126
|
-
└── 02-sprint-contract.md ← SubAgent 02 产出(下一步)
|
|
127
|
-
```
|
|
140
|
+
**`gate_status` 赋值规则:**
|
|
141
|
+
- `passed`:所有架构决策已确认,设计方案完整无歧义
|
|
142
|
+
- `warning`:存在低风险的未确认点,但不阻塞开发(如纯优化类决策)
|
|
143
|
+
- `failed`:存在高风险的未确认点,或用户答复后仍有歧义 → Orchestrator 重入本 SubAgent(最多 2 次)
|
|
128
144
|
|
|
129
145
|
---
|
|
130
146
|
|
|
131
|
-
##
|
|
132
|
-
|
|
133
|
-
SubAgent 02 在 Step 1 读取上下文时,**必须读取** `01.5-design-brief.md`:
|
|
134
|
-
|
|
135
|
-
1. 先读 HANDOFF 块,获取 `key_entities`、`api_contracts`、`sprint_mapping`
|
|
136
|
-
2. 再读完整内容,以节 5(实现蓝图)和节 7(代码生成提示)作为主要编码指南
|
|
137
|
-
3. 以节 8(禁止事项)作为代码审查自检列表
|
|
138
|
-
4. 以节 9(追踪矩阵)作为 Sprint 完成的验收依据
|
|
147
|
+
## 质量标准
|
|
139
148
|
|
|
140
|
-
|
|
149
|
+
- 追踪矩阵的每行须能追溯到 01-analysis.md 中的具体需求点
|
|
150
|
+
- 「禁止事项」必须包含所有与本次变更相关的 constitution.hard_rules
|
|
151
|
+
- 「实现蓝图」中的类路径必须来自 Skill 的关键文件索引或已有代码,不得凭空创造
|
|
152
|
+
- **HANDOFF 块必须位于文件最顶部**,Orchestrator 仅读此块(≤ 20 行)决策是否继续
|
|
@@ -1,109 +1,150 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: modus-developer
|
|
3
|
-
description: Use this skill when the Harness orchestrator needs to implement code
|
|
3
|
+
description: Use this skill when the Harness orchestrator needs to implement code based on the sprint plan in 01-analysis.md and design brief in 01.5-design-brief.md. Executes each sprint layer by layer (data→service→orchestration→api), validates with build command after each sprint, and generates 02-sprint-contract.md. Triggered by modus-harness after Gate A0.5 passes.
|
|
4
4
|
allowed-tools: Read, Write, Glob, Bash
|
|
5
5
|
disable: false
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# modus-developer(代码开发 SubAgent)
|
|
9
9
|
|
|
10
|
-
**调用方:** Harness Orchestrator
|
|
11
|
-
**输入:** `01-analysis.md` +
|
|
12
|
-
**产出物:** `modus/
|
|
10
|
+
**调用方:** Harness Orchestrator(Gate A0.5 通过后触发)
|
|
11
|
+
**输入:** `01-analysis.md` + `02-design-brief.md` + 业务 Skill 内容 + constitution
|
|
12
|
+
**产出物:** `modus/stories/{story-id}/harness/03-sprint-contract.md` + 代码变更
|
|
13
13
|
|
|
14
14
|
## 职责
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
按照设计方案(01.5-design-brief.md)的实现蓝图和 01-analysis.md 的 Sprint 计划,逐层实现代码。每个 Sprint 完成后自动验证编译,确保代码质量前置。
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
20
|
## 执行流程
|
|
21
21
|
|
|
22
|
-
### Step 1
|
|
22
|
+
### Step 1:读取输入
|
|
23
23
|
|
|
24
|
-
1. 读取 `
|
|
25
|
-
2.
|
|
26
|
-
3.
|
|
24
|
+
1. 读取 `02-design-brief.md`(技术方案,重点关注节 5-8)
|
|
25
|
+
2. 读取 `01-analysis.md`(Sprint 执行计划、验收标准)
|
|
26
|
+
3. 确认 `constitution.hard_rules` 和 `key_patterns`(最高优先级约束)
|
|
27
|
+
4. 按需读取 Skill 关键文件索引中的实际代码文件(Level 3 加载,≤ 10 个文件)
|
|
27
28
|
|
|
28
|
-
### Step 2:逐 Sprint
|
|
29
|
+
### Step 2:逐 Sprint 实现(严格按层顺序,禁止跳层)
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
**标准层次顺序(每层必须完成并通过编译验证后才能进入下一层):**
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
```
|
|
34
|
+
Sprint 1:数据层
|
|
35
|
+
→ Mapper 接口(必须在 dao 包下)
|
|
36
|
+
→ XML Mapper 或注解式 SQL
|
|
37
|
+
→ Domain / Entity 对象
|
|
38
|
+
|
|
39
|
+
Sprint 2:服务层
|
|
40
|
+
→ Manager / Service(核心业务逻辑)
|
|
41
|
+
→ 事务边界(@Transactional,必须通过 AopContext.currentProxy() 调用)
|
|
42
|
+
→ 分布式锁(如需,@DistributedLock)
|
|
43
|
+
|
|
44
|
+
Sprint 3:接口层(如有)
|
|
45
|
+
→ Controller / Facade
|
|
46
|
+
→ Request / Response DTO(含 @Valid 校验注解)
|
|
47
|
+
→ 权限注解(如 @UserAuthorization)
|
|
48
|
+
|
|
49
|
+
Sprint 4:集成层(如有)
|
|
50
|
+
→ MQ Consumer / Producer
|
|
51
|
+
→ 定时任务
|
|
52
|
+
→ 跨服务 RPC 调用
|
|
53
|
+
```
|
|
36
54
|
|
|
37
|
-
|
|
38
|
-
遵循的通用原则:
|
|
39
|
-
- 命名遵循项目现有风格(从 Skill 或现有代码中获取规范)
|
|
40
|
-
- 新增文件放置到正确的包/目录层次
|
|
41
|
-
- 事务注解使用项目规范方式(避免同类内部调用失效)
|
|
42
|
-
- 分布式锁按项目已有模式使用
|
|
43
|
-
- 参数校验在接口层完成,服务层做业务校验
|
|
44
|
-
- 所有数据库操作必须在正确的事务边界内
|
|
45
|
-
- 金额字段使用 BigDecimal,避免浮点精度问题
|
|
55
|
+
**每个 Sprint 完成后立即执行编译验证:**
|
|
46
56
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
- 关键实现决策(与 `01-analysis.md` 中建议有出入时说明原因)
|
|
57
|
+
```bash
|
|
58
|
+
{constitution.build_command} # 如 mvn clean compile -q
|
|
59
|
+
```
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
编译失败 → 立即修复,修复后重新验证,不进入下一 Sprint。
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
### Step 3:Self Code Review(每个 Sprint 完成后执行)
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
在记录产出物前,对本 Sprint 的代码进行自检:
|
|
57
66
|
|
|
58
|
-
|
|
67
|
+
```
|
|
68
|
+
自检清单(必须全部通过):
|
|
69
|
+
□ Mapper 接口是否在 dao 包下(来自 constitution.hard_rules)
|
|
70
|
+
□ 金额字段是否符合 constitution 的金额规范
|
|
71
|
+
□ @Transactional 的同类调用是否通过 AopContext.currentProxy()
|
|
72
|
+
□ 是否存在 for 循环内的 DB 查询(N+1 风险)
|
|
73
|
+
□ 新增写入操作是否有事务保护
|
|
74
|
+
□ 对外接口是否有参数校验(@NotNull/@Valid 等)
|
|
75
|
+
□ 是否引用了 Skill [pitfall] 中记录的已知风险点并做了处理
|
|
76
|
+
□ 所有修改是否都能追溯到 01.5-design-brief.md 的追踪矩阵
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
发现问题 → 立即修复,记入 02-sprint-contract.md 的「自检发现」字段。
|
|
80
|
+
|
|
81
|
+
### Step 4:写入 Sprint Contract
|
|
82
|
+
|
|
83
|
+
每个 Sprint 完成后,将执行情况追加到 `02-sprint-contract.md`:
|
|
59
84
|
|
|
60
85
|
```markdown
|
|
61
|
-
|
|
86
|
+
## Sprint {N}:{层次名称}
|
|
62
87
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- 实现时间: {YYYY-MM-DD HH:mm}
|
|
88
|
+
### 实现文件
|
|
89
|
+
| 文件路径 | 变更类型 | 说明 |
|
|
90
|
+
|---------|---------|-----|
|
|
91
|
+
| {path} | 新增/修改 | {1句话} |
|
|
68
92
|
|
|
69
|
-
|
|
93
|
+
### 关键实现决策
|
|
94
|
+
- {架构决策:如「选择注解式 SQL 而非 XML,因为逻辑简单」}
|
|
70
95
|
|
|
71
|
-
###
|
|
72
|
-
|
|
96
|
+
### 自检结果
|
|
97
|
+
- ✅ 所有检查通过 / ⚠️ 发现并修复:{问题描述}
|
|
73
98
|
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
|
|
99
|
+
### 编译验证
|
|
100
|
+
- 结果:✅ 通过 / ❌ 失败(已修复)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 产出物格式(02-sprint-contract.md)
|
|
77
106
|
|
|
78
|
-
|
|
79
|
-
|
|
107
|
+
```markdown
|
|
108
|
+
---
|
|
109
|
+
schema_version: "1.1"
|
|
110
|
+
agent: "03-dev"
|
|
111
|
+
run_id: "{YYYYMMDD}-{story_id_prefix}"
|
|
112
|
+
story_id: "{story-id}"
|
|
113
|
+
task_id: ""
|
|
114
|
+
domains: ["{domain1}", "{domain2}"]
|
|
115
|
+
gate_status: "{passed|failed}"
|
|
116
|
+
artifact_status: "complete"
|
|
117
|
+
issues: []
|
|
118
|
+
skill_refs:
|
|
119
|
+
- "modus-biz-{domain}@{version}"
|
|
120
|
+
---
|
|
80
121
|
|
|
81
|
-
|
|
82
|
-
...
|
|
122
|
+
# 代码开发执行合同 — {Story 标题}
|
|
83
123
|
|
|
84
|
-
##
|
|
85
|
-
- {
|
|
124
|
+
## 开发摘要
|
|
125
|
+
- 开发时间: {YYYY-MM-DD HH:mm}
|
|
126
|
+
- 完成 Sprint: {N}/{总计N}
|
|
127
|
+
- 变更文件数: {N}
|
|
86
128
|
|
|
87
|
-
|
|
88
|
-
- {代码评审重点关注点}
|
|
89
|
-
- {性能风险点提示}
|
|
90
|
-
- {安全风险点提示}
|
|
129
|
+
{各 Sprint 详情,见 Step 4}
|
|
91
130
|
```
|
|
92
131
|
|
|
93
|
-
|
|
132
|
+
**`gate_status` 赋值规则:**
|
|
133
|
+
- `passed`:所有 Sprint 完成,编译通过,Self Review 无 P1 问题
|
|
134
|
+
- `failed`:编译失败无法自愈,或发现无法自行解决的架构问题 → 上报 Orchestrator
|
|
94
135
|
|
|
95
|
-
|
|
136
|
+
---
|
|
96
137
|
|
|
97
|
-
|
|
138
|
+
## 编码规范(来自 constitution + 通用最佳实践)
|
|
98
139
|
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
140
|
+
- **最高优先级**:`constitution.hard_rules` 中的规则不可违反
|
|
141
|
+
- **事务**:同类方法调用事务失效问题,统一用 `AopContext.currentProxy().{method}()` 解决
|
|
142
|
+
- **响应封装**:统一用 `constitution.key_patterns` 中规定的响应封装方式
|
|
143
|
+
- **异常处理**:使用项目已有的异常类,不自创异常类
|
|
144
|
+
- **日志**:关键业务操作(创建/修改/删除)必须有入参日志;异常必须 `log.error` 记录
|
|
104
145
|
|
|
105
|
-
##
|
|
146
|
+
## 越权禁止
|
|
106
147
|
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
148
|
+
- 不修改测试文件(由 SubAgent 03 负责)
|
|
149
|
+
- 不修改 Skill 文件(由 SubAgent 00 负责)
|
|
150
|
+
- 不操作部署流程(由 SubAgent 07 负责)
|