@modus-ai/modus 0.1.0 → 0.1.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.
- package/dist/cli/index.js +41 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/global.d.ts +15 -0
- package/dist/commands/global.d.ts.map +1 -0
- package/dist/commands/global.js +222 -0
- package/dist/commands/global.js.map +1 -0
- package/dist/commands/init.d.ts +17 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +278 -58
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts +8 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +27 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/generators/codebuddy.d.ts +5 -1
- package/dist/generators/codebuddy.d.ts.map +1 -1
- package/dist/generators/codebuddy.js +358 -5
- package/dist/generators/codebuddy.js.map +1 -1
- package/dist/utils/config.d.ts +17 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +15 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/modus-harness-00-skills-builder.md +12 -0
- package/templates/agents/modus-harness-01-5-design.md +40 -0
- package/templates/agents/modus-harness-01-analysis.md +14 -0
- package/templates/agents/modus-harness-02-dev.md +16 -0
- package/templates/agents/modus-harness-03-test.md +16 -0
- package/templates/agents/modus-harness-04-perf.md +16 -0
- package/templates/agents/modus-harness-05-security.md +16 -0
- package/templates/agents/modus-harness-06-review.md +16 -0
- package/templates/agents/modus-harness-07-deploy.md +16 -0
- package/templates/commands/modus.md +25 -0
- package/templates/hooks/post-tool-use-lint.py +78 -0
- package/templates/hooks/pre-compact-save.py +117 -0
- package/templates/hooks/pre-tool-use-safety.py +80 -0
- package/templates/hooks/session-start.py +86 -0
- package/templates/hooks/stop-update-skills.py +91 -0
- package/templates/hooks-config.json +83 -0
- package/templates/rules/modus-constitution/RULE.mdc +40 -0
- package/templates/rules/modus-design-brief/RULE.mdc +127 -0
- package/templates/rules/modus-workflow/RULE.mdc +64 -0
- package/templates/skills/modus-design-brief/SKILL.md +324 -0
- package/templates/skills/modus-harness/SKILL.md +17 -0
- package/templates/skills/modus-harness-agents/00-skills-builder/SKILL.md +80 -6
- package/templates/skills/modus-harness-agents/01-5-design/SKILL.md +140 -0
- package/templates/skills/modus-harness-agents/01-analysis/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/02-dev/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/03-test/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/04-perf/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/05-security/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/06-review/SKILL.md +7 -0
- package/templates/skills/modus-harness-agents/07-deploy/SKILL.md +7 -0
- package/templates/skills/modus-init/SKILL.md +24 -0
- package/templates/skills/modus-plan/SKILL.md +65 -8
- package/templates/skills/modus-spec/SKILL.md +71 -4
- package/templates/skills/modus-vibe/SKILL.md +89 -6
|
@@ -1,3 +1,10 @@
|
|
|
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
|
+
|
|
1
8
|
# modus-harness-00-skills-builder(Skills Builder SubAgent)
|
|
2
9
|
|
|
3
10
|
**调用方:** `/modus:init` / `/modus:plan` 前置更新 / `/modus:spec` 前置更新 / Harness 后置更新 / Harness ARCHIVE 阶段
|
|
@@ -16,10 +23,31 @@
|
|
|
16
23
|
|
|
17
24
|
为每个确认的业务域从零生成 `modus-biz-{domain}/SKILL.md`,初始 maturity 为 `draft`。
|
|
18
25
|
|
|
19
|
-
### 模式 B:增量更新(来自 /plan 或 /spec
|
|
26
|
+
### 模式 B:增量更新(来自 /plan 或 /spec 前置,含 hash 快速检查)
|
|
27
|
+
|
|
28
|
+
更新已有 `modus-biz-*/SKILL.md`,刷新过时内容,补充新发现的知识。
|
|
29
|
+
|
|
30
|
+
**执行前必须先进行 hash 检查,避免不必要的全量扫描:**
|
|
31
|
+
|
|
32
|
+
#### 模式 B — Step 0:hash 检查(每个域独立检查)
|
|
20
33
|
|
|
21
|
-
|
|
22
|
-
|
|
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` 字段。
|
|
23
51
|
|
|
24
52
|
### 模式 C:后置回写(来自 /plan、/spec 归档后)
|
|
25
53
|
|
|
@@ -48,6 +76,14 @@
|
|
|
48
76
|
- 本次工作流成功验证了某条知识 → `draft` 升为 `verified`,更新 `last_referenced` 和 `usage_count +1`
|
|
49
77
|
- 若该知识已是 `verified` 且跨不同工作流被引用 ≥2 次 → 升为 `proven`
|
|
50
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
|
+
|
|
51
87
|
**衰减检查(每次模式 D 执行时顺带检查):**
|
|
52
88
|
- 扫描 catalog,检查 `last_referenced` 超过阈值的条目
|
|
53
89
|
- `proven` + 超过 12 个月未引用 → 降为 `verified`,追加注释 `⚠️ 12个月未引用,请验证是否仍然适用`
|
|
@@ -97,17 +133,49 @@
|
|
|
97
133
|
- API 契约(从 Controller/Facade 提炼):接口路径、关键请求/响应字段
|
|
98
134
|
- 典型代码示例(可选,高价值):体现项目特有模式的代码片段
|
|
99
135
|
|
|
100
|
-
### Step 3
|
|
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 文件
|
|
101
168
|
|
|
102
169
|
按 Business Skill 标准格式生成或更新文件:
|
|
103
170
|
|
|
104
171
|
**更新策略(模式 B/C/D):**
|
|
105
172
|
- 对比现有 Skill 内容和最新信息,识别差异
|
|
106
|
-
-
|
|
173
|
+
- **新增内容追加到文件末尾**,修改内容以注释方式标注(见 Step 3)
|
|
107
174
|
- 更新文件头的 `updated` 日期、`version`(自增)、`last_referenced`、`usage_count`
|
|
175
|
+
- **模式 B/D 完整更新后**:重新计算 `key_files` 内容的 SHA-1 并写入 `last_hash`(模式 C 后置回写不更新 hash,因为它是从产出物提取知识而非扫描代码)
|
|
108
176
|
- 在文件末尾追加「本次更新摘要」注释
|
|
109
177
|
|
|
110
|
-
### Step
|
|
178
|
+
### Step 5:更新 knowledge-catalog.md
|
|
111
179
|
|
|
112
180
|
每次写入 Skill 后,同步更新 `modus/knowledge-catalog.md`:
|
|
113
181
|
- 更新对应条目的 `maturity`、`last_referenced`
|
|
@@ -129,6 +197,12 @@ updated: {YYYY-MM-DD}
|
|
|
129
197
|
maturity: draft # draft | verified | proven
|
|
130
198
|
last_referenced: {YYYY-MM-DD}
|
|
131
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
|
|
132
206
|
---
|
|
133
207
|
|
|
134
208
|
# {中文域名}业务知识
|
|
@@ -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
|
-
|
|
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` 和 `
|
|
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.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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/
|