@chenguangyao/devflow-kit 0.1.43

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 (198) hide show
  1. package/CHANGELOG.md +232 -0
  2. package/LICENSE +21 -0
  3. package/README.md +539 -0
  4. package/bin/devflow.js +9 -0
  5. package/docs/RFC-001-devflow-kit.md +617 -0
  6. package/docs/RFC-002-workflow-kernel.md +134 -0
  7. package/docs/enterprise-integration-supplement.md +274 -0
  8. package/docs/internal-gitlab-setup.md +426 -0
  9. package/docs/marketplace-skills.md +231 -0
  10. package/docs/migration-from-arb.md +232 -0
  11. package/docs/tooling-overview.md +774 -0
  12. package/docs/workflow-orchestration.md +695 -0
  13. package/docs/workflow-ui-prototype.html +271 -0
  14. package/package.json +52 -0
  15. package/schemas/config.schema.json +51 -0
  16. package/schemas/delta.schema.json +22 -0
  17. package/schemas/state.schema.json +130 -0
  18. package/schemas/status-surface.schema.json +197 -0
  19. package/schemas/workflow-confirmation-surface.schema.json +70 -0
  20. package/schemas/workflow-picker.schema.json +94 -0
  21. package/scripts/postinstall.js +101 -0
  22. package/scripts/render-workflow-ui-prototype.js +271 -0
  23. package/skills/apply/SKILL.md +313 -0
  24. package/skills/apply/references/discipline-checklist.md +145 -0
  25. package/skills/apply/references/subagent-implementer-prompt.md +113 -0
  26. package/skills/apply/references/subagent-orchestration.md +150 -0
  27. package/skills/apply/references/subagent-reviewer-prompt.md +180 -0
  28. package/skills/apply/references/tdd-loop.md +287 -0
  29. package/skills/apply/references/when-plan-is-wrong.md +279 -0
  30. package/skills/apply/references/worktree-swarm.md +292 -0
  31. package/skills/archive/SKILL.md +229 -0
  32. package/skills/archive/references/conflict-resolution.md +336 -0
  33. package/skills/archive/references/knowledge-deposit.md +381 -0
  34. package/skills/archive/references/spec-merge.md +365 -0
  35. package/skills/brainstorm/SKILL.md +123 -0
  36. package/skills/brainstorm/references/proposal-template.md +244 -0
  37. package/skills/brainstorm/references/question-catalog.md +168 -0
  38. package/skills/brainstorm/references/session-template.md +184 -0
  39. package/skills/ci-fix/SKILL.md +63 -0
  40. package/skills/ci-fix/references/loop.md +25 -0
  41. package/skills/code-review/SKILL.md +279 -0
  42. package/skills/code-review/references/escalation-playbook.md +192 -0
  43. package/skills/code-review/references/language-cheatsheets/go.md +175 -0
  44. package/skills/code-review/references/language-cheatsheets/java-spring-mybatis.md +246 -0
  45. package/skills/code-review/references/language-cheatsheets/python.md +170 -0
  46. package/skills/code-review/references/language-cheatsheets/vue.md +199 -0
  47. package/skills/code-review/references/output-template.md +275 -0
  48. package/skills/code-review/references/review-checklist.md +251 -0
  49. package/skills/complexity-grading/SKILL.md +259 -0
  50. package/skills/deliver/SKILL.md +271 -0
  51. package/skills/deliver/references/delivery-modes.md +299 -0
  52. package/skills/deliver/references/notify.md +359 -0
  53. package/skills/deliver/references/pr-description.md +319 -0
  54. package/skills/dependency-upgrade/SKILL.md +57 -0
  55. package/skills/dependency-upgrade/references/risk-matrix.md +38 -0
  56. package/skills/df-orchestrator/SKILL.md +407 -0
  57. package/skills/df-orchestrator/references/complexity-grading.md +177 -0
  58. package/skills/df-orchestrator/references/escalation-matrix.md +191 -0
  59. package/skills/df-orchestrator/references/routing-rules.md +290 -0
  60. package/skills/df-orchestrator/references/workflow-state-machine.md +208 -0
  61. package/skills/frontend-quality/SKILL.md +61 -0
  62. package/skills/frontend-quality/references/checklist.md +35 -0
  63. package/skills/handoff-resume/SKILL.md +59 -0
  64. package/skills/handoff-resume/references/handoff-template.md +54 -0
  65. package/skills/plan/SKILL.md +166 -0
  66. package/skills/plan/references/task-breakdown.md +207 -0
  67. package/skills/plan/references/task-sequencing.md +143 -0
  68. package/skills/plan/references/task-template.md +248 -0
  69. package/skills/requirement-analysis/SKILL.md +499 -0
  70. package/skills/requirement-analysis/references/acceptance-criteria.md +183 -0
  71. package/skills/requirement-analysis/references/code-recon.md +151 -0
  72. package/skills/requirement-analysis/references/edge-case-catalog.md +164 -0
  73. package/skills/requirement-analysis/references/requirement-template.md +339 -0
  74. package/skills/requirement-analysis/references/scope-negotiation.md +162 -0
  75. package/skills/security-hardening/SKILL.md +60 -0
  76. package/skills/security-hardening/references/checklist.md +42 -0
  77. package/skills/tech-spec/SKILL.md +388 -0
  78. package/skills/tech-spec/references/api-contract-design.md +172 -0
  79. package/skills/tech-spec/references/decision-records.md +110 -0
  80. package/skills/tech-spec/references/design-template.md +301 -0
  81. package/skills/tech-spec/references/rollout-and-rollback.md +203 -0
  82. package/skills/tech-spec/references/spec-delta-conventions.md +250 -0
  83. package/skills/tech-spec/references/transaction-patterns.md +212 -0
  84. package/skills/test-spec/SKILL.md +219 -0
  85. package/skills/test-spec/references/coverage-strategy.md +218 -0
  86. package/skills/test-spec/references/edge-case-to-test.md +143 -0
  87. package/skills/test-spec/references/test-case-template.md +276 -0
  88. package/skills/verify/SKILL.md +232 -0
  89. package/skills/verify/references/nfr-verification.md +292 -0
  90. package/skills/verify/references/report-templates.md +510 -0
  91. package/skills/verify/references/self-test-guide.md +240 -0
  92. package/skills/verify/references/verify-rollback-map.md +247 -0
  93. package/src/cli/commands/_helpers.js +108 -0
  94. package/src/cli/commands/_submit.js +718 -0
  95. package/src/cli/commands/apply.js +198 -0
  96. package/src/cli/commands/archive.js +180 -0
  97. package/src/cli/commands/checkpoint.js +113 -0
  98. package/src/cli/commands/deliver.js +377 -0
  99. package/src/cli/commands/deploy.js +504 -0
  100. package/src/cli/commands/design.js +158 -0
  101. package/src/cli/commands/disable.js +21 -0
  102. package/src/cli/commands/doctor.js +178 -0
  103. package/src/cli/commands/enable.js +21 -0
  104. package/src/cli/commands/flow.js +645 -0
  105. package/src/cli/commands/help.js +93 -0
  106. package/src/cli/commands/ingest.js +602 -0
  107. package/src/cli/commands/init.js +341 -0
  108. package/src/cli/commands/knowledge.js +523 -0
  109. package/src/cli/commands/logs.js +43 -0
  110. package/src/cli/commands/new.js +202 -0
  111. package/src/cli/commands/plan.js +49 -0
  112. package/src/cli/commands/propose.js +27 -0
  113. package/src/cli/commands/provider.js +698 -0
  114. package/src/cli/commands/report.js +143 -0
  115. package/src/cli/commands/requirement.js +227 -0
  116. package/src/cli/commands/review.js +301 -0
  117. package/src/cli/commands/skills.js +457 -0
  118. package/src/cli/commands/status.js +925 -0
  119. package/src/cli/commands/switch.js +27 -0
  120. package/src/cli/commands/sync.js +47 -0
  121. package/src/cli/commands/test.js +366 -0
  122. package/src/cli/commands/uninstall.js +32 -0
  123. package/src/cli/commands/update.js +74 -0
  124. package/src/cli/commands/verify.js +354 -0
  125. package/src/cli/commands/worktree.js +78 -0
  126. package/src/cli/index.js +72 -0
  127. package/src/cli/parse-args.js +102 -0
  128. package/src/core/autodetect.js +271 -0
  129. package/src/core/change.js +208 -0
  130. package/src/core/checkpoint.js +217 -0
  131. package/src/core/config.js +60 -0
  132. package/src/core/delta.js +290 -0
  133. package/src/core/markers.js +59 -0
  134. package/src/core/paths.js +173 -0
  135. package/src/core/plan-tasks.js +36 -0
  136. package/src/core/project-routing.js +285 -0
  137. package/src/core/projects.js +200 -0
  138. package/src/core/state.js +200 -0
  139. package/src/core/workflow-check.js +177 -0
  140. package/src/core/workflow-init.js +34 -0
  141. package/src/core/workflow-picker.js +154 -0
  142. package/src/core/workflow-policy.js +119 -0
  143. package/src/core/workflow-suggest.js +181 -0
  144. package/src/core/workflow-verify.js +88 -0
  145. package/src/core/workflow.js +433 -0
  146. package/src/core/worktree.js +241 -0
  147. package/src/knowledge/categories.js +107 -0
  148. package/src/knowledge/classify.js +125 -0
  149. package/src/knowledge/deposit.js +414 -0
  150. package/src/knowledge/migrate.js +149 -0
  151. package/src/knowledge/mr.js +219 -0
  152. package/src/knowledge/query.js +131 -0
  153. package/src/knowledge/registry.js +151 -0
  154. package/src/knowledge/sync.js +179 -0
  155. package/src/providers/base.js +74 -0
  156. package/src/providers/drivers/api-yapi.js +78 -0
  157. package/src/providers/drivers/ci-jenkins.js +109 -0
  158. package/src/providers/drivers/intake-confluence.js +544 -0
  159. package/src/providers/drivers/kb-git.js +549 -0
  160. package/src/providers/drivers/kb-weknora.js +472 -0
  161. package/src/providers/drivers/notify-smtp.js +515 -0
  162. package/src/providers/drivers/observability-oss.js +43 -0
  163. package/src/providers/drivers/observability-sls.js +50 -0
  164. package/src/providers/lifecycle.js +135 -0
  165. package/src/providers/loader.js +132 -0
  166. package/src/providers/local.js +190 -0
  167. package/src/providers/userconfig.js +283 -0
  168. package/src/reports/aggregate.js +185 -0
  169. package/src/reports/coverage.js +163 -0
  170. package/src/reports/detect.js +143 -0
  171. package/src/reports/parse.js +236 -0
  172. package/src/templates/files/ci/github.yml +38 -0
  173. package/src/templates/files/ci/gitlab.yml +27 -0
  174. package/src/templates/files/design.md +63 -0
  175. package/src/templates/files/ide/devflow-workflow.md +58 -0
  176. package/src/templates/files/ide/project-overview-reference.md +1 -0
  177. package/src/templates/files/ide/project-overview.md +27 -0
  178. package/src/templates/files/knowledge-index.json +17 -0
  179. package/src/templates/files/knowledge.md +28 -0
  180. package/src/templates/files/meta.json +8 -0
  181. package/src/templates/files/plan.md +38 -0
  182. package/src/templates/files/proposal.md +33 -0
  183. package/src/templates/files/reports/contract-test.md +40 -0
  184. package/src/templates/files/reports/e2e-test.md +30 -0
  185. package/src/templates/files/reports/integration-test.md +36 -0
  186. package/src/templates/files/reports/joint-test.md +58 -0
  187. package/src/templates/files/reports/perf.md +24 -0
  188. package/src/templates/files/reports/regression.md +20 -0
  189. package/src/templates/files/reports/remote-test.md +55 -0
  190. package/src/templates/files/reports/self-test.md +43 -0
  191. package/src/templates/files/reports/smoke-test.md +22 -0
  192. package/src/templates/files/reports/unit-test.md +36 -0
  193. package/src/templates/files/requirement.md +51 -0
  194. package/src/templates/files/review.md +38 -0
  195. package/src/templates/files/tests.md +36 -0
  196. package/src/templates/files/verify.md +32 -0
  197. package/src/templates/index.js +21 -0
  198. package/src/utils/log.js +37 -0
@@ -0,0 +1,145 @@
1
+ # apply / discipline-checklist
2
+
3
+ apply 阶段的纪律 checklist。per-task before / during / after。
4
+
5
+ ---
6
+
7
+ ## Before(每个 task 开始前)
8
+
9
+ - [ ] 读了 plan.md 里当前 task 的 5 要素(Files / Behavior / Test / Implementation / Commit)
10
+ - [ ] 读了 tests.md 里 linkedF 的 AC(知道要满足什么验收)
11
+ - [ ] 读了 design.md 的相关模块(不需通读,只读 task 涉及的部分)
12
+ - [ ] 确认前置 task 已完成(依赖已绿)
13
+ - [ ] 确认当前在正确分支 / worktree(不是 main)
14
+ - [ ] 项目可编译(基线是绿的)
15
+
16
+ 有一项未满足 → **不要开始**,先搞清再开工。
17
+
18
+ ---
19
+
20
+ ## During(每个 task 执行中)
21
+
22
+ ### 通用
23
+
24
+ - [ ] 先写失败测试,再写实现
25
+ - [ ] 只改 Files 列表里的文件(发现要改别的 → 停,更新 plan)
26
+ - [ ] 不跨 task 编辑"顺手看到的"问题(记 TODO 交给对应 task)
27
+ - [ ] 每 30-45 分钟跑一次测试(不要到最后才跑)
28
+ - [ ] 复杂实现先画 2-3 行伪代码注释,再翻译成代码
29
+
30
+ ### 数据 / 存储类
31
+
32
+ - [ ] DDL 变更先跑 migration(本地或 test db),再跑代码
33
+ - [ ] 新字段 / 表有 index 设计?(看 design.md;没考虑 → 提 concern)
34
+ - [ ] 数据迁移有"可以重跑"的幂等性?
35
+ - [ ] 破坏性 DDL(drop column / rename)两阶段发布
36
+
37
+ ### 接口 / 契约类
38
+
39
+ - [ ] 新 API 的契约文件(OpenAPI / proto / GraphQL schema)先改
40
+ - [ ] 契约改好后跑 lint / generate,不要手动保持一致
41
+ - [ ] 向后兼容?新字段 optional,老 client 不挂
42
+ - [ ] 错误码 / error shape 按 design.md 的契约走
43
+
44
+ ### 异步 / 消息类
45
+
46
+ - [ ] 消费端幂等(同一 message 消费 2 次结果一样)
47
+ - [ ] Producer 故障策略(重试 / DLQ)实现了
48
+ - [ ] 消息 schema 字段保守扩展(不改名不删)
49
+ - [ ] 本地事务与消息发送的一致性(outbox / 2PC / best-effort)标清
50
+
51
+ ### 并发 / 事务类
52
+
53
+ - [ ] 临界区的锁粒度最小(不要 `synchronized` 整个 service method)
54
+ - [ ] 数据库事务跨度最小(不要把 RPC 调用包在 `@Transactional` 里)
55
+ - [ ] 幂等键 / 乐观锁按 design.md 实现
56
+ - [ ] 超时配置显式(不要用默认无穷大)
57
+
58
+ ### 安全 / 权限类
59
+
60
+ - [ ] 权限校验在 controller / filter / interceptor 层
61
+ - [ ] 没有硬编码 secret / token(用配置 / vault)
62
+ - [ ] 入参验证在 API 层(不信任调用方)
63
+ - [ ] SQL 参数化(不拼接字符串)
64
+
65
+ ### 日志 / 监控类
66
+
67
+ - [ ] 关键路径打了 info 日志(含 traceId / 核心业务 id)
68
+ - [ ] 错误路径打 error + 堆栈(但不 leak PII)
69
+ - [ ] 新增的指标(counter / histogram)按 design.md 的 metric 定义注册
70
+ - [ ] 不要用 log 做大量业务数据 dump(写到对应的数据流 / file)
71
+
72
+ ---
73
+
74
+ ## After(每个 task 完成前)
75
+
76
+ ### 代码自检
77
+
78
+ - [ ] 每条新代码都有测试覆盖(至少被 1 个测试用到)
79
+ - [ ] 没有 TODO / FIXME 没记录到 plan 或 issue
80
+ - [ ] 没有 `System.out.println` / `fmt.Println` / `console.log` / `print(` 的调试残留
81
+ - [ ] 没有注释掉的大段代码("以防万一")
82
+ - [ ] import / include 无未用
83
+ - [ ] Formatter / linter 跑过,没警告
84
+
85
+ ### 测试自检
86
+
87
+ - [ ] 所有新测试都跑过且 PASS
88
+ - [ ] 回归测试(所在 module 的全部测试)跑过且 PASS
89
+ - [ ] 没有 `@Disabled` / `t.Skip` / `it.skip` / `pytest.mark.skip` 未记录
90
+ - [ ] 覆盖率未明显下降(如果项目有 coverage gate)
91
+
92
+ ### commit 自检
93
+
94
+ - [ ] `git status` 工作区干净(没漏加)
95
+ - [ ] `git diff` 的改动都是 task 描述范围内的(没 scope creep)
96
+ - [ ] commit message 按 plan.md 里规定的格式
97
+ - [ ] 如多个 commit:最后一个 sha 记入 `--done --note`
98
+
99
+ ### 文档自检
100
+
101
+ - [ ] 改动了的外部接口契约同步更新了文档(在本 task 的 Files 范围内)
102
+ - [ ] 改动了的 design.md 关键决策(如果 apply 中发现真有必要调整 → 记录 revise 原因)
103
+
104
+ ### state 自检
105
+
106
+ - [ ] 执行了 `devflow apply --task N --done --note="commit <sha>"`
107
+ - [ ] state.json 的 tasksCompleted 加 1,当前 task 从 in_progress → done
108
+
109
+ ---
110
+
111
+ ## 整个 slug 的 apply 完成后
112
+
113
+ - [ ] 所有 task 状态 done
114
+ - [ ] 每个 task 都有对应 commit(sha 留在 state.json)
115
+ - [ ] `devflow doctor` 过
116
+ - [ ] 首次端到端跑一遍所有测试 → 产出 `reports/test-report.md#unit`
117
+ - [ ] state.phase 等 orchestrator 推到 review;自己**不要**跳过
118
+
119
+ ---
120
+
121
+ ## 反偷懒自我审问
122
+
123
+ 做每个 task 时自己问 3 个问题:
124
+
125
+ 1. **"如果 reviewer 问我'这段代码为什么这样写',我能指着 design.md 的哪一段 / AC 的哪一条回答?"**
126
+ 答不出 → scope creep 或设计缺失。
127
+
128
+ 2. **"如果 1 周后有人改这个文件,哪些 test 会失败?是不是精准覆盖我改的行为?"**
129
+ 答"整个服务的集成测试会挂" → 没有精准单测,review 会要求补。
130
+
131
+ 3. **"这个 commit 如果被 revert,会不会破坏系统?"**
132
+ 会 → commit 颗粒度不对,应该和下一个 commit 合并(或之前某个 commit 合并)。
133
+
134
+ ---
135
+
136
+ ## 反模式登记
137
+
138
+ 每次发现自己在做以下事,**停**:
139
+
140
+ - ❌ "反正最后一块 commit" → NO,每 task 独立 commit
141
+ - ❌ "先 skip 这个测试,后面补" → NO,要么修,要么 quarantine(审计)
142
+ - ❌ "这个变量名不好,顺手改一下别的文件" → NO,出 task 范围
143
+ - ❌ "reviewer 应该能看懂吧" → 代码要让人看懂,不是让 reviewer 猜
144
+ - ❌ "先把主流程跑通,异常分支以后再说" → AC 里的异常分支必须本 task 搞定
145
+ - ❌ "别人的代码写得乱,顺手重构" → 开新 task,开 ADR 讨论
@@ -0,0 +1,113 @@
1
+ # 实现子 agent Prompt 模板
2
+
3
+ controller 分派实现子 agent 时,使用下面的模板。将 `[占位符]` 全部替换后传入。
4
+
5
+ > **核心原则**:把 task 全文直接粘贴进来,不让子 agent 自己去读 plan.md。
6
+
7
+ ---
8
+
9
+ ## Prompt 模板
10
+
11
+ ```
12
+ 你是 devflow apply 阶段的实现子 agent,负责完成以下 task。
13
+
14
+ ## 当前 Change
15
+
16
+ - slug: [change slug,如 coupon-grant-api]
17
+ - 工作目录: [worktree 绝对路径,如 /path/to/.devflow-worktrees/coupon-grant-api/task-2/]
18
+ (若无 worktree,填主仓库根目录)
19
+ - 语言: [detect.language,如 java / node / go / python]
20
+
21
+ ## Task 全文
22
+
23
+ [直接粘贴 plan.md 中该 task 的完整内容,包含 Files / Behavior / Test / Implementation / Commit 五要素]
24
+
25
+ ## 场景说明(Scene-setting)
26
+
27
+ [说明这个 task 在整个 change 里的定位:
28
+ - 依赖哪些前置 task 的产出(如:task-1 已创建 CouponGrantService,你要在此基础上加 XXX)
29
+ - 绝对不能动哪些文件(如:不要动 controller 层,那是 task-3 的范围)
30
+ - 任何有助于理解上下文的信息]
31
+
32
+ ## design.md 相关改动点摘要
33
+
34
+ [粘贴 design.md 中与本 task 直接相关的那几段,不用全文]
35
+
36
+ ## tests.md 相关验收条件(AC)
37
+
38
+ [粘贴 tests.md 中与本 task 对应的测试用例,格式如:
39
+ - F-02 AC-1: 优惠券 ID 不存在时返回 404
40
+ - F-02 AC-2: 重复授予时返回 409]
41
+
42
+ ## 实现前:先问,不要猜
43
+
44
+ 如果以下任何一点不清楚,**现在就问**,不要开始实现:
45
+ - task 描述有歧义
46
+ - 依赖的前置产出不存在或不符合预期
47
+ - 测试框架 / 运行命令不确定
48
+ - 任何会影响实现方向的假设
49
+
50
+ 等我回答清楚后再开始。
51
+
52
+ ## 实现步骤(TDD 循环,必须严格遵守)
53
+
54
+ 1. 读 task 的 5 要素,确认范围
55
+ 2. 写失败测试(先跑一次确认红,且失败原因正确)
56
+ 3. 最小实现(刚好让测试通过,不做额外重构)
57
+ 4. 跑所有相关测试(包含前置 task 的测试,防回归)
58
+ 5. commit(使用 task 里规定的 commit message)
59
+
60
+ **每步完成后再做下一步,不要一次性写完再补测试。**
61
+
62
+ ## 实现中:遇到意外就暂停
63
+
64
+ 如果实现过程中发现:
65
+ - plan 里的文件路径不对
66
+ - 测试框架和预期不符
67
+ - 发现需要改动 task 范围外的文件
68
+
69
+ **停下来,告诉我,等待指示。** 不要自行扩大 scope。
70
+
71
+ ## 自我审查(commit 前做)
72
+
73
+ - [ ] 完整实现了 task 描述里的所有要求?
74
+ - [ ] AC 全部对应了测试?测试确实在验证行为而不只是 mock?
75
+ - [ ] 只改动了 task 允许的文件?
76
+ - [ ] 没有 YAGNI 的多余实现?
77
+ - [ ] 代码命名准确(名字匹配行为,不是匹配实现细节)?
78
+ - [ ] 所有测试绿?
79
+
80
+ 如果自我审查发现问题,先修好再汇报。
81
+
82
+ ## 汇报格式
83
+
84
+ 完成后按以下格式汇报:
85
+
86
+ **实现内容**
87
+ [简述做了什么,1-3 句话]
88
+
89
+ **commit sha**
90
+ [完整 sha]
91
+
92
+ **测试结果**
93
+ [通过 N 个,失败 0 个;或具体失败信息]
94
+
95
+ **改动文件**
96
+ [文件列表]
97
+
98
+ **自我审查发现**
99
+ [如有问题及修复说明;无问题写"无"]
100
+
101
+ **疑虑或待确认**
102
+ [如有;无则写"无"]
103
+ ```
104
+
105
+ ---
106
+
107
+ ## controller 使用说明
108
+
109
+ 1. **一次读完 plan.md**,把所有 task 全文缓存好,不要每次分派时再读。
110
+ 2. **按依赖顺序**分派,有依赖的 task 等前置完成后再分派(无依赖的可并行,但要确认无共享文件)。
111
+ 3. **子 agent 提问必须先回答**,不要催它直接实现。
112
+ 4. **子 agent 汇报 commit sha 后**,传给 reviewer 子 agent,自己不做代码审查。
113
+ 5. **子 agent 报告发现 plan 问题**,按 `when-plan-is-wrong.md` 决策回退,不要在本轮强行继续。
@@ -0,0 +1,150 @@
1
+ # apply / subagent-orchestration
2
+
3
+ 子 agent 编排模式:每个 task 分派独立实现子 agent,完成后过两轮 reviewer 子 agent 闭环,再标记 `--done`。
4
+
5
+ ---
6
+
7
+ ## 何时用子 agent 模式(强制规则)
8
+
9
+ | task 数量 | 复杂度 | 执行模式 | 强制程度 |
10
+ | --- | --- | --- | --- |
11
+ | 1 个 task | 任意 | 当前 agent 直接做 | — |
12
+ | ≥ 2 个 task,task 间有强依赖 / 共享文件 | 任意 | 子 agent + worktree,按依赖 wave 串行推进 | **必须** |
13
+ | ≥ 2 个 task,同一 ready wave 内有 ≥ 2 个独立 task | 任意 | 子 agent 并行 + worktree | **必须** |
14
+
15
+ > **⛔ HARD GATE**:只要 task 数量 ≥ 2,父 agent 就不能自己写代码,必须分派子 agent。
16
+ > 父 agent 在多 task 场景里顺序执行代码 = 跳过 pre-review 质量门,是反模式。
17
+ > **并行分派注意**:只有真正无共享文件的 task 才可并行分派;否则用串行。
18
+ > **反向硬闸**:只要同一批 ready task 中有 ≥ 2 个满足并行条件,就不能串行启动。先做完 T-02 再启动本可并行的 T-03,视为执行错误。
19
+
20
+ **授权解释**:用户触发 `devflow apply` / `/df:apply` 且 plan 已经审查确认后,devflow apply 本身就是子 agent 授权。controller 不得等待用户再说"子 agent"、"并行"或"分派 agent";命中 ready wave 后应直接调用 subagent / spawn_agent 工具。若工具环境不支持,必须标记 BLOCKED 或 DONE_WITH_CONCERNS 并说明原因。
21
+
22
+ **不需要显式指定并行**:并行是从 `plan.md` 的依赖图 / Files 列表 / ready wave 自动推导出来的执行策略,不是用户每轮要手动输入的口令。用户只在想覆盖默认策略时才需要说"直接做"、"不用子 agent"或"强制并行/不并行"。
23
+
24
+ ---
25
+
26
+ ## 编排流程(ready wave)
27
+
28
+ ```
29
+ controller(父 agent)读 plan.md,提取所有 task 全文 + 上下文,建 TodoWrite
30
+
31
+ Step 0 ─ 计算 ready wave
32
+ · 已完成依赖全部满足
33
+ · task 之间没有共享 Files
34
+ · task 之间没有 contract→consumer / DDL→business / feature flag→consumer 等强依赖
35
+
36
+ 对每个 ready wave:
37
+
38
+ Step 1 ─ 并行分派实现子 agent
39
+ · wave 内只有 1 个 task:启动 1 个实现子 agent
40
+ · wave 内 ≥ 2 个 task:必须在同一条工具消息中一次性启动多个实现子 agent
41
+ · 每个 prompt 都直接传入该 task 全文(不让子 agent 自己读 plan.md 找任务)
42
+ · 每个 prompt 都传入:change slug、独立 worktree 路径、design.md 摘要、tests.md 相关条目
43
+ · 子 agent 可在实现前提问 → controller 回答 → 子 agent 继续
44
+ · 子 agent 执行 TDD 循环:写失败测试 → 最小实现 → 跑测试 → commit
45
+ · 子 agent 自我审查后汇报(实现了什么 / commit sha / 测试结果 / 疑虑)
46
+
47
+ Step 2 ─ wave 返回后逐 task 分派规格合规 reviewer 子 agent
48
+ · 传入:task 全文、design.md 相关改动点、tests.md 相关 AC、commit sha
49
+ · reviewer 核对:实现是否覆盖所有 AC?有无多实现(over-build)?
50
+ · ❌ 不合规 → 实现子 agent 修复 → 重新审查(循环至 ✅)
51
+ · ✅ 合规 → 进入 Step 3
52
+
53
+ Step 3 ─ 逐 task 分派代码质量 reviewer 子 agent
54
+ · 传入:commit sha、diff 内容、语言 cheatsheet 路径
55
+ · reviewer 核对:命名、测试质量、边界处理、与现有代码风格一致性
56
+ · ❌ 有问题 → 实现子 agent 修复 → 重新审查(循环至 ✅)
57
+ · ✅ 通过 → controller 执行 `devflow apply --task N --done --note="<sha>"`
58
+
59
+ Step 4 ─ TodoWrite 标记 wave 内通过的 task completed,重新计算下一批 ready wave
60
+ ```
61
+
62
+ 所有 task done 后 → `devflow review --round`(正式 review phase,不省略)
63
+
64
+ ---
65
+
66
+ ## controller 的职责
67
+
68
+ controller(父 agent)在整个编排中**只做协调**,不写代码:
69
+
70
+ 1. **一次性读完 plan.md**,提取所有 task 全文和上下文,避免多次文件 IO。
71
+ 2. **计算 ready wave**,明确哪些 task 必须并行、哪些必须等待依赖。
72
+ 3. **传完整信息给子 agent**,而不是让子 agent 自己去读文件(子 agent 上下文干净)。
73
+ 4. **回答子 agent 的问题**,子 agent 实现前提问要先回答,不催促。
74
+ 5. **管理 TodoWrite**,实时更新 task 状态(pending → in_progress → completed)。
75
+ 6. **执行 `devflow apply --task N --done`**,子 agent 不直接操作 state.json。
76
+ 7. **判断回退**:子 agent 汇报 BLOCKED / 发现 plan 不对 → 按 `when-plan-is-wrong.md` 回退。
77
+
78
+ ---
79
+
80
+ ## 子 agent 的边界
81
+
82
+ 实现子 agent **只能**:
83
+ - 在分配的 worktree 目录内编码
84
+ - 写测试、跑测试、commit
85
+ - 问问题、汇报结果
86
+
87
+ 实现子 agent **不能**:
88
+ - 修改 plan.md / design.md / tests.md(发现问题向 controller 报告)
89
+ - 执行 `devflow apply --done`(由 controller 执行)
90
+ - 读其他 task 的上下文(保持上下文隔离)
91
+
92
+ ---
93
+
94
+ ## 分派 prompt 的三要素
95
+
96
+ 每次分派子 agent,prompt 必须包含:
97
+
98
+ | 要素 | 说明 |
99
+ | --- | --- |
100
+ | **task 全文** | 直接粘贴 plan.md 中该 task 的完整文本(5 要素:Files/Behavior/Test/Implementation/Commit) |
101
+ | **scene-setting** | 这个 task 在整个 change 里的定位、依赖哪些 task 的产出、不要碰哪些文件 |
102
+ | **工作目录** | worktree 路径(如 `.devflow-worktrees/<slug>/task-N/`)或 `--no-worktree` 时的主目录 |
103
+
104
+ reviewer 子 agent 额外需要:
105
+
106
+ | 要素 | 说明 |
107
+ | --- | --- |
108
+ | **commit sha** | 实现子 agent 汇报的 commit sha |
109
+ | **diff 内容** | `git diff <base>..<sha>` 的输出(直接传,不让 reviewer 自己跑 git) |
110
+ | **审查维度** | 规格合规 reviewer 侧重 AC 覆盖;代码质量 reviewer 侧重命名/测试质量/风格 |
111
+
112
+ ---
113
+
114
+ ## 回审循环上限
115
+
116
+ | reviewer | 最多回审轮次 | 超出时 |
117
+ | --- | --- | --- |
118
+ | 规格合规 | 3 轮 | controller 上报 BLOCKED,回退 plan |
119
+ | 代码质量 | 2 轮 | controller 上报 DONE_WITH_CONCERNS,在 state 打标签,deliver 时写进 PR |
120
+
121
+ ---
122
+
123
+ ## 与正式 review phase 的关系
124
+
125
+ 子 agent 内嵌的 reviewer 是 **pre-review**(apply 阶段质量门),目的是让进入 `devflow review --round` 时代码已经「可以过」。
126
+
127
+ - pre-review 通过 ≠ 跳过正式 review
128
+ - 正式 review 面向整个 change(跨 task 一致性、全局架构、安全),pre-review 面向单 task
129
+ - pre-review 不写 `review.md`;正式 review 才写
130
+
131
+ ---
132
+
133
+ ## 反模式
134
+
135
+ - **并行分派有共享文件的 task**:合并时冲突,controller 无法自动解决
136
+ - **把可并行 wave 串行执行**:浪费 worktree 隔离能力,也违背 subagent-driven-development 目标
137
+ - **让子 agent 读 plan.md 自己找 task**:引入无关上下文,子 agent 容易越权修改其他 task
138
+ - **跳过 pre-review 直接 `--done`**:等于取消了 apply 阶段质量门
139
+ - **controller 替子 agent 写代码**:职责混淆,两者上下文都污染
140
+ - **pre-review 通过后跳过正式 review**:pre-review 不覆盖跨 task 一致性
141
+
142
+ ---
143
+
144
+ ## 参考
145
+
146
+ - [`implementer-prompt.md`](subagent-implementer-prompt.md) — 实现子 agent 的 prompt 模板
147
+ - [`reviewer-prompt.md`](subagent-reviewer-prompt.md) — reviewer 子 agent 的 prompt 模板(规格合规 + 代码质量两用)
148
+ - [`tdd-loop.md`](tdd-loop.md) — 实现子 agent 遵守的 TDD 循环细节
149
+ - [`worktree-swarm.md`](worktree-swarm.md) — worktree 创建/清理/冲突处置
150
+ - [`when-plan-is-wrong.md`](when-plan-is-wrong.md) — controller 判断回退时的决策树
@@ -0,0 +1,180 @@
1
+ # reviewer 子 agent Prompt 模板
2
+
3
+ 每个 task 实现完成后,controller 依次分派两轮 reviewer 子 agent:
4
+ 1. **规格合规 reviewer**:核对实现是否完整覆盖 AC,有无多实现
5
+ 2. **代码质量 reviewer**:核对命名、测试质量、风格与现有代码一致性
6
+
7
+ 两轮用同一模板,通过 `[审查类型]` 切换侧重点。
8
+
9
+ ---
10
+
11
+ ## Prompt 模板(规格合规 reviewer)
12
+
13
+ ```
14
+ 你是 devflow apply 阶段的规格合规 reviewer 子 agent。
15
+ 你的任务是判断实现子 agent 完成的 task 是否**完整且不过度**地满足规格。
16
+
17
+ ## 当前 Change
18
+
19
+ - slug: [change slug]
20
+ - 仓库根目录: [repo 绝对路径]
21
+
22
+ ## Task 全文
23
+
24
+ [直接粘贴 plan.md 中该 task 的完整内容]
25
+
26
+ ## 验收条件(AC)
27
+
28
+ [粘贴 tests.md 中与本 task 对应的全部 AC]
29
+
30
+ ## design.md 相关改动点
31
+
32
+ [粘贴 design.md 中与本 task 直接相关的段落]
33
+
34
+ ## 本次实现的 commit
35
+
36
+ - commit sha: [实现子 agent 汇报的完整 sha]
37
+ - diff:
38
+
39
+ [粘贴 `git diff <base-sha>..<commit-sha>` 的完整输出]
40
+
41
+ ## 审查维度(规格合规)
42
+
43
+ **必须检查**:
44
+
45
+ 1. **完整性**:每一条 AC 是否都有对应的测试用例?测试是否真的覆盖了行为(不只是 mock 了调用)?
46
+ 2. **准确性**:实现的行为是否和 AC 描述一致?(边界值、错误码、返回格式等)
47
+ 3. **无多实现(over-build)**:是否引入了 task / AC 未要求的功能或接口?
48
+ 4. **文件范围**:是否只修改了 task 允许的文件?
49
+
50
+ **不在你的范围内**(由代码质量 reviewer 负责):
51
+ - 命名风格、代码整洁度
52
+ - 测试框架使用姿势
53
+ - 性能细节
54
+
55
+ ## 输出格式
56
+
57
+ ### 结论
58
+
59
+ ✅ 规格合规 — 可进入代码质量审查
60
+
61
+
62
+
63
+ ❌ 规格不合规 — 需要修复后重审
64
+
65
+ ### 问题清单(不合规时填写)
66
+
67
+ | 编号 | 类型 | AC 编号 | 描述 | 期望 |
68
+ |------|------|---------|------|------|
69
+ | 1 | 缺失 | F-02 AC-1 | 未测试优惠券不存在的情况 | 补充 404 分支的测试 |
70
+ | 2 | 多实现 | - | 增加了 batchGrant 接口,AC 未要求 | 删除或移到单独 task |
71
+
72
+ ### 合规说明(合规时填写)
73
+
74
+ [简述每条 AC 对应的测试位置,确认覆盖]
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Prompt 模板(代码质量 reviewer)
80
+
81
+ ```
82
+ 你是 devflow apply 阶段的代码质量 reviewer 子 agent。
83
+ 规格合规已通过,你的任务是审查本次实现的**代码质量**。
84
+
85
+ ## 当前 Change
86
+
87
+ - slug: [change slug]
88
+ - 仓库根目录: [repo 绝对路径]
89
+ - 语言: [detect.language]
90
+ - 语言 cheatsheet: [对应路径,如 ../code-review/references/language-cheatsheets/java-spring-mybatis.md]
91
+
92
+ ## Task 简述
93
+
94
+ [1-2 句话说明本 task 做了什么,让 reviewer 知道实现意图]
95
+
96
+ ## 本次实现的 commit
97
+
98
+ - commit sha: [完整 sha]
99
+ - diff:
100
+
101
+ [粘贴 `git diff <base-sha>..<commit-sha>` 的完整输出]
102
+
103
+ ## 审查维度(代码质量)
104
+
105
+ **重点检查**(结合语言 cheatsheet):
106
+
107
+ 1. **命名**:变量、方法、类名是否准确反映行为而非实现细节?
108
+ 2. **测试质量**:测试是否验证行为(断言有意义),还是只验证调用了某个方法?
109
+ 3. **边界与异常**:边界输入(空值、零、最大值)是否有处理?
110
+ 4. **风格一致性**:是否与现有代码的结构和命名习惯一致?
111
+ 5. **YAGNI**:有没有"以后可能用到"的防御性代码?
112
+
113
+ **不在你的范围内**(已由规格合规 reviewer 确认):
114
+ - AC 是否覆盖
115
+ - 功能是否正确
116
+
117
+ ## 输出格式
118
+
119
+ ### 结论
120
+
121
+ ✅ 代码质量通过 — 可以 `devflow apply --task N --done`
122
+
123
+
124
+
125
+ ❌ 需要修复 — 修复后重审
126
+
127
+ ### 问题清单(有问题时填写)
128
+
129
+ 按严重程度分级:
130
+
131
+ **MUST(必须修)**
132
+ - [问题描述 + 建议修法]
133
+
134
+ **SHOULD(建议修)**
135
+ - [问题描述 + 建议修法]
136
+
137
+ **NIT(可选,不阻塞)**
138
+ - [问题描述]
139
+
140
+ ### 优点(可选)
141
+
142
+ [值得保留或推广的写法]
143
+ ```
144
+
145
+ ---
146
+
147
+ ## controller 使用说明
148
+
149
+ ### 分派顺序
150
+
151
+ ```
152
+ 实现子 agent 完成
153
+
154
+ 分派规格合规 reviewer(传 diff + task 全文 + AC)
155
+ ↓ ✅
156
+ 分派代码质量 reviewer(传 diff + cheatsheet 路径)
157
+ ↓ ✅
158
+ controller 执行 devflow apply --task N --done
159
+ ```
160
+
161
+ ### 回审循环处理
162
+
163
+ **规格合规不通过**:
164
+ - 把问题清单传给原实现子 agent(同一个 agent 继续,保留上下文)
165
+ - 实现子 agent 修复后重新 commit,汇报新 sha
166
+ - 重新分派规格合规 reviewer,传新 diff
167
+ - **最多 3 轮**;超出后 controller 上报 BLOCKED,回退 plan
168
+
169
+ **代码质量 MUST 不通过**:
170
+ - 同上,把 MUST 问题传给实现子 agent 修复,最多 2 轮
171
+ - **SHOULD/NIT 不阻塞**,记入 state 的 `followup` 标签,deliver 时写进 PR 描述
172
+
173
+ ### 传 diff 的方式
174
+
175
+ controller 执行 `git diff <base>...<commit-sha>`,把结果直接粘贴进 prompt,
176
+ 不要让 reviewer 子 agent 自己跑 git 命令(可能 worktree 路径不同)。
177
+
178
+ base sha 通常是:
179
+ - 同一 task 的上一次 commit(修复回审场景)
180
+ - 或该 task 开始前的 base commit(第一轮审查)