@modus-ai/modus 0.2.1 → 0.2.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 (41) hide show
  1. package/README.md +229 -0
  2. package/dist/cli/index.js +1 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/init.js +1 -1
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/generators/claude.js +24 -24
  7. package/dist/generators/claude.js.map +1 -1
  8. package/dist/generators/codebuddy.js +24 -24
  9. package/dist/generators/codebuddy.js.map +1 -1
  10. package/dist/generators/cursor.d.ts +2 -1
  11. package/dist/generators/cursor.d.ts.map +1 -1
  12. package/dist/generators/cursor.js +46 -70
  13. package/dist/generators/cursor.js.map +1 -1
  14. package/package.json +1 -1
  15. package/schemas/harness-schema.yaml +7 -7
  16. package/templates/agents/{modus-harness-01-analysis.md → modus-analyst.md} +2 -2
  17. package/templates/agents/{modus-harness-07-deploy.md → modus-deployer.md} +2 -2
  18. package/templates/agents/{modus-harness-01-5-design.md → modus-designer.md} +3 -3
  19. package/templates/agents/{modus-harness-02-dev.md → modus-developer.md} +2 -2
  20. package/templates/agents/{modus-harness-04-perf.md → modus-perf-auditor.md} +2 -2
  21. package/templates/agents/{modus-harness-06-review.md → modus-reviewer.md} +2 -2
  22. package/templates/agents/{modus-harness-05-security.md → modus-security-auditor.md} +2 -2
  23. package/templates/agents/{modus-harness-00-skills-builder.md → modus-skill-creator.md} +2 -2
  24. package/templates/agents/{modus-harness-03-test.md → modus-tester.md} +2 -2
  25. package/templates/commands/vibe.md +12 -8
  26. package/templates/skills/{modus-harness-agents/01-analysis → modus-agents/analyst}/SKILL.md +2 -2
  27. package/templates/skills/{modus-harness-agents/07-deploy → modus-agents/deployer}/SKILL.md +2 -2
  28. package/templates/skills/{modus-harness-agents/01-5-design → modus-agents/designer}/SKILL.md +2 -2
  29. package/templates/skills/{modus-harness-agents/02-dev → modus-agents/developer}/SKILL.md +2 -2
  30. package/templates/skills/{modus-harness-agents/04-perf → modus-agents/perf-auditor}/SKILL.md +2 -2
  31. package/templates/skills/{modus-harness-agents/06-review → modus-agents/reviewer}/SKILL.md +2 -2
  32. package/templates/skills/{modus-harness-agents/05-security → modus-agents/security-auditor}/SKILL.md +2 -2
  33. package/templates/skills/modus-agents/skill-creator/SKILL.md +1063 -0
  34. package/templates/skills/{modus-harness-agents/03-test → modus-agents/tester}/SKILL.md +2 -2
  35. package/templates/skills/modus-design-brief/SKILL.md +1 -1
  36. package/templates/skills/modus-harness/SKILL.md +16 -16
  37. package/templates/skills/modus-init/SKILL.md +702 -84
  38. package/templates/skills/modus-plan/SKILL.md +1 -1
  39. package/templates/skills/modus-spec/SKILL.md +2 -2
  40. package/templates/skills/modus-vibe/SKILL.md +200 -93
  41. package/templates/skills/modus-harness-agents/00-skills-builder/SKILL.md +0 -367
@@ -1,367 +0,0 @@
1
- ---
2
- name: modus-harness-00-skills-builder
3
- description: Use this skill when building, updating, or extracting knowledge to/from Business Skill files. Called by /modus:init (Mode A: new), /modus:plan and /modus:spec pre/post update (Mode B/C), Harness ARCHIVE phase (Mode D), and baseline Skill initialization (Mode E). Trigger when any Modus workflow needs to create or refresh .codebuddy/skills/modus-biz-*/SKILL.md or knowledge-catalog.md.
4
- allowed-tools: Read, Write, Glob, Bash
5
- disable: false
6
- ---
7
-
8
- # modus-harness-00-skills-builder(Skills Builder SubAgent)
9
-
10
- **调用方:** `/modus:init` / `/modus:plan` 前置更新 / `/modus:spec` 前置更新 / Harness 后置更新 / Harness ARCHIVE 阶段
11
- **输入:** 业务域信息 + 项目代码
12
- **产出物:** `.codebuddy/skills/modus-biz-{domain}/SKILL.md` / `modus-team-conventions/SKILL.md` / `modus-tech-wiki/SKILL.md` + `modus/knowledge-catalog.md` 更新
13
-
14
- ## 职责
15
-
16
- 从项目代码和工作流产物中提炼业务知识,生成或更新标准格式的 Skill 文件,并维护知识全景目录(`knowledge-catalog.md`)。支持五种调用模式,覆盖从初始化到持续积累的完整知识生命周期。
17
-
18
- ---
19
-
20
- ## 调用模式
21
-
22
- ### 模式 A:全量初始化(来自 /modus:init)
23
-
24
- 为每个确认的业务域从零生成 `modus-biz-{domain}/SKILL.md`,初始 maturity 为 `draft`。
25
-
26
- ### 模式 B:增量更新(来自 /plan 或 /spec 前置,含 hash 快速检查)
27
-
28
- 更新已有 `modus-biz-*/SKILL.md`,刷新过时内容,补充新发现的知识。
29
-
30
- **执行前必须先进行 hash 检查,避免不必要的全量扫描:**
31
-
32
- #### 模式 B — Step 0:hash 检查(每个域独立检查)
33
-
34
- 1. 读取 SKILL.md frontmatter 的 `last_hash` 和 `key_files`
35
- 2. 使用 Bash 计算当前 `key_files` 内容的 SHA-1 摘要:
36
-
37
- ```bash
38
- shasum -a 1 {file1} {file2} ... | awk '{print $1}' | sort | shasum -a 1 | awk '{print $1}'
39
- ```
40
-
41
- 3. 对比结果:
42
- - **hash 一致(且 last_hash 非空)** → 跳过全量扫描,仅更新 `last_referenced` 字段,输出:
43
- `✓ modus-biz-{domain} 无变化(hash 匹配),跳过更新(节省 ~2000 tokens)`
44
- - **hash 不一致 或 last_hash 为空** → 执行下方完整流程
45
- - **key_files 为空 或 某文件不存在** → 视为「已变化」,执行完整流程
46
-
47
- #### 模式 B — 完整更新流程(仅 hash 不匹配时执行)
48
-
49
- 对比现有 Skill 内容与最新代码,**仅修改有变化的部分**,保留无变化的内容。
50
- 更新完成后,**必须**将新 hash 写入 frontmatter 的 `last_hash` 字段。
51
-
52
- ### 模式 C:后置回写(来自 /plan、/spec 归档后)
53
-
54
- 将本次工作中新确立的决策、规则、接口契约追加或更新到对应 Skill 文件。
55
- 从产出物(design.md、specs/*/spec.md)提取带类型标签的知识:
56
- - delta spec 的 ADDED Requirements → `[process]` / `[model]` 追加到业务 Skill
57
- - delta spec 的 MODIFIED Requirements → 更新对应 `[guideline]`
58
- - design.md 的架构决策章节 → `[decision]` 追加到对应业务 Skill 或 modus-tech-wiki
59
-
60
- ### 模式 D:知识提取(来自 Harness ARCHIVE 阶段)——新增
61
-
62
- 从 Harness 全流程产物中系统性提取知识条目,判断提升路径,写回 Skill 并更新 catalog。
63
-
64
- **输入产物:** `01-analysis.md`、`02-sprint-contract.md`、`cr-report.md`、`07-deploy-status.md`
65
-
66
- **提取规则:**
67
-
68
- | 来源产物 | 提取内容 | 知识类型 | 写入目标 |
69
- |---------|---------|---------|---------|
70
- | 01-analysis.md 的风险点 | 业务边界条件、并发风险 | `[pitfall]` | modus-biz-{domain} |
71
- | 02-sprint-contract.md 的架构决策 | 技术选型原因 | `[decision]` | modus-tech-wiki |
72
- | cr-report.md 的 P1/P2 问题 | 规范违反模式 | `[pitfall]` `[guideline]` | modus-team-conventions |
73
- | 07-deploy-status.md 的部署注意事项 | 环境特殊配置 | `[guideline]` | modus-tech-wiki |
74
-
75
- **成熟度提升判定:**
76
- - 本次工作流成功验证了某条知识 → `draft` 升为 `verified`,更新 `last_referenced` 和 `usage_count +1`
77
- - 若该知识已是 `verified` 且跨不同工作流被引用 ≥2 次 → 升为 `proven`
78
-
79
- **hash 更新(ARCHIVE 阶段必做):**
80
- - 对每个在本次 Harness 中被修改的业务 Skill(modus-biz-*),在写入知识后**重新计算 hash**:
81
- ```bash
82
- shasum -a 1 {key_files...} | awk '{print $1}' | sort | shasum -a 1 | awk '{print $1}'
83
- ```
84
- - 将新 hash 写入 SKILL.md frontmatter 的 `last_hash` 字段
85
- - 这确保下次 plan/spec 前置检查时,能正确跳过未变化的 Skill
86
-
87
- **衰减检查(每次模式 D 执行时顺带检查):**
88
- - 扫描 catalog,检查 `last_referenced` 超过阈值的条目
89
- - `proven` + 超过 12 个月未引用 → 降为 `verified`,追加注释 `⚠️ 12个月未引用,请验证是否仍然适用`
90
- - `verified` + 超过 6 个月未引用 → 降为 `draft`,追加注释 `⚠️ 6个月未引用,可能已过时`
91
-
92
- ### 模式 E:基础 Skill 初始化(来自 /modus:init)——新增
93
-
94
- 初始化团队约定 Skill(Layer 0-T)和技术知识 Skill(Layer 1)。
95
-
96
- **团队约定 Skill(`.codebuddy/skills/modus-team-conventions/SKILL.md`):**
97
- - 扫描 `CONTRIBUTING.md`、`.editorconfig`、`checkstyle.xml`、`pmd.xml` 等规范文件
98
- - 读取 `modus/config.yaml` 的 `constitution.hard_rules`
99
- - 识别代码中高频注解模式
100
-
101
- **技术知识 Skill(`.codebuddy/skills/modus-tech-wiki/SKILL.md`):**
102
- - 从 `pom.xml` 或 `build.gradle` 提取技术栈和版本信息
103
- - 初始化空的反模式库、架构决策章节(占位符)
104
-
105
- ---
106
-
107
- ## 执行流程
108
-
109
- ### Step 1:定位相关代码/产物
110
-
111
- 根据调用模式和传入的域/产物信息,定位代码文件或产物文件。
112
-
113
- **扫描策略(按优先级):**
114
- 1. 读取传入的「关键文件列表」
115
- 2. 按包名/目录名模糊匹配(如 `order`、`Order` 相关文件)
116
- 3. 扫描 Controller/Facade 层入口,顺调用链向下读取 Service/Manager/Mapper
117
-
118
- ### Step 2:提炼知识内容
119
-
120
- 从代码或产物中提炼以下信息,并打上知识类型标签:
121
-
122
- **知识五类型(MECE 原则):**
123
- - `[model]` 实体定义、数据结构、关系图、枚举
124
- - `[decision]` 技术选型、架构决策及理由
125
- - `[guideline]` 推荐做法(`recommend`)或禁止做法(`avoid`)
126
- - `[pitfall]` 已知风险、故障模式、排查步骤
127
- - `[process]` 业务流程、状态机、操作步骤
128
-
129
- **核心提炼内容:**
130
- - 核心实体(Entity/Domain):类名、关键字段(业务含义重要的)、枚举值
131
- - 业务规则(从 Service/Manager 中提炼):`if/else` 分支、前置校验、状态流转
132
- - 关键文件索引:各层次主要类文件路径
133
- - API 契约(从 Controller/Facade 提炼):接口路径、关键请求/响应字段
134
- - 典型代码示例(可选,高价值):体现项目特有模式的代码片段
135
-
136
- ### Step 3:并发冲突检测(写入前必做)
137
-
138
- 多人协作时,同一个 Skill 可能被并发更新。写入前先检查:
139
-
140
- 1. **读取 Skill 文件头部的 `version` 和 `updated` 字段**
141
- 2. **对比当前内容与本次要写入的内容**,判断是否有冲突风险:
142
-
143
- ```
144
- 冲突场景:
145
- - 你在准备写入 modus-biz-order v2.0.0
146
- - 但文件当前已经是 v2.0.0(说明有人已经抢先更新了)
147
- ```
148
-
149
- **冲突处理策略(merge-friendly,保证 Git 无冲突):**
150
-
151
- - **新增知识** → 只往文件末尾 **追加**(append),不修改已有行
152
- ```markdown
153
- ## 更新日志
154
-
155
- ### {YYYY-MM-DD HH:mm} v{N+1} — {更新者描述}
156
- - [model] 新增 OrderStatus.PENDING_REVIEW 枚举值
157
- - [pitfall] 批量操作超过 500 条会触发慢查询
158
- ```
159
- - **修改已有知识** → 在对应条目后追加 `(已更新: {YYYY-MM-DD})` 注释,不直接覆盖原行
160
- - **删除过时知识** → 不物理删除,改为在条目前加 `~~` 删除线标记并注明原因
161
-
162
- **为什么这样设计:**
163
- - Git merge 时,append-only 的文件几乎不会产生冲突
164
- - 保留了变更历史,方便溯源
165
- - 团队成员可以看到知识演进过程
166
-
167
- ### Step 4:写入 Skill 文件
168
-
169
- 按 Business Skill 标准格式生成或更新文件:
170
-
171
- **更新策略(模式 B/C/D):**
172
- - 对比现有 Skill 内容和最新信息,识别差异
173
- - **新增内容追加到文件末尾**,修改内容以注释方式标注(见 Step 3)
174
- - 更新文件头的 `updated` 日期、`version`(自增)、`last_referenced`、`usage_count`
175
- - **模式 B/D 完整更新后**:重新计算 `key_files` 内容的 SHA-1 并写入 `last_hash`(模式 C 后置回写不更新 hash,因为它是从产出物提取知识而非扫描代码)
176
- - 在文件末尾追加「本次更新摘要」注释
177
-
178
- ### Step 5:更新 knowledge-catalog.md
179
-
180
- 每次写入 Skill 后,同步更新 `modus/knowledge-catalog.md`:
181
- - 更新对应条目的 `maturity`、`last_referenced`
182
- - 若有新建 Skill,追加一行
183
- - 若检测到衰减,在条目后追加 `⚠️` 标记
184
-
185
- ---
186
-
187
- ## Skill 文件标准格式
188
-
189
- ### Business Skill(modus-biz-{domain})
190
-
191
- ```markdown
192
- ---
193
- name: modus-biz-{domain}
194
- description: "[MODUS:BIZ] {中文域名}业务知识 — {核心职责一句话描述}"
195
- version: {N}.0.0
196
- updated: {YYYY-MM-DD}
197
- maturity: draft # draft | verified | proven
198
- last_referenced: {YYYY-MM-DD}
199
- usage_count: 0
200
- last_hash: "" # SHA-1(key_files 内容),模式 B/D 更新后自动计算并填入
201
- key_files: # 关键源文件列表,用于 hash 快速检查(最多 10 个)
202
- - src/.../service/{Domain}Service.java
203
- - src/.../manager/{Domain}Manager.java
204
- - src/.../dao/{Domain}Mapper.java
205
- - src/.../domain/{Domain}.java
206
- ---
207
-
208
- # {中文域名}业务知识
209
-
210
- > 由 Modus Skills Builder 自动生成。[MODUS:BIZ]
211
-
212
- ## 1. 域概述
213
-
214
- {业务域的职责边界和核心价值,2-3 句话,人类可读}
215
-
216
- **边界说明:**
217
- - 属于本域:{列举主要职责}
218
- - 不属于本域:{明确排除的职责}
219
-
220
- ## 2. 核心实体 [model]
221
-
222
- | 实体名 | 中文名 | 说明 | 关键字段 |
223
- |--------|--------|------|----------|
224
- | Order | 订单 | ... | id, status, tenantId, amount |
225
-
226
- ### 重要枚举 [model]
227
-
228
- \`\`\`java
229
- // OrderStatus — 订单状态
230
- CREATED(1, "已创建"),
231
- PAID(2, "已支付"),
232
- COMPLETED(3, "已完成"),
233
- CANCELLED(4, "已取消")
234
- \`\`\`
235
-
236
- ## 3. 业务规则
237
-
238
- - [process] {流程规则:如 订单状态只能按 CREATED→PAID→COMPLETED 单向流转}
239
- - [guideline] {推荐做法:如 退款金额必须 ≤ 原始支付金额,在 Service 层校验}
240
- - [pitfall] {已知坑:如 并发创建时若不加锁会出现重复订单}
241
- - [decision] {架构决策:如 选择 MQ 异步通知而非同步 RPC,原因是解耦和削峰}
242
-
243
- ## 4. 关键文件索引 [model]
244
-
245
- | 层次 | 类名 | 路径 | 说明 |
246
- |------|------|------|------|
247
- | Controller | OrderController | src/.../controller/OrderController.java | 订单 REST 接口 |
248
- | Service | OrderService | src/.../service/OrderService.java | 订单核心逻辑 |
249
- | Mapper | OrderMapper | src/.../dao/OrderMapper.java | 订单 DB 操作(注意:在 dao 包下)|
250
- | Domain | Order | src/.../domain/Order.java | 订单领域对象 |
251
-
252
- ## 5. API 契约 [model]
253
-
254
- | 方法 | 路径 | 说明 | 关键参数 |
255
- |------|------|------|----------|
256
- | POST | /api/v1/orders | 创建订单 | amount, productId |
257
- | GET | /api/v1/orders/{id} | 查询订单 | id |
258
-
259
- ## 6. 项目特有模式 [decision] [guideline]
260
-
261
- - [guideline] 事务使用 `AopContext.currentProxy()` 解决同类调用问题(avoid: @Transactional 直接同类调用)
262
- - [guideline] 分布式锁使用 `@DistributedLock` 注解,key 格式为 `{domain}:{id}`
263
- - [guideline] 响应统一用 `BaseRpcResponse.build(data)` 包装
264
-
265
- ## 7. 典型代码示例
266
-
267
- \`\`\`java
268
- // 订单创建的标准模式
269
- public OrderDTO createOrder(CreateOrderRequest request) {
270
- // 1. 参数校验(Service 层)
271
- // 2. 业务校验(余额、库存)
272
- // 3. 创建 Domain 对象
273
- // 4. 持久化
274
- // 5. 发送 MQ 通知
275
- // 6. 返回 DTO
276
- }
277
- \`\`\`
278
-
279
- ---
280
- <!-- 更新摘要(由 Skills Builder 自动追加)
281
- [{YYYY-MM-DD}] 模式B更新:新增 OrderStatus.PENDING_REVIEW 枚举值
282
- [{YYYY-MM-DD}] 模式C回写:新增批量审批接口 POST /orders/batch-approve 的 API 契约
283
- -->
284
- ```
285
-
286
- ### 团队约定 Skill(modus-team-conventions)
287
-
288
- ```markdown
289
- ---
290
- name: modus-team-conventions
291
- description: "[MODUS:TEAM] 团队约定 — 代码规范/提交规范/最佳实践"
292
- version: 1.0.0
293
- updated: {YYYY-MM-DD}
294
- maturity: draft
295
- layer: "0-T"
296
- ---
297
-
298
- # 团队约定
299
-
300
- > Layer 0-T:团队级约定,所有项目成员和 SubAgent 必须遵守。
301
-
302
- ## 1. 编码规范 [guideline]
303
-
304
- - [guideline] {从 checkstyle/pmd 提取的关键规则}
305
- - [guideline] {命名规范:如 常量全大写下划线,变量驼峰命名}
306
-
307
- ## 2. 项目硬性约束 [guideline]
308
-
309
- (来自 modus/config.yaml constitution.hard_rules)
310
- - [guideline] {规则1}
311
- - [guideline] {规则2}
312
-
313
- ## 3. 提交规范 [process]
314
-
315
- - [process] Commit message 格式:`{type}({scope}): {subject}`
316
- - [process] type 可选:feat/fix/refactor/test/docs/chore
317
-
318
- ## 4. 常见反模式 [pitfall]
319
-
320
- - [pitfall] {反模式1:如 禁止在 Controller 层写业务逻辑}
321
- - [pitfall] {反模式2:如 禁止直接修改 final 字段绕过业务校验}
322
- ```
323
-
324
- ### 技术知识 Skill(modus-tech-wiki)
325
-
326
- ```markdown
327
- ---
328
- name: modus-tech-wiki
329
- description: "[MODUS:TECH] 跨项目技术知识 — 架构决策/反模式/性能优化经验"
330
- version: 1.0.0
331
- updated: {YYYY-MM-DD}
332
- maturity: draft
333
- layer: "1"
334
- ---
335
-
336
- # 技术知识库
337
-
338
- > Layer 1:跨项目通用技术经验,由工作流自动积累。
339
-
340
- ## 技术栈 [model]
341
-
342
- - 框架:{从 pom.xml 提取}
343
- - 版本:{主要依赖版本}
344
-
345
- ## 架构决策记录 [decision]
346
-
347
- (工作流完成后由 Skills Builder 模式 D 自动追加)
348
-
349
- ## 跨项目反模式库 [pitfall]
350
-
351
- (工作流完成后由 Skills Builder 模式 D 自动追加)
352
-
353
- ## 性能优化经验 [guideline]
354
-
355
- (工作流完成后由 Skills Builder 模式 D 自动追加)
356
- ```
357
-
358
- ---
359
-
360
- ## Skill 质量标准
361
-
362
- - `description` 字段必须包含对应标记:业务 Skill 用 `[MODUS:BIZ]`,团队约定用 `[MODUS:TEAM]`,技术知识用 `[MODUS:TECH]`
363
- - 业务规则必须来自代码,不能臆造
364
- - 关键文件索引路径必须真实存在
365
- - 每条知识条目必须打上五类型标签之一:`[model]` `[decision]` `[guideline]` `[pitfall]` `[process]`
366
- - 更新时必须更新 `updated` 日期和 `last_referenced`
367
- - 模式 D 每次执行后必须同步更新 `modus/knowledge-catalog.md`