@modus-ai/modus 0.1.1 → 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 +46 -3
- 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 +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
|
-
|
|
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/
|
|
@@ -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
|
-
-
|
|
125
|
-
-
|
|
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
|
- **主动补全**:发现明显缺失(如缺少参数校验、日志)时主动补充
|