@house365/comate 0.10.0 → 0.10.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/LICENSE +21 -21
- package/docs/CLEANUP_SUPERPOWERS.md +128 -0
- package/docs/SUPERPOWERS_FIX_SUMMARY.md +114 -0
- package/package.json +55 -55
- package/skills/comate/reference/decision-points.md +101 -101
- package/skills/comate/reference/prerequisites.md +88 -88
- package/skills/comate-archive/SKILL.md +63 -63
- package/skills/comate-build/SKILL.md +278 -278
- package/skills/comate-design/SKILL.md +156 -156
- package/skills/comate-gate/scaffold/docs/README.md +36 -36
- package/skills/comate-gate/scaffold/docs/architecture/README.md +31 -31
- package/skills/comate-gate/scaffold/docs/knowledge-base/README.md +41 -41
- package/skills/comate-gate/scaffold/docs/knowledge-base/integrations/_TEMPLATE/README.md +49 -49
- package/skills/comate-gate/scaffold/docs/knowledge-base/integrations/_TEMPLATE/api-snapshot.md +47 -47
- package/skills/comate-gate/scaffold/docs/knowledge-base/requirements/_templates/PRD.md +95 -95
- package/skills/comate-grill/SKILL.md +185 -185
- package/skills/comate-kb-integration/scripts/fetch_rendered_doc.py +84 -84
- package/skills/comate-open/SKILL.md +176 -176
- package/skills/comate-verify/SKILL.md +212 -173
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comate-design
|
|
3
|
-
description: "comate 阶段 2:深度设计。用 /comate-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# comate 阶段 2:深度设计(Design)
|
|
7
|
-
|
|
8
|
-
## 前置条件
|
|
9
|
-
|
|
10
|
-
- 活跃 change 已存在(proposal.md、design.md、tasks.md)
|
|
11
|
-
- 无 Design Doc
|
|
12
|
-
|
|
13
|
-
## 步骤
|
|
14
|
-
|
|
15
|
-
### 0. 入口状态验证
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
COMATE="${COMATE:-$(for r in . ./.agents/skills ./.claude/skills ./.cursor/skills ./.codex/skills "$HOME"/.agents/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills "$HOME"/.codex/skills "$HOME"/.gemini/skills; do
|
|
19
|
-
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
20
|
-
done | head -1)}"
|
|
21
|
-
if [ -z "$COMATE" ]; then
|
|
22
|
-
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
23
|
-
return 1 2>/dev/null || exit 1
|
|
24
|
-
fi
|
|
25
|
-
bash "$COMATE" state <name> check design
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**幂等性检查**:
|
|
29
|
-
|
|
30
|
-
1. 读取 `.comate.yaml` 的 `design_doc`、`handoff_context`、`handoff_hash`、`phase_step`
|
|
31
|
-
|
|
32
|
-
2. **已完成 Step 1c(方案已确认)** 的判定条件(按优先级,首个命中即算):
|
|
33
|
-
|
|
1
|
+
---
|
|
2
|
+
name: comate-design
|
|
3
|
+
description: "comate 阶段 2:深度设计。用 /comate-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 阶段 2:深度设计(Design)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 活跃 change 已存在(proposal.md、design.md、tasks.md)
|
|
11
|
+
- 无 Design Doc
|
|
12
|
+
|
|
13
|
+
## 步骤
|
|
14
|
+
|
|
15
|
+
### 0. 入口状态验证
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
COMATE="${COMATE:-$(for r in . ./.agents/skills ./.claude/skills ./.cursor/skills ./.codex/skills "$HOME"/.agents/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills "$HOME"/.codex/skills "$HOME"/.gemini/skills; do
|
|
19
|
+
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
20
|
+
done | head -1)}"
|
|
21
|
+
if [ -z "$COMATE" ]; then
|
|
22
|
+
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
23
|
+
return 1 2>/dev/null || exit 1
|
|
24
|
+
fi
|
|
25
|
+
bash "$COMATE" state <name> check design
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**幂等性检查**:
|
|
29
|
+
|
|
30
|
+
1. 读取 `.comate.yaml` 的 `design_doc`、`handoff_context`、`handoff_hash`、`phase_step`
|
|
31
|
+
|
|
32
|
+
2. **已完成 Step 1c(方案已确认)** 的判定条件(按优先级,首个命中即算):
|
|
33
|
+
|
|
34
34
|
a. **phase_step 明确标记已确认**(最高优先级):
|
|
35
35
|
- `phase_step` 值为 `design.approval-confirmed` 或 `design.complete`(旧版 `1c-confirmed` / `2` 兼容一次)
|
|
36
|
-
- → **立即判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
37
|
-
|
|
38
|
-
b. **Design Doc 文件存在且格式正确**(次优先级):
|
|
39
|
-
- `design_doc` 已设置且文件存在
|
|
40
|
-
- frontmatter 含 `comate_change: <name>`
|
|
41
|
-
- frontmatter 含 `role: technical-design`
|
|
42
|
-
- frontmatter 含 `canonical_spec: openspec`
|
|
43
|
-
- 文件内容非空(除了 frontmatter 外有实质设计内容)
|
|
44
|
-
- → **判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
45
|
-
|
|
46
|
-
**说明**:之所以 `phase_step` 优先级更高,是因为它是原子操作记录的决策状态,即使 Design Doc 文件创建失败或被误删,也能防止重复进入决策流程。
|
|
47
|
-
|
|
48
|
-
3. **幂等分支**:
|
|
36
|
+
- → **立即判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
37
|
+
|
|
38
|
+
b. **Design Doc 文件存在且格式正确**(次优先级):
|
|
39
|
+
- `design_doc` 已设置且文件存在
|
|
40
|
+
- frontmatter 含 `comate_change: <name>`
|
|
41
|
+
- frontmatter 含 `role: technical-design`
|
|
42
|
+
- frontmatter 含 `canonical_spec: openspec`
|
|
43
|
+
- 文件内容非空(除了 frontmatter 外有实质设计内容)
|
|
44
|
+
- → **判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
45
|
+
|
|
46
|
+
**说明**:之所以 `phase_step` 优先级更高,是因为它是原子操作记录的决策状态,即使 Design Doc 文件创建失败或被误删,也能防止重复进入决策流程。
|
|
47
|
+
|
|
48
|
+
3. **幂等分支**:
|
|
49
49
|
- **已完成 Step 1c 且 Design Doc 存在** → 跳过 Step 1a-1c,检查交接包:
|
|
50
|
-
- 若 `handoff_context` 和 `handoff_hash` 已设置且验证通过 → 直接进入 Step 2 的 guard 检查
|
|
51
|
-
- 若交接包缺失或 hash 不匹配 → 重新生成交接包(`bash "$COMATE" handoff <name> design --write`),**但不重新 brainstorming,不重新确认方案**,然后进入 Step 2
|
|
50
|
+
- 若 `handoff_context` 和 `handoff_hash` 已设置且验证通过 → 直接进入 Step 2 的 guard 检查
|
|
51
|
+
- 若交接包缺失或 hash 不匹配 → 重新生成交接包(`bash "$COMATE" handoff <name> design --write`),**但不重新 brainstorming,不重新确认方案**,然后进入 Step 2
|
|
52
52
|
- **已确认但 Design Doc 缺失** → 从 `.comate/design-candidate.md` 恢复已确认方案并创建 Design Doc;候选文件也缺失时停止并报告状态损坏,不得假称 Design Doc 已存在,也不得重新向用户询问同一决策
|
|
53
53
|
- **未完成 Step 1c** → 继续 Step 1a
|
|
54
|
-
|
|
55
|
-
4. **断点恢复**(根据 `phase_step` 值):
|
|
54
|
+
|
|
55
|
+
4. **断点恢复**(根据 `phase_step` 值):
|
|
56
56
|
- `phase_step` 为 `design.handoff-written`(或旧版 `1a`)→ 从 Step 1b 开始并改写新格式
|
|
57
57
|
- `phase_step` 为 `design.brainstorm-complete` / `design.approval-awaiting`(或旧版 `1b`)→ 从候选文件恢复 Step 1c 并改写新格式
|
|
58
58
|
- `phase_step` 为 `design.approval-confirmed` 或 `design.complete` → 见第 3 点幂等分支
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
5. **特别注意**:即使上下文压缩或会话中断,只要 `phase_step` 已标记 `design.approval-confirmed` 或 Design Doc 文件存在且格式正确,**就不得重新执行 brainstorming 或重新要求用户确认方案**。
|
|
61
|
-
|
|
62
|
-
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
63
|
-
|
|
64
|
-
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
bash "$COMATE" handoff <name> design --write
|
|
68
|
-
# 记录步骤完成
|
|
61
|
+
|
|
62
|
+
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
63
|
+
|
|
64
|
+
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
bash "$COMATE" handoff <name> design --write
|
|
68
|
+
# 记录步骤完成
|
|
69
69
|
bash "$COMATE" state <name> set phase_step design.handoff-written
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
脚本生成 `openspec/changes/<name>/.comate/handoff/design-context.{json,md}` 并在 `.comate.yaml` 写入 `handoff_context` / `handoff_hash`。默认是 **compact 可追溯摘录**(含脚本标记 `Generated-by: comate`、source path、line range、sha256),不是 agent summary。需全文时加 `--full`。
|
|
73
|
-
|
|
74
|
-
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
75
|
-
|
|
76
|
-
### 1b. 执行 Brainstorming(带上下文)
|
|
77
|
-
|
|
78
|
-
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Change: <name>
|
|
82
|
-
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
83
|
-
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
84
|
-
|
|
85
|
-
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
86
|
-
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
87
|
-
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
88
|
-
|
|
89
|
-
Design Doc frontmatter 必须最小化,只含:
|
|
90
|
-
---
|
|
91
|
-
comate_change: <name>
|
|
92
|
-
role: technical-design
|
|
93
|
-
canonical_spec: openspec
|
|
94
|
-
---
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
98
|
-
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
脚本生成 `openspec/changes/<name>/.comate/handoff/design-context.{json,md}` 并在 `.comate.yaml` 写入 `handoff_context` / `handoff_hash`。默认是 **compact 可追溯摘录**(含脚本标记 `Generated-by: comate`、source path、line range、sha256),不是 agent summary。需全文时加 `--full`。
|
|
73
|
+
|
|
74
|
+
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
75
|
+
|
|
76
|
+
### 1b. 执行 Brainstorming(带上下文)
|
|
77
|
+
|
|
78
|
+
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Change: <name>
|
|
82
|
+
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
83
|
+
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
84
|
+
|
|
85
|
+
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
86
|
+
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
87
|
+
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
88
|
+
|
|
89
|
+
Design Doc frontmatter 必须最小化,只含:
|
|
90
|
+
---
|
|
91
|
+
comate_change: <name>
|
|
92
|
+
role: technical-design
|
|
93
|
+
canonical_spec: openspec
|
|
94
|
+
---
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
98
|
+
|
|
99
99
|
brainstorming 阶段不写最终 Design Doc;但必须把完整候选方案写入 `openspec/changes/<name>/.comate/design-candidate.md`,供确认与上下文恢复使用。
|
|
100
|
-
|
|
101
|
-
**步骤完成后记录**:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
100
|
+
|
|
101
|
+
**步骤完成后记录**:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
104
|
bash "$COMATE" state <name> set phase_step design.brainstorm-complete
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
108
|
-
|
|
109
|
-
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
110
|
-
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
108
|
+
|
|
109
|
+
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
110
|
+
|
|
111
111
|
展示摘要:采用的技术方案、关键取舍与风险、测试策略、Spec Patch(如有)。用户确认后才继续 Step 2;要求调整则继续迭代。
|
|
112
112
|
|
|
113
113
|
提问前先确认候选文件非空,并持久化等待状态:
|
|
@@ -115,64 +115,64 @@ bash "$COMATE" state <name> set phase_step design.brainstorm-complete
|
|
|
115
115
|
```bash
|
|
116
116
|
bash "$COMATE" state <name> set phase_step design.approval-awaiting
|
|
117
117
|
```
|
|
118
|
-
|
|
119
|
-
**确认后的处理顺序(不可颠倒)**:
|
|
120
|
-
|
|
121
|
-
1. **立即记录决策状态**:
|
|
122
|
-
```bash
|
|
118
|
+
|
|
119
|
+
**确认后的处理顺序(不可颠倒)**:
|
|
120
|
+
|
|
121
|
+
1. **立即记录决策状态**:
|
|
122
|
+
```bash
|
|
123
123
|
bash "$COMATE" state <name> set phase_step design.approval-confirmed
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
2. **然后创建 Design Doc 文件**(保存到 `docs/superpowers/specs/YYYY-MM-DD-topic-design.md`),frontmatter 必须包含:
|
|
127
|
-
```yaml
|
|
128
|
-
---
|
|
129
|
-
comate_change: <name>
|
|
130
|
-
role: technical-design
|
|
131
|
-
canonical_spec: openspec
|
|
132
|
-
---
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
3. **记录 design_doc 路径**:
|
|
136
|
-
```bash
|
|
137
|
-
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
138
|
-
```
|
|
139
|
-
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
2. **然后创建 Design Doc 文件**(保存到 `docs/superpowers/specs/YYYY-MM-DD-topic-design.md`),frontmatter 必须包含:
|
|
127
|
+
```yaml
|
|
128
|
+
---
|
|
129
|
+
comate_change: <name>
|
|
130
|
+
role: technical-design
|
|
131
|
+
canonical_spec: openspec
|
|
132
|
+
---
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
3. **记录 design_doc 路径**:
|
|
136
|
+
```bash
|
|
137
|
+
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
138
|
+
```
|
|
139
|
+
|
|
140
140
|
**说明**:候选方案先落盘,确认后再记录 `design.approval-confirmed` 并创建最终文件。这样中断恢复既不会重复提问,也不会丢失创建 Design Doc 所需内容。
|
|
141
|
-
|
|
142
|
-
### 2. 更新 comate 状态
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# 记录 design_doc 路径
|
|
146
|
-
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
147
|
-
|
|
148
|
-
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
149
|
-
bash "$COMATE" handoff <name> design --write
|
|
150
|
-
|
|
151
|
-
# 记录步骤完成
|
|
141
|
+
|
|
142
|
+
### 2. 更新 comate 状态
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# 记录 design_doc 路径
|
|
146
|
+
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
147
|
+
|
|
148
|
+
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
149
|
+
bash "$COMATE" handoff <name> design --write
|
|
150
|
+
|
|
151
|
+
# 记录步骤完成
|
|
152
152
|
bash "$COMATE" state <name> set phase_step design.complete
|
|
153
|
-
|
|
154
|
-
# 自动流转
|
|
155
|
-
bash "$COMATE" guard <name> design --apply
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
无 delta spec 变更则跳过 handoff 重新生成。
|
|
159
|
-
|
|
160
|
-
## 退出条件
|
|
161
|
-
|
|
162
|
-
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
163
|
-
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
164
|
-
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
165
|
-
- `design_doc` 已写入 `.comate.yaml`
|
|
166
|
-
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
167
|
-
|
|
168
|
-
## 上下文压缩恢复
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
bash "$COMATE" state <name> recover design
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
175
|
-
|
|
176
|
-
## 自动流转
|
|
177
|
-
|
|
178
|
-
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|
|
153
|
+
|
|
154
|
+
# 自动流转
|
|
155
|
+
bash "$COMATE" guard <name> design --apply
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
无 delta spec 变更则跳过 handoff 重新生成。
|
|
159
|
+
|
|
160
|
+
## 退出条件
|
|
161
|
+
|
|
162
|
+
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
163
|
+
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
164
|
+
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
165
|
+
- `design_doc` 已写入 `.comate.yaml`
|
|
166
|
+
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
167
|
+
|
|
168
|
+
## 上下文压缩恢复
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
bash "$COMATE" state <name> recover design
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
175
|
+
|
|
176
|
+
## 自动流转
|
|
177
|
+
|
|
178
|
+
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
# docs 文档目录说明
|
|
2
|
-
|
|
3
|
-
本目录承载项目的长期文档,与代码同仓库、同评审、同版本管理。按用途分为以下几类:
|
|
4
|
-
|
|
5
|
-
| 子目录 | 定位 | 说明 |
|
|
6
|
-
|--------|------|------|
|
|
7
|
-
| `architecture/` | 架构规范 | 前后端分层、依赖规则、命名、错误码等工程铁律,以仓库**当前实现**为准 |
|
|
8
|
-
| `knowledge-base/` | 知识库 | 上游需求(PRD)与横向(第三方对接)的长期文档,详见其内 `README.md` |
|
|
9
|
-
|
|
10
|
-
## architecture/
|
|
11
|
-
|
|
12
|
-
工程约束的唯一来源,是 `/comate-gate` PRD 门禁审阅中「契约对齐」的事实源。改对应层代码前必须先读。
|
|
13
|
-
|
|
14
|
-
**占位目录,需根据项目实际情况建立规范文档**。常见架构文档包含:
|
|
15
|
-
|
|
16
|
-
- 后端分层 / 依赖 / DTO / 错误码 / 命名。
|
|
17
|
-
- 前端分层 / API / store / 路由 / 命名。
|
|
18
|
-
- 工程原则与铁律。
|
|
19
|
-
|
|
20
|
-
> 这些是**架构规则文档,不是 capability spec**,不放在 `openspec/specs/` 下,也不参与 `openspec validate --strict`。
|
|
21
|
-
> 调整架构相关代码时,必须同步更新对应文档。
|
|
22
|
-
|
|
23
|
-
## knowledge-base/
|
|
24
|
-
|
|
25
|
-
需求与第三方对接的长期文档,是 comate 变更流程的上游:
|
|
26
|
-
|
|
27
|
-
- `requirements/` —— 原始 PRD(产品需求文档)。PRD 经 `/comate-gate` 门禁与拆分后,扇出为 N 个 comate change。
|
|
28
|
-
- `integrations/` —— 第三方业务/接口对接档案与索引,跨多个变更长期维护。
|
|
29
|
-
|
|
30
|
-
完整的命名规则、溯源约定与铁律见 `knowledge-base/README.md`。
|
|
31
|
-
|
|
32
|
-
## 与 openspec/ 的边界
|
|
33
|
-
|
|
34
|
-
- `docs/` 放**长期文档**(架构规范、需求、对接档案)。
|
|
35
|
-
- `openspec/` 放**变更驱动的规格**:`changes/`(一次性变更)与 `specs/`(能力沉淀)。
|
|
36
|
-
- 两者通过 PRD 门禁状态(`<PRD>.gate.yaml`)与 change 的 `sources.manifest` 打通。
|
|
1
|
+
# docs 文档目录说明
|
|
2
|
+
|
|
3
|
+
本目录承载项目的长期文档,与代码同仓库、同评审、同版本管理。按用途分为以下几类:
|
|
4
|
+
|
|
5
|
+
| 子目录 | 定位 | 说明 |
|
|
6
|
+
|--------|------|------|
|
|
7
|
+
| `architecture/` | 架构规范 | 前后端分层、依赖规则、命名、错误码等工程铁律,以仓库**当前实现**为准 |
|
|
8
|
+
| `knowledge-base/` | 知识库 | 上游需求(PRD)与横向(第三方对接)的长期文档,详见其内 `README.md` |
|
|
9
|
+
|
|
10
|
+
## architecture/
|
|
11
|
+
|
|
12
|
+
工程约束的唯一来源,是 `/comate-gate` PRD 门禁审阅中「契约对齐」的事实源。改对应层代码前必须先读。
|
|
13
|
+
|
|
14
|
+
**占位目录,需根据项目实际情况建立规范文档**。常见架构文档包含:
|
|
15
|
+
|
|
16
|
+
- 后端分层 / 依赖 / DTO / 错误码 / 命名。
|
|
17
|
+
- 前端分层 / API / store / 路由 / 命名。
|
|
18
|
+
- 工程原则与铁律。
|
|
19
|
+
|
|
20
|
+
> 这些是**架构规则文档,不是 capability spec**,不放在 `openspec/specs/` 下,也不参与 `openspec validate --strict`。
|
|
21
|
+
> 调整架构相关代码时,必须同步更新对应文档。
|
|
22
|
+
|
|
23
|
+
## knowledge-base/
|
|
24
|
+
|
|
25
|
+
需求与第三方对接的长期文档,是 comate 变更流程的上游:
|
|
26
|
+
|
|
27
|
+
- `requirements/` —— 原始 PRD(产品需求文档)。PRD 经 `/comate-gate` 门禁与拆分后,扇出为 N 个 comate change。
|
|
28
|
+
- `integrations/` —— 第三方业务/接口对接档案与索引,跨多个变更长期维护。
|
|
29
|
+
|
|
30
|
+
完整的命名规则、溯源约定与铁律见 `knowledge-base/README.md`。
|
|
31
|
+
|
|
32
|
+
## 与 openspec/ 的边界
|
|
33
|
+
|
|
34
|
+
- `docs/` 放**长期文档**(架构规范、需求、对接档案)。
|
|
35
|
+
- `openspec/` 放**变更驱动的规格**:`changes/`(一次性变更)与 `specs/`(能力沉淀)。
|
|
36
|
+
- 两者通过 PRD 门禁状态(`<PRD>.gate.yaml`)与 change 的 `sources.manifest` 打通。
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
# architecture (架构规范占位目录)
|
|
2
|
-
|
|
3
|
-
> ⚠️ **本目录由 `comate init` 创建为占位,内容需根据项目实际情况建立。**
|
|
4
|
-
|
|
5
|
-
本目录是工程约束的**唯一来源**,也是 `/comate-gate` PRD 门禁审阅中「契约对齐架构文档」的事实源。
|
|
6
|
-
|
|
7
|
-
## 为什么需要架构文档
|
|
8
|
-
|
|
9
|
-
PRD 门禁审阅时,会检查数据来源、接口契约、命名规范、错误码、边界处理等是否明确。这些约束的**唯一事实源**应该是架构文档,而不是散落在 PRD/代码里的重复规则。
|
|
10
|
-
|
|
11
|
-
`/comate-gate` 要求 PRD 里的契约「对齐并点名遵循了架构文档的哪条」,不硬编码具体值、不自造规则。
|
|
12
|
-
|
|
13
|
-
## 建议包含的架构文档
|
|
14
|
-
|
|
15
|
-
根据项目技术栈,常见架构文档包括:
|
|
16
|
-
|
|
17
|
-
- **后端架构** — 分层(如 Controller / Service / Repository)、依赖规则、DTO 规范、错误码体系、命名约定、数据库表与字段命名、缓存 key 规范、权限收口。
|
|
18
|
-
- **前端架构** — 分层(如 views / components / api)、状态管理、路由、API 调用规范、组件命名。
|
|
19
|
-
- **工程原则** — 日志、监控、测试、发布流程等通用铁律。
|
|
20
|
-
|
|
21
|
-
## 如何使用
|
|
22
|
-
|
|
23
|
-
1. 根据项目实际情况,在本目录建立 `backend-architecture.md` / `frontend-architecture.md` 等文档。
|
|
24
|
-
2. PRD 里涉及接口、数据库、错误码、命名时,引用并对齐这些文档的既有约定。
|
|
25
|
-
3. 架构变更时,先更新本目录文档,再改代码。
|
|
26
|
-
|
|
27
|
-
## 注意事项
|
|
28
|
-
|
|
29
|
-
- 这些是**架构规则文档,不是 capability spec**,不放在 `openspec/specs/` 下。
|
|
30
|
-
- 不参与 `openspec validate --strict`。
|
|
31
|
-
- 由 `docs/knowledge-base/` 里的 PRD 引用,由 comate change 的 proposal/design 对齐。
|
|
1
|
+
# architecture (架构规范占位目录)
|
|
2
|
+
|
|
3
|
+
> ⚠️ **本目录由 `comate init` 创建为占位,内容需根据项目实际情况建立。**
|
|
4
|
+
|
|
5
|
+
本目录是工程约束的**唯一来源**,也是 `/comate-gate` PRD 门禁审阅中「契约对齐架构文档」的事实源。
|
|
6
|
+
|
|
7
|
+
## 为什么需要架构文档
|
|
8
|
+
|
|
9
|
+
PRD 门禁审阅时,会检查数据来源、接口契约、命名规范、错误码、边界处理等是否明确。这些约束的**唯一事实源**应该是架构文档,而不是散落在 PRD/代码里的重复规则。
|
|
10
|
+
|
|
11
|
+
`/comate-gate` 要求 PRD 里的契约「对齐并点名遵循了架构文档的哪条」,不硬编码具体值、不自造规则。
|
|
12
|
+
|
|
13
|
+
## 建议包含的架构文档
|
|
14
|
+
|
|
15
|
+
根据项目技术栈,常见架构文档包括:
|
|
16
|
+
|
|
17
|
+
- **后端架构** — 分层(如 Controller / Service / Repository)、依赖规则、DTO 规范、错误码体系、命名约定、数据库表与字段命名、缓存 key 规范、权限收口。
|
|
18
|
+
- **前端架构** — 分层(如 views / components / api)、状态管理、路由、API 调用规范、组件命名。
|
|
19
|
+
- **工程原则** — 日志、监控、测试、发布流程等通用铁律。
|
|
20
|
+
|
|
21
|
+
## 如何使用
|
|
22
|
+
|
|
23
|
+
1. 根据项目实际情况,在本目录建立 `backend-architecture.md` / `frontend-architecture.md` 等文档。
|
|
24
|
+
2. PRD 里涉及接口、数据库、错误码、命名时,引用并对齐这些文档的既有约定。
|
|
25
|
+
3. 架构变更时,先更新本目录文档,再改代码。
|
|
26
|
+
|
|
27
|
+
## 注意事项
|
|
28
|
+
|
|
29
|
+
- 这些是**架构规则文档,不是 capability spec**,不放在 `openspec/specs/` 下。
|
|
30
|
+
- 不参与 `openspec validate --strict`。
|
|
31
|
+
- 由 `docs/knowledge-base/` 里的 PRD 引用,由 comate change 的 proposal/design 对齐。
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
# 知识库 (Knowledge Base)
|
|
2
|
-
|
|
3
|
-
本目录承载**需求(PRD)与第三方对接**的长期文档,与代码同仓库、同 PR 评审、同版本。
|
|
4
|
-
|
|
5
|
-
## 文档体系与交接
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
docs/knowledge-base/requirements/
|
|
9
|
-
├─ _templates/ PRD 模板
|
|
10
|
-
└─ <YYYYMMDD-功能名>/ 一个功能一个目录,日期=该功能起始日 ──┐
|
|
11
|
-
├─ PRD-001-<功能名>.md 产品需求文档 │
|
|
12
|
-
├─ PRD-001.gate.yaml 门禁状态(机器真相源) │
|
|
13
|
-
├─ PRD-001-REVIEW.md 门禁评审报告(人类可读) │
|
|
14
|
-
└─ CHANGES-MAP.md (多 change 时)功能项→change 映射 │
|
|
15
|
-
├─→ /comate-gate (门禁+拆分)
|
|
16
|
-
docs/knowledge-base/integrations/ │ ↓
|
|
17
|
-
第三方对接档案/索引 (跨需求长期存在) ──┘ comate changes
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## PRD → comate 流程
|
|
21
|
-
|
|
22
|
-
comate 采用**简化需求流**:只保留 **PRD**(产品需求文档),通过 `/comate-gate` 做两件事:
|
|
23
|
-
|
|
24
|
-
1. **门禁**:审阅 PRD 质量、百分制评分、建阻断台账。阻断问题未清零,禁止建任何 change。
|
|
25
|
-
2. **拆分**:按依赖/整体性/独立性/规模判定该 PRD 变成 1 或 N 个 comate change(粒度由用户定),逐个交给 `/comate-open`。
|
|
26
|
-
|
|
27
|
-
PRD 门禁状态钉在同级 `PRD-<三位序号>.gate.yaml`(机器真相源,含 `gate_status` / `score` / `blocking_open` / `prd_hash` / `spawned_changes`)。评审报告为 `PRD-<三位序号>-REVIEW.md`(人类可读,含问题台账)。PRD 通过门禁后被改会因哈希漂移自动失效(`stale`),需重跑 gate。
|
|
28
|
-
|
|
1
|
+
# 知识库 (Knowledge Base)
|
|
2
|
+
|
|
3
|
+
本目录承载**需求(PRD)与第三方对接**的长期文档,与代码同仓库、同 PR 评审、同版本。
|
|
4
|
+
|
|
5
|
+
## 文档体系与交接
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
docs/knowledge-base/requirements/
|
|
9
|
+
├─ _templates/ PRD 模板
|
|
10
|
+
└─ <YYYYMMDD-功能名>/ 一个功能一个目录,日期=该功能起始日 ──┐
|
|
11
|
+
├─ PRD-001-<功能名>.md 产品需求文档 │
|
|
12
|
+
├─ PRD-001.gate.yaml 门禁状态(机器真相源) │
|
|
13
|
+
├─ PRD-001-REVIEW.md 门禁评审报告(人类可读) │
|
|
14
|
+
└─ CHANGES-MAP.md (多 change 时)功能项→change 映射 │
|
|
15
|
+
├─→ /comate-gate (门禁+拆分)
|
|
16
|
+
docs/knowledge-base/integrations/ │ ↓
|
|
17
|
+
第三方对接档案/索引 (跨需求长期存在) ──┘ comate changes
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## PRD → comate 流程
|
|
21
|
+
|
|
22
|
+
comate 采用**简化需求流**:只保留 **PRD**(产品需求文档),通过 `/comate-gate` 做两件事:
|
|
23
|
+
|
|
24
|
+
1. **门禁**:审阅 PRD 质量、百分制评分、建阻断台账。阻断问题未清零,禁止建任何 change。
|
|
25
|
+
2. **拆分**:按依赖/整体性/独立性/规模判定该 PRD 变成 1 或 N 个 comate change(粒度由用户定),逐个交给 `/comate-open`。
|
|
26
|
+
|
|
27
|
+
PRD 门禁状态钉在同级 `PRD-<三位序号>.gate.yaml`(机器真相源,含 `gate_status` / `score` / `blocking_open` / `prd_hash` / `spawned_changes`)。评审报告为 `PRD-<三位序号>-REVIEW.md`(人类可读,含问题台账)。PRD 通过门禁后被改会因哈希漂移自动失效(`stale`),需重跑 gate。
|
|
28
|
+
|
|
29
29
|
扇出的 comate change 内部用 proposal / design / tasks 承接 PRD 的功能项内容,PRD 直接作为 change 的源文档被 `sources track` 钉住。
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
## 命名约定
|
|
32
32
|
|
|
33
33
|
- 功能目录:`<YYYYMMDD-功能名>/`
|
|
34
34
|
- PRD:目录内 `PRD-<三位序号>-<功能名>.md`
|
|
35
35
|
- gate 和评审报告:由脚本根据 PRD 路径自动生成,不手工命名。
|
|
36
|
-
|
|
37
|
-
## 横向 (integrations/)
|
|
38
|
-
|
|
39
|
-
- `integrations/` —— 第三方业务/接口对接档案与总索引,**跨多个需求长期存在**。
|
|
40
|
-
- 单个 PRD 生命周期随功能上线收敛;本目录的内容长期维护,故独立放置。
|
|
41
|
-
- PRD 的「第三方依赖」表应链接到 `integrations/<平台名>/README.md`。
|
|
42
|
-
|
|
43
|
-
## 溯源与可追溯
|
|
44
|
-
|
|
45
|
-
- PRD 顶部溯源块可选(若有更上游背景文档);没有上游时 PRD 是起点。
|
|
46
|
-
- PRD 经门禁后扇出的 change 名记录在 `<PRD>.gate.yaml` 的 `spawned_changes` 字段,形成 PRD → change 的正向链。
|
|
47
|
-
- 每个 change 的 `sources.manifest` 记录 PRD 路径与 sha256,形成 change → PRD 的反向链。
|
|
36
|
+
|
|
37
|
+
## 横向 (integrations/)
|
|
38
|
+
|
|
39
|
+
- `integrations/` —— 第三方业务/接口对接档案与总索引,**跨多个需求长期存在**。
|
|
40
|
+
- 单个 PRD 生命周期随功能上线收敛;本目录的内容长期维护,故独立放置。
|
|
41
|
+
- PRD 的「第三方依赖」表应链接到 `integrations/<平台名>/README.md`。
|
|
42
|
+
|
|
43
|
+
## 溯源与可追溯
|
|
44
|
+
|
|
45
|
+
- PRD 顶部溯源块可选(若有更上游背景文档);没有上游时 PRD 是起点。
|
|
46
|
+
- PRD 经门禁后扇出的 change 名记录在 `<PRD>.gate.yaml` 的 `spawned_changes` 字段,形成 PRD → change 的正向链。
|
|
47
|
+
- 每个 change 的 `sources.manifest` 记录 PRD 路径与 sha256,形成 change → PRD 的反向链。
|