@modus-ai/modus 0.1.1 → 0.1.3

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.
Files changed (57) hide show
  1. package/dist/cli/index.js +41 -2
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/commands/global.d.ts +15 -0
  4. package/dist/commands/global.d.ts.map +1 -0
  5. package/dist/commands/global.js +222 -0
  6. package/dist/commands/global.js.map +1 -0
  7. package/dist/commands/init.d.ts +17 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +278 -58
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/update.d.ts +8 -1
  12. package/dist/commands/update.d.ts.map +1 -1
  13. package/dist/commands/update.js +27 -4
  14. package/dist/commands/update.js.map +1 -1
  15. package/dist/generators/codebuddy.d.ts +5 -1
  16. package/dist/generators/codebuddy.d.ts.map +1 -1
  17. package/dist/generators/codebuddy.js +358 -5
  18. package/dist/generators/codebuddy.js.map +1 -1
  19. package/dist/utils/config.d.ts +17 -0
  20. package/dist/utils/config.d.ts.map +1 -1
  21. package/dist/utils/config.js +15 -0
  22. package/dist/utils/config.js.map +1 -1
  23. package/package.json +1 -1
  24. package/templates/agents/modus-harness-00-skills-builder.md +12 -0
  25. package/templates/agents/modus-harness-01-5-design.md +40 -0
  26. package/templates/agents/modus-harness-01-analysis.md +14 -0
  27. package/templates/agents/modus-harness-02-dev.md +16 -0
  28. package/templates/agents/modus-harness-03-test.md +16 -0
  29. package/templates/agents/modus-harness-04-perf.md +16 -0
  30. package/templates/agents/modus-harness-05-security.md +16 -0
  31. package/templates/agents/modus-harness-06-review.md +16 -0
  32. package/templates/agents/modus-harness-07-deploy.md +16 -0
  33. package/templates/commands/modus.md +25 -0
  34. package/templates/hooks/post-tool-use-lint.py +78 -0
  35. package/templates/hooks/pre-compact-save.py +117 -0
  36. package/templates/hooks/pre-tool-use-safety.py +80 -0
  37. package/templates/hooks/session-start.py +86 -0
  38. package/templates/hooks/stop-update-skills.py +91 -0
  39. package/templates/hooks-config.json +83 -0
  40. package/templates/rules/modus-constitution/RULE.mdc +40 -0
  41. package/templates/rules/modus-design-brief/RULE.mdc +127 -0
  42. package/templates/rules/modus-workflow/RULE.mdc +64 -0
  43. package/templates/skills/modus-design-brief/SKILL.md +324 -0
  44. package/templates/skills/modus-harness/SKILL.md +17 -0
  45. package/templates/skills/modus-harness-agents/00-skills-builder/SKILL.md +46 -3
  46. package/templates/skills/modus-harness-agents/01-5-design/SKILL.md +140 -0
  47. package/templates/skills/modus-harness-agents/01-analysis/SKILL.md +7 -0
  48. package/templates/skills/modus-harness-agents/02-dev/SKILL.md +7 -0
  49. package/templates/skills/modus-harness-agents/03-test/SKILL.md +7 -0
  50. package/templates/skills/modus-harness-agents/04-perf/SKILL.md +7 -0
  51. package/templates/skills/modus-harness-agents/05-security/SKILL.md +7 -0
  52. package/templates/skills/modus-harness-agents/06-review/SKILL.md +7 -0
  53. package/templates/skills/modus-harness-agents/07-deploy/SKILL.md +7 -0
  54. package/templates/skills/modus-init/SKILL.md +24 -0
  55. package/templates/skills/modus-plan/SKILL.md +65 -8
  56. package/templates/skills/modus-spec/SKILL.md +71 -4
  57. package/templates/skills/modus-vibe/SKILL.md +73 -6
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: modus-harness-01-5-design
3
+ description: Use this skill when the Harness orchestrator needs to generate a design-brief between requirements analysis (01-analysis.md) and code development (02-dev). Reads 01-analysis.md and business Skills, asks architecture clarification questions, and produces 01.5-design-brief.md with HANDOFF block. Triggered automatically by modus-harness after SubAgent 01 completes.
4
+ allowed-tools: Read, Write, Glob
5
+ disable: false
6
+ ---
7
+
8
+ # modus-harness-01-5-design(设计方案 SubAgent)
9
+
10
+ **调用方:** Harness Orchestrator(`modus-harness`)
11
+ **输入:** `modus/plans/active/{story-id}/01-analysis.md` + 相关业务 Skill + constitution
12
+ **产出物:** `modus/plans/active/{story-id}/01.5-design-brief.md`
13
+
14
+ ## 职责
15
+
16
+ 承接 SubAgent 01 的需求分析结果,在代码开发开始之前生成结构化设计方案,将 Sprint 执行计划翻译为精确到类名/方法名级别的实现蓝图,作为 SubAgent 02 的核心输入。
17
+
18
+ ---
19
+
20
+ ## 执行流程
21
+
22
+ ### Step 1:读取需求分析结果
23
+
24
+ 1. 读取 `modus/plans/active/{story-id}/01-analysis.md`
25
+ - 解析 HANDOFF 块,提取 `domains`、`risk_level`、`key_constraints`
26
+ - 读取 Sprint 执行计划(各 Sprint 的任务拆分)
27
+ - 读取验收标准(Scenario 列表)
28
+ - 读取风险点(事务、并发、性能、安全)
29
+
30
+ 2. 读取 Orchestrator 传入的业务 Skill 内容(已在 Step 1 INIT 阶段加载)
31
+ 3. 读取 `modus/config.yaml` 的 `constitution` 字段
32
+
33
+ ### Step 2:澄清架构决策 ⏸️ 【人工交互节点】
34
+
35
+ 基于需求分析内容,识别并提出 1-3 个关键架构决策问题。
36
+
37
+ **提问原则:**
38
+ - 只问会影响 SubAgent 02 代码结构的决策(接口、模型、事务边界)
39
+ - 若业务 Skill 中已有 `[decision]` 覆盖相关决策,跳过,直接引用
40
+ - `risk_level: high` 时必须包含并发/事务相关决策确认
41
+ - 已在 `key_constraints` 中明确的不再询问
42
+
43
+ **示例问题格式:**
44
+ ```
45
+ Story {id} 需求分析已完成。在生成设计方案前,需确认几个架构决策:
46
+
47
+ 1. [数据模型] {具体问题,如「审批记录是新建 approval_record 表,还是扩展 order 表字段?」}
48
+ (影响:DDL 设计和 Mapper 层实现)
49
+
50
+ 2. [接口方式] {具体问题,如「批量操作是同步返回结果,还是异步 MQ 通知?」}
51
+ (影响:API 合同和事务边界)
52
+
53
+ 3. [风险处理] ⚠️ 需求分析标记了 {risk_level} 风险:{具体风险}
54
+ 确认处理策略:{选项A} 还是 {选项B}?
55
+ ```
56
+
57
+ 等待用户确认后,输出决策摘要:
58
+ ```
59
+ 架构决策已确认,开始生成设计方案...
60
+ - {决策1}: {结果}
61
+ - {决策2}: {结果}
62
+ ```
63
+
64
+ ### Step 3:生成设计方案
65
+
66
+ 调用 `modus-design-brief` Skill 的核心生成逻辑,传入:
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 确认的决策`
73
+
74
+ 生成完整的 9 节 design-brief 内容(格式见 `modus-design-brief` Skill)。
75
+
76
+ ### Step 4:写入产出物
77
+
78
+ 将 design-brief 内容写入 `modus/plans/active/{story-id}/01.5-design-brief.md`,文件头部必须包含 HANDOFF 块:
79
+
80
+ ```markdown
81
+ <!--HANDOFF
82
+ agent: "01.5-design"
83
+ story_id: "{story-id}"
84
+ domains: ["{domain1}", "{domain2}"]
85
+ design_decisions:
86
+ - "{决策1}"
87
+ - "{决策2}"
88
+ key_entities: ["{Entity1}", "{Entity2}"]
89
+ api_contracts:
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"
100
+ -->
101
+ ```
102
+
103
+ **gate_status 判定:**
104
+ - `passed`:质量自检 6/6 通过
105
+ - `warning`:有 `⚠️ 待补充` 标注,但不阻断流程(SubAgent 02 需关注)
106
+ - `failed`:关键节(节 4 / 节 5)有严重缺失,需重新生成(上报 Orchestrator)
107
+
108
+ ### Step 5:输出进度卡片
109
+
110
+ ```
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
+
120
+ ## 产出物目录
121
+
122
+ ```
123
+ modus/plans/active/{story-id}/
124
+ ├── 01-analysis.md ← SubAgent 01 产出(输入)
125
+ ├── 01.5-design-brief.md ← 本 SubAgent 产出(含 HANDOFF)
126
+ └── 02-sprint-contract.md ← SubAgent 02 产出(下一步)
127
+ ```
128
+
129
+ ---
130
+
131
+ ## 与 SubAgent 02 的交接协议
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 完成的验收依据
139
+
140
+ 若 HANDOFF `gate_status: warning`,SubAgent 02 需在 `02-sprint-contract.md` 中记录哪些 `⚠️` 项已额外处理。
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-01-analysis
3
+ description: Use this skill when the Harness orchestrator needs to perform TAPD Story requirements analysis. Reads the TAPD story, extracts business intent, identifies affected code scope at method level, and generates 01-analysis.md with HANDOFF block. Triggered automatically by modus-harness orchestrator as the first step in Loop 1.
4
+ allowed-tools: Read, Write, Glob, WebFetch
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-01-analysis(需求分析 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(`modus-harness`)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-02-dev
3
+ description: Use this skill when the Harness orchestrator needs to implement code changes based on the requirements analysis (01-analysis.md). Implements code layer by layer (data → service → orchestration → interface), runs build compilation, and generates 02-sprint-contract.md. Triggered by modus-harness after SubAgent 01 completes or during Loop 2 re-entry for P1/P2 fixes.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-02-dev(代码开发 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-03-test
3
+ description: Use this skill when the Harness orchestrator needs to generate unit tests for code changes. Covers Happy Path, boundary conditions, exception paths, and concurrency scenarios. Generates 03-test-report.md. Triggered by modus-harness in parallel with SubAgents 04 and 05 after Gate A passes.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-03-test(代码测试 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(与 04/05 并行启动)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-04-perf
3
+ description: Use this skill when the Harness orchestrator needs to perform static performance audit on code changes. Detects N+1 queries, missing batch operations, unbounded data fetches, deep pagination risks, and ES query issues. Generates 04-perf-report.md. Triggered by modus-harness in parallel with SubAgents 03 and 05 after Gate A passes.
4
+ allowed-tools: Read, Write, Glob
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-04-perf(性能审计 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(与 03/05 并行启动)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-05-security
3
+ description: Use this skill when the Harness orchestrator needs to perform security audit on code changes. Checks multi-tenant data isolation, missing authorization annotations, sensitive data logging, SQL injection risks, and bypass interface protection. Generates 05-security-report.md. Triggered by modus-harness in parallel with SubAgents 03 and 04 after Gate A passes.
4
+ allowed-tools: Read, Write, Glob
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-05-security(安全审计 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(与 03/04 并行启动)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-06-review
3
+ description: Use this skill when the Harness orchestrator needs to perform comprehensive code review after all audit reports are ready. Evaluates all artifacts (01-analysis.md through 05-security-report.md), grades issues as P1/P2/P3, and generates cr-report.md with HANDOFF block. Gate C: if P1/P2 issues found, triggers Loop 2 re-entry. Triggered by modus-harness after Gate B passes.
4
+ allowed-tools: Read, Write, Glob
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-06-review(代码评审 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(Gate B 通过后触发)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-harness-07-deploy
3
+ description: Use this skill when the Harness orchestrator needs to verify deployment after code review passes (no P1/P2 issues). Monitors CI/CD pipeline status, validates service health across environments (dev→uat→pre→prd), runs smoke tests on P0 interfaces, and generates 07-deploy-status.md. Triggered by modus-harness after Gate C passes.
4
+ allowed-tools: Read, Write, Glob, Bash, WebFetch
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-harness-07-deploy(部署发布 SubAgent)
2
9
 
3
10
  **调用方:** Harness Orchestrator(Gate C 通过后触发)
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-init
3
+ description: Use this skill when executing /modus:init command to scan the codebase, classify business domains, and generate Business Skill files, team-conventions Skill, tech-wiki Skill, and knowledge-catalog index. Trigger on /modus:init command or when user asks to initialize Modus or build business Skills from scratch.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-init
2
9
 
3
10
  **触发条件:** 用户运行 `/modus:init` 时使用此 Skill。
@@ -179,6 +186,17 @@ constitution:
179
186
 
180
187
  ---
181
188
 
189
+ ### Step 3 补充:生成 Business Skill 时必须填写 key_files
190
+
191
+ 在生成每个业务 Skill(`.codebuddy/skills/modus-biz-{domain}/SKILL.md`)时,**必须**在 frontmatter 中填写 `key_files` 字段:
192
+
193
+ - 列出本域最具代表性的源文件路径(最多 10 个)
194
+ - 优先选择 Service / Manager / Mapper / Domain / Entity 文件
195
+ - 这些文件将用于后续 plan/spec/harness 的「前置 Skill 更新 hash 检查」——若文件内容未变化,则跳过更新,节省 token
196
+ - `last_hash` 初始留空(`""`),下次 plan/spec/harness 触发前置更新时自动计算并填入
197
+
198
+ ---
199
+
182
200
  ## Business Skill 标准格式参考(含知识体系字段)
183
201
 
184
202
  ```markdown
@@ -190,6 +208,12 @@ updated: {YYYY-MM-DD}
190
208
  maturity: draft # draft | verified | proven
191
209
  last_referenced: {YYYY-MM-DD}
192
210
  usage_count: 0
211
+ last_hash: "" # SHA-1(key_files 内容拼接),前置更新时自动计算并填入
212
+ key_files: # 关键源文件列表,用于 hash 检查(最多 10 个,优先 Service/Manager/Mapper)
213
+ - src/.../service/{Domain}Service.java
214
+ - src/.../manager/{Domain}Manager.java
215
+ - src/.../dao/{Domain}Mapper.java
216
+ - src/.../domain/{Domain}.java
193
217
  ---
194
218
 
195
219
  # {中文域名}业务知识
@@ -1,3 +1,10 @@
1
+ ---
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.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-plan(计划模式)
2
9
 
3
10
  **触发条件:** 用户运行 `/modus:plan [需求描述]` 时使用此 Skill。
@@ -82,17 +89,53 @@
82
89
  开始前置更新 Skill,然后生成规划文档。
83
90
  ```
84
91
 
85
- ### Step 4:前置 Skill 更新(Level 2 加载)
92
+ ### Step 4:前置 Skill 更新(Level 2 加载,含 hash 检查)
93
+
94
+ 确认域和意图后,对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
95
+
96
+ #### Step 4a:读取 Skill frontmatter(轻量操作,仅读前 20 行)
97
+
98
+ 读取 `.codebuddy/skills/modus-biz-{domain}/SKILL.md` 的 YAML frontmatter,提取:
99
+ - `last_hash`:上次记录的 key_files 内容摘要
100
+ - `key_files`:关键源文件列表
101
+
102
+ 若 Skill 不存在,跳到 Step 4d(新建)。
103
+
104
+ #### Step 4b:计算当前 key_files 的 hash
105
+
106
+ 使用 Bash 对 `key_files` 列出的文件内容做 SHA-1 摘要:
107
+
108
+ ```bash
109
+ # 对每个文件计算 sha1,排序后再做一次 sha1(顺序无关)
110
+ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{print $1}'
111
+ ```
86
112
 
87
- 确认域和意图后,启动「Skill 更新 SubAgent」(`modus-harness-00-skills-builder` 模式 B),对每个涉及的业务域执行:
113
+ - 若某个 `key_files` 中的文件不存在(可能已被重命名/删除),视为「已变化」,强制更新
114
+ - 若 `key_files` 为空或缺失,视为「已变化」,强制更新
115
+
116
+ #### Step 4c:对比 hash,决定是否跳过
117
+
118
+ ```
119
+ 当前 hash == last_hash(且 last_hash 非空)
120
+ → ✓ modus-biz-{domain} Skill 无变化(hash 匹配),跳过前置更新(节省 ~2000 tokens)
121
+ → 仅更新 last_referenced 日期(不读取完整代码,不修改 Skill 内容)
122
+ → 继续 Step 5
123
+
124
+ 当前 hash != last_hash OR last_hash 为空
125
+ → 进入 Step 4d 执行完整更新
126
+ ```
127
+
128
+ #### Step 4d:完整前置更新(仅在 hash 不匹配时执行)
129
+
130
+ 启动「Skill 更新 SubAgent」(`modus-harness-00-skills-builder` 模式 B),执行:
88
131
 
89
132
  1. **Level 2 加载**:读取完整 SKILL.md 文件
90
133
  2. 扫描该域相关的最新代码文件(近期变更的文件)
91
134
  3. 对比 Skill 内容与代码现实,识别差异
92
- 4. 更新 Skill 文件中过时的信息,更新 `last_referenced` 和 `usage_count`
135
+ 4. 更新 Skill 文件中过时的信息,更新 `last_referenced`、`usage_count` 和 `last_hash`
93
136
  5. 输出更新摘要:`✓ modus-biz-order Skill 已更新(新增: OrderStatus.PENDING_REVIEW | maturity: draft→verified)`
94
137
 
95
- 若有未初始化的域,调用模式 A 新建 Skill
138
+ 若有未初始化的域,调用模式 A 新建 Skill(`last_hash` 留空,`key_files` 由 AI 填写)。
96
139
 
97
140
  ### Step 5:生成计划文档
98
141
 
@@ -107,7 +150,7 @@ status: in-progress
107
150
  domains: [{domain1}, {domain2}]
108
151
  quick_mode: false
109
152
  completed: []
110
- pending: [proposal, design, tasks]
153
+ pending: [proposal, design, design-brief, tasks]
111
154
  created: {ISO8601时间戳}
112
155
  ```
113
156
 
@@ -115,14 +158,14 @@ created: {ISO8601时间戳}
115
158
  - 从用户 prompt 提取关键词,生成 kebab-case 名称(如 `add-batch-approve`)
116
159
  - 如果目录已存在,提示用户确认
117
160
 
118
- **快速模式(`--quick`)产出物:** proposal.md + tasks.md(跳过 design.md)
161
+ **快速模式(`--quick`)产出物:** proposal.md + tasks.md(跳过 design.md 和 design-brief.md
119
162
 
120
163
  **产出物依赖(完整模式):**
121
164
 
122
165
  ```
123
166
  proposal.md ─────────────┐
124
167
 
125
- design.md ────────────► tasks.md
168
+ design.md ────────────► design-brief.md ────────────► tasks.md
126
169
  ```
127
170
 
128
171
  **1. proposal.md** — 意图与范围
@@ -166,7 +209,18 @@ design.md ────────────► tasks.md
166
209
  - {文件路径} — {新增/修改/删除}
167
210
  ```
168
211
 
169
- **3. tasks.md** — 实现清单
212
+ **3. design-brief.md** — 设计方案(代码开发前的精确实现指南)
213
+
214
+ 调用 `modus-design-brief` Skill,传入:
215
+ - `mode: plan`
216
+ - `output_path: modus/plans/{name}/design-brief.md`
217
+ - `analysis_doc: proposal.md 内容`
218
+ - `business_skills: 已加载的 Skill 内容`
219
+ - `constitution: constitution 字段`
220
+
221
+ 生成后更新 `.modus-state.yaml` 的 `completed` 列表(追加 `design-brief`),并在 `pending` 中移除。
222
+
223
+ **4. tasks.md** — 实现清单
170
224
 
171
225
  ```markdown
172
226
  # Tasks: {功能名称}
@@ -193,6 +247,7 @@ design.md ────────────► tasks.md
193
247
  计划文档已生成:
194
248
  modus/plans/{name}/proposal.md
195
249
  modus/plans/{name}/design.md
250
+ modus/plans/{name}/design-brief.md
196
251
  modus/plans/{name}/tasks.md
197
252
 
198
253
  状态文件:modus/plans/{name}/.modus-state.yaml
@@ -236,11 +291,13 @@ modus/
236
291
  │ │ ├── .modus-state.yaml ← 状态文件(断点续跑用)
237
292
  │ │ ├── proposal.md
238
293
  │ │ ├── design.md
294
+ │ │ ├── design-brief.md ← 设计方案(代码开发前的实现指南)
239
295
  │ │ └── tasks.md
240
296
  │ └── archive/
241
297
  │ └── 2026-04-20-add-batch-approve/
242
298
  │ ├── .modus-state.yaml ← status: archived
243
299
  │ ├── proposal.md
244
300
  │ ├── design.md
301
+ │ ├── design-brief.md
245
302
  │ └── tasks.md
246
303
  ```
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-spec
3
+ description: Use this skill when executing /modus:spec command for OpenSpec-style spec-driven development. Generates delta specs (ADDED/MODIFIED/REMOVED requirements with GIVEN/WHEN/THEN scenarios), design, and tasks. Trigger on /modus:spec command or when user wants behavior specifications before coding.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-spec(OpenSpec 规范驱动开发)
2
9
 
3
10
  **触发条件:** 用户运行 `/modus:spec [需求描述]` 时使用此 Skill。
@@ -74,9 +81,51 @@
74
81
  开始前置更新 Skill,然后生成规范文档。
75
82
  ```
76
83
 
77
- ### Step 4:前置 Skill 更新(Level 2 加载,同 /modus:plan Step 4)
84
+ ### Step 4:前置 Skill 更新(Level 2 加载,含 hash 检查,同 /modus:plan Step 4)
85
+
86
+ 对每个涉及的业务域执行以下流程(**先 hash 检查,再决定是否全量更新**):
87
+
88
+ #### Step 4a:读取 Skill frontmatter(轻量操作,仅读前 20 行)
89
+
90
+ 读取 `.codebuddy/skills/modus-biz-{domain}/SKILL.md` 的 YAML frontmatter,提取:
91
+ - `last_hash`:上次记录的 key_files 内容摘要
92
+ - `key_files`:关键源文件列表
93
+
94
+ 若 Skill 不存在,跳到 Step 4d(新建)。
95
+
96
+ #### Step 4b:计算当前 key_files 的 hash
97
+
98
+ 使用 Bash 对 `key_files` 列出的文件内容做 SHA-1 摘要:
99
+
100
+ ```bash
101
+ shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{print $1}'
102
+ ```
103
+
104
+ - 若某个文件不存在,视为「已变化」,强制更新
105
+ - 若 `key_files` 为空或缺失,视为「已变化」,强制更新
106
+
107
+ #### Step 4c:对比 hash,决定是否跳过
108
+
109
+ ```
110
+ 当前 hash == last_hash(且 last_hash 非空)
111
+ → ✓ modus-biz-{domain} Skill 无变化(hash 匹配),跳过前置更新(节省 ~2000 tokens)
112
+ → 仅更新 last_referenced 日期,继续 Step 5
113
+
114
+ 当前 hash != last_hash OR last_hash 为空
115
+ → 进入 Step 4d 执行完整更新
116
+ ```
117
+
118
+ #### Step 4d:完整前置更新(仅在 hash 不匹配时执行)
119
+
120
+ 调用 `modus-harness-00-skills-builder` 模式 B,执行:
121
+
122
+ 1. **Level 2 加载**:读取完整 SKILL.md 文件
123
+ 2. 扫描该域相关的最新代码文件(近期变更的文件)
124
+ 3. 对比 Skill 内容与代码现实,识别差异
125
+ 4. 更新 Skill 文件中过时的信息,更新 `last_referenced`、`usage_count` 和 `last_hash`
126
+ 5. 输出更新摘要:`✓ modus-biz-order Skill 已更新(新增: OrderStatus.PENDING_REVIEW | maturity: draft→verified)`
78
127
 
79
- 调用 `modus-harness-00-skills-builder` 模式 B,读取并更新相关 Skill。
128
+ 若有未初始化的域,调用模式 A 新建 Skill(`last_hash` 留空,`key_files` AI 填写)。
80
129
 
81
130
  ### Step 5:生成规范文档
82
131
 
@@ -96,7 +145,7 @@ delta_stats:
96
145
  tasks_completed: "0/?"
97
146
  scenarios_covered: "0/?"
98
147
  completed: []
99
- pending: [proposal, specs, design, tasks]
148
+ pending: [proposal, specs, design, design-brief, tasks]
100
149
  created: {ISO8601时间戳}
101
150
  ```
102
151
 
@@ -110,6 +159,9 @@ proposal.md
110
159
  └──► design.md
111
160
 
112
161
 
162
+ design-brief.md ← 设计方案(代码开发前的精确实现指南)
163
+
164
+
113
165
  tasks.md
114
166
  ```
115
167
 
@@ -159,7 +211,20 @@ proposal.md
159
211
 
160
212
  **3. design.md** — 技术方案(同 /plan)
161
213
 
162
- **4. tasks.md** — 实现清单(含场景驱动的规格验证章节)
214
+ **4. design-brief.md** — 设计方案(代码开发前的精确实现指南)
215
+
216
+ 调用 `modus-design-brief` Skill,传入:
217
+ - `mode: spec`
218
+ - `output_path: modus/changes/{name}/design-brief.md`
219
+ - `analysis_doc: proposal.md + specs/{domain}/spec.md 内容`
220
+ - `business_skills: 已加载的 Skill 内容`
221
+ - `constitution: constitution 字段`
222
+
223
+ 重点:spec 模式的 design-brief 需在节 6(边界条件)中覆盖所有 delta spec 里的 Scenario 失败路径,节 9(追踪矩阵)中每个 ADDED/MODIFIED Requirement 都必须出现。
224
+
225
+ 生成后更新 `.modus-state.yaml`,追加 `design-brief` 到 `completed`。
226
+
227
+ **5. tasks.md** — 实现清单(含场景驱动的规格验证章节)
163
228
 
164
229
  在 tasks.md 末尾加入**场景驱动的验证章节**——每个 TODO 项直接追踪到 delta spec 中对应的 Scenario:
165
230
 
@@ -183,6 +248,7 @@ proposal.md
183
248
  modus/changes/{name}/proposal.md
184
249
  modus/changes/{name}/specs/{domain}/spec.md ← delta specs({N}个场景)
185
250
  modus/changes/{name}/design.md
251
+ modus/changes/{name}/design-brief.md ← 设计方案({N}节 | 追踪矩阵 {N}行)
186
252
  modus/changes/{name}/tasks.md
187
253
  modus/changes/{name}/.modus-state.yaml
188
254
 
@@ -236,6 +302,7 @@ modus/
236
302
  │ ├── proposal.md
237
303
  │ ├── specs/order/spec.md ← delta specs
238
304
  │ ├── design.md
305
+ │ ├── design-brief.md ← 设计方案(代码开发前的实现指南)
239
306
  │ └── tasks.md
240
307
  └── changes/archive/
241
308
  └── 2026-04-20-add-batch-approve/
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: modus-vibe
3
+ description: Use this skill when executing /modus:vibe command for context-aware vibe coding. Loads relevant business Skills before coding so AI works as a knowledgeable project member. Trigger on /modus:vibe command or when user wants to code with business context. Supports --quick flag for simple single-file changes.
4
+ allowed-tools: Read, Write, Glob, Bash
5
+ disable: false
6
+ ---
7
+
1
8
  # modus-vibe(氛围编程)
2
9
 
3
10
  **触发条件:** 用户运行 `/modus:vibe [描述]` 时使用此 Skill。
@@ -117,13 +124,72 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
117
124
  如果理解无误,我来开始实现。
118
125
  ```
119
126
 
127
+ ### Step 5.5:内联设计思考(Design Brief CoT)
128
+
129
+ **触发:** 每次编码任务前强制执行,不可跳过(包括 `--quick` 模式)。
130
+ **产出:** 内联于当前 LLM 上下文,**不写入任何文件**。
131
+
132
+ 调用 `modus-design-brief` Skill,传入:
133
+ - `mode: vibe`(触发内联输出模式,不落盘)
134
+ - `analysis_doc: 用户 prompt + Step 5 确认的意图摘要`
135
+ - `business_skills: Step 4 已加载的 Skill 内容`
136
+ - `constitution: Step 0 读取的 constitution 字段`
137
+
138
+ Skill 将按 9 节结构,基于已加载上下文实时推导并输出以下内联块:
139
+
140
+ ```
141
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
142
+ [Design Brief — 内联设计方案,仅用于本次编码,不写文件]
143
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
+
145
+ ## 1. 基本信息
146
+ 模式: vibe | 涉及域: {domain1}, {domain2}
147
+
148
+ ## 2. 业务意图摘要
149
+ {来自 Step 5 的意图摘要}
150
+
151
+ ## 3. 实体与数据模型
152
+ {基于 Skill [model] 条目和用户意图推导,字段带类型}
153
+
154
+ ## 4. API / 接口合同
155
+ {方法签名,带完整包路径}
156
+
157
+ ## 5. 实现蓝图
158
+ Data: {具体 Mapper 类/方法}
159
+ Service: {具体 Manager/Service 类/方法,标注 @Transactional 位置}
160
+ API: {Facade/Controller 类/方法}
161
+
162
+ ## 6. 边界条件与异常处理
163
+ {覆盖关键失败路径,含错误码}
164
+
165
+ ## 7. 代码生成提示
166
+ {来自 Skill key_files 的可复用类 + 命名规范示例}
167
+
168
+ ## 8. 禁止事项与已知坑
169
+ {constitution hard_rules + Skill [pitfall]}
170
+
171
+ ## 9. 需求-任务追踪矩阵
172
+ | 需求点 | 对应实现 | 对应校验方式 |
173
+ |---|---|---|
174
+ | {需求} | {类/方法} | {测试/联调} |
175
+
176
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
177
+ [End of Design Brief — 开始编码]
178
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
179
+ ```
180
+
181
+ **简化原则(vibe 模式):**
182
+ - 若 Skill 中某节内容明确,可适度精简,但不可省略节标题
183
+ - 节 9 追踪矩阵在 vibe 模式下用「需求点→实现→校验方式」代替完整 Sprint 映射
184
+ - 若 `--quick` 模式,节 3/4/9 可简化为一行摘要,但节 8 禁止事项必须完整输出
185
+
120
186
  ### Step 6:执行编码任务(Level 3 按需加载)
121
187
 
122
- 基于已加载的业务上下文和澄清后的意图,执行用户的编码请求:
188
+ 基于 Step 5.5 内联设计方案和澄清后的意图,执行用户的编码请求:
123
189
 
124
- - 遵循项目已有的代码风格和命名规范(从 Skill 提取)
125
- - **严格遵守 constitution 中的 hard_rules**(比 Skill 中的建议优先级更高)
126
- - 引用已知的实体、接口、关键文件(避免臆造)
190
+ - Step 5.5 内联设计方案中节 5(实现蓝图)为编码路线图
191
+ - 严格遵守节 8(禁止事项)——这是 constitution hard_rules Skill [pitfall] 的汇总
192
+ - 引用节 7(代码生成提示)中的现有类路径,不凭空创造类名
127
193
  - **Level 3 加载:** 需要具体代码实现时,按需读取 Skill 中 `关键文件索引` 指向的实际代码文件(而非预先全量读取)
128
194
  - 对不确定的业务规则,优先参考 Skill 中的规则描述
129
195
  - 如发现 Skill 中记录有误或过时,在回复末尾标注「Skill 更新建议」
@@ -158,9 +224,10 @@ B. 继续使用降级模式(无业务上下文,结果质量可能降低)
158
224
 
159
225
  ## 氛围编程原则
160
226
 
161
- - **先理解再编码**:先复述对需求的理解,确认后再写代码
227
+ - **先设计再编码**:Step 5.5 内联设计方案是编码的前置必要步骤,不可省略
228
+ - **设计驱动**:编码时以内联设计方案的实现蓝图(节 5)为路线图,禁止事项(节 8)为红线
162
229
  - **有据可依**:引用的实体、字段、接口名必须来自 Skill 或已有代码
163
230
  - **风格一致**:生成的代码应与项目现有风格保持一致
164
- - **宪法优先**:constitution.hard_rules 是不可违反的底线,优先于一切
231
+ - **宪法优先**:constitution.hard_rules 是不可违反的底线,优先于一切(已汇总到设计方案节 8)
165
232
  - **按需加载**:不预先读取所有 Skill,降低 token 消耗
166
233
  - **主动补全**:发现明显缺失(如缺少参数校验、日志)时主动补充