@modus-ai/modus 0.2.10 → 0.3.0
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 +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +8 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +39 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +234 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +9 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/generators/claude.d.ts +4 -2
- package/dist/generators/claude.d.ts.map +1 -1
- package/dist/generators/claude.js +17 -8
- package/dist/generators/claude.js.map +1 -1
- package/dist/generators/codebuddy.d.ts.map +1 -1
- package/dist/generators/codebuddy.js +15 -3
- package/dist/generators/codebuddy.js.map +1 -1
- package/dist/generators/codex.d.ts.map +1 -1
- package/dist/generators/codex.js +4 -4
- package/dist/generators/codex.js.map +1 -1
- package/dist/generators/continue.d.ts +17 -0
- package/dist/generators/continue.d.ts.map +1 -0
- package/dist/generators/continue.js +441 -0
- package/dist/generators/continue.js.map +1 -0
- package/dist/generators/copilot.d.ts.map +1 -1
- package/dist/generators/copilot.js +3 -2
- package/dist/generators/copilot.js.map +1 -1
- package/dist/generators/cursor.d.ts +4 -3
- package/dist/generators/cursor.d.ts.map +1 -1
- package/dist/generators/cursor.js +22 -11
- package/dist/generators/cursor.js.map +1 -1
- package/dist/generators/custom.d.ts +2 -2
- package/dist/generators/custom.d.ts.map +1 -1
- package/dist/generators/custom.js +9 -2
- package/dist/generators/custom.js.map +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +11 -0
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/modus.d.ts +12 -0
- package/dist/generators/modus.d.ts.map +1 -0
- package/dist/generators/modus.js +225 -0
- package/dist/generators/modus.js.map +1 -0
- package/dist/utils/config.d.ts +20 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/file-system.d.ts +16 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +40 -0
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +1 -1
- package/schemas/harness-schema.yaml +13 -13
- package/templates/agents/modus-analyst.md +2 -2
- package/templates/agents/modus-deployer.md +1 -1
- package/templates/agents/modus-designer.md +1 -1
- package/templates/agents/modus-developer.md +1 -1
- package/templates/agents/modus-perf-auditor.md +1 -1
- package/templates/agents/modus-reviewer.md +1 -1
- package/templates/agents/modus-security-auditor.md +1 -1
- package/templates/agents/modus-skill-creator.md +1 -1
- package/templates/agents/modus-tester.md +1 -1
- package/templates/commands/auto.md +3 -1
- package/templates/commands/commit.md +11 -5
- package/templates/commands/cr.md +14 -10
- package/templates/commands/harness.md +27 -18
- package/templates/commands/init.md +56 -23
- package/templates/commands/modus.md +33 -11
- package/templates/commands/plan.md +23 -19
- package/templates/commands/spec.md +30 -17
- package/templates/commands/upgrade.md +50 -38
- package/templates/commands/vibe.md +30 -20
- package/templates/domain-business-readme.md +69 -0
- package/templates/domain-code/SKILL.md +94 -0
- package/templates/domain-code/apis.md +48 -0
- package/templates/domain-code/data-models.md +57 -0
- package/templates/domain-code/entities.md +45 -0
- package/templates/domain-code/services.md +51 -0
- package/templates/domain-history-readme.md +60 -0
- package/templates/domain-scenarios-readme.md +58 -0
- package/templates/knowledge-base-map.md +78 -0
- package/templates/knowledge-base-service-graph.md +100 -0
- package/templates/knowledge-catalog.md +38 -43
- package/templates/paths-v4.md +156 -0
- package/templates/rules/modus-workflow/RULE.mdc +45 -38
- package/templates/skills/modus-agents/analyst/SKILL.md +1 -1
- package/templates/skills/modus-agents/developer/SKILL.md +1 -1
- package/templates/skills/modus-agents/reviewer/SKILL.md +1 -1
- package/templates/skills/modus-agents/skill-creator/SKILL.md +3 -3
- package/templates/skills/modus-auto/SKILL.md +19 -19
- package/templates/skills/modus-cr/SKILL.md +1 -1
- package/templates/skills/modus-design-brief/SKILL.md +3 -3
- package/templates/skills/modus-harness/SKILL.md +5 -5
- package/templates/skills/modus-init/SKILL.md +330 -824
- package/templates/skills/modus-init/shared/frontmatter-spec.md +255 -0
- package/templates/skills/modus-init/shared/stack-detection.md +144 -0
- package/templates/skills/modus-init/shared/universal-skill-format.md +362 -0
- package/templates/skills/modus-init/strategies/fallback-init.md +150 -0
- package/templates/skills/modus-init/strategies/frontend-init.md +298 -0
- package/templates/skills/modus-init/strategies/java-init.md +278 -0
- package/templates/skills/modus-plan/SKILL.md +6 -6
- package/templates/skills/modus-platform/SKILL.md +1 -1
- package/templates/skills/modus-spec/SKILL.md +1 -1
- package/templates/skills/modus-vibe/SKILL.md +10 -10
- package/templates/template/analysis.md +83 -0
- package/templates/template/design.md +160 -0
- package/templates/template/pid.md +97 -0
- package/templates/template/plan.md +91 -0
- package/templates/template/spec.md +78 -0
- package/templates/template/sprint-contract.md +101 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# {Domain} — 知识演变历史(History)
|
|
2
|
+
|
|
3
|
+
> **路径**:`modus/knowledge_base/domain/{domain}/history/`
|
|
4
|
+
> **作用**:增量变更历史。**最新版本写入 `code/`**,旧版本归档于此,形成可追溯的演变链。
|
|
5
|
+
> **维护**:`/modus:init` 强刷时自动归档旧版本;命令归档(`/modus:auto --archive`)时按 Story 写入。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 文件命名规范
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
history/
|
|
13
|
+
├── README.md
|
|
14
|
+
├── 2026-05-22-init.md # 首次初始化快照
|
|
15
|
+
├── 2026-06-10-S12345.md # 关联 Story 的变更
|
|
16
|
+
├── 2026-07-01-refactor.md # 重构变更
|
|
17
|
+
└── snapshots/ # 整目录快照(重大重构前)
|
|
18
|
+
└── 2026-08-15-pre-refactor/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 文件内容模板
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
# {YYYY-MM-DD} — {Change Title}
|
|
27
|
+
|
|
28
|
+
## 元信息
|
|
29
|
+
- 触发:(init / story / refactor / manual)
|
|
30
|
+
- 关联 Story:S-12345
|
|
31
|
+
- 涉及文件:code/entities.md, code/apis.md
|
|
32
|
+
- 变更摘要:
|
|
33
|
+
|
|
34
|
+
## 关键 Diff(人类可读)
|
|
35
|
+
- 新增:实体 `XxxBO`,字段 `yyy`
|
|
36
|
+
- 修改:接口 `/api/v1/foo` 入参从 `bar` 改为 `baz`
|
|
37
|
+
- 删除:废弃的 `OldService.process`
|
|
38
|
+
|
|
39
|
+
## 业务影响
|
|
40
|
+
(变更是否破坏向后兼容?是否需要灰度?)
|
|
41
|
+
|
|
42
|
+
## 评审记录
|
|
43
|
+
| 评审人 | 意见 |
|
|
44
|
+
|-------|------|
|
|
45
|
+
| | |
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 检索方式
|
|
51
|
+
|
|
52
|
+
| 场景 | 检索路径 |
|
|
53
|
+
|------|---------|
|
|
54
|
+
| 历史相似 Story | grep `S-XXXXX` history/*.md |
|
|
55
|
+
| 某个实体的演变 | grep `EntityName` history/*.md |
|
|
56
|
+
| 某段时间的所有变更 | ls history/2026-Q2-*.md |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
> **维护提示**:本目录**只追加,不删除**(除非显式手工清理 snapshots/)。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# {Domain} — 测试场景(Test Scenarios)
|
|
2
|
+
|
|
3
|
+
> **路径**:`modus/knowledge_base/domain/{domain}/scenarios/`
|
|
4
|
+
> **作用**:场景化接口调用链 + 端到端用例,供**测试团队消费**与**spec 阶段引用**。
|
|
5
|
+
> **特性**:人工维护为主;命令也可写入(如 `/modus:spec` 完成时回写)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 文件组织
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
scenarios/
|
|
13
|
+
├── README.md # 本文件
|
|
14
|
+
├── e2e-{flow}.md # 端到端流程(如 e2e-purchase.md)
|
|
15
|
+
├── api-chain-{topic}.md # 接口调用链(如 api-chain-checkout.md)
|
|
16
|
+
├── data-prep.md # 测试数据准备
|
|
17
|
+
└── matrix.md # 兼容性/参数矩阵
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 场景模板
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
# Scenario: 新增专辑分发主流程
|
|
26
|
+
|
|
27
|
+
## 前置数据
|
|
28
|
+
- 用户:`uid=10086`,类型=个人
|
|
29
|
+
- 专辑:`album_id=A001`,状态=待审核
|
|
30
|
+
|
|
31
|
+
## 调用链
|
|
32
|
+
|
|
33
|
+
| 步骤 | 接口 | 参数 | 预期返回 |
|
|
34
|
+
|------|------|------|---------|
|
|
35
|
+
| 1 | POST /api/album/submit | {...} | 200, status=pending |
|
|
36
|
+
| 2 | GET /api/album/A001 | — | status=pending |
|
|
37
|
+
| 3 | POST /admin/album/approve | {id: A001} | 200 |
|
|
38
|
+
| 4 | GET /api/album/A001 | — | status=approved |
|
|
39
|
+
|
|
40
|
+
## 验收点
|
|
41
|
+
- [ ] 状态机正确流转
|
|
42
|
+
- [ ] 审核日志写入
|
|
43
|
+
- [ ] 通知发送
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 与其他资产的关联
|
|
49
|
+
|
|
50
|
+
| 关联 | 说明 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| `../code/apis.md` | 场景使用的接口定义 |
|
|
53
|
+
| `../business/` | 场景背后的业务规则 |
|
|
54
|
+
| `modus/artifacts/<id>/code/spec/` | spec 命令产出的 Gherkin 场景 |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
> **维护提示**:本目录优先服务于"测试团队、spec 阶段、回归测试";命令侧仅在用户显式触发时写入。
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Knowledge Base Map — 知识库地图(v4.0)
|
|
2
|
+
|
|
3
|
+
> **路径**:`modus/knowledge_base/map.md`
|
|
4
|
+
> **作用**:所有 Modus 命令的 Level 1 入口(~200 tokens 加载);提供"部门 → 团队 → 项目 → 业务域"四层索引。
|
|
5
|
+
> **维护**:由 `/modus:init` 自动生成与刷新;用户可手工补充团队/项目元信息。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 项目元信息
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
project: "" # 项目英文名
|
|
13
|
+
project_zh: "" # 项目中文名
|
|
14
|
+
department: "" # 所属部门
|
|
15
|
+
team: "" # 所属团队
|
|
16
|
+
primary_stack: "" # java | frontend | go | python | mixed
|
|
17
|
+
modus_version: "4.0"
|
|
18
|
+
last_init_at: ""
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. 业务域索引(Domain Catalog)
|
|
24
|
+
|
|
25
|
+
> 每个 domain 对应 `modus/knowledge_base/domain/<domain>/`。
|
|
26
|
+
|
|
27
|
+
| Domain | 名称 | 入口 Skill | 业务规则 | 测试场景 | 历史 |
|
|
28
|
+
|--------|------|-----------|---------|---------|------|
|
|
29
|
+
| `_conventions` | 团队约定 | `domain/_conventions/code/SKILL.md` | — | — | — |
|
|
30
|
+
| `_tech-wiki` | 技术 Wiki | `domain/_tech-wiki/code/SKILL.md` | — | — | — |
|
|
31
|
+
| `<domain>` | (示例:合同域) | `domain/<domain>/code/SKILL.md` | `domain/<domain>/business/` | `domain/<domain>/scenarios/` | `domain/<domain>/history/` |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3. 服务调用全图
|
|
36
|
+
|
|
37
|
+
> 详见 `modus/knowledge_base/service-graph.md`。本节仅作快速索引。
|
|
38
|
+
|
|
39
|
+
- 当前注册服务数:N
|
|
40
|
+
- 跨域调用关系:见 service-graph.md §2
|
|
41
|
+
- 外部依赖:见 service-graph.md §3
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 4. 加载策略(命令执行时按需读取)
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
L0 modus/knowledge_base/map.md # ~200 tokens(必读)
|
|
49
|
+
L1 modus/knowledge_base/domain/<d>/code/SKILL.md # ~500 tokens(按域)
|
|
50
|
+
L2 modus/knowledge_base/domain/<d>/code/{entities|apis|services|data-models}.md # ~800 tokens/个(按需)
|
|
51
|
+
L3 modus/knowledge_base/domain/<d>/business/ # 业务规则(仅业务约束相关任务)
|
|
52
|
+
L4 modus/knowledge_base/domain/<d>/scenarios/ # 测试场景(仅 spec 阶段或测试)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 5. 与产物的关联
|
|
58
|
+
|
|
59
|
+
| 阶段 | 产物路径 | 引用知识 |
|
|
60
|
+
|------|---------|---------|
|
|
61
|
+
| 需求澄清 | `modus/artifacts/<id>/pid/` | `domain/<d>/business/` |
|
|
62
|
+
| 评估设计 | `modus/artifacts/<id>/design/` | `domain/<d>/code/`, `service-graph.md` |
|
|
63
|
+
| 编码实施 | `modus/artifacts/<id>/code/` | 全部 |
|
|
64
|
+
| 上线归档 | `modus/artifacts/<id>/archive/` | 反向写入 `domain/<d>/history/` |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 6. 跨项目工作区路由(如适用)
|
|
69
|
+
|
|
70
|
+
> 多项目工作区在仓库根有 `workspace-catalog.md`,列出每个子项目的 `modus/knowledge_base/map.md` 路径。
|
|
71
|
+
|
|
72
|
+
| 子项目 | 路径 |
|
|
73
|
+
|--------|------|
|
|
74
|
+
| | `<sub>/modus/knowledge_base/map.md` |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
> **维护提示**:本文件由 `/modus:init` 强刷生成;如需手工补充,请使用 `> [人工补充]` 注释段落,避免被覆盖。
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Service Graph — 全局服务调用关系图(v4.0)
|
|
2
|
+
|
|
3
|
+
> **路径**:`modus/knowledge_base/service-graph.md`
|
|
4
|
+
> **作用**:L0 级全局视图,标识本项目所有服务的调用关系、外部依赖、数据流向。
|
|
5
|
+
> **维护**:`/modus:init` 自动生成(基于代码扫描) + 人工微调(标注业务语义)。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 元信息
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
generated_at: ""
|
|
13
|
+
generator: "modus-init"
|
|
14
|
+
manual_overrides: [] # 人工手工修正的边的 ID 列表(防止被自动重写覆盖)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. 服务清单(Internal Services)
|
|
20
|
+
|
|
21
|
+
| 服务名 | 类型 | 入口 | 出口 | 所属域 |
|
|
22
|
+
|-------|------|------|------|-------|
|
|
23
|
+
| | HTTP/MQ/RPC/Job | | | |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. 调用关系图(Call Graph)
|
|
28
|
+
|
|
29
|
+
```mermaid
|
|
30
|
+
graph LR
|
|
31
|
+
subgraph 上游
|
|
32
|
+
Up1[上游系统A]
|
|
33
|
+
Up2[上游系统B]
|
|
34
|
+
end
|
|
35
|
+
subgraph 本项目
|
|
36
|
+
S1[服务1]
|
|
37
|
+
S2[服务2]
|
|
38
|
+
end
|
|
39
|
+
subgraph 下游
|
|
40
|
+
D1[下游系统A]
|
|
41
|
+
D2[下游系统B]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Up1 --> S1
|
|
45
|
+
Up2 --> S1
|
|
46
|
+
S1 --> S2
|
|
47
|
+
S2 --> D1
|
|
48
|
+
S2 --> D2
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2.1 关键调用链(Top N)
|
|
52
|
+
|
|
53
|
+
| 链路 ID | 链路描述 | QPS 估算 | 关键超时 |
|
|
54
|
+
|---------|---------|---------|---------|
|
|
55
|
+
| C-001 | | | |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 3. 外部依赖(External Dependencies)
|
|
60
|
+
|
|
61
|
+
| 名称 | 类型 | 用途 | SLA | 兜底方案 |
|
|
62
|
+
|------|------|------|-----|---------|
|
|
63
|
+
| | DB/Cache/MQ/3rd API | | | |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 4. 跨域调用(Cross-Domain Calls)
|
|
68
|
+
|
|
69
|
+
> 标识不同 `domain/` 之间的调用关系,重点关注是否存在循环依赖。
|
|
70
|
+
|
|
71
|
+
| 调用方域 | 被调方域 | 接口 | 是否合理 |
|
|
72
|
+
|---------|---------|------|---------|
|
|
73
|
+
| | | | |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 5. 数据流向(Data Flow,可选)
|
|
78
|
+
|
|
79
|
+
```mermaid
|
|
80
|
+
flowchart LR
|
|
81
|
+
Source[数据源] --> Process1[处理1]
|
|
82
|
+
Process1 --> Storage[(存储)]
|
|
83
|
+
Storage --> Process2[处理2]
|
|
84
|
+
Process2 --> Sink[消费方]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 6. 演进历史
|
|
90
|
+
|
|
91
|
+
| 日期 | 变更 | Story ID | 备注 |
|
|
92
|
+
|------|------|---------|------|
|
|
93
|
+
| | | | |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
> **维护规则**:
|
|
98
|
+
> 1. 自动生成部分(§1、§2 边)由 `/modus:init` 重写;人工标注的部分通过 `manual_overrides` 锁定。
|
|
99
|
+
> 2. §3、§4、§5 主要由人工维护;自动扫描只能给出候选,人工确认后才写入。
|
|
100
|
+
> 3. 任何架构级变更(新增服务、删除服务、调用方向反转)必须更新 §6。
|
|
@@ -1,71 +1,64 @@
|
|
|
1
|
-
# Modus
|
|
2
|
-
#
|
|
3
|
-
# 框架版本:3.1.0 | 知识库路径:{project}/modus/knowledge/**(Single Source of Truth)
|
|
4
|
-
# 多平台适配:CLAUDE.md / AGENTS.md / .cursor/rules/ 均为引用式,修改请直接编辑 modus/knowledge/ 下的文件
|
|
1
|
+
# Modus 知识全景目录(兼容入口) — {project-name}
|
|
2
|
+
# 框架版本:4.0.0
|
|
5
3
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
#
|
|
4
|
+
# ⚠️ v4.0 起本文件已被 `modus/knowledge_base/map.md` 取代。
|
|
5
|
+
# 为保证 v3.x 用户的脚本/Skill 仍可工作,本文件作为兼容入口被生成(指向 v4 路径)。
|
|
6
|
+
# 新项目请直接使用 modus/knowledge_base/map.md。
|
|
7
|
+
|
|
8
|
+
# 新主入口(请改用此路径):
|
|
9
|
+
# modus/knowledge_base/map.md — Level 1 全景索引(~200 tokens)
|
|
10
|
+
# modus/knowledge_base/service-graph.md — Level 1 服务调用图
|
|
11
|
+
|
|
12
|
+
# v4.0 渐进加载(4 级):
|
|
13
|
+
# L1 modus/knowledge_base/map.md
|
|
14
|
+
# L2 modus/knowledge_base/domain/<d>/code/SKILL.md
|
|
15
|
+
# L3 modus/knowledge_base/domain/<d>/code/{entities|apis|services|data-models}.md
|
|
16
|
+
# L4 代码实际文件(按 key_files 索引)
|
|
12
17
|
|
|
13
18
|
updated: {YYYY-MM-DD}
|
|
14
19
|
|
|
15
20
|
## 全局行为守卫 (Layer 0-G)
|
|
16
|
-
# 所有命令 Step 0 加载,优先级:低于 constitution.hard_rules,高于 Skill 建议
|
|
17
21
|
- **behavior-guard**: `modus/behavior-guard.md` — 五条全局行为约束
|
|
18
22
|
(Think Before Coding · Simplicity First · Surgical Changes · Goal-Driven Execution · Token Budget Guard)
|
|
19
23
|
[由 /modus:init 生成,不随项目代码变化,手动维护]
|
|
20
24
|
|
|
21
25
|
## 团队约定 (Layer 0-T)
|
|
22
26
|
- **_conventions**: {规范描述} [maturity: draft] 更新: {日期}
|
|
23
|
-
- 路径:`{project}/modus/
|
|
27
|
+
- v4 路径:`{project}/modus/knowledge_base/domain/_conventions/code/SKILL.md`
|
|
28
|
+
- v3 兼容(已废弃):`{project}/modus/knowledge/_conventions/SKILL.md`
|
|
24
29
|
|
|
25
30
|
## 技术知识 (Layer 1)
|
|
26
31
|
- **_tech-wiki**: {技术栈描述} [maturity: draft] 更新: {日期}
|
|
27
|
-
- 路径:`{project}/modus/
|
|
32
|
+
- v4 路径:`{project}/modus/knowledge_base/domain/_tech-wiki/code/SKILL.md`
|
|
28
33
|
|
|
29
34
|
## 业务知识 (Layer 2)
|
|
30
35
|
<!-- 由 /modus:init 生成,由各模式工作流自动更新 -->
|
|
31
|
-
- **
|
|
32
|
-
- 路径:`{project}/modus/
|
|
36
|
+
- **{domain}**: {中文域名} — {核心职责一句话} [maturity: draft] 最近引用: {日期}
|
|
37
|
+
- v4 路径:`{project}/modus/knowledge_base/domain/{domain}/code/SKILL.md`(入口)
|
|
38
|
+
- 业务规则:`{project}/modus/knowledge_base/domain/{domain}/business/`
|
|
39
|
+
- 测试场景:`{project}/modus/knowledge_base/domain/{domain}/scenarios/`
|
|
40
|
+
- 历史变更:`{project}/modus/knowledge_base/domain/{domain}/history/`
|
|
33
41
|
|
|
34
42
|
## 域依赖图 (Dependency Graph)
|
|
35
43
|
<!--
|
|
36
44
|
格式:{下游域} --> {上游域1}, {上游域2}
|
|
37
|
-
|
|
38
|
-
当上游域 hash 变更时,下游域的 stale_cascade 自动置为 true(在 ⚠️ 标注处可见)。
|
|
39
|
-
由 /modus:init 自动生成,可手动补充跨域调用关系。
|
|
40
|
-
-->
|
|
41
|
-
<!-- example:
|
|
42
|
-
payment --> order, user
|
|
43
|
-
notification --> order, payment
|
|
44
|
-
report --> order, payment, user
|
|
45
|
+
也参见 modus/knowledge_base/service-graph.md
|
|
45
46
|
-->
|
|
46
47
|
<!-- 当前依赖关系(/modus:init 扫描后填入):
|
|
47
48
|
{待填入}
|
|
48
49
|
-->
|
|
49
50
|
|
|
50
|
-
## 渐进加载说明
|
|
51
|
-
|
|
52
|
-
启动任意 Modus 命令时的加载顺序:
|
|
53
|
-
Level 1(必须,~200 tokens): 读本文件,了解有哪些知识可用
|
|
54
|
-
Level 2(按需,~3000 tokens): 根据任务匹配相关域,读对应 SKILL.md
|
|
55
|
-
Level 3(按需,无上限): 执行任务时读 Skill 引用的实际代码文件
|
|
56
|
-
|
|
57
|
-
目标:不相关的 Skill 不加载,大幅降低 token 消耗。
|
|
58
|
-
|
|
59
51
|
## 框架命令(快速参考)
|
|
60
|
-
- **modus:init** `--help` `--enhance [domain]` `--enhance-all` `--migrate` `--dry-run` `--force` `--platform [list]` `--no-sync` `--verbose` `--reset-maturity` `--project [name]`
|
|
52
|
+
- **modus:init** `--help` `--enhance [domain]` `--enhance-all` `--migrate-v4` `--dry-run` `--force` `--platform [list]` `--no-sync` `--verbose` `--reset-maturity` `--project [name]`
|
|
61
53
|
- **modus:vibe** `--help` `--domain [name]` `--project [name]` `--context [file]` `--no-skill` `--verbose` `--dry-run`
|
|
62
|
-
- **modus:plan** `--help` `--story [url]` `--design` `--quick` `--enhance` `--no-build` `--resume [name]` `--complexity [level]` `--project [name]`
|
|
54
|
+
- **modus:plan** `--help` `--story [url]` `--design` `--code [path]` `--continue [name]` `--quick` `--enhance` `--no-build` `--resume [name]` `--complexity [level]` `--project [name]`
|
|
63
55
|
- **modus:spec** `--help` `--story [url]` `--lite` `--delta` `--testcase` `--verify` `--resume [name]` `--no-archive` `--project [name]`
|
|
64
56
|
- **modus:auto** `--help` `--force [mode]` `--no-confirm` `--show-scores` `--project [name]`
|
|
65
|
-
- **modus:harness** `--help` `--story [url]` `--skip [agents]` `--loop1-only` `--resume` `--dry-run` `--force-rebuild-skill` `--no-deploy` `--max-loop2 [n]` `--notify [channel]` `--project [name]`
|
|
57
|
+
- **modus:harness** `--help` `--story [url]` `--from-plan [name]` `--skip [agents]` `--loop1-only` `--resume` `--dry-run` `--force-rebuild-skill` `--no-deploy` `--max-loop2 [n]` `--notify [channel]` `--show-progress` `--project [name]`
|
|
58
|
+
- **modus:cr** `--help` `--doc [path]` `--diff [scope]` `--story [url]` `--quick`
|
|
66
59
|
- **modus:upgrade** `--help` `--check` `--dry-run` `--changelog` `--target [version]` `--project [name]`
|
|
67
60
|
|
|
68
|
-
##
|
|
61
|
+
## Knowledge status 生命周期
|
|
69
62
|
|
|
70
63
|
| status | 含义 | 升级方式 |
|
|
71
64
|
|-----------|-------------------------|-----------------------------------|
|
|
@@ -85,11 +78,13 @@ updated: {YYYY-MM-DD}
|
|
|
85
78
|
|
|
86
79
|
## 防腐机制核心字段
|
|
87
80
|
|
|
88
|
-
|
|
89
|
-
- **last_referenced**:
|
|
90
|
-
- **usage_count**:
|
|
91
|
-
- **last_hash**: 全局 SHA-1
|
|
92
|
-
- **file_hashes**: 文件级 hash map
|
|
93
|
-
- **key_files**:
|
|
81
|
+
每个域 `code/SKILL.md` frontmatter 必须包含以下字段,缺一不可:
|
|
82
|
+
- **last_referenced**: 最后引用时间
|
|
83
|
+
- **usage_count**: 使用次数
|
|
84
|
+
- **last_hash**: 全局 SHA-1(详见 modus-init Skill)
|
|
85
|
+
- **file_hashes**: 文件级 hash map
|
|
86
|
+
- **key_files**: 关键源文件列表
|
|
87
|
+
|
|
88
|
+
详见:`templates/skills/modus-init/SKILL.md`「防腐机制总览」。
|
|
94
89
|
|
|
95
|
-
|
|
90
|
+
> **维护提示**:本文件被生成器视为旧版兼容入口;权威源在 `modus/knowledge_base/map.md`。
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "4.0"
|
|
3
|
+
title: "Modus v4.0 路径权威定义(Single Source of Truth)"
|
|
4
|
+
status: "active"
|
|
5
|
+
supersedes: ["v3.2 路径表"]
|
|
6
|
+
last_updated: "2026-05-22"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Modus v4.0 目录范式(Single Source of Truth)
|
|
10
|
+
|
|
11
|
+
> **本文件是 Modus 框架内所有命令、Skill、Agent、Generator 的"路径唯一权威"。**
|
|
12
|
+
> 任何对路径的引用必须以本文件为准;文件之间发生冲突时,以本文件为准。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. 顶层目录骨架(用户项目侧)
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
<项目根目录>/
|
|
20
|
+
├── .modus/ # CLI 中性层(命令 & 团队技能包)
|
|
21
|
+
│ ├── commands/ # 命令全集(所有平台共建入口)
|
|
22
|
+
│ └── skills/ # 团队自定义技能包(如查日志、查监控)
|
|
23
|
+
│
|
|
24
|
+
├── .codebuddy/ # 平台特定(仅做引用桩)
|
|
25
|
+
├── .claude/ # 平台特定(仅做引用桩)
|
|
26
|
+
├── .cursor/ # 平台特定(仅做引用桩)
|
|
27
|
+
├── .continue/ # 平台特定(仅做引用桩)
|
|
28
|
+
│
|
|
29
|
+
└── modus/ # 顶层 Models 层(所有产物 + 知识统一入口)
|
|
30
|
+
├── template/ # 标准产物模板(命令 / 节点产物)
|
|
31
|
+
│ ├── pid.md # 需求澄清模板
|
|
32
|
+
│ ├── design.md # 评估设计模板
|
|
33
|
+
│ ├── spec.md # Gherkin 验收模板
|
|
34
|
+
│ ├── plan.md # 实施计划模板
|
|
35
|
+
│ ├── analysis.md # 分析报告模板(Harness Loop1)
|
|
36
|
+
│ └── sprint-contract.md # Sprint 契约模板(Harness Loop2)
|
|
37
|
+
│
|
|
38
|
+
├── knowledge_base/ # 知识库(代码知识 + 业务知识 + 测试场景 + 历史)
|
|
39
|
+
│ ├── service-graph.md # L0 全局服务调用关系图
|
|
40
|
+
│ ├── map.md # 知识库地图(部门 → 团队 → 项目三层索引)
|
|
41
|
+
│ └── domain/ # 按业务域划分
|
|
42
|
+
│ ├── _conventions/ # 团队约定(横切,无 business/scenarios)
|
|
43
|
+
│ │ └── code/SKILL.md
|
|
44
|
+
│ ├── _tech-wiki/ # 技术知识(横切,无 business/scenarios)
|
|
45
|
+
│ │ └── code/SKILL.md
|
|
46
|
+
│ └── <domain>/ # 普通业务域(如 contract, copyright, library)
|
|
47
|
+
│ ├── README.md # 域描述与上下游关系
|
|
48
|
+
│ ├── code/ # 代码翻译层(脚本自动提取,可强刷)
|
|
49
|
+
│ │ ├── SKILL.md # 入口(frontmatter + 摘要 + 索引)
|
|
50
|
+
│ │ ├── entities.md # 业务实体
|
|
51
|
+
│ │ ├── apis.md # 接口列表
|
|
52
|
+
│ │ ├── services.md # 服务调用图
|
|
53
|
+
│ │ └── data-models.md # 数据模型
|
|
54
|
+
│ ├── business/ # 人工确认层(业务规则,独立维护,不被强刷覆盖)
|
|
55
|
+
│ │ └── README.md
|
|
56
|
+
│ ├── scenarios/ # 场景化接口调用链(供测试团队消费)
|
|
57
|
+
│ │ └── README.md
|
|
58
|
+
│ └── history/ # 增量变更历史(最新覆盖,旧版归档于此)
|
|
59
|
+
│ └── README.md
|
|
60
|
+
│
|
|
61
|
+
└── artifacts/ # 产物目录(以 Story ID 为维度隔离)
|
|
62
|
+
└── <STORY_ID>/
|
|
63
|
+
├── pid/ # 需求澄清阶段
|
|
64
|
+
│ ├── prd.md # 需求文档(产品原文 + Agent 增强标注)
|
|
65
|
+
│ └── dialog/ # 多轮澄清对话历史(不可变)
|
|
66
|
+
│ └── *.md
|
|
67
|
+
├── design/ # 评估设计阶段
|
|
68
|
+
│ └── design.md # 技术方案(边界/状态流转/接口超时)
|
|
69
|
+
├── code/ # 代码开发阶段(plan/spec/harness 实施)
|
|
70
|
+
│ ├── plan.md # 实施计划
|
|
71
|
+
│ ├── spec/ # Gherkin 规格(可多文件)
|
|
72
|
+
│ ├── sprint-contract.md # Harness Loop2 契约
|
|
73
|
+
│ ├── vibe-log.md # 编码日志
|
|
74
|
+
│ ├── cr-report.md # CR 报告
|
|
75
|
+
│ └── .harness-state.yaml # Harness 状态机
|
|
76
|
+
└── archive/ # 上线验收后人工触发归档
|
|
77
|
+
├── summary.md # 精简版人阅读摘要
|
|
78
|
+
└── key-scenarios/ # 关键场景快照(供后续迭代检索)
|
|
79
|
+
└── *.md
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 2. 路径迁移映射(v3.2 → v4.0)
|
|
85
|
+
|
|
86
|
+
| 维度 | v3.2 旧路径 | v4.0 新路径 |
|
|
87
|
+
|------|------------|------------|
|
|
88
|
+
| 全景索引 | `modus/knowledge-catalog.md` | `modus/knowledge_base/map.md` |
|
|
89
|
+
| 团队约定 | `modus/knowledge/_conventions/SKILL.md` | `modus/knowledge_base/domain/_conventions/code/SKILL.md` |
|
|
90
|
+
| 技术知识 | `modus/knowledge/_tech-wiki/SKILL.md` | `modus/knowledge_base/domain/_tech-wiki/code/SKILL.md` |
|
|
91
|
+
| 业务域知识 | `modus/knowledge/biz-{d}/SKILL.md` | `modus/knowledge_base/domain/{d}/code/SKILL.md`(拆分) |
|
|
92
|
+
| 业务规则 | —(无) | `modus/knowledge_base/domain/{d}/business/` |
|
|
93
|
+
| 测试场景 | —(无) | `modus/knowledge_base/domain/{d}/scenarios/` |
|
|
94
|
+
| 知识历史 | —(无) | `modus/knowledge_base/domain/{d}/history/` |
|
|
95
|
+
| 服务图谱 | —(无) | `modus/knowledge_base/service-graph.md` |
|
|
96
|
+
| 需求澄清 | `modus/stories/{id}/harness/01-analysis.md` | `modus/artifacts/{id}/pid/prd.md` |
|
|
97
|
+
| 设计文档 | `modus/stories/{id}/harness/02-design-brief.md` | `modus/artifacts/{id}/design/design.md` |
|
|
98
|
+
| 实施计划 | `modus/stories/{id}/plan.md` | `modus/artifacts/{id}/code/plan.md` |
|
|
99
|
+
| Gherkin | `modus/stories/{id}/spec/` | `modus/artifacts/{id}/code/spec/` |
|
|
100
|
+
| Sprint 契约 | `modus/stories/{id}/harness/03-sprint-contract.md` | `modus/artifacts/{id}/code/sprint-contract.md` |
|
|
101
|
+
| 编码日志 | `modus/stories/{id}/vibe-log.md` | `modus/artifacts/{id}/code/vibe-log.md` |
|
|
102
|
+
| CR 报告 | `modus/stories/{id}/harness/cr-report.md` | `modus/artifacts/{id}/code/cr-report.md` |
|
|
103
|
+
| Harness 状态 | `modus/stories/{id}/harness/.harness-state.yaml` | `modus/artifacts/{id}/code/.harness-state.yaml` |
|
|
104
|
+
| 命令源 | `templates/commands/*.md` | `.modus/commands/*.md`(用户侧);模板侧仍在 `templates/commands/` |
|
|
105
|
+
| 团队 Skill | `.codebuddy/skills/team-*/` 等分散 | `.modus/skills/team-*/`(中性源),平台目录留引用桩 |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 3. 读写规则(命令必须遵守)
|
|
110
|
+
|
|
111
|
+
### 3.1 读取顺序(按需加载)
|
|
112
|
+
1. **L0 必读**:`modus/knowledge_base/map.md`(~200 tokens)
|
|
113
|
+
2. **L1 按域**:`modus/knowledge_base/domain/{domain}/code/SKILL.md`(入口,~500 tokens)
|
|
114
|
+
3. **L2 按文件**:根据 Skill 入口的索引,按需加载 `entities.md` / `apis.md` / `services.md` / `data-models.md`(~800 tokens/个)
|
|
115
|
+
4. **L3 业务规则**:仅当任务涉及业务约束时读 `business/`
|
|
116
|
+
5. **L4 场景**:仅测试同学或 spec 阶段读 `scenarios/`
|
|
117
|
+
|
|
118
|
+
### 3.2 写入规则
|
|
119
|
+
- **code/** 由 `/modus:init` 强刷生成,**禁止手工编辑**(手工编辑会被覆盖)
|
|
120
|
+
- **business/、scenarios/、history/** 由人工或专项命令维护,**强刷不会覆盖**
|
|
121
|
+
- **artifacts/** 全部由命令产出,按 Story ID 隔离
|
|
122
|
+
|
|
123
|
+
### 3.3 平台引用桩规则
|
|
124
|
+
- 用户运行 `/modus:init` 时,CLI 同时生成:
|
|
125
|
+
- 中性源:`modus/knowledge_base/...` 和 `.modus/commands/...`、`.modus/skills/...`
|
|
126
|
+
- 平台桩:`.codebuddy/`、`.claude/`、`.cursor/`、`.continue/` 下的 SKILL.md/RULE.mdc 仅含 1 行 `@import` 或 frontmatter,指向中性源
|
|
127
|
+
- 修改知识:**只改中性源**(`modus/knowledge_base/`、`.modus/`),桩自动复用
|
|
128
|
+
|
|
129
|
+
### 3.4 命令同步规则
|
|
130
|
+
- `.modus/commands/*.md` 是命令源
|
|
131
|
+
- 默认情况下,CLI 把命令也复制一份到平台目录(如 `.codebuddy/commands/`)以便平台原生识别 slash command
|
|
132
|
+
- 用户也可只在 `.modus/commands/` 维护,由各平台读取(取决于平台是否支持中性目录)
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 4. 关键不变量(Invariants)
|
|
137
|
+
|
|
138
|
+
1. `modus/knowledge_base/domain/<domain>/code/SKILL.md` **必须存在**且包含 frontmatter
|
|
139
|
+
2. 同一 Story 的所有产物(pid/design/code/archive)共享同一个 `<STORY_ID>` 目录
|
|
140
|
+
3. `archive/` 只在用户**显式归档**时生成(命令:`/modus:auto --archive` 或手动触发)
|
|
141
|
+
4. `history/` 文件按时间倒序命名:`YYYY-MM-DD-{change-id}.md`
|
|
142
|
+
5. 任何脚本/命令读取业务域知识时,**入口必须是 `code/SKILL.md`**(其内的索引指向 entities/apis/services/data-models)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 5. 与旧版的兼容策略
|
|
147
|
+
|
|
148
|
+
- `/modus:init --migrate-v4`:自动迁移 v3.2 → v4.0
|
|
149
|
+
- `modus/knowledge/` → `modus/knowledge_base/domain/`(按 biz-* 拆 domain)
|
|
150
|
+
- `modus/stories/` → `modus/artifacts/`(按子目录拆 pid/design/code)
|
|
151
|
+
- 旧 `SKILL.md` 整体内容拆到 `code/SKILL.md`(保留摘要) + `entities.md` / `apis.md` / `services.md` / `data-models.md`
|
|
152
|
+
- 命令读取时优先 v4 路径,找不到时降级到 v3.2 路径并提示用户运行 migrate
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
> **维护提示**:本文件被 `templates/commands/*.md`、`templates/skills/*/SKILL.md`、`src/commands/init.ts`、`src/generators/*.ts` 以及 `skills/modus-framework/SKILL.md` 引用。修改本文件时,需触发 `modus-skill-keeper` 同步影响章节。
|