@chenmk/superflow 0.5.12 → 0.5.14

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.
Files changed (97) hide show
  1. package/README.md +26 -0
  2. package/README.zh-CN.md +8 -0
  3. package/assets/manifest.json +33 -7
  4. package/assets/review-rules.json +24 -0
  5. package/assets/scripts/superflow-dependency-update-hook.sh +29 -0
  6. package/assets/scripts/superflow-doc-placement-hook.py +38 -0
  7. package/assets/scripts/superflow-java-build-hook.py +178 -0
  8. package/assets/scripts/superflow-java-stop-hook.sh +3 -0
  9. package/assets/scripts/superflow-loop-end-hook.sh +3 -0
  10. package/assets/scripts/superflow-loop-failure-hook.sh +3 -0
  11. package/assets/scripts/superflow-loop-observer.py +149 -0
  12. package/assets/scripts/superflow-sql-sync-hook.py +141 -3
  13. package/assets/scripts/superflow-test-report-lint.py +80 -2
  14. package/assets/skill-registry.json +229 -0
  15. package/assets/skills/openspec-propose/SKILL.md +14 -0
  16. package/assets/skills/superflow-clarify/SKILL.md +23 -1
  17. package/assets/skills/superflow-design/SKILL.md +6 -1
  18. package/assets/skills/superflow-docs/SKILL.md +24 -0
  19. package/assets/skills/superflow-implement/SKILL.md +8 -0
  20. package/assets/skills/superflow-pipeline/SKILL.md +31 -1
  21. package/assets/skills/superflow-pipeline/references/document-review-coverage.md +18 -0
  22. package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +17 -0
  23. package/assets/skills/superflow-pipeline/references/test-execution-template.md +11 -0
  24. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +8 -2
  25. package/assets/skills/superflow-quick-dev/SKILL.md +44 -0
  26. package/assets/skills/superflow-verify/SKILL.md +45 -1
  27. package/assets/skills-en/openspec-propose/SKILL.md +14 -0
  28. package/assets/skills-en/superflow-clarify/SKILL.md +23 -1
  29. package/assets/skills-en/superflow-design/SKILL.md +6 -1
  30. package/assets/skills-en/superflow-docs/SKILL.md +24 -0
  31. package/assets/skills-en/superflow-implement/SKILL.md +9 -0
  32. package/assets/skills-en/superflow-pipeline/SKILL.md +34 -0
  33. package/assets/skills-en/superflow-pipeline/references/document-review-coverage.md +20 -0
  34. package/assets/skills-en/superflow-pipeline/references/test-execution-template.md +12 -0
  35. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +8 -2
  36. package/assets/skills-en/superflow-quick-dev/SKILL.md +43 -0
  37. package/assets/skills-en/superflow-verify/SKILL.md +52 -1
  38. package/dist/app/cli.js +98 -0
  39. package/dist/app/cli.js.map +1 -1
  40. package/dist/app/commands/check.js +7 -3
  41. package/dist/app/commands/check.js.map +1 -1
  42. package/dist/app/commands/cleanup-audit.js +13 -0
  43. package/dist/app/commands/cleanup-audit.js.map +1 -0
  44. package/dist/app/commands/context-audit.js +43 -0
  45. package/dist/app/commands/context-audit.js.map +1 -0
  46. package/dist/app/commands/docs-audit.js +11 -0
  47. package/dist/app/commands/docs-audit.js.map +1 -0
  48. package/dist/app/commands/doctor.js +10 -0
  49. package/dist/app/commands/doctor.js.map +1 -1
  50. package/dist/app/commands/hook-migrate.js +25 -0
  51. package/dist/app/commands/hook-migrate.js.map +1 -0
  52. package/dist/app/commands/init.js +9 -19
  53. package/dist/app/commands/init.js.map +1 -1
  54. package/dist/app/commands/map-audit.js +10 -0
  55. package/dist/app/commands/map-audit.js.map +1 -0
  56. package/dist/app/commands/pipeline.js +13 -1
  57. package/dist/app/commands/pipeline.js.map +1 -1
  58. package/dist/app/commands/quick.js +136 -0
  59. package/dist/app/commands/quick.js.map +1 -0
  60. package/dist/app/commands/review-coverage.js +84 -0
  61. package/dist/app/commands/review-coverage.js.map +1 -0
  62. package/dist/app/commands/skill-audit.js +36 -0
  63. package/dist/app/commands/skill-audit.js.map +1 -0
  64. package/dist/app/commands/status.js +108 -7
  65. package/dist/app/commands/status.js.map +1 -1
  66. package/dist/app/commands/update.js +9 -12
  67. package/dist/app/commands/update.js.map +1 -1
  68. package/dist/domains/cleanup-audit.js +38 -0
  69. package/dist/domains/cleanup-audit.js.map +1 -0
  70. package/dist/domains/config/cli-help.js +14 -0
  71. package/dist/domains/config/cli-help.js.map +1 -1
  72. package/dist/domains/config/context.js +13 -10
  73. package/dist/domains/config/context.js.map +1 -1
  74. package/dist/domains/context-audit.js +39 -0
  75. package/dist/domains/context-audit.js.map +1 -0
  76. package/dist/domains/deps.js +18 -8
  77. package/dist/domains/deps.js.map +1 -1
  78. package/dist/domains/docs-audit.js +34 -0
  79. package/dist/domains/docs-audit.js.map +1 -0
  80. package/dist/domains/hook-migration.js +127 -0
  81. package/dist/domains/hook-migration.js.map +1 -0
  82. package/dist/domains/hook.js +76 -2
  83. package/dist/domains/hook.js.map +1 -1
  84. package/dist/domains/managed-work/control.js +56 -2
  85. package/dist/domains/managed-work/control.js.map +1 -1
  86. package/dist/domains/map-audit.js +23 -0
  87. package/dist/domains/map-audit.js.map +1 -0
  88. package/dist/domains/quick-dev/gate.js +91 -0
  89. package/dist/domains/quick-dev/gate.js.map +1 -0
  90. package/dist/domains/review/coverage.js +119 -0
  91. package/dist/domains/review/coverage.js.map +1 -0
  92. package/dist/domains/review/report.js +62 -0
  93. package/dist/domains/review/report.js.map +1 -0
  94. package/dist/domains/skill/registry.js +87 -0
  95. package/dist/domains/skill/registry.js.map +1 -0
  96. package/package.json +1 -1
  97. package/scripts/check-design-principles.mjs +4 -0
@@ -83,6 +83,14 @@ Before implementation phase can exit:
83
83
  ## Prompt Splitting Rules
84
84
 
85
85
  - Split by independently verifiable feature closure, not by a giant backend module.
86
+ - Read `tasks.md` predecessor links before splitting or dispatching. A batch is
87
+ executable only when its real predecessors are complete; independent batches
88
+ may run in parallel. Keep the existing checkbox and machine category as the
89
+ progress authority. An implementation discovery that changes a confirmed
90
+ owner decision or task acceptance requires canonical document repair,
91
+ handoff refresh, document review, and a new Coding Ready receipt before the
92
+ affected batch resumes. A free-text `Blocked by` note cannot downgrade a
93
+ locally executable task to an external category.
86
94
  - Use P0 for baseline only: worktree, branch, compile, SQL/entity/mapper/DTO consistency.
87
95
  - Keep business prompts small and explicit.
88
96
  - Every implementation prompt must begin with the mandatory superpower/team
@@ -7,6 +7,16 @@ description: SDD 总入口和路由技能。Use when the user says sdd, SDD 流
7
7
 
8
8
  This is the lightweight SDD router. Do not load the whole SDD process when a smaller phase skill is enough.
9
9
 
10
+ ## 角色 owner 与互斥边界
11
+
12
+ | 角色 | 唯一 owner | 可以做 | 不可以做 |
13
+ |---|---|---|---|
14
+ | Host | 目标、澄清、监督、语义评审 | 选择路由、判断代码/架构风险、决定是否接受反馈 | 代替 Executor 写业务代码;启动嵌套 Supervisor |
15
+ | Executor | 源码实现、测试、启动、整改 | 在冻结合同内修改工作区并提交证据 | 改合同/状态;自行降低验收等级;自动提交发布 |
16
+ | Runner | 状态、哈希、退出码、证据持久化 | 调度、等待、恢复、确定性门禁 | 猜业务语义;重新设计 API/DB;代替 Host 评审 |
17
+
18
+ 菜单或 persona 只改变入口表达,不创建第二套状态机;发现 owner 冲突时回到 Host 澄清。
19
+
10
20
  维护 Superflow CLI 自身时,必须先读取仓库根目录
11
21
  `docs/superflow-cli-design-principles.md` 和
12
22
  `docs/superflow-cli-evaluation-framework.md`;涉及托管时再读取托管专项宪章与协议。
@@ -31,6 +41,9 @@ CLI 命令:
31
41
  停止,不创建托管 Task;已有用户评审通过的 change/Prompt 时原路径冻结;只有边界清晰的
32
42
  口头小需求才直接进入 minimal/standard。若口头需求存在会改变实现方向的 API、数据、
33
43
  并发、跨仓或 owner 决策,先进入澄清/文档流程,不能把这一判断交给 Runner 正则或 Executor。
44
+ 多页面、跨前后端、数据库字段横向改造要求闭环交付时,按完整 SDD 冻结真实入口、
45
+ `tests.md` 和逐入口验收合同。仅有 OpenSpec `spec/design/tasks` 或通用冒烟报告,
46
+ 只能声明相应范围已实现/验证,不得称为完整 SDD 验收。
34
47
 
35
48
  ```bash
36
49
  superflow pipeline "<implementation-prompt 路径、change 目录或简单任务>" --managed --project "<项目根目录>" \
@@ -86,6 +99,12 @@ JSON,再用 `--resume-task <task-id> --submit-host-review <json>` 恢复。监
86
99
 
87
100
  ## Choose The Right SDD Skill
88
101
 
102
+ - Use `$superflow-quick-dev` for one clear, low-blast-radius code change along
103
+ an existing test seam. Run its narrow gate before editing; API, DB, security,
104
+ transactions, concurrency, payments, cross-module work, a related active SDD
105
+ change, or uncertain ownership goes to `$superflow-clarify` instead. Reuse
106
+ the current quick managed profile after the Quick Spec is approved; do not
107
+ create a second managed-task state machine.
89
108
  - Use `$openspec-explore` when the user is still thinking through a requirement,
90
109
  wants to compare options, or needs codebase investigation before a change.
91
110
  - Route to `$superflow-clarify` in embedded deep-clarification mode when the
@@ -163,6 +182,12 @@ When the router selects embedded deep clarification, follow these rules inside
163
182
  - Exit deep clarification once only repository-verifiable facts remain and the
164
183
  user confirms the current feature understanding. Continue through the existing
165
184
  clarify workflow without invoking an external skill dependency.
185
+ - After all relevant features are frozen, show the change-level Consensus
186
+ Summary from `superflow-clarify` before OpenSpec artifact generation. Carry
187
+ confirmed choices into canonical `proposal.md`; do not create a parallel
188
+ alignment fact source or add approval prompts for decisions already explicit
189
+ in the user's request. A changed owner choice requires affected documents,
190
+ handoff, review, and Coding Ready to be refreshed before execution.
166
191
 
167
192
  ## Non-Negotiable Rules
168
193
 
@@ -326,6 +351,11 @@ context_compression | created_at | verified_at | updated_at`
326
351
 
327
352
  - 设计范围、API/DB 合同、执行模式、验证边界、archive closeout 需要用户取舍时,
328
353
  使用 `references/decision-point.md` 的格式记录,不用聊天记忆代替。
354
+
355
+ 仓库级术语或持久架构决定可运行 `superflow context-audit --path <project>`
356
+ 做只读检查。业务术语放入 `CONTEXT.md`;只有难逆转且存在有意义备选方案时才写 ADR。
357
+ 审计是 advisory:缺少 ADR 只提醒,ADR 字段不全或术语混入实现细节才报告修复项,
358
+ 不新增审批门禁,也不替代 `design.md`。
329
359
  - 脏工作区、并行 worktree 或跨会话接力前,使用 `references/dirty-worktree.md`
330
360
  的检查项,避免覆盖用户改动或拿旧 handoff 继续。
331
361
  - `build_mode: subagent-driven-development` 时,维护
@@ -431,7 +461,7 @@ Mapper/XML、数据库样例、接口契约和真实消费入口验证。
431
461
  **影响面发现方式(优先但可降级):**
432
462
 
433
463
  - 优先检查当前仓库是否存在 understand-anything 相关索引/产物,例如
434
- `.understand-anything/`、`understand-anything.md`、`understand anything.md`、
464
+ `.ua/`、`.understand-anything/`、`understand-anything.md`、`understand anything.md`、
435
465
  或项目约定的 understand-anything 图谱文件。
436
466
  - 如果索引存在,可以用它快速定位整个平台相关代码,包括当前仓库、同平台
437
467
  sibling repo、共享 SDK、公共 DTO、数据库表消费方、定时任务、回调入口、外部平台
@@ -24,6 +24,14 @@
24
24
  同页面不同角色的分支用不同入口 ID;不得只测试开发者选中的新接口。
25
25
  5. 验收同时断言返回、最终状态和禁止的副作用。只读/纯函数场景也要给出明确
26
26
  无持久化变更的理由,不能留空。browser 入口必须有 browser 验收,API 测试只能补充。
27
+ 6. 横向页面/字段改造先从前端路由、列表列和可点击动作建立页面入口清单,再从后端
28
+ Controller、Mapper statement、全部写入方反向建立清单。逐项对账后才生成 tasks/tests;
29
+ 相似方法名不得作为调用关系证据。每个列表记录实际页面请求、Controller、Service、
30
+ 精确 Mapper statement、返回 DTO 与表;每个管理按钮记录实际 mutation API 和写入点。
31
+ 未定位或两份清单不一致的入口标记待调查,不得以总数相等替代逐项核验。
32
+ 7. 数据库字段展示用例必须分别覆盖一个非空记录与允许的历史 NULL 记录。非空记录
33
+ 用同一业务 ID 比较 API 字段与数据库真源值,并在浏览器核对展示;仅有字段键、HTTP
34
+ 200、空列表或历史 NULL 不能证明字段链路正确。修改入口还要验证写后读及禁止的副作用。
27
35
 
28
36
  ## 凭证扩展
29
37
 
@@ -80,3 +88,13 @@ coding-ready 复检失败会写 BLOCKED 撤销旧 READY。
80
88
  验收阶段沿同一 R/E/C ID 在 `test-report.md` 回填实际角色、动作、请求路由、状态/
81
89
  副作用断言、原始日志路径及结果。主 Agent 对照原始来源和实际证据,不只看测试汇总。
82
90
  计划用例不是执行证据;API-only 不能报页面 E2E 成功。脚本未验证业务语义的部分不得宣称自动保证。
91
+ 完整 SDD 报告使用唯一的逐用例执行证据表,供现有 report lint 核对冻结索引:
92
+
93
+ | 用例 ID | 入口 ID | 验收级别 | 结果 | 证据路径 |
94
+ |---|---|---|---|---|
95
+ | C1 | E1 | browser | PASS | logs/C1-trace.zip |
96
+
97
+ 结果只用 `PASS/FAIL/BLOCKED/PARTIAL`;证据路径指向实际命令输出、浏览器 trace、
98
+ 响应或数据库对账记录。PASS 的本地证据文件必须保留到验收并可读取;远端证据可用
99
+ HTTP(S) 链接。阻塞项在报告正文写明原因。表格仅证明用例逐项回填,不能证明
100
+ 证据内容正确。任何非 PASS 用例存在时,不得声明整体验证 PASS。
@@ -20,6 +20,23 @@ canonical_sources:
20
20
 
21
21
  # Superpowers Technical Design: <change title>
22
22
 
23
+ ## Design-It-Twice:接口与 seam 选择
24
+
25
+ 仅在新增或改变模块接口时填写;纯实现内重构可写“无接口变化”。
26
+
27
+ | 项目 | 方案 A | 方案 B |
28
+ |---|---|---|
29
+ | 接口与调用方约束 | | |
30
+ | seam 与 adapter owner | | |
31
+ | 真实测试面 | | |
32
+ | 复用证据(文件/符号) | | |
33
+ | 爆炸半径与后果 | | |
34
+
35
+ - 选择:A / B
36
+ - 选择理由:
37
+ - 被拒绝方案的具体代价:
38
+ - 两种方案不能只是改名或换参数顺序。
39
+
23
40
  ## Boundary
24
41
 
25
42
  - This document owns source-level HOW only.
@@ -71,6 +71,17 @@ mvn test -Dtest=UserServiceTest
71
71
 
72
72
  ## 4.1 真实测试数据与证据
73
73
 
74
+ 完整 SDD 变更还需按 `document-review.json` 的 R/E/C 索引逐项回填,不得用总通过数
75
+ 代替单个入口的结果。下表供 `superflow-test-report-lint.py --review` 校验:
76
+
77
+ | 用例 ID | 入口 ID | 验收级别 | 结果 | 证据路径 |
78
+ |---|---|---|---|---|
79
+ | C1 | E1 | browser | PASS | logs/C1-trace.zip |
80
+
81
+ `PASS/FAIL/BLOCKED/PARTIAL` 之外的值无效;非 PASS 项在正文说明原因。
82
+ 数据库字段展示要分别记录非空数据按同一 ID 的 API/DB 值对账、历史 NULL 结果和
83
+ 真实浏览器展示。API 键存在、静态前端配置与浏览器显示分别记录证据等级。
84
+
74
85
  | 用例 ID | 真实参数 | 参数来源 | 自动化命令 | 证据等级 | 执行证据 | 结论 |
75
86
  |---------|----------|----------|------------|----------|----------|------|
76
87
  | TC-001 | parkCode=____ | 前端请求 / 用户提供 / DB查询 / Mock | curl/Newman/pytest/RestAssured | Mock only / 测试端点 / 真实入口 | 响应 + DB + 日志 | Passed / Blocked / Partial |
@@ -87,15 +87,21 @@ project_root_for_change() {
87
87
 
88
88
  require_test_report_lint() {
89
89
  local report="$CHANGE_DIR/test-report.md"
90
- local root lint output
90
+ local root lint output review
91
+ local -a lint_args
91
92
  root="$(project_root_for_change)"
93
+ review="$CHANGE_DIR/.sdd/reviews/document-review.json"
94
+ lint_args=(--tests "$CHANGE_DIR/tests.md")
95
+ if [[ -f "$review" ]]; then
96
+ lint_args+=(--review "$review")
97
+ fi
92
98
 
93
99
  for lint in \
94
100
  "$root/.codex/hooks/superflow-test-report-lint.py" \
95
101
  "$HOME/.codex/hooks/superflow-test-report-lint.py"; do
96
102
  if [[ -x "$lint" ]]; then
97
103
  output="$(mktemp)"
98
- if ! "$lint" --tests "$CHANGE_DIR/tests.md" "$report" >"$output" 2>&1; then
104
+ if ! "$lint" "${lint_args[@]}" "$report" >"$output" 2>&1; then
99
105
  issues+=("superflow-test-report-lint failed: $(tr '\n' ' ' < "$output" | sed -E 's/[[:space:]]+/ /g')")
100
106
  fi
101
107
  rm -f "$output"
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: superflow-quick-dev
3
+ description: 小型代码工作的快速准入与 Quick Spec。目标、seam 或爆炸半径不清时停止并转正式 SDD。
4
+ license: MIT
5
+ metadata:
6
+ author: superflow
7
+ version: '1.0'
8
+ ---
9
+
10
+ # Superflow Quick Dev
11
+
12
+ 只接单一、低爆炸半径、沿已有 seam 的代码工作。
13
+
14
+ ## 窄门
15
+
16
+ 先查真实源码、调用方和测试,再运行
17
+ `superflow quick "<request>" --json --path <changed-files...> --seam <existing-file>`。
18
+ 只有确认**同一行为**由在途 SDD 变更拥有时才追加 `--active-sdd`;仅复用其代码或依赖
19
+ 其产出,不等于同一变更。只有返回
20
+ `QUICK` 才能继续。公共 API、数据库/迁移、事务、并发、锁、权限、安全、支付、跨模块、
21
+ 在途 SDD 变更或非独占工作树必须返回 `STOP`,转 `superflow-clarify`。若项目还安装了
22
+ ake-harness 的 `ssd-propose`,不得因为它可见就自动改派;只有用户明确选择 ake SSD
23
+ 流程时才切换。
24
+
25
+ ## Quick Spec
26
+
27
+ 在 `.sdd/tasks/<YYYY-MM-DD>-<slug>/spec.md` 写入并展示当前磁盘版本,内容必须包含:
28
+
29
+ - Intent / Non-goals;
30
+ - Current behavior / Target behavior;
31
+ - 已确认的测试 seam;
32
+ - 按依赖排序的实施步骤;
33
+ - Given / When / Then 验收条件;
34
+ - 风险、升级条件和 deferred;
35
+ - baseline commit 与精确文件范围。
36
+
37
+ 用户批准前不得修改运行时代码;收到当前磁盘版本的明确批准后,才运行
38
+ `superflow quick "<request>" --path <files...> --seam <existing-file> --spec <spec> --approve`。
39
+ CLI 将当前内容摘要绑定到批准状态。Intent、Non-goals 或 Acceptance Criteria 变化时回到
40
+ `draft`,重新批准后才实施。按 TDD 和 verification-loop 逐项跑 RED/GREEN 信号,完成后
41
+ 复用 `superflow review-coverage` 和 `superflow eval` 的证据格式收口。
42
+
43
+ Quick 路径不创建 OpenSpec checkpoint,也不自动提交、推送或发布;一旦范围扩大,保留
44
+ spec 作为线索并转正式 SDD。
@@ -5,13 +5,56 @@ description: Use when an SDD/OpenSpec change is ready for verification, test-rep
5
5
 
6
6
  # SDD Verify
7
7
 
8
+ Before semantic code review, run `superflow review-coverage --json` (or pass
9
+ `--base <ref>` for a branch review). Use its included/excluded inventory and
10
+ path-specific rules to account for every changed file. Review related Java
11
+ and Mapper XML files together when they share a bundle. Do not treat this
12
+ mechanical inventory as a correctness verdict: findings still need source
13
+ anchors, a fresh reading of the affected call path, and independent judgment.
14
+
15
+ Use the reported risk tier to choose review depth: low may be reviewed inline;
16
+ medium requires an independent view; high requires focused coverage of the
17
+ named high-impact paths in addition to the ordinary Host review. Every
18
+ reviewer report starts with `DONE`, `DONE_WITH_CONCERNS`, `BLOCKED`, or
19
+ `NEEDS_CONTEXT`. Run `superflow review-coverage --report <file> --json` to
20
+ validate that marker and every `file:line` finding anchor. `BLOCKED` and
21
+ `NEEDS_CONTEXT` require more evidence before triage; `DONE_WITH_CONCERNS`
22
+ requires Host investigation of each concern before deciding. Re-read each
23
+ anchor and attempt to disprove the finding before assigning severity. Keep
24
+ unverifiable claims separate rather than giving them a guessed severity.
25
+
26
+ ## 评审回应纪律
27
+
28
+ 收到 finding 后先通读全部反馈,复述要求,再对照当前源码、项目规则、调用方和测试验证。
29
+ 不得只依据评审者措辞附和或直接改。确认有效时说明代码锚点和修复方向;认为有误时给出
30
+ 具体源码或合同证据及被拒绝方案。一次处理一个 finding,跑受影响信号后才能声称已修复。
31
+ 遇到“做成通用版本”等宽泛建议,先检查真实调用点;没有第二个调用方或合同要求时保持最小实现。
32
+ 项目规则只有用户确认后才回写,评审反馈不会静默改变仓库政策。
33
+
8
34
  完整 workflow 验收必须读取[需求×真实入口评审](../superflow-pipeline/references/document-review-coverage.md)。
9
35
  沿 R/E/C ID 在现有 test-report 回填实际角色、页面动作、请求路由、最终状态与禁止副作用
10
36
  的原始证据。独立对照原始来源及实际调用方;API-only 不得冒充 browser E2E,计划不等于执行。
37
+ 横向字段改造还要复核页面请求命中的精确 Mapper statement,并查看非空记录的同 ID
38
+ API/DB 值对照与浏览器显示。历史 NULL、字段键存在和静态列配置各自只能支持较弱结论。
11
39
 
12
40
  Verification is a phase, not a final sentence. Use this skill after
13
41
  implementation work claims completion and before archive or delivery.
14
42
 
43
+ ## Behavior-preserving simplification
44
+
45
+ After the implementation signals are green, inspect only the files changed by
46
+ this change for missed reuse, duplicated logic, redundant defensive branches,
47
+ and needless abstraction. Before removing a helper or guard, identify its
48
+ callers, error behavior, side effects, and reason for existing. If that reason
49
+ is unclear, leave it in place. Simplification is optional; clean code needs no
50
+ ceremonial edit.
51
+
52
+ Apply one small simplification at a time. Run the same tests and build signals
53
+ without changing their assertions; if behavior, errors, or side effects change,
54
+ revert that simplification. Keep simplification in a separate commit from the
55
+ feature, and stop if it reaches files outside the original change. This is a
56
+ readability pass, not a second code review or a license for unrelated cleanup.
57
+
15
58
  ## Entry Check
16
59
 
17
60
  Run:
@@ -99,7 +142,8 @@ Before pass:
99
142
  DB/log/API evidence, handoff hash, and phase state.
100
143
  2. `~/.codex/hooks/superflow-verify-integration.sh <test-report.md>` passes when the
101
144
  report involves integration evidence.
102
- 3. `~/.codex/hooks/superflow-test-report-lint.py --tests <tests.md> <test-report.md>`
145
+ 3. `~/.codex/hooks/superflow-test-report-lint.py --tests <tests.md> --review
146
+ <.sdd/reviews/document-review.json> <test-report.md>`
103
147
  passes. If `tests.md` declares L3/L4, real-entry, third-party, device,
104
148
  database, log, or dev-tool evidence, mock-only/unit-only reports are hard
105
149
  failures unless the report is explicitly `Blocked` or `Partially verified`
@@ -22,6 +22,14 @@ When ready to implement, run /opsx:apply
22
22
 
23
23
  **Input**: The user's request should include a change name (kebab-case) OR a description of what they want to build.
24
24
 
25
+ When this skill follows `superflow-clarify`, read the confirmed change-level
26
+ Consensus Summary and its source evidence before creating artifacts. Put the
27
+ goal, scope, material owner decisions, rejected alternatives, migration risks,
28
+ and non-blocking reopen triggers in canonical `proposal.md`; cite the existing
29
+ source audit rather than copying it. A pending owner decision that changes the
30
+ solution blocks downstream spec/design/tasks. An explicit decision in the
31
+ user's original request needs no second confirmation.
32
+
25
33
  ### Canonical OpenSpec Change Directory (Blocking)
26
34
 
27
35
  - A change must have exactly one physical directory:
@@ -111,6 +119,12 @@ After completing all artifacts, summarize:
111
119
  - Follow the `instruction` field from `openspec instructions` for each artifact type
112
120
  - The schema defines what each artifact should contain - follow it
113
121
  - Read dependency artifacts for context before creating new ones
122
+ - For a Superflow change, keep ordinary OpenSpec checkbox task syntax. For each
123
+ independently verifiable task, state its observable delivery and acceptance
124
+ signal; record real predecessor task IDs as `Blocked by` and link the relevant
125
+ requirement/scenario or traceability row. A free-text blocker does not change
126
+ Superflow's `[local_required]` / `[environment_required]` /
127
+ `[release_required]` machine classification. Do not invent dependencies.
114
128
  - Use `template` as the structure for your output file - fill in its sections
115
129
  - **IMPORTANT**: `context` and `rules` are constraints for YOU, not content for the file
116
130
  - Do NOT copy `<context>`, `<rules>`, `<project_context>` blocks into the artifact
@@ -13,7 +13,7 @@ any full SDD document or implementation prompt is generated.
13
13
 
14
14
  - Before freezing any new requirement or bug fix, perform platform-level impact
15
15
  discovery. Prefer understand-anything artifacts when present, such as
16
- `.understand-anything/`, `understand-anything.md`, `understand anything.md`,
16
+ `.ua/`, `.understand-anything/`, `understand-anything.md`, `understand anything.md`,
17
17
  or the project-specific graph output, but treat them only as locator evidence.
18
18
  If artifacts are missing, stale, incomplete, or unavailable, degrade to `rg`,
19
19
  source reading, Mapper/XML, configuration, database table names, log
@@ -174,6 +174,28 @@ Use the detailed workflow in:
174
174
  indexed feature. Do not batch-confirm multiple features from memory or a
175
175
  compressed chat summary.
176
176
 
177
+ ### Change-level alignment before OpenSpec artifacts
178
+
179
+ After all in-scope features are frozen, present one concise change-level
180
+ `Consensus Summary` covering the goal, in/out scope, verified source facts,
181
+ owner decisions with rejected alternatives, production and migration risks,
182
+ and remaining non-blocking questions with owner and reopen trigger. Derive it
183
+ from `source-code-audit.md`, `feature-gates.md`, and the confirmed decisions in
184
+ `.sdd/handoff/brainstorm-summary.md`; the summary is a handoff view, not a
185
+ second source of requirements. Record unresolved decisions as blockers and
186
+ ask only the next owner decision. Do not ask the user to reconfirm facts or
187
+ choices already explicit in the original request.
188
+
189
+ When a material owner choice was made during clarification, show the current
190
+ summary before generating OpenSpec artifacts. Reuse an explicit confirmation
191
+ already given for that exact choice and summary; ask once only if the summary
192
+ introduces a new choice or changes its consequence. The later `proposal.md`
193
+ must carry the confirmed change-level
194
+ decisions and cite their evidence. If a later finding changes a confirmed
195
+ choice, return to that decision, update affected canonical documents, refresh
196
+ the handoff hash and repeat document review and Coding Ready. Task checkbox
197
+ progress alone does not change the agreed contract.
198
+
177
199
  ## Handoff
178
200
 
179
201
  When the feature is frozen, tell the user to continue with `$openspec-propose`
@@ -58,7 +58,12 @@ Superpowers own source-level HOW without weakening OpenSpec/SDD contracts.
58
58
  5. Write:
59
59
  `docs/superpowers/specs/YYYY-MM-DD-<change-id>-technical-design.md`
60
60
  using `../superflow-pipeline/references/superpower-technical-design-template.md`.
61
- 6. Complete `Minimal Design Review` before expanding source-level HOW. For
61
+ 6. For each new or changed module interface, add a `Design-It-Twice` card to
62
+ the technical design: two materially different interfaces, seam and adapter
63
+ ownership, the real test surface, reuse evidence, caller consequences, and
64
+ an explicit choice. Renaming the same interface does not count as two
65
+ options; revisit it. This card is advisory and does not add a state gate.
66
+ 7. Complete `Minimal Design Review` before expanding source-level HOW. For
62
67
  every new table, field, API, service/component, abstraction, cache,
63
68
  async/MQ/event flow, scheduled job, or compatibility layer, prove existing
64
69
  reuse options, necessity, and why the simplest direct implementation is
@@ -38,6 +38,12 @@ Do not invent new fields or requirements.
38
38
 
39
39
  For complex requirements, verify these before writing docs:
40
40
 
41
+ - `proposal.md` carries the confirmed change-level Consensus Summary from
42
+ clarification: goal, scope, owner choices and rejected alternatives,
43
+ production/migration risks, and non-blocking reopen triggers. Check it
44
+ against original sources and `source-code-audit.md`; do not treat the
45
+ handoff summary as a second authority. If a material choice remains open,
46
+ return to `$superflow-clarify` before finalizing design or tasks.
41
47
  - `source-ingestion.md`, `feature-inventory.md`, and `feature-gates.md` prove
42
48
  that the original PRD/Lark/Feishu/screenshots were processed section by
43
49
  section, not summarized into tasks in one whole-document pass. Each feature
@@ -236,6 +242,12 @@ applicable:
236
242
  `[local_required]`, `[environment_required]`, or `[release_required]`.
237
243
  Locally executable code, tests, startup, and browser checks are local_required;
238
244
  free-form Blocker/owner prose cannot replace the category.
245
+ - For each implementation task, review observable delivery, acceptance signal,
246
+ requirement/scenario coverage, and actual predecessors. Show the currently
247
+ executable tasks whose predecessors are complete. Reuse
248
+ `traceability-matrix.md` for detailed coverage; do not create another task
249
+ state file. `Blocked by` expresses execution order and never changes the
250
+ machine task classification above.
239
251
  - `tests.md`
240
252
  - `test-report.md` skeleton
241
253
  - `sdd-quality-gate.md`
@@ -364,6 +376,18 @@ Use references only as needed:
364
376
  `Case ID | Requirement/scenario | Level L1/L2/L3/L4 | Precondition data | Steps |
365
377
  Automation command | Response assertion | DB assertion | Log assertion | RED expected failure | GREEN expected pass |
366
378
  test-report evidence location`.
379
+ - For cross-page management or database-backed display changes, reconcile the
380
+ frontend action/list inventory with real Controller, Service, exact Mapper
381
+ statement and table anchors before freezing tasks. Put the confirmed chain
382
+ and entry ID in `source-code-audit.md` and reuse it in `design.md`, `tasks.md`
383
+ and `tests.md`. A similarly named query is not evidence for the page route.
384
+ Include every visible mutation button, such as enable/disable, as an entry
385
+ even when the original task list omitted it.
386
+ - For a returned persisted field, `tests.md` must freeze at least one non-null
387
+ fixture and an allowed historical-NULL fixture separately. Assert API and DB
388
+ values for the same record ID, then browser rendering where a page is in
389
+ scope. Key-presence, HTTP 200, empty-page and NULL-only assertions cannot
390
+ close the non-null data path. Name the exact query/command and evidence file.
367
391
  - For L3/L4 input validation, protocol rejection, and exceptional branches,
368
392
  `tests.md` also freezes the real injected payload and evidence that it reaches
369
393
  the intended parser or validation branch; matching the same HTTP status alone
@@ -96,6 +96,15 @@ Use references/batch-split-guide.md and references/batch-prompt-template.md.
96
96
  Split by business closure, not by file type. Each batch must have independent
97
97
  entry, implementation scope, verification, and report obligations.
98
98
 
99
+ Read `tasks.md` predecessor links before splitting or dispatching. A batch is
100
+ executable only when its real predecessors are complete; independent batches
101
+ may run in parallel. Keep the existing checkbox and machine category as the
102
+ progress authority. An implementation discovery that changes a confirmed
103
+ owner decision or task acceptance requires canonical document repair, handoff
104
+ refresh, document review, and a new Coding Ready receipt before the affected
105
+ batch resumes. A free-text `Blocked by` note cannot downgrade a locally
106
+ executable task to an external category.
107
+
99
108
  Workers may update only their own embedded-changes/pXX-* docs. Root aggregate
100
109
  docs are updated by the leader during closeout after related worktrees merge.
101
110
 
@@ -15,6 +15,17 @@ the unified evaluation framework.
15
15
  ## Role
16
16
 
17
17
  This is the main router and stateful workflow orchestrator for SuperBridge Flow.
18
+
19
+ ## Role ownership and mutual exclusions
20
+
21
+ | Role | Sole owner | May do | Must not do |
22
+ |---|---|---|---|
23
+ | Host | goal, clarification, supervision, semantic review | choose routing and judge code/architecture risk | write business code or start a nested Supervisor |
24
+ | Executor | source implementation, tests, startup, repair | change the workspace within the frozen contract and return evidence | edit the contract/state, lower verification, or release automatically |
25
+ | Runner | state, hashes, exit codes, evidence persistence | schedule, wait, recover, and enforce deterministic facts | guess business meaning or replace Host review |
26
+
27
+ Menus and personas change entry wording only; they never create a second state
28
+ machine. Return to Host clarification when ownership conflicts.
18
29
  It combines OpenSpec/SDD and Superpowers without letting them overwrite each
19
30
  other:
20
31
 
@@ -50,6 +61,10 @@ user-approved change/prompt is frozen from its original path. Only a bounded
50
61
  verbal request enters minimal or standard directly. Direction-changing API,
51
62
  data, concurrency, cross-repository, or owner choices return to
52
63
  clarification/documents; Runner regexes and Executor improvisation do not decide them.
64
+ For cross-page, cross-stack or database-field changes requesting closed delivery,
65
+ use full SDD to freeze real entries, `tests.md` and per-entry acceptance. A raw
66
+ OpenSpec `spec/design/tasks` set or generic smoke report supports only its
67
+ actually verified scope, not a full SDD acceptance claim.
53
68
 
54
69
  ```bash
55
70
  superflow pipeline "<implementation prompt, change directory, or direct task>" --managed --project "<project root>" \
@@ -138,6 +153,11 @@ hotfix:
138
153
 
139
154
  ## Routing
140
155
 
156
+ - One clear, low-blast-radius code change with an existing test seam: use
157
+ superflow-quick-dev before editing, then reuse the existing quick managed
158
+ profile after Quick Spec approval. API, DB, security, transaction,
159
+ concurrency, payment, cross-module, active-SDD, or ownership uncertainty
160
+ routes to superflow-clarify instead; do not add a second managed state machine.
141
161
  - When the user explicitly asks for rigorous questioning, or a bounded feature
142
162
  has unresolved owner decisions, mutually exclusive approaches, an unclear
143
163
  source of truth, unclear acceptance behavior, or cross-system responsibility,
@@ -179,6 +199,12 @@ When the router selects embedded deep clarification, follow these rules inside
179
199
  - Exit deep clarification once only repository-verifiable facts remain and the
180
200
  user confirms the current feature understanding. Continue through the existing
181
201
  clarify workflow without invoking an external skill dependency.
202
+ - After all relevant features are frozen, show the change-level Consensus
203
+ Summary from `superflow-clarify` before OpenSpec artifact generation. Carry
204
+ confirmed choices into canonical `proposal.md`; do not create a parallel
205
+ alignment fact source or add approval prompts for decisions already explicit
206
+ in the user's request. A changed owner choice requires affected documents,
207
+ handoff, review, and Coding Ready to be refreshed before execution.
182
208
 
183
209
  ## Required Artifacts
184
210
 
@@ -316,6 +342,14 @@ questions in one final batch.
316
342
  Record irreversible or ambiguous decisions in references/decision-point.md
317
343
  format. Do not store decisions only in chat memory.
318
344
 
345
+ For repository-wide terminology, run `superflow context-audit --path <project>`
346
+ when a change introduces a domain term or a durable architectural decision. Keep
347
+ business vocabulary in `CONTEXT.md`; use an ADR only when the decision is hard
348
+ to reverse and has meaningful alternatives. The audit is advisory: a missing
349
+ ADR is a warning, while incomplete ADR fields or implementation details in the
350
+ terminology list are reported for repair. It does not create approval gates or
351
+ replace the canonical `design.md` contract.
352
+
319
353
  Decision points include:
320
354
 
321
355
  - API compatibility choices
@@ -26,6 +26,16 @@ investigate source-resolvable questions autonomously.
26
26
  5. Assert response, final state and forbidden effects. For read-only/pure-function work explain
27
27
  why no persistent change applies; do not leave blanks. Browser paths require browser acceptance;
28
28
  API checks can supplement, not replace them.
29
+ 6. For cross-page or field changes, inventory frontend routes, list columns and clickable actions
30
+ independently from backend Controllers, exact Mapper statements and all writers. Reconcile both
31
+ inventories before writing tasks/tests. Similar method names are not call-chain evidence. For
32
+ every list record page request, Controller, Service, exact Mapper statement, response DTO and
33
+ table; for every management button record its mutation API and write point. Investigate missing
34
+ or conflicting entries instead of treating matching totals as proof.
35
+ 7. A database-backed display case needs both a non-null fixture and a separate allowed historical
36
+ NULL case. Compare API fields with authoritative DB values for the same business ID, then check
37
+ browser rendering. Field keys, HTTP 200, empty lists and historical NULL alone are insufficient.
38
+ Mutation cases also check write-then-read behavior and forbidden side effects.
29
39
 
30
40
  ## Receipt extension
31
41
 
@@ -87,3 +97,13 @@ During verification, reuse R/E/C IDs in `test-report.md`, recording actual actor
87
97
  request route, state/forbidden-effect assertions, raw evidence paths and outcomes. The Host
88
98
  compares them to original sources, not only a test summary. Planned cases are not execution
89
99
  evidence; API-only results cannot claim browser E2E. Do not claim automatic semantic assurance.
100
+ Full SDD reports use one per-case execution evidence table for the existing report linter:
101
+
102
+ | Case ID | Entry ID | Acceptance level | Result | Evidence path |
103
+ |---|---|---|---|---|
104
+ | C1 | E1 | browser | PASS | logs/C1-trace.zip |
105
+
106
+ Results are `PASS/FAIL/BLOCKED/PARTIAL`. Evidence points to actual command output, browser trace,
107
+ response or DB reconciliation. Retain readable local evidence files for PASS; HTTP(S) links may
108
+ identify remote evidence. Explain blockers in the report body. This table proves case-level
109
+ accounting only; the Host must inspect evidence contents. Any non-PASS case prevents an overall PASS.
@@ -55,6 +55,18 @@ Archive Readiness: PASS / BLOCKED
55
55
 
56
56
  Required for `verify_mode: full`:
57
57
 
58
+ For full SDD changes, fill every R/E/C case from `document-review.json` in one
59
+ execution table checked by `superflow-test-report-lint.py --review`:
60
+
61
+ | Case ID | Entry ID | Acceptance level | Result | Evidence path |
62
+ |---|---|---|---|---|
63
+ | C1 | E1 | browser | PASS | logs/C1-trace.zip |
64
+
65
+ Use only `PASS/FAIL/BLOCKED/PARTIAL`; explain non-PASS results in the report.
66
+ For database-backed display fields, record same-ID API/DB values on non-null
67
+ data, historical NULL separately, and real browser rendering. Distinguish
68
+ field-key checks, static frontend inspection and browser evidence.
69
+
58
70
  - Test environment:
59
71
  - Branch/commit/build number or image:
60
72
  - Base URL:
@@ -87,15 +87,21 @@ project_root_for_change() {
87
87
 
88
88
  require_test_report_lint() {
89
89
  local report="$CHANGE_DIR/test-report.md"
90
- local root lint output
90
+ local root lint output review
91
+ local -a lint_args
91
92
  root="$(project_root_for_change)"
93
+ review="$CHANGE_DIR/.sdd/reviews/document-review.json"
94
+ lint_args=(--tests "$CHANGE_DIR/tests.md")
95
+ if [[ -f "$review" ]]; then
96
+ lint_args+=(--review "$review")
97
+ fi
92
98
 
93
99
  for lint in \
94
100
  "$root/.codex/hooks/superflow-test-report-lint.py" \
95
101
  "$HOME/.codex/hooks/superflow-test-report-lint.py"; do
96
102
  if [[ -x "$lint" ]]; then
97
103
  output="$(mktemp)"
98
- if ! "$lint" --tests "$CHANGE_DIR/tests.md" "$report" >"$output" 2>&1; then
104
+ if ! "$lint" "${lint_args[@]}" "$report" >"$output" 2>&1; then
99
105
  issues+=("superflow-test-report-lint failed: $(tr '\n' ' ' < "$output" | sed -E 's/[[:space:]]+/ /g')")
100
106
  fi
101
107
  rm -f "$output"
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: superflow-quick-dev
3
+ description: Fast admission and Quick Spec for small code tasks. Stop and switch to formal SDD when intent, seam, or blast radius is unclear.
4
+ license: MIT
5
+ metadata:
6
+ author: superflow
7
+ version: '1.0'
8
+ ---
9
+
10
+ # Superflow Quick Dev
11
+
12
+ Accept only one low-blast-radius code task that follows an existing seam.
13
+
14
+ ## Narrow gate
15
+
16
+ Inspect current source, callers, and tests, then run
17
+ `superflow quick "<request>" --json --path <changed-files...> --seam <existing-file>`.
18
+ Pass `--active-sdd` only after confirming an active SDD change owns the **same
19
+ behavior**; reusing its code or depending on its output is insufficient. Continue only
20
+ when it returns `QUICK`. Public APIs, databases/migrations, transactions,
21
+ concurrency, locks, permissions, security, payments, cross-module work, active
22
+ SDD changes, or a non-exclusive worktree must return `STOP` and switch to
23
+ `superflow-clarify`. If ake-harness's `ssd-propose` is also visible, do not
24
+ route there merely because it is installed. Switch to ake SSD only when the
25
+ user explicitly chooses that workflow.
26
+
27
+ ## Quick Spec
28
+
29
+ Write and show the current disk version at
30
+ `.sdd/tasks/<YYYY-MM-DD>-<slug>/spec.md` with Intent / Non-goals, current and
31
+ target behavior, confirmed test seam, ordered implementation steps, Given /
32
+ When / Then acceptance, risks, escalation conditions, deferred work, baseline
33
+ commit, and exact file scope.
34
+
35
+ Do not edit runtime code before approval. After explicit approval of the current
36
+ disk version, run `superflow quick "<request>" --path <files...> --seam <existing-file> --spec <spec> --approve`.
37
+ The CLI binds the approval to the current content digest. If Intent, Non-goals, or Acceptance
38
+ Criteria change, return to `draft` and obtain approval again. Use TDD and
39
+ verification-loop RED/GREEN signals, then close with `superflow review-coverage`
40
+ and `superflow eval` evidence.
41
+
42
+ Quick work creates no OpenSpec checkpoint and never commits, pushes, or releases.
43
+ When scope expands, keep the spec as a lead and switch to formal SDD.