@chenmk/superflow 0.1.2 → 0.1.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/README.md +39 -1
- package/README.zh-CN.md +13 -1
- package/assets/skills/superflow-design/SKILL.md +16 -8
- package/assets/skills/superflow-docs/SKILL.md +17 -8
- package/assets/skills/superflow-pipeline/references/api-design-template.md +99 -63
- package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +62 -14
- package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +114 -67
- package/assets/skills/superflow-pipeline/references/quality-gate.md +104 -102
- package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +45 -19
- package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +35 -0
- package/dist/commands/design.js +25 -3
- package/dist/commands/design.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## 标准模板
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
````
|
|
12
12
|
使用superpower技能,开启合适的团队,最少包含一名开发和一名测试交叉验证进行需求开发,测试验证闭环交付,更新测试文档和api.md:
|
|
13
13
|
|
|
14
14
|
# P{batch-id} Prompt:{batch-name}
|
|
@@ -154,20 +154,33 @@
|
|
|
154
154
|
```bash
|
|
155
155
|
rg -n "<field>|<enum>|<status>|<column>" .
|
|
156
156
|
rg -n "<setter>|<getter>|<mapper column>|<dto field>" src test
|
|
157
|
-
|
|
157
|
+
````
|
|
158
158
|
|
|
159
159
|
同时检查 Mapper XML、实体注解、DTO/VO、SQL 脚本、定时任务、MQ/事件消费、
|
|
160
160
|
回调、第三方适配器、共享表/SDK 和兄弟仓消费方。
|
|
161
161
|
|
|
162
162
|
完成报告必须包含:
|
|
163
163
|
|
|
164
|
-
| 字段/状态 | 写入点
|
|
165
|
-
|
|
166
|
-
|
|
|
164
|
+
| 字段/状态 | 写入点 | 读取/过滤点 | 派生/同步点 | 跨模块消费方 | 已同步调整 | 不调整理由 | 覆盖测试 |
|
|
165
|
+
| --------- | -------- | ----------- | ----------- | ------------ | ---------- | ---------- | -------- |
|
|
166
|
+
| \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ |
|
|
167
167
|
|
|
168
168
|
只证明直接 setter/writer 已修改,不证明读取方、过滤方、派生同步方和消费方,
|
|
169
169
|
视为未完成。
|
|
170
170
|
|
|
171
|
+
## 外部枚举绑定确认(强制)
|
|
172
|
+
|
|
173
|
+
如果本批涉及第三方、SDK、BEM/停车、支付退款、财务展示、来源字段、状态同步、
|
|
174
|
+
外部字典或外部枚举,必须从 api.md / sdd-quality-gate.md /
|
|
175
|
+
Superpowers 技术详设复制 `外部枚举绑定确认` / `External Enum Binding`,并在编码前复核。
|
|
176
|
+
|
|
177
|
+
| 业务字段 | 本系统真源字段/枚举 | 外部系统字段 | 外部枚举/字典值 | 展示文案/业务语义/财务语义 | 取值来源 | owner/确认时间 | 不确定项/阻塞处理 | 覆盖测试 |
|
|
178
|
+
| -------- | ------------------- | ------------ | --------------- | -------------------------- | --------------------------- | -------------- | ---------------------- | -------- |
|
|
179
|
+
| \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | 文档/日志/接口样例/用户确认 | \_\_\_\_ | 无 / Blocked: \_\_\_\_ | \_\_\_\_ |
|
|
180
|
+
|
|
181
|
+
禁止用请求成功、值非空或字段存在替代外部枚举业务语义确认。未确认的外部枚举、
|
|
182
|
+
支付来源、财务展示含义或兜底映射,必须停止并报告 `Blocked`。
|
|
183
|
+
|
|
171
184
|
## SDD 门禁激活(第一步,在所有编码工作之前执行)
|
|
172
185
|
|
|
173
186
|
本机已配置 Codex Hooks,会在 Edit/Write 时自动拦截。你必须按以下顺序激活:
|
|
@@ -195,9 +208,11 @@ cd {project-path} && rm -f .sdd-enforced
|
|
|
195
208
|
**跳过以上步骤直接编辑代码会被 Hook 拦截。**
|
|
196
209
|
|
|
197
210
|
## 本批目标
|
|
211
|
+
|
|
198
212
|
{一句话描述本批要完成的业务闭环}
|
|
199
213
|
|
|
200
214
|
示例:
|
|
215
|
+
|
|
201
216
|
- 完成主数据的 CRUD 接口,包括数据库表、实体、Mapper、Service、Controller,支持后台列表查询和批量导入模板下载。
|
|
202
217
|
- 完成外部事件接入,包括消息解析、准入校验、事件格式化、向 MQ 发布 BusinessEvent。
|
|
203
218
|
|
|
@@ -229,6 +244,7 @@ pwd
|
|
|
229
244
|
git branch --show-current
|
|
230
245
|
git status --short
|
|
231
246
|
```
|
|
247
|
+
|
|
232
248
|
- 确认当前目录包含本批次 worktree 名称
|
|
233
249
|
- 确认当前分支是本批次分支
|
|
234
250
|
- 如有异常,停止工作,不得开始任何代码编辑
|
|
@@ -238,16 +254,19 @@ git status --short
|
|
|
238
254
|
本任务预设端口 = {base-port} + {batch-id} = {port}(如 9250 + 15 = 9265)。
|
|
239
255
|
|
|
240
256
|
启动应用前检查端口占用:
|
|
257
|
+
|
|
241
258
|
```bash
|
|
242
259
|
PORT={port}
|
|
243
260
|
lsof -i :$PORT 2>/dev/null || netstat -tlnp 2>/dev/null | grep ":$PORT "
|
|
244
261
|
```
|
|
262
|
+
|
|
245
263
|
- 若预设端口被其他 agent 占用 → 向后递增查找可用端口(到 9350),禁止关闭其他进程
|
|
246
264
|
- 若更换端口,所有接口测试 URL 同步更新
|
|
247
265
|
|
|
248
266
|
### 编译依赖问题处理(强制)
|
|
249
267
|
|
|
250
268
|
编译失败时禁止直接终止:
|
|
269
|
+
|
|
251
270
|
- 分析错误类型 → 对照 design.md 检查 → 尝试修复 → 重新 clean compile
|
|
252
271
|
- 其他 agent 能正常编译说明环境是对的,问题出在自己的代码
|
|
253
272
|
- 15 分钟无法解决才上报 Leader
|
|
@@ -255,6 +274,7 @@ lsof -i :$PORT 2>/dev/null || netstat -tlnp 2>/dev/null | grep ":$PORT "
|
|
|
255
274
|
### Token 获取(强制)
|
|
256
275
|
|
|
257
276
|
接口测试必须先获取真实 token:
|
|
277
|
+
|
|
258
278
|
```bash
|
|
259
279
|
# 1. 获取验证码(带 Cookie)
|
|
260
280
|
curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
@@ -268,6 +288,7 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
268
288
|
|
|
269
289
|
# 3. 从响应 data.token 提取,后续请求 Header 带 token: $TOKEN
|
|
270
290
|
```
|
|
291
|
+
|
|
271
292
|
- 禁止 mock-only、禁止假设固定 token
|
|
272
293
|
- 登录失败时必须输出完整响应分析原因
|
|
273
294
|
|
|
@@ -290,23 +311,28 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
290
311
|
或把任务标记为 `Blocked` / `Partially verified` 并说明阻塞原因。
|
|
291
312
|
|
|
292
313
|
## 允许修改的仓库
|
|
314
|
+
|
|
293
315
|
{repository-name}
|
|
294
316
|
|
|
295
317
|
## 允许修改的目录/文件范围
|
|
318
|
+
|
|
296
319
|
{具体列出允许修改的文件路径,精确到类名}
|
|
297
320
|
|
|
298
321
|
示例:
|
|
322
|
+
|
|
299
323
|
- src/main/java/com/example/domain/entity/BusinessRecord.java
|
|
300
324
|
- src/main/java/com/example/domain/mapper/BusinessRecordMapper.java
|
|
301
325
|
- src/main/resources/mapper/BusinessRecordMapper.xml
|
|
302
326
|
- src/main/java/com/example/domain/service/BusinessRecordService.java
|
|
303
327
|
- src/main/java/com/example/domain/controller/BusinessRecordController.java
|
|
304
|
-
- src/main/resources/db/migration/V{version}
|
|
328
|
+
- src/main/resources/db/migration/V{version}\_\_add_business_record.sql
|
|
305
329
|
|
|
306
330
|
## 禁止修改的范围
|
|
331
|
+
|
|
307
332
|
{明确列出禁止触碰的边界}
|
|
308
333
|
|
|
309
334
|
示例:
|
|
335
|
+
|
|
310
336
|
- 禁止修改 OtherDomainService.java 及其相关接口(由其他批次负责)
|
|
311
337
|
- 禁止修改 PublicApiController.java(对外接口由其他批次负责)
|
|
312
338
|
- 禁止修改消息协议相关配置和类(由其他批次负责)
|
|
@@ -314,17 +340,21 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
314
340
|
- 禁止修改既有枚举值(如需新增枚举值,在报告中声明)
|
|
315
341
|
|
|
316
342
|
## 依赖的前置批次
|
|
343
|
+
|
|
317
344
|
{列出本批依赖哪些批次已完成}
|
|
318
345
|
|
|
319
346
|
示例:
|
|
347
|
+
|
|
320
348
|
- P0 基线:已完成,数据库表结构和实体已对齐
|
|
321
349
|
- P1 核心主数据:已完成,基础 CRUD 可用
|
|
322
350
|
|
|
323
351
|
## 业务背景
|
|
352
|
+
|
|
324
353
|
{简述本批在整体业务中的位置和上下游关系}
|
|
325
354
|
|
|
326
355
|
示例:
|
|
327
356
|
本批是某业务流程的 P2 核心链路。用户或外部系统提交业务请求后,系统需要:
|
|
357
|
+
|
|
328
358
|
1. 校验主数据有效性(依赖 P1 的主数据能力)
|
|
329
359
|
2. 创建业务记录并初始化状态机
|
|
330
360
|
3. 根据用户、租户或配置计算业务规则命中
|
|
@@ -332,6 +362,7 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
332
362
|
5. 调用下游依赖完成资源锁定、通知或后续处理
|
|
333
363
|
|
|
334
364
|
## 精确实现步骤
|
|
365
|
+
|
|
335
366
|
{按顺序列出具体要做什么,引用 design.md 章节}
|
|
336
367
|
|
|
337
368
|
步骤 1:{具体动作}(参考 design.md #{章节})
|
|
@@ -339,15 +370,18 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
339
370
|
...
|
|
340
371
|
|
|
341
372
|
## 数据库字段要求
|
|
373
|
+
|
|
342
374
|
{明确字段名、类型、约束,引用 database-contract.md 或 design.md}
|
|
343
375
|
|
|
344
376
|
**汇总 SQL 文件**:`openspec/changes/{change-id}/sql/{汇总SQL文件名}`
|
|
377
|
+
|
|
345
378
|
- 本批次所有数据库变更脚本必须从该文件获取
|
|
346
379
|
- 如果需要新增数据库变更,必须追加到该汇总 SQL 文件(按任务编号注释,如 `-- P16 业务字段补齐`)
|
|
347
380
|
- SQL 脚本采用简单直接格式(ALTER TABLE / INSERT),不使用 INFORMATION_SCHEMA 判断、PREPARE/EXECUTE 等过度兼容脚本
|
|
348
381
|
- 如果本批次不需要新增 SQL,写明"本批次不新增 SQL,但开始前仍需核查依赖表结构是否已满足设计"
|
|
349
382
|
|
|
350
383
|
示例:
|
|
384
|
+
|
|
351
385
|
- business_record 表:
|
|
352
386
|
- id: BIGINT PK AUTO_INCREMENT
|
|
353
387
|
- name: VARCHAR(64) NOT NULL
|
|
@@ -358,15 +392,18 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
|
|
|
358
392
|
- created_at / updated_at: datetime
|
|
359
393
|
|
|
360
394
|
## API/消息契约要求
|
|
395
|
+
|
|
361
396
|
{明确接口路径、方法、请求/响应字段,或 MQ topic、消息格式}
|
|
362
397
|
|
|
363
398
|
示例:
|
|
364
399
|
HTTP 接口:
|
|
400
|
+
|
|
365
401
|
- POST /api/business-records
|
|
366
402
|
- Request: BusinessRecordCreateDTO
|
|
367
403
|
- Response: Result<Long>(返回创建后的 id)
|
|
368
404
|
|
|
369
405
|
MQ 消息:
|
|
406
|
+
|
|
370
407
|
- Topic: domain.business.event
|
|
371
408
|
- Body: BusinessEvent
|
|
372
409
|
- recordId: String
|
|
@@ -375,9 +412,11 @@ MQ 消息:
|
|
|
375
412
|
- timestamp: Long
|
|
376
413
|
|
|
377
414
|
## 幂等、事务、失败处理要求
|
|
415
|
+
|
|
378
416
|
{明确每个关键操作的幂等策略、事务边界、失败处理}
|
|
379
417
|
|
|
380
418
|
示例:
|
|
419
|
+
|
|
381
420
|
- 创建业务记录:
|
|
382
421
|
- 幂等:基于 userId + businessId + 日期做幂等,重复请求返回已有记录号
|
|
383
422
|
- 事务:@Transactional(rollbackFor = Exception.class)
|
|
@@ -389,6 +428,7 @@ MQ 消息:
|
|
|
389
428
|
- 失败:业务异常时抛异常让 MQ 重试,达到最大重试次数后进死信队列
|
|
390
429
|
|
|
391
430
|
## 测试要求
|
|
431
|
+
|
|
392
432
|
{明确本批需要验证的用例,引用 tests.md}
|
|
393
433
|
|
|
394
434
|
- 用例 1:{描述}(tests.md #{章节})
|
|
@@ -397,6 +437,7 @@ MQ 消息:
|
|
|
397
437
|
每个用例必须执行:接口调用 → 数据库验证 → 日志检查
|
|
398
438
|
|
|
399
439
|
## 验收命令
|
|
440
|
+
|
|
400
441
|
{列出本批验收时需要执行的命令}
|
|
401
442
|
|
|
402
443
|
```bash
|
|
@@ -471,6 +512,7 @@ grep ERROR {log-path} || echo "无 ERROR"
|
|
|
471
512
|
- 如果发现需要修改"禁止修改的范围"内的文件才能完成本批目标,**停止**,上报 Leader,不允许越界修改
|
|
472
513
|
- 如果发现 tests.md 中的断言在实际环境中不成立,**停止**,列出差异,上报 Leader
|
|
473
514
|
- 如果编译或启动失败且 15 分钟内无法解决,**停止**,上报 Leader
|
|
515
|
+
|
|
474
516
|
```
|
|
475
517
|
|
|
476
518
|
---
|
|
@@ -480,25 +522,31 @@ grep ERROR {log-path} || echo "无 ERROR"
|
|
|
480
522
|
当 prompt 涉及跨仓库交互时,必须在"业务背景"或"API/消息契约要求"中增加:
|
|
481
523
|
|
|
482
524
|
```
|
|
525
|
+
|
|
483
526
|
## 跨仓库交互契约
|
|
484
527
|
|
|
485
528
|
### 本仓库角色
|
|
529
|
+
|
|
486
530
|
{生产者/消费者/契约层/业务归口}
|
|
487
531
|
|
|
488
532
|
### 上游依赖(本仓库消费)
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
|
533
|
+
|
|
534
|
+
| 来源仓库 | 接口/消息 | 契约详情 | 状态 |
|
|
535
|
+
| -------- | ------------ | ---------- | -------------- |
|
|
536
|
+
| {repo} | {path/topic} | {字段定义} | 已由 P{n} 提供 |
|
|
492
537
|
|
|
493
538
|
### 下游契约(本仓库提供)
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
|
539
|
+
|
|
540
|
+
| 目标仓库 | 接口/消息 | 契约详情 | 状态 |
|
|
541
|
+
| -------- | ------------ | ---------- | -------- |
|
|
542
|
+
| {repo} | {path/topic} | {字段定义} | 本批交付 |
|
|
497
543
|
|
|
498
544
|
### 禁止越界
|
|
545
|
+
|
|
499
546
|
- 本仓库不处理 {其他仓库的职责}
|
|
500
547
|
- 本仓库不直接操作 {其他仓库的数据库}
|
|
501
|
-
|
|
548
|
+
|
|
549
|
+
````
|
|
502
550
|
|
|
503
551
|
---
|
|
504
552
|
|
|
@@ -533,4 +581,4 @@ grep ERROR {log-path} || echo "无 ERROR"
|
|
|
533
581
|
|
|
534
582
|
## 评审清单
|
|
535
583
|
- [reviewer-checklist.md](reviewer-checklist.md)
|
|
536
|
-
|
|
584
|
+
````
|