super-engineer-workflow 0.1.6 → 0.1.7
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/CHANGELOG.md +13 -0
- package/README.md +6 -10
- package/docs/se/345/221/275/344/273/244/345/215/217/350/256/256.md +42 -297
- package/docs//350/267/250/345/271/263/345/217/260/346/224/257/346/214/201/347/237/251/351/230/265.md +34 -0
- package/docs//351/241/271/347/233/256/346/236/266/346/236/204/344/270/216/350/256/276/350/256/241/350/257/264/346/230/216.md +3 -2
- package/package.json +1 -1
- package/scripts/se-cli.py +146 -2
- package/scripts/se-e2e-test.py +89 -0
- package/scripts/se-setup.py +13 -2
- package/super-engineer-workflow/SKILL.md +20 -5
- package/super-engineer-workflow/references/commands/apply.md +28 -0
- package/super-engineer-workflow/references/commands/archive.md +23 -0
- package/super-engineer-workflow/references/commands/bridge.md +25 -0
- package/super-engineer-workflow/references/commands/common.md +32 -0
- package/super-engineer-workflow/references/commands/plan.md +25 -0
- package/super-engineer-workflow/references/commands/propose.md +25 -0
- package/super-engineer-workflow/references/commands/review.md +22 -0
- package/super-engineer-workflow/references/commands/status.md +22 -0
- package/super-engineer-workflow/references/commands/verify.md +23 -0
- package/super-engineer-workflow/scripts/bootstrap-openspec.py +3 -1
- package/super-engineer-workflow/scripts/common.py +128 -0
- package/super-engineer-workflow/scripts/generate-discovery.py +44 -0
- package/super-engineer-workflow/scripts/generate-smart-plan.py +12 -2
- package/super-engineer-workflow/scripts/prepare-archive-openspec.py +4 -0
- package/super-engineer-workflow/scripts/run-workflow.py +90 -23
- package/super-engineer-workflow/scripts/writeback-openspec.py +5 -1
- package/super-engineer-workflow/references/se-commands.md +0 -586
|
@@ -1,586 +0,0 @@
|
|
|
1
|
-
# `/se:*` 专属命令协议
|
|
2
|
-
|
|
3
|
-
`/se:*` 是 `super-engineer-workflow` 的专属命令前缀。
|
|
4
|
-
|
|
5
|
-
它不是 shell 命令,也不是 OpenSpec 官方 `/opsx:*` 命令。用户输入 `/se:*` 时,AI 必须把它理解为当前 skill 的阶段指令,并按本文件执行。
|
|
6
|
-
|
|
7
|
-
## 通用处理规则
|
|
8
|
-
|
|
9
|
-
收到 `/se:*` 后必须先做这些事:
|
|
10
|
-
|
|
11
|
-
1. 读取 `<workspace>/workspace.yml`
|
|
12
|
-
2. 读取 `~/.super-engineer/skill-config.yml`
|
|
13
|
-
3. 判断 `workflow_source` 是 `todo` 还是 `openspec`
|
|
14
|
-
4. 判断 `mode` 是 `manual` 还是 `auto`
|
|
15
|
-
5. 读取当前 `.super-engineer/current-session.json` 和当前 session 的 `status.json`,如果存在
|
|
16
|
-
6. 如果是 `openspec` 模式,读取当前 active OpenSpec change 下的 `proposal.md`、`design.md`、`tasks.md`、`specs/` 和 `super-engineer/` 目录
|
|
17
|
-
7. 如果配置了 `demand_file`,读取它作为原始需求输入
|
|
18
|
-
8. 如果配置了 `reference_files`,读取真实存在的参考文件作为需求、设计和计划上下文
|
|
19
|
-
9. 检查当前命令的前置条件
|
|
20
|
-
10. 前置条件不满足时停止,并告诉用户应该先执行哪个 `/se:*` 命令
|
|
21
|
-
|
|
22
|
-
`/se:*` 命令不得要求用户自己运行底层脚本。底层脚本只能由 AI 在 skill 内部调用。
|
|
23
|
-
|
|
24
|
-
`openspec` 模式下,OpenSpec change 名称必须由 `/se:propose <change-name>` 显式指定。AI 不得根据需求标题、需求文件名或 `vars.demand_name` 自行推导 change 名称。
|
|
25
|
-
|
|
26
|
-
`workspace.yml` 是用户维护的工作空间契约。AI 只能读取和校验,禁止自动编辑、重写或格式化。如果配置需要调整,AI 必须停止并说明需要用户修改的字段。
|
|
27
|
-
|
|
28
|
-
桥接脚本支持相对路径、绝对路径、`${demand_name}` / `${vars.demand_name}` 变量和 `openspec.changes_dir`。AI 禁止因为缺少 active change 就要求用户把路径改成绝对路径,或要求用户显式新增 `openspec.change_dir`。缺少 active change 时,正确下一步是 `/se:propose <change-name>`。
|
|
29
|
-
|
|
30
|
-
## 状态产物写入硬约束
|
|
31
|
-
|
|
32
|
-
AI 禁止直接创建、修改或伪造以下标准工作流产物:
|
|
33
|
-
|
|
34
|
-
- `<workspace>/.super-engineer/current-session.json`
|
|
35
|
-
- `<workspace>/.super-engineer/sessions/<session_id>/status.json`
|
|
36
|
-
- `<workspace>/.super-engineer/sessions/<session_id>/plan.json`
|
|
37
|
-
- `<workspace>/.super-engineer/sessions/<session_id>/review.json`
|
|
38
|
-
- `<workspace>/.super-engineer/sessions/<session_id>/verify.json`
|
|
39
|
-
- `<workspace>/.super-engineer/sessions/<session_id>/notification.json`
|
|
40
|
-
- `<output_dir>/<session_id>/discovery.md`
|
|
41
|
-
- `<output_dir>/<session_id>/plan.md`
|
|
42
|
-
- `<output_dir>/<session_id>/self-check.md`
|
|
43
|
-
- `<output_dir>/<session_id>/review.md`
|
|
44
|
-
- `<output_dir>/<session_id>/verify.md`
|
|
45
|
-
|
|
46
|
-
这些文件只能由本 skill 的标准脚本生成或更新。AI 可以修改业务代码、OpenSpec 规格、todo 文件和用户明确要求编辑的普通文档,但不能手工补写工作流状态产物。
|
|
47
|
-
|
|
48
|
-
如果发现 session 已经被手工污染,例如只有 `status.json`,没有 `plan.json`、`review.json`、`verify.json`、`notification.json` 或 output Markdown,AI 必须停止手工补文件,改为:
|
|
49
|
-
|
|
50
|
-
1. 重新执行 `/se:plan` 创建标准 session;或
|
|
51
|
-
2. 在已有标准 session 上执行 `/se:review`、`/se:verify` 恢复后续标准产物。
|
|
52
|
-
|
|
53
|
-
禁止通过手工写 `notification_status=sent`、手工写 `phase=done`、手工拼飞书卡片来宣称工作流完成。
|
|
54
|
-
|
|
55
|
-
## 下一步提示硬约束
|
|
56
|
-
|
|
57
|
-
AI 每次完成 `/se:*` 命令后,只能提示当前阶段允许的下一步,不能为了“方便”跳过门禁。
|
|
58
|
-
|
|
59
|
-
“提示下一步”和“执行下一步”必须严格区分:
|
|
60
|
-
|
|
61
|
-
- 提示下一步:只在回复里告诉用户下一条建议命令
|
|
62
|
-
- 执行下一步:调用脚本、修改状态、生成计划、实现代码、审查或验证
|
|
63
|
-
|
|
64
|
-
除非用户当前消息明确请求该命令,否则 AI 只能提示下一步,不能执行下一步。
|
|
65
|
-
|
|
66
|
-
`auto` 模式只影响 `/se:apply` 内部从实现到验证的连续推进,不允许让 `/se:propose`、`/se:bridge` 自动串到 `/se:apply`。
|
|
67
|
-
|
|
68
|
-
如果脚本输出了 `final_reply_must`,或者输出了 `se_reply_constraint_begin` / `se_reply_constraint_end` 包裹的约束,AI 最终回复必须以该约束为准。禁止在最终回复中追加任何与 `allowed_next` 冲突的 `/se:*` 命令。
|
|
69
|
-
|
|
70
|
-
`openspec` 模式允许的阶段流转:
|
|
71
|
-
|
|
72
|
-
```text
|
|
73
|
-
/se:propose <change-name>
|
|
74
|
-
-> /se:bridge
|
|
75
|
-
-> 人工审核 todo.md
|
|
76
|
-
-> /se:apply
|
|
77
|
-
-> /se:review
|
|
78
|
-
-> /se:verify
|
|
79
|
-
-> /se:archive-check
|
|
80
|
-
-> /se:archive
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
硬性禁止:
|
|
84
|
-
|
|
85
|
-
- `/se:propose` 完成后禁止提示 `/se:apply`
|
|
86
|
-
- `/se:propose` 完成回复中禁止出现“确认无误后执行 `/se:apply`”“通过 `/se:apply` 进入实现阶段”等跨阶段提示
|
|
87
|
-
- `/se:bridge` 完成后必须提示先人工审核 todo,审核通过后发送 `/se:apply`
|
|
88
|
-
- `/se:apply` 之前必须已完成 `/se:bridge`,并由用户在对话中明确表示 todo 已审核通过或直接在审核后发送 `/se:apply`
|
|
89
|
-
- `/se:apply` 必须通过标准脚本序列推进,禁止手工写 `status.json` 或手工补 output 文档后宣称完成
|
|
90
|
-
- `/se:verify` 通过前禁止提示 `/se:archive-check`
|
|
91
|
-
- `/se:archive-check` 未得到 `archive_ready=true` 且 `merge_mode=safe_merge` 前禁止提示 `/se:archive`
|
|
92
|
-
- 工作流完成通知必须通过 `python3 scripts/run-workflow.py verify` 发送,禁止 AI 直接调用飞书 webhook,禁止 AI 手工拼接飞书卡片 JSON
|
|
93
|
-
- 启用飞书时,只有 `notification.json` 中存在 `source=run-workflow.py verify`、fingerprint 匹配、`route=feishu`、`template=interactive`、`status=sent` 的结果,才算飞书通知成功
|
|
94
|
-
|
|
95
|
-
`todo` 模式允许的阶段流转:
|
|
96
|
-
|
|
97
|
-
```text
|
|
98
|
-
/se:init
|
|
99
|
-
-> /se:plan 或 /se:apply
|
|
100
|
-
-> /se:review
|
|
101
|
-
-> /se:verify
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
如果用户要求跳过上述顺序,AI 必须停止并说明缺失的前置条件。
|
|
105
|
-
|
|
106
|
-
命令完成后的停止规则:
|
|
107
|
-
|
|
108
|
-
| 命令 | 完成后是否必须停止 | 允许的下一步提示 | 禁止自动执行 |
|
|
109
|
-
| --- | --- | --- | --- |
|
|
110
|
-
| `/se:init` | 是 | `/se:propose <change-name>`、`/se:plan` 或 `/se:apply` | 后续所有命令 |
|
|
111
|
-
| `/se:propose <change-name>` | 是 | `/se:bridge` | `/se:plan`、`/se:apply`、代码实现 |
|
|
112
|
-
| `/se:bridge` | 是 | 人工审核 todo 后 `/se:apply` | 自动执行 `/se:plan`、`/se:apply` |
|
|
113
|
-
| `/se:plan` | 是 | `/se:apply` | 代码实现、review、verify |
|
|
114
|
-
| `/se:archive-check` | 是 | 满足 safe_merge 时 `/se:archive` | `/se:archive` |
|
|
115
|
-
|
|
116
|
-
## 状态模型
|
|
117
|
-
|
|
118
|
-
OpenSpec 模式使用 `<workspace>/.super-engineer/se-state.json` 作为脚本状态机。AI 只能读取该文件,不能手工编辑。
|
|
119
|
-
|
|
120
|
-
状态流转:
|
|
121
|
-
|
|
122
|
-
```text
|
|
123
|
-
draft
|
|
124
|
-
-> proposed
|
|
125
|
-
-> bridged
|
|
126
|
-
-> planned
|
|
127
|
-
-> implementing
|
|
128
|
-
-> self_checked
|
|
129
|
-
-> reviewed
|
|
130
|
-
-> verified
|
|
131
|
-
-> archive_ready
|
|
132
|
-
-> archived
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
阻塞状态:
|
|
136
|
-
|
|
137
|
-
```text
|
|
138
|
-
blocked
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
实际脚本阶段:
|
|
142
|
-
|
|
143
|
-
```text
|
|
144
|
-
draft
|
|
145
|
-
-> proposed allowed_next=[/se:bridge]
|
|
146
|
-
-> bridged allowed_next=[/se:apply, /se:plan]
|
|
147
|
-
-> planned allowed_next=[/se:apply]
|
|
148
|
-
-> implementing
|
|
149
|
-
-> self_checked allowed_next=[/se:review]
|
|
150
|
-
-> reviewed allowed_next=[/se:verify, /se:apply]
|
|
151
|
-
-> verified allowed_next=[/se:archive-check]
|
|
152
|
-
-> archive_ready allowed_next=[/se:archive]
|
|
153
|
-
-> archived
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
执行 `/se:bridge`、`/se:plan`、`/se:apply`、`/se:verify`、`/se:archive-check`、`/se:archive` 前,脚本必须校验当前 `phase` 和 `allowed_next`。校验失败时停止,不能靠 AI 口头判断继续。
|
|
157
|
-
|
|
158
|
-
## OpenSpec 桥接审核
|
|
159
|
-
|
|
160
|
-
`openspec` 模式下,桥接 todo 是桥接产物,必须被人工审核后才能进入交付。
|
|
161
|
-
|
|
162
|
-
桥接 todo 的实际路径由 `workspace.yml.todo_file` 决定。不要假设固定文件名;如果用户没有特殊要求,推荐继续使用 `todo.md`。
|
|
163
|
-
|
|
164
|
-
审核动作不再通过单独命令记录。用户审核 `todo.md` 后,直接发送 `/se:apply` 即表示确认该桥接 todo 可以进入交付。
|
|
165
|
-
|
|
166
|
-
AI 在 `/se:bridge` 完成后必须停止,只能提示用户审核 `todo.md`;不能自动进入 `/se:apply`。
|
|
167
|
-
|
|
168
|
-
`openspec` 模式下,只有显式执行 `/se:bridge` 才允许从 `tasks.md` 重写 `todo.md`。后续 `/se:plan` 或 `/se:apply` 触发的初始化只能校验已有 `todo.md` 和刷新桥接上下文,不能覆盖人工审核或补充过的 todo。
|
|
169
|
-
|
|
170
|
-
## 命令定义
|
|
171
|
-
|
|
172
|
-
### `/se:init`
|
|
173
|
-
|
|
174
|
-
用途:
|
|
175
|
-
|
|
176
|
-
- 校验工作空间
|
|
177
|
-
- 初始化 `.super-engineer/`
|
|
178
|
-
- 确认配置是否完整
|
|
179
|
-
|
|
180
|
-
适用模式:
|
|
181
|
-
|
|
182
|
-
- `todo`
|
|
183
|
-
- `openspec`
|
|
184
|
-
|
|
185
|
-
内部动作:
|
|
186
|
-
|
|
187
|
-
- 执行 `python3 scripts/run-workflow.py init`
|
|
188
|
-
|
|
189
|
-
完成后汇报:
|
|
190
|
-
|
|
191
|
-
- workspace 是否可用
|
|
192
|
-
- 缺失配置
|
|
193
|
-
- 下一步建议命令:`todo` 模式建议 `/se:plan` 或 `/se:apply`;`openspec` 模式建议 `/se:propose <change-name>` 或 `/se:bridge`,取决于是否已有 active change 和 `tasks.md`
|
|
194
|
-
|
|
195
|
-
### `/se:propose`
|
|
196
|
-
|
|
197
|
-
用途:
|
|
198
|
-
|
|
199
|
-
- 为需求生成或完善 OpenSpec change
|
|
200
|
-
- 产出 `proposal.md`、`design.md`、`tasks.md`
|
|
201
|
-
|
|
202
|
-
适用模式:
|
|
203
|
-
|
|
204
|
-
- `openspec`
|
|
205
|
-
|
|
206
|
-
前置条件:
|
|
207
|
-
|
|
208
|
-
- `workspace.yml` 中 `workflow_source=openspec`
|
|
209
|
-
- 用户已在 `/se:propose` 后显式指定 change 名称
|
|
210
|
-
- 优先读取 `workspace.yml.demand_file`
|
|
211
|
-
- `demand_file` 可以是本地 Markdown 路径,也可以是飞书/Lark 云文档 URL
|
|
212
|
-
- 当 `demand_file` 是飞书/Lark 云文档 URL 时,必须由脚本调用官方 `lark-cli docs +fetch` 读取并转换为 Markdown;AI 禁止手工复制云文档正文
|
|
213
|
-
- 如果本机没有安装 `lark-cli`,必须停止并提示用户安装:`npx @larksuite/cli@latest install`,随后执行 `lark-cli config init --new` 和 `lark-cli auth login --recommend`
|
|
214
|
-
- 如果没有 `demand_file`,则使用用户提供的需求描述,或 change 目录已有上下文
|
|
215
|
-
|
|
216
|
-
内部动作:
|
|
217
|
-
|
|
218
|
-
- 执行 `python3 scripts/run-workflow.py route-se --command-text "/se:propose <change-name>"`
|
|
219
|
-
- 优先使用 OpenSpec CLI 创建 change、读取 status 和 artifact instructions
|
|
220
|
-
- 读取 `propose-input.json`
|
|
221
|
-
- 读取 `demand_file` 或用户输入的需求描述
|
|
222
|
-
- 读取 `reference_files` 中真实存在的参考文件,并作为生成 OpenSpec 产物的上下文
|
|
223
|
-
- 读取现有 OpenSpec 文件
|
|
224
|
-
- 创建或更新 `proposal.md`
|
|
225
|
-
- 创建或更新 `design.md`
|
|
226
|
-
- 创建或更新 `tasks.md`
|
|
227
|
-
- 不进入代码实现
|
|
228
|
-
- 禁止调用 `bootstrap-openspec.py` 或 `run-workflow.py bootstrap-openspec`
|
|
229
|
-
- 禁止创建或修改 `workspace.yml.todo_file` 指向的桥接 todo
|
|
230
|
-
- 完成后 `se-state.phase` 必须停留在 `proposed`
|
|
231
|
-
|
|
232
|
-
完成后汇报:
|
|
233
|
-
|
|
234
|
-
- change 目录
|
|
235
|
-
- 已生成或更新的文件
|
|
236
|
-
- 任务摘要
|
|
237
|
-
- 下一步只能提示:`/se:bridge`
|
|
238
|
-
|
|
239
|
-
完成后推荐固定收口句:
|
|
240
|
-
|
|
241
|
-
```text
|
|
242
|
-
代码暂未修改。下一步请执行 /se:bridge,把当前 OpenSpec tasks.md 桥接为待审核 todo.md。
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
完成后禁止提示:
|
|
246
|
-
|
|
247
|
-
- `/se:apply`
|
|
248
|
-
- `/se:plan`
|
|
249
|
-
- 任何代码实现动作
|
|
250
|
-
- “确认无误后通过 /se:apply 进入实现阶段”这类跨过 `/se:bridge` 的表达
|
|
251
|
-
|
|
252
|
-
如果发现需求有遗漏,应继续停留在 `/se:propose <change-name>` 阶段,补充当前 change,不进入 `/se:bridge`。
|
|
253
|
-
|
|
254
|
-
如果 `workflow_source=todo`,停止并说明 `/se:propose` 只适用于 `openspec` 模式。
|
|
255
|
-
|
|
256
|
-
### `/se:bridge`
|
|
257
|
-
|
|
258
|
-
用途:
|
|
259
|
-
|
|
260
|
-
- 把 OpenSpec `tasks.md` 转成桥接 todo
|
|
261
|
-
- 生成待审核执行清单
|
|
262
|
-
|
|
263
|
-
适用模式:
|
|
264
|
-
|
|
265
|
-
- `openspec`
|
|
266
|
-
|
|
267
|
-
前置条件:
|
|
268
|
-
|
|
269
|
-
- `workspace.yml` 中 `workflow_source=openspec`
|
|
270
|
-
- 已通过 `/se:propose <change-name>` 记录当前 active change,或 `workspace.yml.openspec.change_dir` 指向明确 change
|
|
271
|
-
- `tasks.md` 存在且包含可执行任务
|
|
272
|
-
- 当前阶段是 `proposed` 或尚未进入交付的 `bridged`;如果已进入 `planned`、`implementing`、`reviewed`、`verified` 等交付阶段,不允许直接重写桥接 todo
|
|
273
|
-
|
|
274
|
-
重复桥接规则:
|
|
275
|
-
|
|
276
|
-
- 如果 `/se:bridge` 后人工审核发现 todo 或需求有偏差,应先通过 `/se:propose <change-name>` 修正当前 OpenSpec change
|
|
277
|
-
- 修正后的 `tasks.md` 生成完成后,可以再次执行 `/se:bridge` 重建待审核 todo
|
|
278
|
-
- 禁止 AI 手工把 `tasks.md` 内容同步到 `todo.md`;必须通过 `/se:bridge` 脚本生成
|
|
279
|
-
|
|
280
|
-
内部动作:
|
|
281
|
-
|
|
282
|
-
- 执行 `python3 scripts/run-workflow.py route-se --command-text "/se:bridge"`,或由受控入口调用 `python3 scripts/run-workflow.py bootstrap-openspec --explicit-se-bridge`
|
|
283
|
-
- 读取 OpenSpec CLI status 和 apply instructions,并写入 bridge context
|
|
284
|
-
- 读取生成后的 `todo_file`
|
|
285
|
-
- 汇总待审核项
|
|
286
|
-
- 不自动进入实现
|
|
287
|
-
|
|
288
|
-
完成后汇报:
|
|
289
|
-
|
|
290
|
-
- 桥接 todo 路径
|
|
291
|
-
- 进入本轮交付的任务
|
|
292
|
-
- 关键约束
|
|
293
|
-
- 不清楚或需要人工确认的点
|
|
294
|
-
- 下一步只能提示“人工审核 todo.md,审核通过后执行 `/se:apply`”
|
|
295
|
-
|
|
296
|
-
完成后禁止提示:
|
|
297
|
-
|
|
298
|
-
- `/se:plan`
|
|
299
|
-
- `/se:review`
|
|
300
|
-
- `/se:verify`
|
|
301
|
-
|
|
302
|
-
### `/se:plan`
|
|
303
|
-
|
|
304
|
-
用途:
|
|
305
|
-
|
|
306
|
-
- 生成交付计划
|
|
307
|
-
- 不直接改代码
|
|
308
|
-
|
|
309
|
-
适用模式:
|
|
310
|
-
|
|
311
|
-
- `todo`
|
|
312
|
-
- `openspec`
|
|
313
|
-
|
|
314
|
-
前置条件:
|
|
315
|
-
|
|
316
|
-
- `todo` 模式:`todo_file` 存在且不是空模板
|
|
317
|
-
- `openspec` 模式:已完成 `/se:bridge`,且用户已审核桥接 `todo.md`
|
|
318
|
-
|
|
319
|
-
内部动作:
|
|
320
|
-
|
|
321
|
-
- 执行 `python3 scripts/run-workflow.py plan`
|
|
322
|
-
- 如果当前 session 已有标准 `plan.json` 且仍停留在计划确认阶段,脚本必须复用当前 session
|
|
323
|
-
- 如果当前 session 已进入实现、自查、审查或验证阶段,脚本必须拒绝重复 `/se:plan`,不能创建第二个 session
|
|
324
|
-
|
|
325
|
-
完成后汇报:
|
|
326
|
-
|
|
327
|
-
- 目标仓库
|
|
328
|
-
- 影响范围
|
|
329
|
-
- 验收标准
|
|
330
|
-
- 风险
|
|
331
|
-
- 下一步建议:`manual` 模式提示用户确认后 `/se:apply`;`auto` 模式如果用户只要求计划,只能停在计划阶段
|
|
332
|
-
|
|
333
|
-
`manual` 模式下,生成计划后停下。
|
|
334
|
-
`auto` 模式下,如果用户明确要求“只做计划”,也必须停下。
|
|
335
|
-
|
|
336
|
-
### `/se:apply`
|
|
337
|
-
|
|
338
|
-
用途:
|
|
339
|
-
|
|
340
|
-
- 启动或继续交付阶段
|
|
341
|
-
- 实现代码并完成自查、审查、验证
|
|
342
|
-
|
|
343
|
-
适用模式:
|
|
344
|
-
|
|
345
|
-
- `todo`
|
|
346
|
-
- `openspec`
|
|
347
|
-
|
|
348
|
-
前置条件:
|
|
349
|
-
|
|
350
|
-
- `todo` 模式:`todo_file` 存在且不是空模板
|
|
351
|
-
- `openspec` 模式:已完成 `/se:bridge`,且用户已审核桥接 `todo.md`
|
|
352
|
-
|
|
353
|
-
内部动作:
|
|
354
|
-
|
|
355
|
-
- 如果没有当前 session、当前 session 失效,或当前 session 缺少标准 `plan.json`,先执行 `python3 scripts/run-workflow.py plan`
|
|
356
|
-
- 如果当前 session 已有标准 `plan.json` 且未完成,必须复用当前 session
|
|
357
|
-
- 执行 `python3 scripts/run-workflow.py start-implement`
|
|
358
|
-
- 按当前 `plan.json` 实现代码
|
|
359
|
-
- 执行 `python3 scripts/run-workflow.py finish-implement`
|
|
360
|
-
- 根据 `mode` 判断是否继续
|
|
361
|
-
|
|
362
|
-
执行约束:
|
|
363
|
-
|
|
364
|
-
- `plan`、`start-implement`、`finish-implement`、`review`、`verify` 的状态推进必须由 `python3 scripts/run-workflow.py ...` 完成
|
|
365
|
-
- 每个阶段执行前必须通过 `se-state.json` 状态校验;`/se:propose` 后直接进入 `/se:apply` 必须被脚本拒绝
|
|
366
|
-
- `todo` 模式下也必须通过当前 session 的 `status.json`、`todo-state.json` 和标准产物来源校验,不能复用旧需求 session
|
|
367
|
-
- `todo` 模式的状态不能写入 OpenSpec 专用 `se-state.json`
|
|
368
|
-
- `todo` 模式下如果 `current-session.json` 指向旧 `output_dir`,`/se:apply` 必须重新创建标准 session
|
|
369
|
-
- AI 不得在 `/se:apply` 链路中额外手工执行第二次 `/se:plan`;脚本检测到活跃交付 session 时必须拒绝重复计划
|
|
370
|
-
- AI 只能在 `start-implement` 和 `finish-implement` 之间修改业务代码
|
|
371
|
-
- AI 不得直接写 `.super-engineer` 下的状态 JSON
|
|
372
|
-
- AI 不得直接写 output 下的标准 Markdown 报告
|
|
373
|
-
- AI 不得直接调用飞书 webhook 或手工拼接飞书通知;通知只能在后续 `python3 scripts/run-workflow.py verify` 中由脚本发送
|
|
374
|
-
- 如果当前 session 不是标准脚本创建的,或者缺少 `plan.json`,必须重新执行 `python3 scripts/run-workflow.py plan` 创建标准 session
|
|
375
|
-
- 如果当前 session 的 `plan.json`、`self-check.json`、`review.json`、`verify.json` 缺少对应 `source=run-workflow.py ...`,必须视为非标准产物并停止
|
|
376
|
-
|
|
377
|
-
`manual` 模式:
|
|
378
|
-
|
|
379
|
-
- 实现和自查后停下,等待用户后续 `/se:review`
|
|
380
|
-
|
|
381
|
-
`auto` 模式:
|
|
382
|
-
|
|
383
|
-
- 如果 self-check 无阻塞,继续执行 review
|
|
384
|
-
- 如果 review 无阻塞,继续执行 verify
|
|
385
|
-
- 如果 `workflow_source=openspec` 且 verify 通过,继续执行 `/se:archive-check` 的检查逻辑
|
|
386
|
-
- 只有归档检查结果为 `safe_merge` 时才允许提示 `/se:archive`;默认只汇报归档状态,不自动执行归档
|
|
387
|
-
|
|
388
|
-
完成后汇报:
|
|
389
|
-
|
|
390
|
-
- 修改文件
|
|
391
|
-
- self-check 结果
|
|
392
|
-
- review gate
|
|
393
|
-
- verify 结果
|
|
394
|
-
- residual risks
|
|
395
|
-
- OpenSpec 回写状态
|
|
396
|
-
|
|
397
|
-
如果 `workflow_source=openspec` 且 verify 通过,下一步只能提示 `/se:archive-check`。只有 `/se:archive-check` 已满足 `safe_merge` 时,才允许提示 `/se:archive`。
|
|
398
|
-
|
|
399
|
-
### `/se:review`
|
|
400
|
-
|
|
401
|
-
用途:
|
|
402
|
-
|
|
403
|
-
- 审查当前代码改动
|
|
404
|
-
|
|
405
|
-
适用模式:
|
|
406
|
-
|
|
407
|
-
- `todo`
|
|
408
|
-
- `openspec`
|
|
409
|
-
|
|
410
|
-
前置条件:
|
|
411
|
-
|
|
412
|
-
- 当前 session 存在
|
|
413
|
-
- 已有代码改动或实现阶段已完成
|
|
414
|
-
|
|
415
|
-
内部动作:
|
|
416
|
-
|
|
417
|
-
- 执行 `python3 scripts/run-workflow.py review`
|
|
418
|
-
|
|
419
|
-
完成后汇报:
|
|
420
|
-
|
|
421
|
-
- gate 结果
|
|
422
|
-
- blocking findings
|
|
423
|
-
- warning findings
|
|
424
|
-
- 测试覆盖风险
|
|
425
|
-
- `openspec` 模式下的 execution-summary 回写状态
|
|
426
|
-
|
|
427
|
-
如果 review 通过,下一步提示 `/se:verify`。如果存在 blocking finding,下一步提示 `/se:apply` 修复 blocking finding,不能提示 `/se:verify`。
|
|
428
|
-
|
|
429
|
-
### `/se:verify`
|
|
430
|
-
|
|
431
|
-
用途:
|
|
432
|
-
|
|
433
|
-
- 执行验证并收口当前交付
|
|
434
|
-
|
|
435
|
-
适用模式:
|
|
436
|
-
|
|
437
|
-
- `todo`
|
|
438
|
-
- `openspec`
|
|
439
|
-
|
|
440
|
-
前置条件:
|
|
441
|
-
|
|
442
|
-
- 当前 session 存在
|
|
443
|
-
- review 未阻塞
|
|
444
|
-
|
|
445
|
-
内部动作:
|
|
446
|
-
|
|
447
|
-
- 执行 `python3 scripts/run-workflow.py verify`
|
|
448
|
-
- 由 verify 脚本统一执行通知发送
|
|
449
|
-
- 写入 `verify.json`
|
|
450
|
-
- 写入 `notification.json`
|
|
451
|
-
|
|
452
|
-
完成后汇报:
|
|
453
|
-
|
|
454
|
-
- 总体结果
|
|
455
|
-
- 每个仓库的验证结果
|
|
456
|
-
- workflow 是 `done` 还是 `blocked`
|
|
457
|
-
- `notification.json` 中的通知结果;启用飞书时必须汇报飞书 route 是否为 `sent`
|
|
458
|
-
- residual risks
|
|
459
|
-
|
|
460
|
-
如果验证通过且是 `openspec` 模式,下一步只能提示 `/se:archive-check`。如果验证失败,下一步提示 `/se:apply` 修复或人工处理,不能提示 `/se:archive-check`。
|
|
461
|
-
|
|
462
|
-
### `/se:archive-check`
|
|
463
|
-
|
|
464
|
-
用途:
|
|
465
|
-
|
|
466
|
-
- 检查当前 OpenSpec change 是否满足归档条件
|
|
467
|
-
|
|
468
|
-
适用模式:
|
|
469
|
-
|
|
470
|
-
- `openspec`
|
|
471
|
-
|
|
472
|
-
前置条件:
|
|
473
|
-
|
|
474
|
-
- `workflow_source=openspec`
|
|
475
|
-
- verify 已通过
|
|
476
|
-
- execution-summary 已存在
|
|
477
|
-
|
|
478
|
-
内部动作:
|
|
479
|
-
|
|
480
|
-
- 执行 `python3 scripts/run-workflow.py prepare-archive-openspec`
|
|
481
|
-
- 结合 OpenSpec CLI status / archive instructions 与 super-engineer 安全检查结果
|
|
482
|
-
|
|
483
|
-
完成后汇报:
|
|
484
|
-
|
|
485
|
-
- `archive_ready`
|
|
486
|
-
- `merge_mode`
|
|
487
|
-
- `blockers`
|
|
488
|
-
- `spec_conflicts`
|
|
489
|
-
- 是否允许继续 `/se:archive`
|
|
490
|
-
|
|
491
|
-
只有 `archive_ready=true`、`merge_mode=safe_merge`、`spec_conflicts=[]` 时,下一步才允许提示 `/se:archive`。否则只能提示人工处理 blockers 或 spec 冲突。
|
|
492
|
-
|
|
493
|
-
如果 `merge_mode=manual_merge_required`,停止并说明需要人工处理的 spec 冲突。
|
|
494
|
-
|
|
495
|
-
### `/se:archive`
|
|
496
|
-
|
|
497
|
-
用途:
|
|
498
|
-
|
|
499
|
-
- 安全归档 OpenSpec change
|
|
500
|
-
|
|
501
|
-
适用模式:
|
|
502
|
-
|
|
503
|
-
- `openspec`
|
|
504
|
-
|
|
505
|
-
前置条件:
|
|
506
|
-
|
|
507
|
-
- 已完成 `/se:archive-check`
|
|
508
|
-
- `archive_ready=true`
|
|
509
|
-
- `merge_mode=safe_merge`
|
|
510
|
-
- `spec_conflicts=[]`
|
|
511
|
-
|
|
512
|
-
内部动作:
|
|
513
|
-
|
|
514
|
-
- 执行 `python3 scripts/run-workflow.py archive-openspec`
|
|
515
|
-
|
|
516
|
-
完成后汇报:
|
|
517
|
-
|
|
518
|
-
- 同步了哪些 spec 文件
|
|
519
|
-
- change 被归档到哪里
|
|
520
|
-
- archive-result 路径
|
|
521
|
-
|
|
522
|
-
前置条件不满足时,停止并提示先执行 `/se:archive-check` 或处理冲突。
|
|
523
|
-
|
|
524
|
-
### `/se:status`
|
|
525
|
-
|
|
526
|
-
用途:
|
|
527
|
-
|
|
528
|
-
- 查看当前工作流状态
|
|
529
|
-
|
|
530
|
-
适用模式:
|
|
531
|
-
|
|
532
|
-
- `todo`
|
|
533
|
-
- `openspec`
|
|
534
|
-
|
|
535
|
-
内部动作:
|
|
536
|
-
|
|
537
|
-
- 执行 `python3 scripts/run-workflow.py status`
|
|
538
|
-
- 读取当前 session `status.json`
|
|
539
|
-
- 如果是 `openspec` 模式,同时检查 bridge、execution-summary、archive-input 状态
|
|
540
|
-
|
|
541
|
-
完成后汇报:
|
|
542
|
-
|
|
543
|
-
- 当前阶段
|
|
544
|
-
- 当前 session
|
|
545
|
-
- 是否 blocked
|
|
546
|
-
- 下一步建议命令
|
|
547
|
-
|
|
548
|
-
## 模式差异
|
|
549
|
-
|
|
550
|
-
`todo + auto`:
|
|
551
|
-
|
|
552
|
-
- 通常可以直接从 `/se:apply` 开始
|
|
553
|
-
- 没有硬阻塞时自动推进到 verify
|
|
554
|
-
|
|
555
|
-
`todo + manual`:
|
|
556
|
-
|
|
557
|
-
- 先 `/se:plan`
|
|
558
|
-
- 用户确认后 `/se:apply`
|
|
559
|
-
- 再按需要 `/se:review`、`/se:verify`
|
|
560
|
-
|
|
561
|
-
`openspec + auto`:
|
|
562
|
-
|
|
563
|
-
- 必须先 `/se:propose` 或已有 OpenSpec change
|
|
564
|
-
- 然后 `/se:bridge`
|
|
565
|
-
- 人工审核 `todo.md`
|
|
566
|
-
- 审核通过后 `/se:apply`
|
|
567
|
-
- verify 通过后做 `/se:archive-check`
|
|
568
|
-
|
|
569
|
-
`openspec + manual`:
|
|
570
|
-
|
|
571
|
-
- 前半段同 `openspec + auto`
|
|
572
|
-
- 人工审核 `todo.md` 后先 `/se:plan`
|
|
573
|
-
- 用户确认后 `/se:apply`
|
|
574
|
-
- 再 `/se:review`、`/se:verify`、`/se:archive-check`、`/se:archive`
|
|
575
|
-
|
|
576
|
-
## 失败反馈格式
|
|
577
|
-
|
|
578
|
-
命令无法继续时,按这个结构回复:
|
|
579
|
-
|
|
580
|
-
```text
|
|
581
|
-
当前命令:/se:<command>
|
|
582
|
-
当前模式:<workflow_source> + <mode>
|
|
583
|
-
阻塞原因:<具体原因>
|
|
584
|
-
缺失前置条件:<缺失项>
|
|
585
|
-
建议下一步:<建议执行的 /se:* 命令或人工处理动作>
|
|
586
|
-
```
|