6a-spec-install 1.0.8-dev.2 → 1.0.8-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.6aspec/rules/green/6A_archive_sop.md +15 -15
- package/.6aspec/rules/green/6A_clarify_sop.md +4 -4
- package/.6aspec/rules/green/6A_code_implementation_sop.md +6 -6
- package/.6aspec/rules/green/6A_continue_sop.md +5 -5
- package/.6aspec/rules/green/6A_design_sop.md +12 -12
- package/.6aspec/rules/green/6A_import_model_table_sop.md +2 -2
- package/.6aspec/rules/green/6A_model_sop.md +6 -6
- package/.6aspec/rules/green/6A_new_sop.md +7 -7
- package/.6aspec/rules/green/6A_status_sop.md +7 -7
- package/.6aspec/rules/green/6A_tasks_sop.md +8 -8
- package/.6aspec/rules/green/6A_visual_logic_sop.md +4 -4
- package/.6aspec/rules/green/green_status_schema.md +14 -14
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
**1.1 检查是否在需求目录下**
|
|
18
18
|
|
|
19
|
-
检查当前工作目录是否在 `
|
|
19
|
+
检查当前工作目录是否在 `6aspecdoc/green/<feature-name>/` 下:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
pwd
|
|
@@ -27,7 +27,7 @@ pwd
|
|
|
27
27
|
**1.2 如果不在需求目录下,列出所有可归档的需求**
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
find
|
|
30
|
+
find 6aspecdoc/green -maxdepth 2 -name ".green-status.json" -type f
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
读取每个状态文件,筛选出状态为 `completed` 的需求。
|
|
@@ -50,7 +50,7 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
50
50
|
|
|
51
51
|
### Step 2: 读取状态文件
|
|
52
52
|
|
|
53
|
-
读取 `
|
|
53
|
+
读取 `6aspecdoc/green/<feature-name>/.green-status.json` 文件。
|
|
54
54
|
|
|
55
55
|
如果文件不存在或格式错误,输出错误信息并退出。
|
|
56
56
|
|
|
@@ -126,7 +126,7 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
126
126
|
如果归档目录不存在,创建它:
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
-
mkdir -p
|
|
129
|
+
mkdir -p 6aspecdoc/green/archive
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
**4.2 生成归档目标名称**
|
|
@@ -142,7 +142,7 @@ mkdir -p 6aspec/green/archive
|
|
|
142
142
|
检查归档目标目录是否已存在:
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
|
-
ls -d
|
|
145
|
+
ls -d 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name> 2>/dev/null
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
如果已存在,输出错误并停止:
|
|
@@ -150,7 +150,7 @@ ls -d 6aspec/green/archive/YYYY-MM-DD-<feature-name> 2>/dev/null
|
|
|
150
150
|
```
|
|
151
151
|
❌ 归档失败
|
|
152
152
|
|
|
153
|
-
目标目录已存在:
|
|
153
|
+
目标目录已存在:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
154
154
|
|
|
155
155
|
可能的原因:
|
|
156
156
|
1. 今天已经归档过同名需求
|
|
@@ -167,7 +167,7 @@ ls -d 6aspec/green/archive/YYYY-MM-DD-<feature-name> 2>/dev/null
|
|
|
167
167
|
将需求目录移动到归档位置:
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
|
-
mv
|
|
170
|
+
mv 6aspecdoc/green/<feature-name> 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
171
171
|
```
|
|
172
172
|
|
|
173
173
|
**4.5 更新状态文件**
|
|
@@ -184,7 +184,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
184
184
|
写回状态文件:
|
|
185
185
|
|
|
186
186
|
```bash
|
|
187
|
-
# 更新
|
|
187
|
+
# 更新 6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/.green-status.json
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
### Step 5: 显示归档摘要
|
|
@@ -195,7 +195,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
195
195
|
✅ 归档完成
|
|
196
196
|
|
|
197
197
|
需求:<feature-name>
|
|
198
|
-
归档位置:
|
|
198
|
+
归档位置:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
199
199
|
归档时间:<current-timestamp>
|
|
200
200
|
|
|
201
201
|
工件完成情况:
|
|
@@ -216,7 +216,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
216
216
|
✅ 归档完成(带警告)
|
|
217
217
|
|
|
218
218
|
需求:<feature-name>
|
|
219
|
-
归档位置:
|
|
219
|
+
归档位置:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
220
220
|
归档时间:<current-timestamp>
|
|
221
221
|
|
|
222
222
|
⚠️ 警告:
|
|
@@ -233,7 +233,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
233
233
|
```
|
|
234
234
|
错误:未找到状态文件
|
|
235
235
|
|
|
236
|
-
路径:
|
|
236
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
237
237
|
|
|
238
238
|
无法归档没有状态文件的需求。
|
|
239
239
|
|
|
@@ -247,7 +247,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
247
247
|
```
|
|
248
248
|
错误:归档目标已存在
|
|
249
249
|
|
|
250
|
-
目标:
|
|
250
|
+
目标:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>/
|
|
251
251
|
|
|
252
252
|
建议:
|
|
253
253
|
1. 重命名现有归档目录
|
|
@@ -260,8 +260,8 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
260
260
|
```
|
|
261
261
|
错误:无法移动需求目录
|
|
262
262
|
|
|
263
|
-
源:
|
|
264
|
-
目标:
|
|
263
|
+
源:6aspecdoc/green/<feature-name>
|
|
264
|
+
目标:6aspecdoc/green/archive/YYYY-MM-DD-<feature-name>
|
|
265
265
|
|
|
266
266
|
错误信息:<error-message>
|
|
267
267
|
|
|
@@ -279,7 +279,7 @@ mv 6aspec/green/<feature-name> 6aspec/green/archive/YYYY-MM-DD-<feature-name>
|
|
|
279
279
|
## 归档后的目录结构
|
|
280
280
|
|
|
281
281
|
```
|
|
282
|
-
|
|
282
|
+
6aspecdoc/green/
|
|
283
283
|
├── archive/
|
|
284
284
|
│ ├── 2026-02-15-feature-a/
|
|
285
285
|
│ │ ├── .green-status.json
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
检查当前活跃的需求:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
find
|
|
36
|
+
find 6aspecdoc/green -maxdepth 2 -name ".green-status.json" -type f
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
如果有多个需求,使用 **AskUserQuestion** 让用户选择要澄清的需求。
|
|
40
40
|
|
|
41
41
|
**1.2 读取状态文件和需求文档**
|
|
42
42
|
|
|
43
|
-
- 读取 `
|
|
44
|
-
- 读取 `
|
|
43
|
+
- 读取 `6aspecdoc/green/<feature-name>/.green-status.json`
|
|
44
|
+
- 读取 `6aspecdoc/green/<feature-name>/requirement.md`
|
|
45
45
|
|
|
46
46
|
**1.3 状态检查**
|
|
47
47
|
|
|
@@ -179,7 +179,7 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
179
179
|
|
|
180
180
|
## 输出要求
|
|
181
181
|
1. 格式:Markdown 源码格式
|
|
182
|
-
2. 文档位置:`
|
|
182
|
+
2. 文档位置:`6aspecdoc/green/<feature-name>/requirement.md`(原地更新)
|
|
183
183
|
3. 必须保留已有内容,仅做增量更新
|
|
184
184
|
4. 更新后检查文档格式是否符合 `new` SOP 中的模板规范
|
|
185
185
|
|
|
@@ -5,14 +5,14 @@ alwaysApply: false
|
|
|
5
5
|
|
|
6
6
|
# execute-task: 任务代码实现标准操作流程
|
|
7
7
|
|
|
8
|
-
你现在是 **Senior Developer**,负责执行具体的开发任务。你的核心职责是将 `
|
|
8
|
+
你现在是 **Senior Developer**,负责执行具体的开发任务。你的核心职责是将 `6aspecdoc/green/<feature-name>/tasks/task_xxx.md` 转化为高质量、可运行的业务代码。
|
|
9
9
|
|
|
10
10
|
## 前置条件(依赖门禁,必须首先执行)
|
|
11
11
|
|
|
12
12
|
在执行任务代码实现前,**必须**先完成依赖检查,不通过则**立即停止**并提示,不得继续:
|
|
13
13
|
|
|
14
|
-
1. **确定当前需求**:根据用户指定的任务文件路径(如 `
|
|
15
|
-
2. **读取状态文件**:读取 `
|
|
14
|
+
1. **确定当前需求**:根据用户指定的任务文件路径(如 `6aspecdoc/green/<feature-name>/tasks/task-xxx.md`)确定 feature-name;若用户未指定任务文件,则根据当前工作目录或让用户选择需求。
|
|
15
|
+
2. **读取状态文件**:读取 `6aspecdoc/green/<feature-name>/.green-status.json`。若文件不存在,停止并提示先运行 `/6aspec:green:new` 创建需求。
|
|
16
16
|
3. **检查上一流程已完成**:
|
|
17
17
|
- 若 `status` 不是 `tasks_created` 且不是 `implementing`,停止并提示:
|
|
18
18
|
```
|
|
@@ -24,7 +24,7 @@ alwaysApply: false
|
|
|
24
24
|
请先完成任务拆解:运行 /6aspec:green:tasks,并确保生成 tasks/ 下的任务文件及 README.md,且状态已更新为 tasks_created。
|
|
25
25
|
```
|
|
26
26
|
- 若 `artifacts.tasks.status` 不是 `done`,停止并提示先运行 `/6aspec:green:tasks` 完成任务拆解。
|
|
27
|
-
4. **检查任务目录存在**:若 `
|
|
27
|
+
4. **检查任务目录存在**:若 `6aspecdoc/green/<feature-name>/tasks/` 下无任务文件或无 `README.md`,停止并提示先完成 `/6aspec:green:tasks`。
|
|
28
28
|
|
|
29
29
|
**只有以上检查全部通过后,才允许继续执行本 SOP 的编码步骤。**
|
|
30
30
|
|
|
@@ -34,8 +34,8 @@ alwaysApply: false
|
|
|
34
34
|
|
|
35
35
|
1. **加载任务上下文**:读取用户指定的 `task-xxx.md` 文件。
|
|
36
36
|
2. **加载设计上下文**:
|
|
37
|
-
* 必须寻找并读取该任务所属功能的 **技术设计主文档** (`tech-design.md`),位于同需求目录下 `artifacts/`:`
|
|
38
|
-
* 必须读取 **API 定义文档** (`api-definition.md`)(如果是 API 任务),位于 `
|
|
37
|
+
* 必须寻找并读取该任务所属功能的 **技术设计主文档** (`tech-design.md`),位于同需求目录下 `artifacts/`:`6aspecdoc/green/<feature-name>/artifacts/tech-design.md`。
|
|
38
|
+
* 必须读取 **API 定义文档** (`api-definition.md`)(如果是 API 任务),位于 `6aspecdoc/green/<feature-name>/artifacts/api-definition.md`。
|
|
39
39
|
* *Rationale*: 任务文件中只包含摘要,核心逻辑和 JSON 结构都在技术设计文档中,不读技术设计文档必写错。
|
|
40
40
|
3. **加载规范上下文**:
|
|
41
41
|
* 读取任务文件中指定的“规则文件”(如 `api_rule.md`)。
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
**1.1 检查是否在需求目录下**
|
|
17
17
|
|
|
18
|
-
检查当前工作目录是否在 `
|
|
18
|
+
检查当前工作目录是否在 `6aspecdoc/green/<feature-name>/` 下:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
pwd
|
|
@@ -26,7 +26,7 @@ pwd
|
|
|
26
26
|
**1.2 如果不在需求目录下,列出所有活跃需求**
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
find
|
|
29
|
+
find 6aspecdoc/green -maxdepth 2 -name ".green-status.json" -type f
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
如果找到多个需求,使用 **AskUserQuestion** 让用户选择要继续的需求。
|
|
@@ -47,13 +47,13 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
47
47
|
|
|
48
48
|
### Step 2: 读取状态文件
|
|
49
49
|
|
|
50
|
-
读取 `
|
|
50
|
+
读取 `6aspecdoc/green/<feature-name>/.green-status.json` 文件:
|
|
51
51
|
|
|
52
52
|
如果文件不存在,说明这是一个旧的需求目录(在状态管理机制之前创建的),输出:
|
|
53
53
|
```
|
|
54
54
|
错误:未找到状态文件
|
|
55
55
|
|
|
56
|
-
路径:
|
|
56
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
57
57
|
|
|
58
58
|
这个需求目录可能是在状态管理机制之前创建的。
|
|
59
59
|
|
|
@@ -153,7 +153,7 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
153
153
|
```
|
|
154
154
|
错误:状态文件格式错误
|
|
155
155
|
|
|
156
|
-
路径:
|
|
156
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
157
157
|
|
|
158
158
|
错误信息:<parse-error>
|
|
159
159
|
|
|
@@ -18,8 +18,8 @@ alwaysApply: false
|
|
|
18
18
|
|
|
19
19
|
1. **主动检索 (Active Retrieval)**:
|
|
20
20
|
* 不要被动等待。当用户给出功能名称时,优先使用工具(`file_search` 或 `read_file`)尝试读取以下关键文件:
|
|
21
|
-
* `
|
|
22
|
-
* `
|
|
21
|
+
* `6aspecdoc/green/<feature-name>/requirement.md`(需求澄清文档,由 new 生成,**设计时的需求依据**)
|
|
22
|
+
* `6aspecdoc/green/<feature-name>/artifacts/domain-model.md`(领域模型)
|
|
23
23
|
* `./.6aspec/biz/functional-capability-Map.md` (能力地图)
|
|
24
24
|
* `./.6aspec/biz/event-list.md` (事件清单,如涉及事件)
|
|
25
25
|
* 只有当无法读取这些文件时,才请求用户提供。
|
|
@@ -55,8 +55,8 @@ alwaysApply: false
|
|
|
55
55
|
|
|
56
56
|
在执行技术方案设计前,**必须**先完成依赖检查,不通过则**立即停止**并提示,不得继续:
|
|
57
57
|
|
|
58
|
-
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `
|
|
59
|
-
2. **读取状态文件**:读取 `
|
|
58
|
+
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `6aspecdoc/green/<feature-name>/`;若有多个需求则让用户选择。
|
|
59
|
+
2. **读取状态文件**:读取 `6aspecdoc/green/<feature-name>/.green-status.json`。若文件不存在,停止并提示先运行 `/6aspec:green:new` 创建需求。
|
|
60
60
|
3. **检查上一流程已完成**:
|
|
61
61
|
- 若 `status` 不是 `modeled`,停止并提示:
|
|
62
62
|
```
|
|
@@ -68,7 +68,7 @@ alwaysApply: false
|
|
|
68
68
|
请先完成领域建模:运行 /6aspec:green:model,并确保生成 artifacts/domain-model.md 且状态已更新为 modeled。
|
|
69
69
|
```
|
|
70
70
|
- 若 `artifacts.models.status` 不是 `done`,停止并提示先运行 `/6aspec:green:model` 完成领域建模。
|
|
71
|
-
4. **检查 domain-model.md 存在**:若 `
|
|
71
|
+
4. **检查 domain-model.md 存在**:若 `6aspecdoc/green/<feature-name>/artifacts/domain-model.md` 不存在,停止并提示先完成领域建模。
|
|
72
72
|
|
|
73
73
|
**只有以上检查全部通过后,才允许继续执行本 SOP 的设计步骤。**
|
|
74
74
|
|
|
@@ -77,8 +77,8 @@ alwaysApply: false
|
|
|
77
77
|
按主流程,需求已在 new 阶段澄清并产出 `requirement.md`,design 阶段**以 requirement.md + 领域模型**为输入,无需原始 PRD。
|
|
78
78
|
|
|
79
79
|
你需要确保拥有以下输入(优先尝试主动读取):
|
|
80
|
-
- **必需输入 1**:需求澄清文档 `requirement.md`(由 `/6aspec:green:new` 生成,位于 `
|
|
81
|
-
- **必需输入 2**:数据模型设计文档 `
|
|
80
|
+
- **必需输入 1**:需求澄清文档 `requirement.md`(由 `/6aspec:green:new` 生成,位于 `6aspecdoc/green/<feature-name>/requirement.md`)。设计时的功能范围、业务规则、Scope 以该文档为准。
|
|
81
|
+
- **必需输入 2**:数据模型设计文档 `6aspecdoc/green/<feature-name>/artifacts/domain-model.md`
|
|
82
82
|
- **参考文档**:`./.6aspec/biz/functional-capability-Map.md`(能力地图)、`./.6aspec/biz/event-list.md`(事件清单,涉及事件时)
|
|
83
83
|
|
|
84
84
|
**可选**:若用户额外提供原始 PRD,仅作补充参考,不得与 requirement.md 已确认内容冲突;有冲突时以 requirement.md 为准。
|
|
@@ -86,8 +86,8 @@ alwaysApply: false
|
|
|
86
86
|
## 第一阶段:需求完备性检查(Gatekeeping,必须先做)
|
|
87
87
|
**请在 `<thinking>` 块中执行此步骤。**
|
|
88
88
|
请逐项核对并输出结论(Y/N):
|
|
89
|
-
- [ ] **需求文档存在**:`
|
|
90
|
-
- [ ] **模型文档存在**:`
|
|
89
|
+
- [ ] **需求文档存在**:`6aspecdoc/green/<feature-name>/requirement.md` 是否存在且可读?(设计依据以该文档为准)
|
|
90
|
+
- [ ] **模型文档存在**:`6aspecdoc/green/<feature-name>/artifacts/domain-model.md` 是否存在?
|
|
91
91
|
- [ ] **数据闭环**:新功能涉及字段是否都能落在模型中?
|
|
92
92
|
- [ ] **外部依赖**:是否需要调用其他模块 Facade?(参考能力地图)
|
|
93
93
|
- [ ] **异常覆盖**:失败、超时、并发、幂等等关键逻辑是否明确?
|
|
@@ -182,17 +182,17 @@ alwaysApply: false
|
|
|
182
182
|
|
|
183
183
|
## 输出要求(硬性)
|
|
184
184
|
1. **格式**:Markdown 源码,使用代码块包裹。
|
|
185
|
-
2. **位置**:`
|
|
185
|
+
2. **位置**:`6aspecdoc/green/<feature-name>/artifacts/`(feature-name 使用 kebab-case 命名,如:user-authentication)
|
|
186
186
|
3. **交付物格式**:
|
|
187
187
|
请严格按照以下格式在一次回复中输出两个代码块:
|
|
188
188
|
|
|
189
189
|
这里是技术设计文档:
|
|
190
|
-
```markdown:
|
|
190
|
+
```markdown:6aspecdoc/green/<feature-name>/artifacts/tech-design.md
|
|
191
191
|
(技术设计文档内容...)
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
这里是 API 详细定义:
|
|
195
|
-
```markdown:
|
|
195
|
+
```markdown:6aspecdoc/green/<feature-name>/artifacts/api-definition.md
|
|
196
196
|
(API 定义内容,包含详细 JSON 结构...)
|
|
197
197
|
```
|
|
198
198
|
4. **解耦**:不包含具体项目包路径,用逻辑层(service/repository/facade)描述
|
|
@@ -85,13 +85,13 @@ python .cursor/script/create_entities_from_markdown.py {markdown_file_path} -a {
|
|
|
85
85
|
|
|
86
86
|
## 示例对话
|
|
87
87
|
|
|
88
|
-
**User:** `import-model-table
|
|
88
|
+
**User:** `import-model-table 6aspecdoc/green/xxx/artifacts/domain-model.md 890601`
|
|
89
89
|
|
|
90
90
|
**Assistant:**
|
|
91
91
|
1. 解析 Application: `8906`
|
|
92
92
|
2. 搜索 GUID: 在 `data/metadata/_metadata/8906/` 中搜索 `890601`...
|
|
93
93
|
3. 找到 GUID: `12345678-1234-1234-1234-1234567890ab`
|
|
94
|
-
4. 执行命令: `python .6aspec/script/create_entities_from_markdown.py
|
|
94
|
+
4. 执行命令: `python .6aspec/script/create_entities_from_markdown.py 6aspecdoc/green/xxx/artifacts/domain-model.md -a 8906 -g 12345678-1234-1234-1234-1234567890ab`
|
|
95
95
|
5. 反馈结果。
|
|
96
96
|
|
|
97
97
|
## 流程完成提示 (Workflow Progress)
|
|
@@ -27,8 +27,8 @@ alwaysApply: false
|
|
|
27
27
|
|
|
28
28
|
在执行领域建模前,**必须**先完成依赖检查,不通过则**立即停止**并提示,不得继续:
|
|
29
29
|
|
|
30
|
-
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `
|
|
31
|
-
2. **读取状态文件**:读取 `
|
|
30
|
+
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `6aspecdoc/green/<feature-name>/`;若有多个需求则让用户选择。
|
|
31
|
+
2. **读取状态文件**:读取 `6aspecdoc/green/<feature-name>/.green-status.json`。若文件不存在,说明尚未通过 `new` 创建该需求,停止并提示:
|
|
32
32
|
```
|
|
33
33
|
❌ 未通过依赖检查,无法执行领域建模
|
|
34
34
|
|
|
@@ -54,7 +54,7 @@ alwaysApply: false
|
|
|
54
54
|
|
|
55
55
|
请先运行 /6aspec:green:new 或 /6aspec:green:clarify 完成 requirement.md 后再执行 model。
|
|
56
56
|
```
|
|
57
|
-
4. **检查 requirement.md 存在**:若 `
|
|
57
|
+
4. **检查 requirement.md 存在**:若 `6aspecdoc/green/<feature-name>/requirement.md` 不存在或为空,停止并提示先完成需求澄清。
|
|
58
58
|
|
|
59
59
|
5. **检查项目已初始化(可选但推荐)**:若 `./.6aspec/biz/functional-capability-Map.md` 不存在,提示:
|
|
60
60
|
```
|
|
@@ -66,7 +66,7 @@ alwaysApply: false
|
|
|
66
66
|
**只有第 1~4 项检查全部通过后,才允许继续执行本 SOP 的建模步骤。**
|
|
67
67
|
|
|
68
68
|
## 输入要求
|
|
69
|
-
- **首选输入**:需求澄清文档 `requirement.md`(由 `/6aspec:green:new` 生成,位于 `
|
|
69
|
+
- **首选输入**:需求澄清文档 `requirement.md`(由 `/6aspec:green:new` 生成,位于 `6aspecdoc/green/<feature-name>/requirement.md`)
|
|
70
70
|
- **备选输入**:如果尚未执行 `new` 命令,可直接使用 PRD(产品需求文档)或功能需求描述
|
|
71
71
|
- **可选输入**:已确认的领域边界与核心实体语义(可以是markdown文档)
|
|
72
72
|
- **系统自带知识库**:
|
|
@@ -175,8 +175,8 @@ alwaysApply: false
|
|
|
175
175
|
|
|
176
176
|
## 输出要求:
|
|
177
177
|
1. 格式:Markdown 源码格式
|
|
178
|
-
2. 文档位置:`
|
|
179
|
-
3. 文档命名:`domain-model.md`(完整路径:`
|
|
178
|
+
2. 文档位置:`6aspecdoc/green/<feature-name>/artifacts/` 目录(feature-name 使用 kebab-case 命名,如:user-authentication)
|
|
179
|
+
3. 文档命名:`domain-model.md`(完整路径:`6aspecdoc/green/<feature-name>/artifacts/domain-model.md`)
|
|
180
180
|
4. 请务必检查下第三步的输出是否满足格式要求
|
|
181
181
|
|
|
182
182
|
## 注意
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
**1.0 前置检查(避免与 clarify 混淆)**
|
|
27
27
|
|
|
28
|
-
- 若当前工作目录已在 `
|
|
28
|
+
- 若当前工作目录已在 `6aspecdoc/green/<某需求名>/` 下,或用户 @ 的文件位于某需求目录内,则**先提示**:
|
|
29
29
|
```
|
|
30
30
|
当前处于需求目录「<需求名>」内。如需对本需求继续澄清,请使用 /6aspec:green:clarify;
|
|
31
31
|
如需新建另一个需求,请切换到项目根目录后再次执行 /6aspec:green:new。
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
**1.2 创建目录结构**
|
|
50
50
|
|
|
51
51
|
```
|
|
52
|
-
|
|
52
|
+
6aspecdoc/green/<feature-name>/
|
|
53
53
|
├── .green-status.json # 状态文件
|
|
54
54
|
├── requirement.md # 需求澄清文档(本步骤生成)
|
|
55
55
|
├── artifacts/ # 存放 model、design、visual-logic 生成的文档
|
|
@@ -69,19 +69,19 @@
|
|
|
69
69
|
"artifacts": {
|
|
70
70
|
"requirement": {
|
|
71
71
|
"status": "pending",
|
|
72
|
-
"path": "
|
|
72
|
+
"path": "6aspecdoc/green/<feature-name>/requirement.md"
|
|
73
73
|
},
|
|
74
74
|
"models": {
|
|
75
75
|
"status": "blocked",
|
|
76
|
-
"path": "
|
|
76
|
+
"path": "6aspecdoc/green/<feature-name>/artifacts/"
|
|
77
77
|
},
|
|
78
78
|
"design": {
|
|
79
79
|
"status": "blocked",
|
|
80
|
-
"path": "
|
|
80
|
+
"path": "6aspecdoc/green/<feature-name>/artifacts/"
|
|
81
81
|
},
|
|
82
82
|
"tasks": {
|
|
83
83
|
"status": "blocked",
|
|
84
|
-
"path": "
|
|
84
|
+
"path": "6aspecdoc/green/<feature-name>/tasks/"
|
|
85
85
|
}
|
|
86
86
|
},
|
|
87
87
|
"tasks": {
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
|
|
284
284
|
## 输出要求
|
|
285
285
|
1. 格式:Markdown 源码格式
|
|
286
|
-
2. 文档位置:`
|
|
286
|
+
2. 文档位置:`6aspecdoc/green/<feature-name>/requirement.md`
|
|
287
287
|
3. 文档命名:`requirement.md`
|
|
288
288
|
4. 必须包含"待确认项"章节(即使为空)
|
|
289
289
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
**1.1 检查是否在需求目录下**
|
|
17
17
|
|
|
18
|
-
检查当前工作目录是否在 `
|
|
18
|
+
检查当前工作目录是否在 `6aspecdoc/green/<feature-name>/` 下:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
pwd
|
|
@@ -26,7 +26,7 @@ pwd
|
|
|
26
26
|
**1.2 如果不在需求目录下,列出所有活跃需求**
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
find
|
|
29
|
+
find 6aspecdoc/green -maxdepth 2 -name ".green-status.json" -type f
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
如果找到多个需求,使用 **AskUserQuestion** 让用户选择要查看的需求。
|
|
@@ -40,10 +40,10 @@ find 6aspec/green -maxdepth 2 -name ".green-status.json" -type f
|
|
|
40
40
|
|
|
41
41
|
### Step 2: 读取状态文件
|
|
42
42
|
|
|
43
|
-
读取 `
|
|
43
|
+
读取 `6aspecdoc/green/<feature-name>/.green-status.json` 文件:
|
|
44
44
|
|
|
45
45
|
```javascript
|
|
46
|
-
const statusPath = '
|
|
46
|
+
const statusPath = '6aspecdoc/green/<feature-name>/.green-status.json';
|
|
47
47
|
const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -241,7 +241,7 @@ const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));
|
|
|
241
241
|
```
|
|
242
242
|
错误:未找到状态文件
|
|
243
243
|
|
|
244
|
-
路径:
|
|
244
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
245
245
|
|
|
246
246
|
这可能是因为:
|
|
247
247
|
1. 需求目录不是通过 /6aspec:green:new 创建的
|
|
@@ -255,7 +255,7 @@ const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));
|
|
|
255
255
|
```
|
|
256
256
|
错误:状态文件格式错误
|
|
257
257
|
|
|
258
|
-
路径:
|
|
258
|
+
路径:6aspecdoc/green/<feature-name>/.green-status.json
|
|
259
259
|
|
|
260
260
|
错误信息:<parse-error>
|
|
261
261
|
|
|
@@ -266,7 +266,7 @@ const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));
|
|
|
266
266
|
|
|
267
267
|
1. **只读操作**:status 命令只读取状态,不修改任何文件
|
|
268
268
|
2. **时间格式化**:显示时间时使用易读格式(YYYY-MM-DD HH:mm)
|
|
269
|
-
3. **路径简化**:显示文件路径时使用相对路径,省略 `
|
|
269
|
+
3. **路径简化**:显示文件路径时使用相对路径,省略 `6aspecdoc/green/<feature-name>/` 前缀
|
|
270
270
|
4. **用户友好**:使用图标和颜色(如果终端支持)提升可读性
|
|
271
271
|
5. **状态一致性**:如果发现状态不一致(如工件状态与生命周期状态不匹配),显示警告信息
|
|
272
272
|
|
|
@@ -13,8 +13,8 @@ alwaysApply: false
|
|
|
13
13
|
|
|
14
14
|
在执行任务拆解前,**必须**先完成依赖检查,不通过则**立即停止**并提示,不得继续:
|
|
15
15
|
|
|
16
|
-
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `
|
|
17
|
-
2. **读取状态文件**:读取 `
|
|
16
|
+
1. **确定当前需求**:根据当前工作目录或用户 @ 的文件,确定 `6aspecdoc/green/<feature-name>/`;若有多个需求则让用户选择。
|
|
17
|
+
2. **读取状态文件**:读取 `6aspecdoc/green/<feature-name>/.green-status.json`。若文件不存在,停止并提示先运行 `/6aspec:green:new` 创建需求。
|
|
18
18
|
3. **检查上一流程已完成**:
|
|
19
19
|
- 若 `status` 不是 `designed`,停止并提示:
|
|
20
20
|
```
|
|
@@ -26,7 +26,7 @@ alwaysApply: false
|
|
|
26
26
|
请先完成技术方案设计:运行 /6aspec:green:design,并确保生成 artifacts/tech-design.md、api-definition.md 且状态已更新为 designed。
|
|
27
27
|
```
|
|
28
28
|
- 若 `artifacts.design.status` 不是 `done`,停止并提示先运行 `/6aspec:green:design` 完成技术方案。
|
|
29
|
-
4. **检查 tech-design.md 存在**:若 `
|
|
29
|
+
4. **检查 tech-design.md 存在**:若 `6aspecdoc/green/<feature-name>/artifacts/tech-design.md` 不存在,停止并提示先完成技术方案设计。
|
|
30
30
|
|
|
31
31
|
**只有以上检查全部通过后,才允许继续执行本 SOP 的拆解步骤。**
|
|
32
32
|
|
|
@@ -35,7 +35,7 @@ alwaysApply: false
|
|
|
35
35
|
你是一个**技术项目经理 (TPM)**。在执行任务拆解前,请严格遵守:
|
|
36
36
|
|
|
37
37
|
1. **主动检索 (Active Retrieval)**:
|
|
38
|
-
* 当用户指定 `{功能名称}` 时,优先尝试读取 `
|
|
38
|
+
* 当用户指定 `{功能名称}` 时,优先尝试读取 `6aspecdoc/green/<feature-name>/artifacts/tech-design.md`。
|
|
39
39
|
* 如果找不到 TDD 文档,**立即停止**并报错,提示用户先完成 TDD 设计。
|
|
40
40
|
|
|
41
41
|
2. **思维链门禁 (Chain of Thought Gatekeeping)**:
|
|
@@ -76,7 +76,7 @@ alwaysApply: false
|
|
|
76
76
|
|
|
77
77
|
### 1. 目录结构
|
|
78
78
|
所有任务文件必须存储在以下路径:
|
|
79
|
-
- `
|
|
79
|
+
- `6aspecdoc/green/<feature-name>/tasks/`(feature-name 使用 kebab-case 命名,如:user-authentication)
|
|
80
80
|
|
|
81
81
|
### 2. 文件命名规范
|
|
82
82
|
- 格式:`task-{序号}-{任务类型}-{功能简名}.md`
|
|
@@ -141,16 +141,16 @@ alwaysApply: false
|
|
|
141
141
|
2. **合并依赖项**:将该入口点涉及的所有业务逻辑(Service)、数据访问(Repository)、模型定义(DTO/VO/Enum)全部归入该入口点的原子任务中。
|
|
142
142
|
3. **排序与编排**:基于`<thinking>`中的依赖分析,对任务进行逻辑排序(先基础后上层,先前置后依赖)。
|
|
143
143
|
4. **生成文件**:为每个识别出的入口点生成独立的任务 Markdown 文件。
|
|
144
|
-
5. **生成总览**:任务拆解完成后,必须在 `
|
|
144
|
+
5. **生成总览**:任务拆解完成后,必须在 `6aspecdoc/green/<feature-name>/tasks/README.md` 输出任务总览。
|
|
145
145
|
6. **状态维护(必须执行)**:后续每当完成一个任务,必须同步更新:
|
|
146
146
|
- 对应任务文件中的"任务状态"。
|
|
147
|
-
- `
|
|
147
|
+
- `6aspecdoc/green/<feature-name>/tasks/README.md` 中该任务的状态展示。
|
|
148
148
|
|
|
149
149
|
## 输出要求
|
|
150
150
|
1. **格式**:Markdown 源码格式。
|
|
151
151
|
2. **一致性**:任务中的类名、方法名和字段名必须与 TDD 保持完全一致。
|
|
152
152
|
3. **禁用范围**:不拆解前端任务、不拆解单纯的单元测试任务、不拆解 Entity/SQL 任务。
|
|
153
|
-
4. **总览 README(必须输出)**:在 `
|
|
153
|
+
4. **总览 README(必须输出)**:在 `6aspecdoc/green/<feature-name>/tasks/README.md` 生成任务总览文件,必须包含:
|
|
154
154
|
- **项目进度看板**:任务总工时、已完成工时、进度条。
|
|
155
155
|
- **任务清单**:按推荐执行顺序排列,包含状态图标 (✅/🔄/⏳)。
|
|
156
156
|
- **开发阶段划分**:建议将任务划分为 Phase 1 (Core), Phase 2 (Extensions) 等阶段。
|
|
@@ -21,14 +21,14 @@ alwaysApply: false
|
|
|
21
21
|
|
|
22
22
|
## 输入要求
|
|
23
23
|
### 必需输入
|
|
24
|
-
- **TDD 文档路径**:`
|
|
24
|
+
- **TDD 文档路径**:`6aspecdoc/green/<feature-name>/artifacts/tech-design.md`(feature-name 使用 kebab-case 命名,如:user-authentication)
|
|
25
25
|
- **人类选择的生成范围(必须明确,否则中断提问)**:
|
|
26
26
|
- 需要生成的图表类型:Flowchart / Sequence / State(可多选)
|
|
27
27
|
- 覆盖范围:具体到“哪些入口/哪些业务流程/哪些对象”(例如:仅 `3.1` 中某个写 API;或某个事件订阅;或某个后台任务)
|
|
28
28
|
- 抽象层级:是否细到 service/repository/facade 级别(建议默认到 service/repository/facade)
|
|
29
29
|
|
|
30
30
|
### 可选输入(用于补齐 TDD 未显式写清的信息)
|
|
31
|
-
- 数据模型文档:`
|
|
31
|
+
- 数据模型文档:`6aspecdoc/green/<feature-name>/artifacts/domain-model.md`
|
|
32
32
|
- PRD:`.prd/{功能名称}-prd.md`
|
|
33
33
|
- 事件清单:`./.6aspec/biz/event-list.md`(当涉及事件订阅/发布时)
|
|
34
34
|
- 能力地图:`./.6aspec/biz/functional-capability-Map.md`(当涉及跨模块 Facade 依赖时)
|
|
@@ -42,7 +42,7 @@ alwaysApply: false
|
|
|
42
42
|
|
|
43
43
|
## 输出要求
|
|
44
44
|
1. **输出格式**:Markdown 源码 + Mermaid 代码块(严禁截图)
|
|
45
|
-
2. **输出位置**:`
|
|
45
|
+
2. **输出位置**:`6aspecdoc/green/<feature-name>/artifacts/visual-logic.md`
|
|
46
46
|
3. **引用关系**:在输出文档开头必须写明:
|
|
47
47
|
- 输入 TDD 文档路径
|
|
48
48
|
- 本次选择生成的图表类型与覆盖范围
|
|
@@ -88,7 +88,7 @@ alwaysApply: false
|
|
|
88
88
|
- 迁移必须标注触发入口(API/事件/定时任务/后台任务)
|
|
89
89
|
|
|
90
90
|
### 第四步:输出文档并自检
|
|
91
|
-
1. 写入 `
|
|
91
|
+
1. 写入 `6aspecdoc/green/<feature-name>/artifacts/visual-logic.md`
|
|
92
92
|
2. 自检:
|
|
93
93
|
- Mermaid 语法是否完整
|
|
94
94
|
- 是否严格遵循"按需生成"与"范围约束"
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
## 文件位置
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
|
|
10
|
+
6aspecdoc/green/<feature-name>/.green-status.json
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## 状态文件结构
|
|
@@ -132,19 +132,19 @@ tasks (任务列表)
|
|
|
132
132
|
"artifacts": {
|
|
133
133
|
"requirement": {
|
|
134
134
|
"status": "pending",
|
|
135
|
-
"path": "
|
|
135
|
+
"path": "6aspecdoc/green/user-authentication/requirement.md"
|
|
136
136
|
},
|
|
137
137
|
"models": {
|
|
138
138
|
"status": "blocked",
|
|
139
|
-
"path": "
|
|
139
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/"
|
|
140
140
|
},
|
|
141
141
|
"design": {
|
|
142
142
|
"status": "blocked",
|
|
143
|
-
"path": "
|
|
143
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/"
|
|
144
144
|
},
|
|
145
145
|
"tasks": {
|
|
146
146
|
"status": "blocked",
|
|
147
|
-
"path": "
|
|
147
|
+
"path": "6aspecdoc/green/user-authentication/tasks/"
|
|
148
148
|
}
|
|
149
149
|
},
|
|
150
150
|
"tasks": {
|
|
@@ -170,20 +170,20 @@ tasks (任务列表)
|
|
|
170
170
|
"artifacts": {
|
|
171
171
|
"requirement": {
|
|
172
172
|
"status": "done",
|
|
173
|
-
"path": "
|
|
173
|
+
"path": "6aspecdoc/green/user-authentication/requirement.md",
|
|
174
174
|
"completedAt": "2026-02-16T03:15:00Z"
|
|
175
175
|
},
|
|
176
176
|
"models": {
|
|
177
177
|
"status": "ready",
|
|
178
|
-
"path": "
|
|
178
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/"
|
|
179
179
|
},
|
|
180
180
|
"design": {
|
|
181
181
|
"status": "blocked",
|
|
182
|
-
"path": "
|
|
182
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/"
|
|
183
183
|
},
|
|
184
184
|
"tasks": {
|
|
185
185
|
"status": "blocked",
|
|
186
|
-
"path": "
|
|
186
|
+
"path": "6aspecdoc/green/user-authentication/tasks/"
|
|
187
187
|
}
|
|
188
188
|
},
|
|
189
189
|
"tasks": {
|
|
@@ -209,23 +209,23 @@ tasks (任务列表)
|
|
|
209
209
|
"artifacts": {
|
|
210
210
|
"requirement": {
|
|
211
211
|
"status": "done",
|
|
212
|
-
"path": "
|
|
212
|
+
"path": "6aspecdoc/green/user-authentication/requirement.md",
|
|
213
213
|
"completedAt": "2026-02-16T03:15:00Z"
|
|
214
214
|
},
|
|
215
215
|
"models": {
|
|
216
216
|
"status": "done",
|
|
217
|
-
"path": "
|
|
217
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/",
|
|
218
218
|
"completedAt": "2026-02-16T03:45:00Z",
|
|
219
219
|
"files": ["domain-model.md"]
|
|
220
220
|
},
|
|
221
221
|
"design": {
|
|
222
222
|
"status": "done",
|
|
223
|
-
"path": "
|
|
223
|
+
"path": "6aspecdoc/green/user-authentication/artifacts/",
|
|
224
224
|
"completedAt": "2026-02-16T04:15:00Z"
|
|
225
225
|
},
|
|
226
226
|
"tasks": {
|
|
227
227
|
"status": "done",
|
|
228
|
-
"path": "
|
|
228
|
+
"path": "6aspecdoc/green/user-authentication/tasks/",
|
|
229
229
|
"completedAt": "2026-02-16T04:30:00Z",
|
|
230
230
|
"files": ["task_01_user_model.md", "task_02_auth_api.md", "task_03_session.md"]
|
|
231
231
|
}
|
|
@@ -250,7 +250,7 @@ tasks (任务列表)
|
|
|
250
250
|
所有命令在执行前应该读取状态文件,了解当前状态:
|
|
251
251
|
|
|
252
252
|
```javascript
|
|
253
|
-
const statusPath = '
|
|
253
|
+
const statusPath = '6aspecdoc/green/<feature-name>/.green-status.json';
|
|
254
254
|
const status = JSON.parse(fs.readFileSync(statusPath, 'utf8'));
|
|
255
255
|
```
|
|
256
256
|
|