@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,244 @@
1
+ # brainstorm / proposal-template
2
+
3
+ `proposal.md` 的 6 段详细模板、正反例、字段边界。
4
+
5
+ ---
6
+
7
+ ## 模板
8
+
9
+ ```markdown
10
+ ---
11
+ slug: <slug>
12
+ createdAt: <ISO>
13
+ level: L1 | L2 | L3
14
+ source: brainstorm # 固定,与 ingest 区分
15
+ ---
16
+
17
+ # Proposal: <one-line title>
18
+
19
+ ## Problem
20
+ <用户原话 / 用户视角的一句话描述问题。不要加你的解读。>
21
+
22
+ ## Why now
23
+ <为什么是本周期做,不是下周期。>
24
+
25
+ ## Constraints
26
+ - <现有代码的约束(不能破坏 X、必须兼容 Y)>
27
+ - <时间约束(deadline)>
28
+ - <人 / 依赖约束(跨团队要对齐)>
29
+ - <技术债约束(目前代码是什么样)>
30
+
31
+ ## Success criteria
32
+ - <必须可量化;不能全是"更好/更快/更稳定">
33
+ - ...
34
+
35
+ ## Out of scope
36
+ - <本次明确不做 A>
37
+ - <本次明确不做 B>
38
+ - ...
39
+
40
+ ## Recommended level
41
+ <L1 | L2 | L3>,依据:<至少 2 条引用自 complexity-grading.md 的维度>
42
+ ```
43
+
44
+ ---
45
+
46
+ ## 字段详述(含正反例)
47
+
48
+ ### 1. Problem
49
+
50
+ **是什么**:用户看到的现象 / 痛点,用**用户的语言**而不是工程师的语言。
51
+
52
+ **反例**:
53
+
54
+ > ~~引入 Redis 缓存优化接口性能~~
55
+ > (这是 "solution",不是 "problem"。用户不要求你上 Redis。)
56
+
57
+ **正例**:
58
+
59
+ > 用户投诉:商品详情页首次加载超过 3 秒,购物车转化率下降 8%。
60
+
61
+ **判定**:
62
+
63
+ - 是否描述了**现象** / **痛点** → 是
64
+ - 是否提了**具体方案** → 不能提(那是 tech-spec 的事)
65
+ - 是否带了**量化信号** → 最好带,能让后面的 Success criteria 有对照
66
+
67
+ ---
68
+
69
+ ### 2. Why now
70
+
71
+ **是什么**:回答"为什么不是下季度 / 不是下半年"。防止做错优先级。
72
+
73
+ **好信号**:
74
+
75
+ - 某个业务指标到了红线(Q3 GMV 下降 5%)
76
+ - 某个截止日期硬(9/30 合规截止)
77
+ - 依赖方 deadline(下游团队 Q4 要我们支持 X)
78
+ - 技术债已到临界(某库 EOL 12/31)
79
+
80
+ **反例**:
81
+
82
+ > ~~看着用户抱怨有点多,做一下。~~
83
+ > (没有 urgency,不回答 "为什么现在")
84
+
85
+ **正例**:
86
+
87
+ > 商家 Q3 大促前要开启此类活动;9/30 前必须上线。
88
+
89
+ ---
90
+
91
+ ### 3. Constraints
92
+
93
+ **是什么**:这次做事时必须**遵守**的边界。
94
+
95
+ 分 4 类:
96
+
97
+ | 类型 | 例子 |
98
+ | --- | --- |
99
+ | **代码 / 架构** | 不能破坏现有 `/api/v1/coupon/*` 契约;必须兼容 iOS 2.3 及之前 |
100
+ | **时间** | 9/25 前提测,9/30 灰度 |
101
+ | **人 / 依赖** | 前端由 Alice 配合,依赖 billing 服务的 grantAPI(尚未上线,依赖方 9/20 好) |
102
+ | **技术债** | 当前 grant 表未分表,数据量 ×10 后性能存疑 |
103
+
104
+ **反例**:
105
+
106
+ > ~~没什么约束,随便做。~~
107
+ > (真的一项都列不出来 → 八成是没想清楚;回去多问一轮)
108
+
109
+ **数量建议**:3-5 条,超过说明你在堆废话;少于 2 条说明 brainstorm 不充分。
110
+
111
+ ---
112
+
113
+ ### 4. Success criteria
114
+
115
+ **是什么**:本次任务 "完成" 的客观判据。必须**可量化 / 可验收**。
116
+
117
+ 好的成功标准要满足 **SMART 原则**:**S**pecific、**M**easurable、**A**chievable、**R**elevant、**T**ime-bound。
118
+
119
+ **反例**:
120
+
121
+ > ~~~
122
+ > - 用户体验更好
123
+ > - 系统更稳定
124
+ > - 代码更易维护
125
+ > ~~~
126
+ > (没有一个可量化)
127
+
128
+ **正例**:
129
+
130
+ > - 商品详情页 P99 < 1.5s(当前 3.2s)
131
+ > - 购物车转化率 Q4 末 > 7.5%(当前 7.0%)
132
+ > - 新接口 QPS ≥ 2000 时 error rate < 0.1%
133
+ > - 对外契约完全兼容,旧客户端无感知(对比测试通过)
134
+
135
+ **判定规则**:
136
+
137
+ - 每条都必须能用一个**数字**或**二值判定**验收,否则打回
138
+ - 数字要有**对照**(当前 vs 目标),否则没参考系
139
+ - 至少 1 条是"用户侧指标"(GMV / 转化率 / 延迟 / 错误率),不能全是"我们内部自测通过"
140
+
141
+ ---
142
+
143
+ ### 5. Out of scope
144
+
145
+ **是什么**:**显式写明**本次不做的事情。防止后续 scope creep。
146
+
147
+ **反例**:
148
+
149
+ > ~~~
150
+ > - 其他功能不做
151
+ > - 暂时不考虑性能
152
+ > ~~~
153
+ > (太泛,相当于没说)
154
+
155
+ **正例**:
156
+
157
+ > - 不做**跨店铺**优惠券合并(下个迭代)
158
+ > - 不做**退款场景**的优惠券返还(现有流程沿用)
159
+ > - 不做**H5 页面**改造(只改 App 和 Web)
160
+ > - 不做**运营后台**的**批量发券**(有其他 JIRA 跟进)
161
+
162
+ **套路**:把用户可能**误会你要做**的事、**下个迭代更合适做**的事、**别的团队负责**的事全部写进来。宁多勿少。
163
+
164
+ ---
165
+
166
+ ### 6. Recommended level
167
+
168
+ **是什么**:本次任务复杂度。由 orchestrator 的 `complexity-grading.md` 逐维度判定。
169
+
170
+ **格式**:
171
+
172
+ > **L2**,依据:
173
+ > - 代码规模维度 → L2(预计改 4-6 文件)
174
+ > - 数据层维度 → L2(新增 1 表 + 加 2 列)
175
+ > - 对外契约 → L2(新增 2 接口)
176
+ > - 并发 → L1(单表事务足够)
177
+ > 其余维度 → L1。综合取最高 = L2。
178
+
179
+ **反例**:
180
+
181
+ > ~~L2(中等复杂度)~~
182
+ > (没有依据,不能审计)
183
+
184
+ ---
185
+
186
+ ## 完整填写样例(L2 新功能)
187
+
188
+ ```markdown
189
+ ---
190
+ slug: add-coupon-batch-grant
191
+ createdAt: 2026-04-24T09:00:00+08:00
192
+ level: L2
193
+ source: brainstorm
194
+ ---
195
+
196
+ # Proposal: 批量发放优惠券给指定用户群
197
+
198
+ ## Problem
199
+ 运营侧反馈:单次只能发一人,运营做一次营销要手动发 200+ 次。
200
+
201
+ ## Why now
202
+ Q4 大促前要配合 3 场活动,运营预计人均操作 300 次/场;人肉发券不可能完成。
203
+
204
+ ## Constraints
205
+ - 不能破坏现有 `/api/v1/coupon/grant` 单人发放接口
206
+ - 必须兼容现有风控规则(同人同模板 24h 内不可重复领)
207
+ - 数据库不允许分表改造(另一迭代独立推进)
208
+ - 9/25 前提测,10/1 大促前上线
209
+
210
+ ## Success criteria
211
+ - 单次发放 ≤ 1000 人,接口 P99 < 3s
212
+ - 错误率 < 0.1%(含部分失败的场景)
213
+ - 运营后台操作耗时 < 1 分钟/场(当前 > 1 小时)
214
+ - 风控拦截准确率与单发一致(误拦 < 0.01%)
215
+
216
+ ## Out of scope
217
+ - 不做**跨店铺**批量
218
+ - 不做**H5 运营页**改造(只改后台)
219
+ - 不做**券模板**的新增字段(另有 SCRUM-15900)
220
+ - 不做**对账 / 结算**侧调整(下阶段做)
221
+
222
+ ## Recommended level
223
+ **L2**,依据:
224
+ - 代码规模 → L2(预计 6-8 文件)
225
+ - 数据层 → L2(无 DDL,只加索引优化批量查询)
226
+ - 对外契约 → L2(新增 1 接口,对 legacy 兼容)
227
+ - 并发 → L2(批量落库用事务 + 风控在应用层串行化)
228
+ - 安全 → L1
229
+ - 监控 → L2(新增 QPS / 耗时 / 错误率指标)
230
+ 综合 = L2。若大促前发现需要分布式锁(跨机房)会升 L3。
231
+ ```
232
+
233
+ ---
234
+
235
+ ## 与下游的交接
236
+
237
+ `requirement-analysis` skill 的 Round 1 会**逐段**读这个 proposal:
238
+
239
+ - Problem / Why now → copy 到 `requirement.md` 的"Business background"
240
+ - Constraints / Out of scope → 约束场景生成"Non-functional" 和"Scope"
241
+ - Success criteria → 生成**验收标准**骨架(acceptance criteria)
242
+ - Recommended level → 写入 `state.level`,影响 tests / reports 的强制项
243
+
244
+ **brainstorm 填得越细,requirement-analysis 就越快收敛**,不要在 brainstorm 偷懒。
@@ -0,0 +1,168 @@
1
+ # brainstorm / question-catalog
2
+
3
+ 按任务类型挑问题。brainstorm 硬约束"一次一个 / 最多 5 个",所以要**精挑最值钱的那几个**。
4
+
5
+ ---
6
+
7
+ ## 先识别任务类型
8
+
9
+ 从用户的原话里识别它属于哪一类,然后用对应类别的问题集。
10
+
11
+ | 类型 | 信号词 | 典型表述 |
12
+ | --- | --- | --- |
13
+ | **NEW_FEATURE** | "新增"、"加一个"、"做一个"、"上一个新功能" | "我想加一个批量发券的能力" |
14
+ | **IMPROVEMENT** | "优化"、"改进"、"加速"、"体验更好" | "首页加载太慢想优化一下" |
15
+ | **BUG_DRIVEN** | "修 / 解决 / 修复 / 它不工作了" | "发现优惠券领取偶尔失败" |
16
+ | **REFACTOR** | "重构 / 拆 / 合并 / 整理 / 解耦" | "想把用户模块拆成领域模型" |
17
+ | **COMPLIANCE** | "合规 / 审计 / 隐私 / 监管 / GDPR" | "监管要我们加操作日志" |
18
+ | **PERFORMANCE** | "性能 / 延迟 / QPS / 慢 / 扩容" | "接口 P99 压不下来" |
19
+ | **MIGRATION** | "替换 / 升级 / 迁移 / 去掉旧的" | "把 MongoDB 迁到 MySQL" |
20
+
21
+ 识别不准 → 问一个歧义性问题先定类型,例如:
22
+
23
+ > "你这个更像'加一个全新能力'还是'现有能力有问题要修'?"
24
+
25
+ ---
26
+
27
+ ## NEW_FEATURE — 5 个候选问题
28
+
29
+ | # | 问题 | 默认必问 | 能获得什么 |
30
+ | --- | --- | --- | --- |
31
+ | Q1 | 这个功能最终**谁在用**?他们在哪个场景下用? | 是 | Problem + Why now |
32
+ | Q2 | 成功了能看到什么**数字**?(转化率/使用率/满意度) | 是 | Success criteria |
33
+ | Q3 | 你心目中的最小可用版本是什么? | 是 | Scope / Out of scope |
34
+ | Q4 | 如果只能做一半,优先做哪一半? | 视情况 | Out of scope |
35
+ | Q5 | 是否有**必须**兼容或**必须**不破坏的现状? | 视情况 | Constraints |
36
+
37
+ ---
38
+
39
+ ## IMPROVEMENT — 5 个候选问题
40
+
41
+ | # | 问题 | 能获得什么 |
42
+ | --- | --- | --- |
43
+ | Q1 | 现在有多差?(具体数据:延迟、错误率、主观反馈) | Problem(含 baseline) |
44
+ | Q2 | 改到多好算"好"?(目标值) | Success criteria |
45
+ | Q3 | 是哪一部分最痛?(模块/路径/用户群) | Scope |
46
+ | Q4 | 有没有**推迟过**类似的改进?为什么现在做? | Why now |
47
+ | Q5 | 能接受**短期用体验**换**长期性能**吗?(如加 loading、降精度) | Constraints |
48
+
49
+ ---
50
+
51
+ ## BUG_DRIVEN — 5 个候选问题
52
+
53
+ 优先走 `devflow ingest incident:<id>` 而不是 brainstorm。只有当 bug 没有 incident ID 且不是线上紧急时才 brainstorm。
54
+
55
+ | # | 问题 | 能获得什么 |
56
+ | --- | --- | --- |
57
+ | Q1 | 具体怎么复现? | Problem(清晰复现步骤) |
58
+ | Q2 | 影响多少用户 / 影响多大? | Recommended level |
59
+ | Q3 | 想修表现还是修根因?(短期 vs 长期) | Scope |
60
+ | Q4 | 是否需要加监控 / 告警? | Constraints / Success |
61
+ | Q5 | 有没有已知的 workaround?现在能用吗? | Why now |
62
+
63
+ ---
64
+
65
+ ## REFACTOR — 5 个候选问题
66
+
67
+ 重构是**最危险**的任务类型,问错或问少会触发"纯重构无业务价值 + 引入风险"的灾难。
68
+
69
+ | # | 问题 | 必问 | 能获得什么 |
70
+ | --- | --- | --- | --- |
71
+ | Q1 | 为什么**现在**做?有业务推动还是纯工程? | 是 | Why now(纯工程要警惕) |
72
+ | Q2 | 不重构会怎样?最坏多痛? | 是 | Problem |
73
+ | Q3 | 本次重构的**边界**在哪?不碰哪部分? | 是 | Out of scope(重构尤其要明) |
74
+ | Q4 | 怎么证明重构成功?(行为等价 + 哪些指标不变 + 哪些指标改善) | 是 | Success criteria |
75
+ | Q5 | 有覆盖当前行为的测试吗?没有的话先补再重构 | 视情况 | Constraints |
76
+
77
+ **orchestrator 特别提示**:如果 Q1 得到的是"没业务推动,纯看着乱想整整",默认推荐**不做**,或先补测试再说。重构无业务推动 = 高风险无收益。
78
+
79
+ ---
80
+
81
+ ## COMPLIANCE — 5 个候选问题
82
+
83
+ | # | 问题 | 能获得什么 |
84
+ | --- | --- | --- |
85
+ | Q1 | 法规名称 / 审计 ID / 政策文档链接? | Problem(必须有明确依据) |
86
+ | Q2 | 最晚什么时候必须上线?(合规通常硬 deadline) | Why now |
87
+ | Q3 | 哪些字段 / 行为涉及(数据范围)? | Scope |
88
+ | Q4 | 是否需要留**审计日志**可查?保留多久? | Constraints |
89
+ | Q5 | 违规后果是什么?(罚款 / 下架 / 警告) | Recommended level |
90
+
91
+ 合规类任务几乎必然是 L2+,且 deliver 时通常要求额外审计 checklist。
92
+
93
+ ---
94
+
95
+ ## PERFORMANCE — 5 个候选问题
96
+
97
+ | # | 问题 | 能获得什么 |
98
+ | --- | --- | --- |
99
+ | Q1 | 现在的 baseline?(QPS / 延迟 / 错误率 / 资源利用) | Problem(必须量化) |
100
+ | Q2 | 目标?(具体数字 + 优先级指标) | Success criteria |
101
+ | Q3 | 已知瓶颈在哪?(有没有 profiling 结果) | Scope |
102
+ | Q4 | 能接受哪种代价?(成本 / 复杂度 / 一致性降级) | Constraints |
103
+ | Q5 | 是稳态还是高峰?(稳态优化 vs 高峰扩容) | Recommended level |
104
+
105
+ 性能类任务建议在 brainstorm 结束前**要求用户提供 profile / APM 数据**,没数据的"感觉慢"容易做成伪优化。
106
+
107
+ ---
108
+
109
+ ## MIGRATION — 5 个候选问题
110
+
111
+ | # | 问题 | 必问 | 能获得什么 |
112
+ | --- | --- | --- | --- |
113
+ | Q1 | 迁移什么?(一次性迁移 or 双写逐步切) | 是 | Scope |
114
+ | Q2 | 能接受停服吗?多久? | 是 | Constraints |
115
+ | Q3 | 成功判据?(数据一致性 / 性能 / 开关完成) | 是 | Success criteria |
116
+ | Q4 | 回滚方案?(迁移失败怎么办) | 是 | Constraints |
117
+ | Q5 | 增量数据怎么处理? | 视情况 | Scope |
118
+
119
+ 迁移类几乎必然 L3,且要求 design.md 有完整灰度 + 回滚方案。
120
+
121
+ ---
122
+
123
+ ## 通用的"避雷问题"(任何类型都要考虑问)
124
+
125
+ 如果前面类别的 5 个问题还没触达下面几个点,补问:
126
+
127
+ 1. **谁是这次任务的最终决策人?**(涉及多 stakeholder 的 L2/L3 必问)
128
+ 2. **Deadline 硬还是软?**(影响 scope 取舍)
129
+ 3. **有没有类似的功能 / 事故 / 迁移在其他项目做过?**(可抄经验)
130
+ 4. **成功了之后下一步是什么?**(防止短视设计,L3 必问)
131
+
132
+ ---
133
+
134
+ ## 问得不好的反模式
135
+
136
+ | 错法 | 为什么错 | 怎么改 |
137
+ | --- | --- | --- |
138
+ | "你想用什么技术栈?" | 技术选型属于 tech-spec | 不问。brainstorm 专注 **问题**,不问 **方案** |
139
+ | "你希望哪个模块来实现?" | 模块归属属于 design | 改问"哪些现有能力可以复用" |
140
+ | "性能要求是多少?QPS?延迟?缓存策略?并发量?" | 一次问 4 个 | 拆成单问,先问最重要的 |
141
+ | "要不要加监控?" | 0/1 二值问题,答了也没信息 | 改问"希望在**哪些场景**下看到什么" |
142
+ | "你想做 A、B、C 哪一个?" | 方案 A/B/C 是 tech-spec 的事 | 改问"**问题**是什么" |
143
+ | "有什么想法?" | 太开放,用户不知道该答啥 | 给选项或约束范围 |
144
+
145
+ ---
146
+
147
+ ## 识别用户答不出时
148
+
149
+ 如果用户对某个关键问题回答含糊(如 "嗯…我也不确定"),**不要强行继续**,三选一:
150
+
151
+ 1. **降级到选择题**:"那我给你两个选项看看哪个更接近?A: ... B: ..."
152
+ 2. **标记为 Open issue**:记到 proposal.md 的 "Risks / Open issues" section(brainstorm 阶段允许部分未定,但必须标记)
153
+ 3. **建议 `devflow ingest` 外部材料**:"这个问题听起来 PM 更清楚,有没有他们写的文档?"
154
+
155
+ ---
156
+
157
+ ## 对话节奏
158
+
159
+ - 一个问题 + 用户回答 + 你的 1 句话复述确认 → 下一个问题
160
+ - 不要在 chat 里长段复述整个 proposal.md;在 **最后**收敛阶段一次性展示
161
+ - 问题之间保持**一致性检查**:用户答的 Q3 如果与 Q1 矛盾,立即指出问他
162
+ - 单次 session 控制在 **10 分钟 / 5 轮问答**,超了提醒用户 brainstorm 该收了
163
+
164
+ ---
165
+
166
+ ## 本文与 SKILL.md 的关系
167
+
168
+ SKILL.md 只给了 5 个通用问题。本文按 7 种任务类型细化问题集,brainstorm 实际运行时按类型挑集。也列了避雷问题和提问节奏,防止 brainstorm 退化成"开放式头脑风暴"。
@@ -0,0 +1,184 @@
1
+ # brainstorm / session-template
2
+
3
+ 一次 brainstorm 对话的 3 阶段模板:**框架 → 迭代 → 收敛**。每阶段带完整话术与真实示例。
4
+
5
+ ---
6
+
7
+ ## 阶段 1 — 框架(30 秒内)
8
+
9
+ ### 目标
10
+
11
+ 在 30 秒内让用户**知道接下来要干什么**,并**先排除 ingest 路径**。
12
+
13
+ ### 开场话术(复制即可用)
14
+
15
+ ```
16
+ 准备进入 brainstorm。规则:
17
+ 1. 我会问 3-5 个问题,每次 1 个,不是一次问一串。
18
+ 2. 你答完我会复述理解,你可以立刻纠正。
19
+ 3. 5 问后我会把要点整理成 proposal.md(6 个 section)。
20
+
21
+ 但先确认一下:
22
+
23
+ ◉ 这个想法在哪儿聊过?有 PRD / Wiki / 飞书文档 / JIRA issue / 聊天记录吗?
24
+ - 有 → 请贴过来,我 `devflow ingest` 走一遍比 brainstorm 高效
25
+ - 没有 → 我们开始 brainstorm
26
+ ```
27
+
28
+ ### 分支
29
+
30
+ | 用户回答 | 动作 |
31
+ | --- | --- |
32
+ | "有,我找找" | **终止 brainstorm**;等拿到后 `devflow ingest`。这 30 秒没浪费 —— 防止了无意义的 brainstorm |
33
+ | "没有,现在就聊" | 进入阶段 2 |
34
+ | "有一点点,就是微信聊天" | 请用户贴聊天记录截图或转文字;作为 `refs/chat-excerpt.md` 入库,继续 brainstorm |
35
+ | "我也不确定,你觉得呢" | 不允许;提醒 brainstorm 必须由用户主导。无法主导 → 建议先跟 PM 聊一次 |
36
+
37
+ ---
38
+
39
+ ## 阶段 2 — 迭代(最多 5 轮)
40
+
41
+ 每轮 = 1 问 + 1 答 + 1 复述确认。
42
+
43
+ ### 单轮话术
44
+
45
+ ```
46
+ Q<N>: <问题,从 question-catalog.md 按类型挑>
47
+
48
+ [用户回答]
49
+
50
+ 理解:<把用户回答复述成一句话>
51
+ 这个对吗?
52
+ ```
53
+
54
+ ### 迭代节奏
55
+
56
+ ```
57
+ Q1 → 回答 → 复述确认 ✓
58
+ Q2 → 回答 → 复述确认 ✓
59
+ Q3 → 回答 → 复述确认 ✗ → 用户纠正 → 再复述确认 ✓
60
+ Q4 → 回答 → 复述确认 ✓
61
+ Q5 → 回答 → 复述确认 ✓
62
+ 进入收敛阶段
63
+ ```
64
+
65
+ ### 复述的目的(不是闲话)
66
+
67
+ 1. **给用户纠正机会**:他回答得快,你复述慢,他发现自己说错就改
68
+ 2. **锚定上下文**:下一个问题基于前一个确认的事实,防止飘
69
+ 3. **给自己检查矛盾的机会**:复述时你自然在脑中组织 proposal.md,矛盾会暴露
70
+
71
+ ### 完整对话示例(NEW_FEATURE 类)
72
+
73
+ > **User**: 我想做一个批量发优惠券的功能。
74
+
75
+ > **Skill**: 准备进入 brainstorm...[开场话术]...这个想法在哪儿聊过?有 PRD 吗?
76
+
77
+ > **User**: 暂时没有,运营上周提的,我们自己决定做。
78
+
79
+ > **Skill**: 好,我们开始。
80
+ >
81
+ > **Q1**: 这个批量发券最终谁在用?他们在什么场景下用?
82
+
83
+ > **User**: 运营同学,主要是大促前要给一批用户发活动券,现在一次只能发一个人,要手动发 300 次。
84
+
85
+ > **Skill**: 理解:使用者是**运营**,场景是**大促前给目标用户群(200-300 人规模)批量发放活动券**,痛点是**当前只能单人发放,需要手动重复几百次**。对吗?
86
+
87
+ > **User**: 对,就是这样。有时候甚至上千人。
88
+
89
+ > **Skill**: 更新:规模**最高 1000+ 人**。继续。
90
+ >
91
+ > **Q2**: 成功了能看到什么**数字**?比如运营操作时长下降多少、发放成功率多少?
92
+
93
+ > **User**: 至少时长降到原来的 1/10 吧,成功率不低于单发。
94
+
95
+ > **Skill**: 理解:成功标准是**单场发放耗时 ≤ 6 分钟**(当前 ≈ 1 小时)、**成功率 ≥ 单发水平**(当前 99.9%)。对吗?
96
+
97
+ > **User**: 对。
98
+
99
+ > **Skill**: **Q3**: 哪部分代码最可能被改?你知道单发是在哪个模块吗?
100
+
101
+ > **User**: 在 coupon-service 的 GrantController 里,风控在 RiskService。
102
+
103
+ > **Skill**: 理解:主要改动在 `coupon-service/GrantController`,风控逻辑 `RiskService` 需要复用。记为 L2 信号(多文件改动 + 业务核心)。
104
+
105
+ > **Skill**: **Q4**: 有没有**必须**保留、不能破坏的现状?
106
+
107
+ > **User**: 单发接口不能破坏,前端还在用。风控规则要完全一致。
108
+
109
+ > **Skill**: 理解:约束 ① 单发 API 契约不动;② 风控逻辑与单发一致(不能批量就 bypass)。继续。
110
+ >
111
+ > **Q5**: 本次明确**不做**什么?
112
+
113
+ > **User**: 不做跨店铺、不做 H5 页面改造、不做退券。
114
+
115
+ > **Skill**: 理解。准备收敛。
116
+
117
+ ---
118
+
119
+ ## 阶段 3 — 收敛
120
+
121
+ ### 动作
122
+
123
+ 1. 把 5 轮问答的信息按 6 个 section 组织(不重新问用户)
124
+ 2. 填 `recommendedLevel` 并给出判定依据
125
+ 3. 把完整 proposal.md 展示给用户一次,要求"最后确认"
126
+
127
+ ### 收敛话术
128
+
129
+ ```
130
+ 准备好 proposal.md 了,给你过一遍:
131
+
132
+ ---
133
+ [完整 proposal.md 内容]
134
+ ---
135
+
136
+ 请确认:
137
+ 1. Problem / Why now 的描述是否准确?
138
+ 2. Success criteria 的数字(6 分钟 / 1000 人 / 99.9%)能接受吗?
139
+ 3. Out of scope 的 4 条是否有遗漏?
140
+ 4. Recommended level = L2 是否同意?
141
+
142
+ 如果都 OK,我就落文件 → `devflow requirement` 进入下一步。
143
+ 有要改的告诉我,我现场改。
144
+ ```
145
+
146
+ ### 分支
147
+
148
+ | 用户反馈 | 动作 |
149
+ | --- | --- |
150
+ | "OK,落" | 写入 `proposal.md`,输出 `DONE` 状态协议 |
151
+ | "改一下 X 段" | 修改,再次整段展示,再次确认 |
152
+ | "嗯…再想想" | 记为 `NEEDS_INPUT`,提示用户考虑好后再 `devflow brainstorm --resume` |
153
+ | "算了不做了" | 建议 `devflow deliver --mode=discard --reason=...`,不要留垃圾 change 在目录里 |
154
+
155
+ ---
156
+
157
+ ## 常见的偏离 & 回正
158
+
159
+ | 偏离 | 表现 | 回正 |
160
+ | --- | --- | --- |
161
+ | **炮连珠** | 一次问 3 个子问题 | 中断,选最重要的一个问,其余后面再问 |
162
+ | **方案先行** | 问着问着变成"你想用 Redis 还是 MySQL" | 记住 brainstorm 不选方案,停,回到 Q-catalog |
163
+ | **无止境澄清** | 5 问后还问第 6、7 个 | 5 问到了,有没答清的标为 Open issue,收敛 |
164
+ | **用户反问你** | "你觉得这个功能该怎么做?" | 明确"brainstorm 期我不给方案,方案在 tech-spec";回到 Q |
165
+ | **跑题闲聊** | 聊到公司八卦 / 其他 feature | 温和拉回:"回到 <slug>,Q3 是..." |
166
+
167
+ ---
168
+
169
+ ## 单次 session 时间预算
170
+
171
+ | 阶段 | 目标时间 |
172
+ | --- | --- |
173
+ | 框架 | ≤ 30 秒 |
174
+ | 迭代 | 每轮 1-2 分钟,共 5-10 分钟 |
175
+ | 收敛 | 2-3 分钟 |
176
+ | 总计 | **10 分钟以内** |
177
+
178
+ 超时信号:用户开始表现不耐烦("你能直接写吗" / "我没时间"),说明你问得太细或太慢。
179
+
180
+ ---
181
+
182
+ ## 本文与 SKILL.md 的关系
183
+
184
+ SKILL.md 给了硬约束(一次一个 / 最多 5 个 / 6 段 proposal)。本文展示**完整对话长什么样**、偏离了怎么回正、多长时间合理。对 agent 来说,本文是"看懂 brainstorm 是一段 conversation 而不是一次 form 填写"的关键。
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: devflow-ci-fix
3
+ description: |
4
+ devflow-kit CI / PR feedback 修复专项 skill。当 PR/MR 检查失败、GitHub/GitLab review comment 未解决、Jenkins/GitHub Actions/GitLab CI 失败时触发。
5
+ 要求先读取 CI 日志和 review comment,完成归因后再进入 apply 修复,并在 verify/deliver 前形成"读 CI -> 定位日志 -> 修复 -> 重跑"闭环。
6
+ when_to_use: |
7
+ 用户说 CI 失败、PR comment、review feedback、检查没过、Jenkins 红了、GitHub Actions 失败、修一下评论时使用。deliver 前发现未通过检查也必须使用。
8
+ ---
9
+
10
+ # ci-fix / pr-feedback
11
+
12
+ CI 和 PR 反馈修复专项 skill。目标是把"红了,修一下"变成可审计闭环,避免 agent 不读日志就猜。
13
+
14
+ ## 输入
15
+
16
+ - PR/MR URL 或编号。
17
+ - CI run / job URL。
18
+ - Jenkins build URL。
19
+ - reviewer comment / unresolved thread。
20
+ - 本地 `review.md` / `reports/test-report.md` / `state.json`。
21
+
22
+ ## 接入点
23
+
24
+ | phase | 行为 |
25
+ | --- | --- |
26
+ | review 后 | 读取 unresolved comments,分类 MUST/SHOULD/NIT |
27
+ | apply | 只修复已归因的问题,不要顺手扩大 scope |
28
+ | verify | 重跑失败 job 对应的最小测试,必要时重跑全量 |
29
+ | deliver 前 | 确认 required checks 已通过或有审计原因 |
30
+
31
+ ## 执行流程
32
+
33
+ 1. 收集失败源:CI job、日志、review comment、失败测试名称。
34
+ 2. 归因,必须写清:
35
+ - `code_error`:当前 diff 引入或暴露的代码问题。
36
+ - `env_error`:环境、凭证、网络、测试数据、runner 问题。
37
+ - `flake`:偶发或竞态,需要证据。
38
+ - `baseline`:本分支前已有失败,不能伪装成已修复。
39
+ 3. 把每个问题映射到 plan task 或新增 fix task。
40
+ 4. 执行最小修复,不要重写无关模块。
41
+ 5. 重跑对应命令;如果是远端 CI,记录重跑链接或本地等价验证。
42
+ 6. 更新 `review.md` 或 `reports/test-report.md` 的修复证据。
43
+
44
+ ## 输出要求
45
+
46
+ 每轮结束必须给出下一步卡片:
47
+
48
+ ```markdown
49
+ ## 下一步
50
+ 状态:DONE | NEEDS_INPUT | BLOCKED
51
+ 摘要:CI/PR feedback 修复结论
52
+ 证据:<日志链接或测试报告>
53
+ 命令:`devflow verify finalize --slug=<slug>` 或 `devflow apply --slug=<slug> --note="fix CI"`
54
+ ```
55
+
56
+ ## 反模式
57
+
58
+ - 不读 CI 日志,直接猜测修复。
59
+ - 只看最后 20 行,忽略第一个失败。
60
+ - 把 reviewer 的 SHOULD/NIT 当 MUST 扩大重构。
61
+ - CI 仍红却 deliver。
62
+ - 本地跑了不等价命令,却声称远端 CI 已修复。
63
+
@@ -0,0 +1,25 @@
1
+ # CI / PR feedback loop
2
+
3
+ ## 归因表
4
+
5
+ | 类型 | 判断依据 | 下一步 |
6
+ | --- | --- | --- |
7
+ | code_error | 本地或远端稳定复现,和当前 diff 相关 | 回 apply 修复 |
8
+ | env_error | URL、凭证、网络、测试数据、runner 不可用 | 修环境或记录 blocked |
9
+ | flake | 重跑通过,无稳定复现,有竞态/超时迹象 | 标记 flake,必要时加稳定性修复 |
10
+ | baseline | base 分支或改动前已失败 | 记录 baseline,不要归咎当前 diff |
11
+
12
+ ## 最小证据
13
+
14
+ - 失败 job 名称和 URL。
15
+ - 首个失败测试或错误堆栈。
16
+ - 本地复现命令或说明为什么不能复现。
17
+ - 修复 commit/diff 摘要。
18
+ - 重跑结果。
19
+
20
+ ## PR comment 分类
21
+
22
+ - MUST:会导致错误、回归、安全风险、缺少必需测试。
23
+ - SHOULD:建议改进,不阻塞但应回应。
24
+ - NIT:风格和小建议,可批量处理或说明暂不处理。
25
+