@openflowjs/cli 0.2.0

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 (403) hide show
  1. package/dist/bin/openflow.d.ts +2 -0
  2. package/dist/bin/openflow.js +8 -0
  3. package/dist/bin/openflow.js.map +1 -0
  4. package/dist/commands/config.d.ts +2 -0
  5. package/dist/commands/config.js +38 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/flow.d.ts +1 -0
  8. package/dist/commands/flow.js +119 -0
  9. package/dist/commands/flow.js.map +1 -0
  10. package/dist/commands/init.d.ts +2 -0
  11. package/dist/commands/init.js +1082 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/commands/iteration.d.ts +1 -0
  14. package/dist/commands/iteration.js +131 -0
  15. package/dist/commands/iteration.js.map +1 -0
  16. package/dist/commands/mcp.d.ts +1 -0
  17. package/dist/commands/mcp.js +12 -0
  18. package/dist/commands/mcp.js.map +1 -0
  19. package/dist/commands/module.d.ts +1 -0
  20. package/dist/commands/module.js +137 -0
  21. package/dist/commands/module.js.map +1 -0
  22. package/dist/commands/plan.d.ts +1 -0
  23. package/dist/commands/plan.js +111 -0
  24. package/dist/commands/plan.js.map +1 -0
  25. package/dist/commands/plugin.d.ts +1 -0
  26. package/dist/commands/plugin.js +246 -0
  27. package/dist/commands/plugin.js.map +1 -0
  28. package/dist/commands/preflight.d.ts +8 -0
  29. package/dist/commands/preflight.js +57 -0
  30. package/dist/commands/preflight.js.map +1 -0
  31. package/dist/commands/review.d.ts +1 -0
  32. package/dist/commands/review.js +145 -0
  33. package/dist/commands/review.js.map +1 -0
  34. package/dist/commands/state.d.ts +1 -0
  35. package/dist/commands/state.js +28 -0
  36. package/dist/commands/state.js.map +1 -0
  37. package/dist/commands/validate.d.ts +1 -0
  38. package/dist/commands/validate.js +310 -0
  39. package/dist/commands/validate.js.map +1 -0
  40. package/dist/core/artifacts.d.ts +140 -0
  41. package/dist/core/artifacts.js +809 -0
  42. package/dist/core/artifacts.js.map +1 -0
  43. package/dist/core/index.d.ts +12 -0
  44. package/dist/core/index.js +27 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/core-artifacts/marketplace.json +14 -0
  47. package/dist/core-artifacts/modules.json +20 -0
  48. package/dist/core-artifacts/openflow/.claude-plugin/plugin.json +8 -0
  49. package/dist/core-artifacts/openflow/.mcp.json +9 -0
  50. package/dist/core-artifacts/openflow/agents/openflow-artifact-reviewer.md +308 -0
  51. package/dist/core-artifacts/openflow/agents/openflow-code-reviewer.md +177 -0
  52. package/dist/core-artifacts/openflow/agents/openflow-executor-deep.md +119 -0
  53. package/dist/core-artifacts/openflow/agents/openflow-executor-general.md +104 -0
  54. package/dist/core-artifacts/openflow/agents/openflow-executor-quick.md +93 -0
  55. package/dist/core-artifacts/openflow/agents/openflow-explorer.md +69 -0
  56. package/dist/core-artifacts/openflow/agents/openflow-knowledge-curator.md +89 -0
  57. package/dist/core-artifacts/openflow/commands/knowledge.md +102 -0
  58. package/dist/core-artifacts/openflow/hooks/hooks.json +33 -0
  59. package/dist/core-artifacts/openflow/scripts/openflow-drift-guard.cjs +54 -0
  60. package/dist/core-artifacts/openflow/scripts/openflow-evidence-reminder.cjs +64 -0
  61. package/dist/core-artifacts/openflow/scripts/openflow-mcp-review.cjs +27 -0
  62. package/dist/core-artifacts/openflow/scripts/openflow-write-guard.cjs +27 -0
  63. package/dist/core-artifacts/openflow/scripts/session-start.cjs +12 -0
  64. package/dist/core-artifacts/openflow/skills/brainstorm/SKILL.md +131 -0
  65. package/dist/core-artifacts/openflow/skills/cli-reference/SKILL.md +196 -0
  66. package/dist/core-artifacts/openflow/skills/finalize/SKILL.md +109 -0
  67. package/dist/core-artifacts/openflow/skills/finalize/references/summary-template.md +39 -0
  68. package/dist/core-artifacts/openflow/skills/implement/SKILL.md +296 -0
  69. package/dist/core-artifacts/openflow/skills/implement/references/working-memory.md +49 -0
  70. package/dist/core-artifacts/openflow/skills/knowledge-retrieval/SKILL.md +78 -0
  71. package/dist/core-artifacts/openflow/skills/prd/SKILL.md +173 -0
  72. package/dist/core-artifacts/openflow/skills/prd/references/level-routing.md +94 -0
  73. package/dist/core-artifacts/openflow/skills/prd/references/prd-template.md +187 -0
  74. package/dist/core-artifacts/openflow/skills/prd/references/wireframe-template.html +122 -0
  75. package/dist/core-artifacts/openflow/skills/spec/SKILL.md +341 -0
  76. package/dist/core-artifacts/openflow/skills/spec/references/context-template.md +38 -0
  77. package/dist/core-artifacts/openflow/skills/spec/references/plan-template.md +61 -0
  78. package/dist/core-artifacts/openflow/skills/spec/references/spec-template.md +187 -0
  79. package/dist/core-artifacts/openflow/skills/spec/references/tasks-template.md +99 -0
  80. package/dist/core-artifacts/openflow/skills/workflow-governance/SKILL.md +384 -0
  81. package/dist/core-artifacts/openflow/skills/workflow-governance/references/knowledge-schema.md +241 -0
  82. package/dist/core-artifacts/openflow/skills/workflow-governance/references/state-files.md +148 -0
  83. package/dist/core-artifacts/openflow/skills/workflow-governance/references/workflow.md +119 -0
  84. package/dist/core-artifacts/templates/.gitkeep +0 -0
  85. package/dist/index.d.ts +4 -0
  86. package/dist/index.js +5 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/mcp/review-mcp-server.d.ts +1 -0
  89. package/dist/mcp/review-mcp-server.js +191 -0
  90. package/dist/mcp/review-mcp-server.js.map +1 -0
  91. package/dist/mcp/review-server.d.ts +33 -0
  92. package/dist/mcp/review-server.js +340 -0
  93. package/dist/mcp/review-server.js.map +1 -0
  94. package/dist/mcp/review-ui/assets/arc-DH58vMfF.js +1 -0
  95. package/dist/mcp/review-ui/assets/architecture-YZFGNWBL-CW8o5JQi.js +1 -0
  96. package/dist/mcp/review-ui/assets/architectureDiagram-Q4EWVU46-CH35GquJ.js +36 -0
  97. package/dist/mcp/review-ui/assets/array-BCJ35G43.js +1 -0
  98. package/dist/mcp/review-ui/assets/blockDiagram-DXYQGD6D-B1JZnKG_.js +132 -0
  99. package/dist/mcp/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  100. package/dist/mcp/review-ui/assets/channel-BgHR4NPf.js +1 -0
  101. package/dist/mcp/review-ui/assets/chunk-2KRD3SAO-BkEfK915.js +1 -0
  102. package/dist/mcp/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  103. package/dist/mcp/review-ui/assets/chunk-4TB4RGXK-DbeI3ZO6.js +206 -0
  104. package/dist/mcp/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  105. package/dist/mcp/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  106. package/dist/mcp/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  107. package/dist/mcp/review-ui/assets/chunk-67CJDMHE-BKQ4iYAM.js +1 -0
  108. package/dist/mcp/review-ui/assets/chunk-7N4EOEYR-CUngSlME.js +1 -0
  109. package/dist/mcp/review-ui/assets/chunk-AA7GKIK3-BClDbXxt.js +1 -0
  110. package/dist/mcp/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  111. package/dist/mcp/review-ui/assets/chunk-CIAEETIT-THpBXcoN.js +1 -0
  112. package/dist/mcp/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
  113. package/dist/mcp/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  114. package/dist/mcp/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  115. package/dist/mcp/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  116. package/dist/mcp/review-ui/assets/chunk-FOC6F5B3-BtR_JW_A.js +1 -0
  117. package/dist/mcp/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  118. package/dist/mcp/review-ui/assets/chunk-K5T4RW27-vtP3ehR7.js +94 -0
  119. package/dist/mcp/review-ui/assets/chunk-KGLVRYIC-Di2tkB7O.js +1 -0
  120. package/dist/mcp/review-ui/assets/chunk-LIHQZDEY-DoHl9hYE.js +1 -0
  121. package/dist/mcp/review-ui/assets/chunk-ORNJ4GCN-Bff-Vc2X.js +1 -0
  122. package/dist/mcp/review-ui/assets/chunk-OYMX7WX6-Djey8TrX.js +231 -0
  123. package/dist/mcp/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  124. package/dist/mcp/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  125. package/dist/mcp/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  126. package/dist/mcp/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  127. package/dist/mcp/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  128. package/dist/mcp/review-ui/assets/classDiagram-6PBFFD2Q-DHrSK7zx.js +1 -0
  129. package/dist/mcp/review-ui/assets/classDiagram-v2-HSJHXN6E-ftN8ECVk.js +1 -0
  130. package/dist/mcp/review-ui/assets/clone-C3rjhi9V.js +1 -0
  131. package/dist/mcp/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  132. package/dist/mcp/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  133. package/dist/mcp/review-ui/assets/dagre-B4oIQbi5.js +1 -0
  134. package/dist/mcp/review-ui/assets/dagre-KV5264BT-zDsxU5-B.js +4 -0
  135. package/dist/mcp/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
  136. package/dist/mcp/review-ui/assets/diagram-5BDNPKRD-UgfFjZ4o.js +10 -0
  137. package/dist/mcp/review-ui/assets/diagram-G4DWMVQ6-Wh9VCn50.js +24 -0
  138. package/dist/mcp/review-ui/assets/diagram-MMDJMWI5-xVD3G7_9.js +43 -0
  139. package/dist/mcp/review-ui/assets/diagram-TYMM5635-AUD291P2.js +24 -0
  140. package/dist/mcp/review-ui/assets/dist-B51l2n-9.js +1 -0
  141. package/dist/mcp/review-ui/assets/erDiagram-SMLLAGMA-B83D6NXm.js +85 -0
  142. package/dist/mcp/review-ui/assets/flatten-B80WBwOJ.js +1 -0
  143. package/dist/mcp/review-ui/assets/flowDiagram-DWJPFMVM-D3lXOeHD.js +162 -0
  144. package/dist/mcp/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  145. package/dist/mcp/review-ui/assets/gitGraph-7Q5UKJZL-BfgkNWmC.js +1 -0
  146. package/dist/mcp/review-ui/assets/gitGraphDiagram-UUTBAWPF-DxqTOi4I.js +106 -0
  147. package/dist/mcp/review-ui/assets/graphlib-De-foo_H.js +1 -0
  148. package/dist/mcp/review-ui/assets/identity-CWMh0UL-.js +1 -0
  149. package/dist/mcp/review-ui/assets/index-Do0fBEfH.css +2 -0
  150. package/dist/mcp/review-ui/assets/index-uPMLqduV.js +123 -0
  151. package/dist/mcp/review-ui/assets/info-OMHHGYJF-DE18zZ5Z.js +1 -0
  152. package/dist/mcp/review-ui/assets/infoDiagram-42DDH7IO-Bnco1OGr.js +2 -0
  153. package/dist/mcp/review-ui/assets/init-BMBYmmUa.js +1 -0
  154. package/dist/mcp/review-ui/assets/ishikawaDiagram-UXIWVN3A-B89fugr9.js +70 -0
  155. package/dist/mcp/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  156. package/dist/mcp/review-ui/assets/kanban-definition-6JOO6SKY-YvTOD1Vd.js +89 -0
  157. package/dist/mcp/review-ui/assets/katex-8mXVa4k3.js +257 -0
  158. package/dist/mcp/review-ui/assets/line-BCdBO-oK.js +1 -0
  159. package/dist/mcp/review-ui/assets/linear-d7UHSQqm.js +1 -0
  160. package/dist/mcp/review-ui/assets/mermaid-parser.core-DI1-3xL2.js +4 -0
  161. package/dist/mcp/review-ui/assets/mindmap-definition-QFDTVHPH-E_mV-_Fs.js +96 -0
  162. package/dist/mcp/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
  163. package/dist/mcp/review-ui/assets/packet-4T2RLAQJ-BLPGKWDX.js +1 -0
  164. package/dist/mcp/review-ui/assets/path-CIRGLb_6.js +1 -0
  165. package/dist/mcp/review-ui/assets/pie-ZZUOXDRM-DVV6Yua9.js +1 -0
  166. package/dist/mcp/review-ui/assets/pieDiagram-DEJITSTG-Ct4JvywP.js +30 -0
  167. package/dist/mcp/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  168. package/dist/mcp/review-ui/assets/radar-PYXPWWZC-BMkQDLKp.js +1 -0
  169. package/dist/mcp/review-ui/assets/reduce-C80XcylQ.js +1 -0
  170. package/dist/mcp/review-ui/assets/requirementDiagram-MS252O5E-Bp7uSYEK.js +84 -0
  171. package/dist/mcp/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
  172. package/dist/mcp/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  173. package/dist/mcp/review-ui/assets/sequenceDiagram-FGHM5R23-BXN9jl1N.js +157 -0
  174. package/dist/mcp/review-ui/assets/src-Cxc1bu7b.js +1 -0
  175. package/dist/mcp/review-ui/assets/stateDiagram-FHFEXIEX-DZduDkIw.js +1 -0
  176. package/dist/mcp/review-ui/assets/stateDiagram-v2-QKLJ7IA2-xAWOcxSi.js +1 -0
  177. package/dist/mcp/review-ui/assets/timeline-definition-GMOUNBTQ-CLqXzNm8.js +120 -0
  178. package/dist/mcp/review-ui/assets/treeView-SZITEDCU-tPcANHUc.js +1 -0
  179. package/dist/mcp/review-ui/assets/treemap-W4RFUUIX-BGbXISSk.js +1 -0
  180. package/dist/mcp/review-ui/assets/vennDiagram-DHZGUBPP-gCnd0IYN.js +34 -0
  181. package/dist/mcp/review-ui/assets/wardley-RL74JXVD-CK3EfklM.js +1 -0
  182. package/dist/mcp/review-ui/assets/wardleyDiagram-NUSXRM2D-Dd7qMlPS.js +20 -0
  183. package/dist/mcp/review-ui/assets/xychartDiagram-5P7HB3ND-DXHXO8Zm.js +7 -0
  184. package/dist/mcp/review-ui/index.html +29 -0
  185. package/dist/mcp/studio/assets/arc-DH58vMfF.js +1 -0
  186. package/dist/mcp/studio/assets/architecture-YZFGNWBL-8xrwD39F.js +1 -0
  187. package/dist/mcp/studio/assets/architectureDiagram-Q4EWVU46-VmcLZTJf.js +36 -0
  188. package/dist/mcp/studio/assets/array-BCJ35G43.js +1 -0
  189. package/dist/mcp/studio/assets/blockDiagram-DXYQGD6D-D-1mlLYy.js +132 -0
  190. package/dist/mcp/studio/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  191. package/dist/mcp/studio/assets/channel-BgHR4NPf.js +1 -0
  192. package/dist/mcp/studio/assets/chunk-2KRD3SAO-CMDQx2WD.js +1 -0
  193. package/dist/mcp/studio/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  194. package/dist/mcp/studio/assets/chunk-4TB4RGXK-aFEYGDkJ.js +206 -0
  195. package/dist/mcp/studio/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  196. package/dist/mcp/studio/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  197. package/dist/mcp/studio/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  198. package/dist/mcp/studio/assets/chunk-67CJDMHE-DnkyJt7A.js +1 -0
  199. package/dist/mcp/studio/assets/chunk-7N4EOEYR-cnJ9dWSC.js +1 -0
  200. package/dist/mcp/studio/assets/chunk-AA7GKIK3-DjCZnyrT.js +1 -0
  201. package/dist/mcp/studio/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  202. package/dist/mcp/studio/assets/chunk-CIAEETIT-CtvXSBsf.js +1 -0
  203. package/dist/mcp/studio/assets/chunk-Dlc7tRH4.js +1 -0
  204. package/dist/mcp/studio/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  205. package/dist/mcp/studio/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  206. package/dist/mcp/studio/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  207. package/dist/mcp/studio/assets/chunk-FOC6F5B3-Ca28VADd.js +1 -0
  208. package/dist/mcp/studio/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  209. package/dist/mcp/studio/assets/chunk-K5T4RW27-pqiOLnBn.js +94 -0
  210. package/dist/mcp/studio/assets/chunk-KGLVRYIC-DZfGlR-G.js +1 -0
  211. package/dist/mcp/studio/assets/chunk-LIHQZDEY-6Ygb8Kwt.js +1 -0
  212. package/dist/mcp/studio/assets/chunk-ORNJ4GCN-DSlr7oSO.js +1 -0
  213. package/dist/mcp/studio/assets/chunk-OYMX7WX6-8z_2lCb3.js +231 -0
  214. package/dist/mcp/studio/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  215. package/dist/mcp/studio/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  216. package/dist/mcp/studio/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  217. package/dist/mcp/studio/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  218. package/dist/mcp/studio/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  219. package/dist/mcp/studio/assets/classDiagram-6PBFFD2Q-IZXxqxqM.js +1 -0
  220. package/dist/mcp/studio/assets/classDiagram-v2-HSJHXN6E-BiJKwTXT.js +1 -0
  221. package/dist/mcp/studio/assets/clone-g4CuF1Hf.js +1 -0
  222. package/dist/mcp/studio/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  223. package/dist/mcp/studio/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  224. package/dist/mcp/studio/assets/dagre-Be9o0OzC.js +1 -0
  225. package/dist/mcp/studio/assets/dagre-KV5264BT-iB6PnHLr.js +4 -0
  226. package/dist/mcp/studio/assets/defaultLocale-CIS5GEjP.js +1 -0
  227. package/dist/mcp/studio/assets/diagram-5BDNPKRD-BLfWbiEB.js +10 -0
  228. package/dist/mcp/studio/assets/diagram-G4DWMVQ6-CgcnwgVO.js +24 -0
  229. package/dist/mcp/studio/assets/diagram-MMDJMWI5-CpkXvs2p.js +43 -0
  230. package/dist/mcp/studio/assets/diagram-TYMM5635-guxqmxjJ.js +24 -0
  231. package/dist/mcp/studio/assets/dist-B51l2n-9.js +1 -0
  232. package/dist/mcp/studio/assets/erDiagram-SMLLAGMA-Lwv-cC2Y.js +85 -0
  233. package/dist/mcp/studio/assets/flatten-Dv3Z_7XJ.js +1 -0
  234. package/dist/mcp/studio/assets/flowDiagram-DWJPFMVM-BKnaFfFR.js +162 -0
  235. package/dist/mcp/studio/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  236. package/dist/mcp/studio/assets/gitGraph-7Q5UKJZL-BSdEZNVc.js +1 -0
  237. package/dist/mcp/studio/assets/gitGraphDiagram-UUTBAWPF-D4z4QWni.js +106 -0
  238. package/dist/mcp/studio/assets/graphlib-C1IZi4Cg.js +1 -0
  239. package/dist/mcp/studio/assets/identity-CWMh0UL-.js +1 -0
  240. package/dist/mcp/studio/assets/index-CyBqHDpB.js +109 -0
  241. package/dist/mcp/studio/assets/index-Dn_Ujmba.css +2 -0
  242. package/dist/mcp/studio/assets/info-OMHHGYJF-CoTx64p3.js +1 -0
  243. package/dist/mcp/studio/assets/infoDiagram-42DDH7IO-QEji23sQ.js +2 -0
  244. package/dist/mcp/studio/assets/init-BMBYmmUa.js +1 -0
  245. package/dist/mcp/studio/assets/ishikawaDiagram-UXIWVN3A-lMurmqul.js +70 -0
  246. package/dist/mcp/studio/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  247. package/dist/mcp/studio/assets/kanban-definition-6JOO6SKY-DsOybLrS.js +89 -0
  248. package/dist/mcp/studio/assets/katex-8mXVa4k3.js +257 -0
  249. package/dist/mcp/studio/assets/line-BCdBO-oK.js +1 -0
  250. package/dist/mcp/studio/assets/linear-d7UHSQqm.js +1 -0
  251. package/dist/mcp/studio/assets/mermaid-parser.core-BZtTt4qJ.js +4 -0
  252. package/dist/mcp/studio/assets/mindmap-definition-QFDTVHPH-B2yfABR9.js +96 -0
  253. package/dist/mcp/studio/assets/ordinal-BDTCIhXR.js +1 -0
  254. package/dist/mcp/studio/assets/packet-4T2RLAQJ-Bi4IG7s8.js +1 -0
  255. package/dist/mcp/studio/assets/path-CIRGLb_6.js +1 -0
  256. package/dist/mcp/studio/assets/pie-ZZUOXDRM-DsJRjVcu.js +1 -0
  257. package/dist/mcp/studio/assets/pieDiagram-DEJITSTG-JeKGFs3r.js +30 -0
  258. package/dist/mcp/studio/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  259. package/dist/mcp/studio/assets/radar-PYXPWWZC-cUDYP2Ic.js +1 -0
  260. package/dist/mcp/studio/assets/reduce-x-wchVXY.js +1 -0
  261. package/dist/mcp/studio/assets/requirementDiagram-MS252O5E-CGeLKQyn.js +84 -0
  262. package/dist/mcp/studio/assets/rough.esm-DtEqI08j.js +1 -0
  263. package/dist/mcp/studio/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  264. package/dist/mcp/studio/assets/sequenceDiagram-FGHM5R23-BbHPv3l1.js +157 -0
  265. package/dist/mcp/studio/assets/src-Cxc1bu7b.js +1 -0
  266. package/dist/mcp/studio/assets/stateDiagram-FHFEXIEX-BuBuguzn.js +1 -0
  267. package/dist/mcp/studio/assets/stateDiagram-v2-QKLJ7IA2-PQA-rl9o.js +1 -0
  268. package/dist/mcp/studio/assets/timeline-definition-GMOUNBTQ-D5xtyNE9.js +120 -0
  269. package/dist/mcp/studio/assets/treeView-SZITEDCU-DhRx0eaI.js +1 -0
  270. package/dist/mcp/studio/assets/treemap-W4RFUUIX-Btsj9DUH.js +1 -0
  271. package/dist/mcp/studio/assets/vennDiagram-DHZGUBPP-W4g15SMY.js +34 -0
  272. package/dist/mcp/studio/assets/wardley-RL74JXVD-BTpKsgl7.js +1 -0
  273. package/dist/mcp/studio/assets/wardleyDiagram-NUSXRM2D-f7wgXdwe.js +20 -0
  274. package/dist/mcp/studio/assets/xychartDiagram-5P7HB3ND-BWx9swPf.js +7 -0
  275. package/dist/mcp/studio/index.html +29 -0
  276. package/dist/review-mcp-server.d.ts +1 -0
  277. package/dist/review-mcp-server.js +178 -0
  278. package/dist/review-mcp-server.js.map +1 -0
  279. package/dist/review-server.d.ts +17 -0
  280. package/dist/review-server.js +223 -0
  281. package/dist/review-server.js.map +1 -0
  282. package/dist/review-ui/assets/arc-DH58vMfF.js +1 -0
  283. package/dist/review-ui/assets/architecture-YZFGNWBL-ChakYgFO.js +1 -0
  284. package/dist/review-ui/assets/architectureDiagram-Q4EWVU46-CcJOZCOb.js +36 -0
  285. package/dist/review-ui/assets/array-BCJ35G43.js +1 -0
  286. package/dist/review-ui/assets/blockDiagram-DXYQGD6D-H7mMv5Tv.js +132 -0
  287. package/dist/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  288. package/dist/review-ui/assets/channel-BgHR4NPf.js +1 -0
  289. package/dist/review-ui/assets/chunk-2KRD3SAO-BfA3IkPQ.js +1 -0
  290. package/dist/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  291. package/dist/review-ui/assets/chunk-4TB4RGXK-CvTeZi33.js +206 -0
  292. package/dist/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  293. package/dist/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  294. package/dist/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  295. package/dist/review-ui/assets/chunk-67CJDMHE-BQ1xNHFx.js +1 -0
  296. package/dist/review-ui/assets/chunk-7N4EOEYR-B1ORNLQP.js +1 -0
  297. package/dist/review-ui/assets/chunk-AA7GKIK3-D3pS3mnx.js +1 -0
  298. package/dist/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  299. package/dist/review-ui/assets/chunk-CIAEETIT-BDZkAY47.js +1 -0
  300. package/dist/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
  301. package/dist/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  302. package/dist/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  303. package/dist/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  304. package/dist/review-ui/assets/chunk-FOC6F5B3-DGtCX5Ra.js +1 -0
  305. package/dist/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  306. package/dist/review-ui/assets/chunk-K5T4RW27-CWpdECLF.js +94 -0
  307. package/dist/review-ui/assets/chunk-KGLVRYIC-oI2XKaPz.js +1 -0
  308. package/dist/review-ui/assets/chunk-LIHQZDEY-Dzp3G35O.js +1 -0
  309. package/dist/review-ui/assets/chunk-ORNJ4GCN-DsHuVbPU.js +1 -0
  310. package/dist/review-ui/assets/chunk-OYMX7WX6-fgjoXAXJ.js +231 -0
  311. package/dist/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  312. package/dist/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  313. package/dist/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  314. package/dist/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  315. package/dist/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  316. package/dist/review-ui/assets/classDiagram-6PBFFD2Q-D_3LhkJc.js +1 -0
  317. package/dist/review-ui/assets/classDiagram-v2-HSJHXN6E-DQRUREh5.js +1 -0
  318. package/dist/review-ui/assets/clone-BZMtGzbS.js +1 -0
  319. package/dist/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  320. package/dist/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  321. package/dist/review-ui/assets/dagre-BfNtd34y.js +1 -0
  322. package/dist/review-ui/assets/dagre-KV5264BT-D6PbxORW.js +4 -0
  323. package/dist/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
  324. package/dist/review-ui/assets/diagram-5BDNPKRD-BNAXBDig.js +10 -0
  325. package/dist/review-ui/assets/diagram-G4DWMVQ6-CIGS_5yQ.js +24 -0
  326. package/dist/review-ui/assets/diagram-MMDJMWI5-DJmcU2xZ.js +43 -0
  327. package/dist/review-ui/assets/diagram-TYMM5635-DW8XzrAz.js +24 -0
  328. package/dist/review-ui/assets/dist-B51l2n-9.js +1 -0
  329. package/dist/review-ui/assets/erDiagram-SMLLAGMA-BfUNH8zz.js +85 -0
  330. package/dist/review-ui/assets/flatten-BHh95bpO.js +1 -0
  331. package/dist/review-ui/assets/flowDiagram-DWJPFMVM-qgnlSvEC.js +162 -0
  332. package/dist/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  333. package/dist/review-ui/assets/gitGraph-7Q5UKJZL-Dn47XunR.js +1 -0
  334. package/dist/review-ui/assets/gitGraphDiagram-UUTBAWPF-BcG6fDsE.js +106 -0
  335. package/dist/review-ui/assets/graphlib-Cie4kcbC.js +1 -0
  336. package/dist/review-ui/assets/identity-CWMh0UL-.js +1 -0
  337. package/dist/review-ui/assets/index-ByplNhhd.css +2 -0
  338. package/dist/review-ui/assets/index-S7nbpFp2.js +123 -0
  339. package/dist/review-ui/assets/info-OMHHGYJF-hAukP1xW.js +1 -0
  340. package/dist/review-ui/assets/infoDiagram-42DDH7IO-FblTAfC3.js +2 -0
  341. package/dist/review-ui/assets/init-BMBYmmUa.js +1 -0
  342. package/dist/review-ui/assets/ishikawaDiagram-UXIWVN3A-BA7dJd-J.js +70 -0
  343. package/dist/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  344. package/dist/review-ui/assets/kanban-definition-6JOO6SKY-CFiOZCrT.js +89 -0
  345. package/dist/review-ui/assets/katex-8mXVa4k3.js +257 -0
  346. package/dist/review-ui/assets/line-BCdBO-oK.js +1 -0
  347. package/dist/review-ui/assets/linear-d7UHSQqm.js +1 -0
  348. package/dist/review-ui/assets/mermaid-parser.core-BHMXLuNx.js +4 -0
  349. package/dist/review-ui/assets/mindmap-definition-QFDTVHPH-CWO7vDqu.js +96 -0
  350. package/dist/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
  351. package/dist/review-ui/assets/packet-4T2RLAQJ-Btz3ryW7.js +1 -0
  352. package/dist/review-ui/assets/path-CIRGLb_6.js +1 -0
  353. package/dist/review-ui/assets/pie-ZZUOXDRM-CreBtuDj.js +1 -0
  354. package/dist/review-ui/assets/pieDiagram-DEJITSTG-X2mFk5I3.js +30 -0
  355. package/dist/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  356. package/dist/review-ui/assets/radar-PYXPWWZC-BcAPYMpV.js +1 -0
  357. package/dist/review-ui/assets/reduce-14YNCNxn.js +1 -0
  358. package/dist/review-ui/assets/requirementDiagram-MS252O5E-CDv1lxdq.js +84 -0
  359. package/dist/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
  360. package/dist/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  361. package/dist/review-ui/assets/sequenceDiagram-FGHM5R23-DCuV_bhx.js +157 -0
  362. package/dist/review-ui/assets/src-Cxc1bu7b.js +1 -0
  363. package/dist/review-ui/assets/stateDiagram-FHFEXIEX-BfE_bGUQ.js +1 -0
  364. package/dist/review-ui/assets/stateDiagram-v2-QKLJ7IA2-u1yKXWoz.js +1 -0
  365. package/dist/review-ui/assets/timeline-definition-GMOUNBTQ-Ci0uFxaT.js +120 -0
  366. package/dist/review-ui/assets/treeView-SZITEDCU-BXg6-7zY.js +1 -0
  367. package/dist/review-ui/assets/treemap-W4RFUUIX-BToYbgol.js +1 -0
  368. package/dist/review-ui/assets/vennDiagram-DHZGUBPP-DvOuThac.js +34 -0
  369. package/dist/review-ui/assets/wardley-RL74JXVD-BAYzkcK-.js +1 -0
  370. package/dist/review-ui/assets/wardleyDiagram-NUSXRM2D-YxTu6WZw.js +20 -0
  371. package/dist/review-ui/assets/xychartDiagram-5P7HB3ND-V9j-Dl7t.js +7 -0
  372. package/dist/review-ui/index.html +29 -0
  373. package/dist/run-openflow-cli.d.ts +1 -0
  374. package/dist/run-openflow-cli.js +41 -0
  375. package/dist/run-openflow-cli.js.map +1 -0
  376. package/dist/shared/args.d.ts +3 -0
  377. package/dist/shared/args.js +27 -0
  378. package/dist/shared/args.js.map +1 -0
  379. package/dist/shared/browser.d.ts +4 -0
  380. package/dist/shared/browser.js +17 -0
  381. package/dist/shared/browser.js.map +1 -0
  382. package/dist/shared/fs.d.ts +15 -0
  383. package/dist/shared/fs.js +48 -0
  384. package/dist/shared/fs.js.map +1 -0
  385. package/dist/shared/i18n.d.ts +5 -0
  386. package/dist/shared/i18n.js +65 -0
  387. package/dist/shared/i18n.js.map +1 -0
  388. package/dist/shared/locales/en-US.json +88 -0
  389. package/dist/shared/locales/zh-CN.json +88 -0
  390. package/dist/shared/plugin-registry.d.ts +36 -0
  391. package/dist/shared/plugin-registry.js +51 -0
  392. package/dist/shared/plugin-registry.js.map +1 -0
  393. package/dist/shared/project-state.d.ts +17 -0
  394. package/dist/shared/project-state.js +75 -0
  395. package/dist/shared/project-state.js.map +1 -0
  396. package/dist/shared/terminal.d.ts +10 -0
  397. package/dist/shared/terminal.js +110 -0
  398. package/dist/shared/terminal.js.map +1 -0
  399. package/package.json +28 -0
  400. package/templates/archive/.gitkeep +1 -0
  401. package/templates/config.json +11 -0
  402. package/templates/current.json +3 -0
  403. package/templates/iterations/.gitkeep +1 -0
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+ // PostToolUse hook: remind AI to record validation evidence before clearing active task.
3
+ // Triggers when product code is edited while an activeTask exists and evidence is still pending.
4
+ const { existsSync, readFileSync } = require("node:fs");
5
+ const { join } = require("node:path");
6
+
7
+ const input = JSON.parse(readFileSync("/dev/stdin", "utf8"));
8
+ const filePath = input?.tool_input?.file_path ?? "";
9
+
10
+ // Ignore edits to .openflow/ files (those are workflow artifacts, not product code)
11
+ if (/(?:^|\/)\.openflow\//.test(filePath)) process.exit(0);
12
+
13
+ // Read current project state
14
+ const cwd = process.cwd();
15
+ const currentPath = join(cwd, ".openflow", "current.json");
16
+ if (!existsSync(currentPath)) process.exit(0);
17
+
18
+ try {
19
+ const current = JSON.parse(readFileSync(currentPath, "utf8"));
20
+ if (!current.activeIteration) process.exit(0);
21
+
22
+ const iterPath = join(cwd, ".openflow", "iterations", current.activeIteration);
23
+ const flowPath = join(iterPath, "flow.json");
24
+ if (!existsSync(flowPath)) process.exit(0);
25
+
26
+ const flow = JSON.parse(readFileSync(flowPath, "utf8"));
27
+
28
+ // Only trigger if there's an active task during implement
29
+ if (flow.stage !== "implement" || !flow.activeTask) process.exit(0);
30
+
31
+ // Check if TASKS.md has pending evidence for the active task
32
+ const tasksPath = join(iterPath, "TASKS.md");
33
+ if (!existsSync(tasksPath)) process.exit(0);
34
+
35
+ const tasksContent = readFileSync(tasksPath, "utf8");
36
+ const taskId = flow.activeTask;
37
+
38
+ // Look for the task's evidence field — if it says "pending", remind
39
+ const taskSection = tasksContent.split(new RegExp(`\\b${taskId}\\b`))[1] ?? "";
40
+ const evidenceMatch = taskSection.match(/Evidence:\s*(.*)/i);
41
+ if (!evidenceMatch || evidenceMatch[1].trim().toLowerCase() !== "pending") process.exit(0);
42
+
43
+ const msg = [
44
+ `📋 Task ${taskId} is active with pending evidence.`,
45
+ "",
46
+ "Before running `openflow flow set-task -`, you must:",
47
+ " 1. Run your validation command",
48
+ " 2. Record BEFORE/AFTER results in TASKS.md Evidence field",
49
+ "",
50
+ "Do not clear the active task until evidence is recorded.",
51
+ ].join("\n");
52
+
53
+ process.stdout.write(
54
+ JSON.stringify({
55
+ hookSpecificOutput: {
56
+ hookEventName: "PostToolUse",
57
+ additionalContext: msg,
58
+ },
59
+ })
60
+ );
61
+ } catch {
62
+ // Silent exit on any error — don't block the workflow
63
+ process.exit(0);
64
+ }
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ const { spawn } = require("node:child_process");
3
+
4
+ const isWindows = process.platform === "win32";
5
+ const command = isWindows ? (process.env.ComSpec || "cmd.exe") : "npx";
6
+ const args = isWindows
7
+ ? ["/d", "/c", "npx", "-y", "@openflowjs/cli", "mcp", "review"]
8
+ : ["-y", "@openflowjs/cli", "mcp", "review"];
9
+
10
+ const child = spawn(command, args, {
11
+ stdio: "inherit",
12
+ windowsHide: true
13
+ });
14
+
15
+ child.on("exit", (code, signal) => {
16
+ if (signal) {
17
+ process.kill(process.pid, signal);
18
+ return;
19
+ }
20
+
21
+ process.exitCode = code ?? 1;
22
+ });
23
+
24
+ child.on("error", (error) => {
25
+ console.error(`[openflow] failed to start MCP server: ${error.message}`);
26
+ process.exitCode = 1;
27
+ });
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ // PostToolUse hook: remind AI to use openflow CLI instead of directly writing state files.
3
+ const input = JSON.parse(require("node:fs").readFileSync("/dev/stdin", "utf8"));
4
+ const filePath = input?.tool_input?.file_path ?? "";
5
+
6
+ const STATE_FILES = /(?:^|\/)\.openflow\/(?:current\.json|iterations\/[^/]+\/flow\.json)$/;
7
+ if (!STATE_FILES.test(filePath)) process.exit(0);
8
+
9
+ const msg = [
10
+ `Direct write detected: ${filePath}`,
11
+ "For future state changes, prefer the openflow CLI:",
12
+ " openflow flow set-stage <stage>",
13
+ " openflow flow set-gate <gate>",
14
+ " openflow flow set-task <id|->",
15
+ " openflow flow inc-revision",
16
+ " openflow iteration create <YYYY-MM-DD-slug>",
17
+ " openflow iteration close",
18
+ ].join("\n");
19
+
20
+ process.stdout.write(
21
+ JSON.stringify({
22
+ hookSpecificOutput: {
23
+ hookEventName: "PostToolUse",
24
+ additionalContext: msg,
25
+ },
26
+ })
27
+ );
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ const { execSync } = require("node:child_process");
3
+
4
+ try {
5
+ const output = execSync("pnpm exec openflow state --context", {
6
+ encoding: "utf8",
7
+ stdio: ["ignore", "pipe", "ignore"],
8
+ }).trim();
9
+ if (output) console.log(output);
10
+ } catch {
11
+ // openflow not available or no active state — silent exit
12
+ }
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: openflow-brainstorm
3
+ description: Guide requirement discussions and progressively write PRD drafts.
4
+ depends_on: []
5
+ ---
6
+
7
+ # OpenFlow Brainstorm
8
+
9
+ Guide the user through structured discussion to progressively fill a PRD draft. Ask only the single most valuable question at a time, choosing the next discussion direction based on which sections have already been filled. Discussions can be interrupted and resumed.
10
+
11
+ ## Prerequisites
12
+
13
+ 1. Check whether a PRD ID parameter was passed at invocation:
14
+ - **With parameter**: treat as resuming an existing discussion. Jump to the "Resume" flow.
15
+ - **Without parameter**: use `AskUserQuestion` to prompt the user for a PRD ID in the format `YYYY-MM-DD-short-slug` (e.g., `2025-05-12-user-auth`).
16
+
17
+ 2. Read `.openflow/config.json` and extract the `language` field. Use this language for all generated content and user-facing questions. If absent, default to `en-US`.
18
+
19
+ ## Draft Creation
20
+
21
+ Once a new PRD ID is determined, execute the following steps:
22
+
23
+ 1. Create the directory `.openflow/prds/<id>/`.
24
+
25
+ 2. Use the Write tool to create `prd.json`:
26
+
27
+ ```json
28
+ {
29
+ "id": "<id>",
30
+ "status": "draft",
31
+ "revision": 0,
32
+ "linkedIteration": null,
33
+ "assets": [],
34
+ "createdAt": "<now>",
35
+ "updatedAt": "<now>"
36
+ }
37
+ ```
38
+
39
+ Use ISO 8601 format for `<now>`, e.g., `2025-05-12T10:30:00+08:00`.
40
+
41
+ 3. Use the Write tool to create `draft.md` with a template containing 5 empty sections:
42
+
43
+ ```markdown
44
+ # PRD Draft: <title>
45
+
46
+ ## Background & Motivation
47
+ _(To be filled through discussion)_
48
+
49
+ ## Target Users
50
+ _(Brief sketches of who will use this — role, context, key pain point)_
51
+
52
+ ## Core Scenarios
53
+ _(To be filled through discussion)_
54
+
55
+ ## Key Constraints
56
+ _(To be filled through discussion)_
57
+
58
+ ## Initial Solution Ideas
59
+ _(To be filled through discussion)_
60
+
61
+ ## Decisions
62
+ _(Key product decisions made during discussion. Format: each entry has "Topic / Options Considered / Chosen / Rationale". Capture decisions as they're made, not at the end.)_
63
+ ```
64
+
65
+ Derive `<title>` from the slug portion of the PRD ID (e.g., `user-auth` becomes `User Auth`), or let the user specify it during the first discussion round.
66
+
67
+ 4. After creation, enter the "Discussion Loop".
68
+
69
+ ## Discussion Loop
70
+
71
+ Each discussion round follows this flow:
72
+
73
+ 1. Read `draft.md` and analyze the fill status of the sections (Background & Motivation, Target Users, Core Scenarios, Key Constraints, Initial Solution Ideas).
74
+
75
+ 2. Select the next section to discuss by priority. Priority order:
76
+ - Background & Motivation
77
+ - Target Users
78
+ - Core Scenarios
79
+ - Key Constraints
80
+ - Initial Solution Ideas
81
+
82
+ 3. Use `AskUserQuestion` to ask one high-value question related to that section. The question should guide the user toward specific, actionable information rather than vague descriptions.
83
+
84
+ 4. After receiving the user's answer, use the Edit tool to update the corresponding section in `draft.md`. Organize the user's answer into clear, structured text, replacing the `_(To be filled through discussion)_` placeholder or appending to existing content.
85
+
86
+ 5. **Capture decisions**: whenever the discussion settles a choice between options (e.g., "use VitePress vs Docusaurus", "support 2 languages vs 1"), append an entry to the `## Decisions` section in this format:
87
+
88
+ ```markdown
89
+ - **<Topic>**
90
+ - Options Considered: <A / B / C>
91
+ - Chosen: <option>
92
+ - Rationale: <why>
93
+ ```
94
+
95
+ Do this immediately after a decision is made, not at the end. The Decisions section becomes the input for the PRD's Decision Log.
96
+
97
+ 6. Update the `updatedAt` field in `prd.json` to the current time.
98
+
99
+ 7. When all 5 main sections (excluding Decisions, which grows incrementally) have substantive content (not placeholders, not single-sentence vague descriptions), proactively suggest ending the discussion. Use `AskUserQuestion` with the following options:
100
+ - "Continue discussing the next section"
101
+ - "End discussion and generate PRD"
102
+
103
+ If the user chooses to continue, return to step 1 to re-evaluate each section's status and dig deeper into sections that need more content.
104
+
105
+ If the user chooses to end, proceed to the "Completion Handoff".
106
+
107
+ ## Resume
108
+
109
+ When the user resumes an existing PRD discussion:
110
+
111
+ 1. Read the contents of `.openflow/prds/<id>/draft.md`.
112
+
113
+ 2. Analyze the fill status of each section:
114
+ - Whether it still contains the `_(To be filled through discussion)_` placeholder
115
+ - Whether the content is substantive enough (not single-sentence vague descriptions)
116
+
117
+ 3. Report the current status to the user: which sections are filled and which still need discussion.
118
+
119
+ 4. Continue the "Discussion Loop" starting from the first section with insufficient content.
120
+
121
+ ## Completion Handoff
122
+
123
+ After the discussion is complete, inform the user:
124
+
125
+ "PRD draft is complete. Run `/openflow-prd <id>` to generate the formal PRD document."
126
+
127
+ Do not automatically execute subsequent commands. Only provide clear next-step instructions.
128
+
129
+ ## Subagent Dispatch
130
+
131
+ None. Brainstorm is a purely interactive skill executed directly by the main agent. No subagent dispatch.
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: openflow-cli-reference
3
+ description: Reference for all openflow shell commands. Use when you need to call the CLI during spec, implement, or finalize phases, or when diagnosing state and validation errors.
4
+ ---
5
+
6
+ # OpenFlow CLI Reference
7
+
8
+ The `openflow` binary is a **supporting tool** for the AI workflow. The actual workflow phases live in `/openflow-spec`, `/openflow-implement`, and `/openflow-finalize`. The CLI handles infrastructure: installation, state inspection, artifact mutation, validation, and the review UI server.
9
+
10
+ Never call `openflow spec`, `openflow implement`, or `openflow finalize` from the shell — they are not shell commands and will throw.
11
+
12
+ ---
13
+
14
+ ## Installation
15
+
16
+ ```
17
+ openflow init
18
+ openflow init --adapter claude-code [--target <path>] [--language zh-CN|en-US] [--force]
19
+ openflow init --adapter claude-code --global [--force]
20
+ ```
21
+
22
+ - No `--target`: installs into the current directory (`.claude/` + `.openflow/`).
23
+ - `--global`: installs only adapter files into `~/.claude/`. Does not create `.openflow/` or `.mcp.json`.
24
+ - `--force`: overwrites existing files. Without it, existing files are skipped.
25
+ - `--language`: sets `.openflow/config.json` language on first install. Prompts interactively if omitted on TTY.
26
+
27
+ ```
28
+ openflow update [--target <path>] [--dry-run] [--force]
29
+ ```
30
+
31
+ Refreshes managed `.claude/` adapter files (commands, skills, agents, hooks) and merges missing defaults into `config.json`. Files the user has edited since install are flagged `conflict` and skipped unless `--force` is passed. Use `--dry-run` to preview without writing.
32
+
33
+ ---
34
+
35
+ ## Configuration
36
+
37
+ Language is set during `openflow init` (interactive prompt or `--language` flag). Config is stored in `.openflow/config.json`.
38
+
39
+ ---
40
+
41
+ ## Project State
42
+
43
+ ```
44
+ openflow state [--context]
45
+ ```
46
+
47
+ - Default (no flag): prints the full project state as JSON. Fields: `language`, `defaultLevel`, `activeIteration`, `iterationPath`, `stage`, `level`, `gate`, `revision`, `activeTask`.
48
+ - `--context`: prints `STATE.md` of the active iteration as plain text with a hint about which slash command to use next. This is what the `session-start` hook injects into the AI context window at startup.
49
+
50
+ ```
51
+ openflow preflight --command spec|implement|finalize
52
+ ```
53
+
54
+ Validates whether a phase can proceed. Returns JSON with:
55
+ - `action`: `"create"` | `"continue"` | `"ok"`
56
+ - `valid`: `true` | `false`
57
+ - `error`: reason when `valid` is `false`
58
+
59
+ Exits with code 1 when `valid` is `false`. Always call this at the start of each slash command before doing any work.
60
+
61
+ ---
62
+
63
+ ## Flow Artifact Mutations
64
+
65
+ ```
66
+ openflow flow set-stage <stage>
67
+ openflow flow set-gate <gate>
68
+ openflow flow set-task <T-###|->
69
+ openflow flow inc-revision
70
+ openflow flow restart-spec
71
+ ```
72
+
73
+ All four base commands mutate `flow.json` of the active iteration atomically and update `updatedAt`.
74
+
75
+ | Command | When to use |
76
+ |---------|-------------|
77
+ | `set-stage <stage>` | Transition the iteration through its lifecycle: `spec` → `implement` → `finalize` → `archived` |
78
+ | `set-gate <gate>` | Mark workflow gate status: `draft`, `review_required`, `changes_requested`, `approved`, `skipped`, `blocked` |
79
+ | `set-task <T-###>` | Record which task is actively being worked on |
80
+ | `set-task -` | Clear the active task after a task slice is complete |
81
+ | `inc-revision` | Bump revision counter and reset gate to `draft` when reworking a rejected spec |
82
+ | `restart-spec` | Atomic rollback to spec stage for drift recovery |
83
+
84
+ Valid stages: `spec`, `blocked`, `implement`, `finalize`, `archived`
85
+ Valid gates: `draft`, `review_required`, `changes_requested`, `approved`, `skipped`, `blocked`
86
+
87
+ ### `openflow flow restart-spec`
88
+
89
+ Atomic rollback to Spec stage for drift recovery.
90
+
91
+ **Usage:**
92
+ ```bash
93
+ openflow flow restart-spec --reason "<drift reason>" --task <T-###>
94
+ ```
95
+
96
+ **Parameters:**
97
+ - `--reason` (required): Description of the spec drift reason
98
+ - `--task` (required): Task ID that triggered the drift
99
+
100
+ **Behavior:**
101
+ 1. Increment flow.json revision
102
+ 2. Set stage to "spec"
103
+ 3. Set gate to "draft"
104
+ 4. Clear activeTask
105
+ 5. Append Drift Log entry to STATE.md (with date, reason, source task ID)
106
+
107
+ ---
108
+
109
+ ## Iteration Lifecycle
110
+
111
+ ```
112
+ openflow iteration create <YYYY-MM-DD-slug>
113
+ openflow iteration close
114
+ ```
115
+
116
+ - `create`: makes the directory `.openflow/iterations/<id>/` and writes `current.json` with `activeIteration` pointing to it.
117
+ - `close`: writes `current.json` with `activeIteration: null`. Call this at the end of finalize after moving the folder.
118
+
119
+ ---
120
+
121
+ ## Validation
122
+
123
+ ```
124
+ openflow validate [--flow <path>] [--json]
125
+ ```
126
+
127
+ Reads all required artifacts (`flow.json`, `STATE.md`, `SPEC.md`, `CONTEXT.md`, `TASKS.md`) and optional artifacts (`config.json`, reviews, `SUMMARY.md`, extension results), then runs schema validation. Exits with code 1 on any error-severity issue.
128
+
129
+ - `--flow .openflow`: resolves the active iteration from `current.json` automatically.
130
+ - `--flow .openflow/iterations/<id>`: validates a specific iteration directory directly.
131
+ - `--json`: outputs `{ valid, issues }` as JSON instead of human-readable output.
132
+
133
+ Run `openflow validate` after writing artifacts and before triggering review.
134
+
135
+ ---
136
+
137
+ ## Review UI
138
+
139
+ ```
140
+ openflow review [--flow .openflow] [--mode spec|prd] [--port 3456] [--wait] [--json] [--no-open]
141
+ ```
142
+
143
+ Starts the HTTP Review UI (React SPA). This is the **fallback** path when MCP is not available. Prefer the MCP tools (`openflow_review_start` / `openflow_review_wait`) when running inside an AI tool.
144
+
145
+ - `--wait`: block until a review is submitted, then exit. Without it, the server runs until Ctrl+C.
146
+ - `--no-open`: suppress automatic browser launch.
147
+ - `--json`: emit `{ url, flow, mode }` as JSON to stdout (suppresses browser launch by default).
148
+
149
+ ```
150
+ openflow mcp review
151
+ ```
152
+
153
+ Starts the MCP stdio server. This is wired up automatically via `.mcp.json` so AI tools can call review tools without launching a shell command. Do not call this manually.
154
+
155
+ ---
156
+
157
+ ## Common Patterns
158
+
159
+ **Start of every slash command:**
160
+ ```
161
+ openflow preflight --command <spec|implement|finalize>
162
+ ```
163
+ Parse the JSON. Stop immediately if `valid` is `false`.
164
+
165
+ **After creating a new iteration (spec phase):**
166
+ ```
167
+ openflow iteration create YYYY-MM-DD-slug
168
+ openflow state # get iterationPath for subsequent commands
169
+ ```
170
+
171
+ **After writing artifacts:**
172
+ ```
173
+ openflow validate --flow .openflow/iterations/<id>
174
+ ```
175
+
176
+ **During implement — task lifecycle:**
177
+ ```
178
+ openflow flow set-task T-001
179
+ # ... implement ...
180
+ openflow flow set-task -
181
+ openflow validate --flow .openflow/iterations/<id>
182
+ ```
183
+
184
+ **Triggering review (when MCP is available, prefer this):**
185
+ ```
186
+ openflow_review_start → openflow_review_wait → openflow_review_close
187
+ ```
188
+
189
+ **Completing finalize:**
190
+ ```
191
+ openflow flow set-stage archived
192
+ openflow flow set-gate approved
193
+ openflow validate --flow <iterationPath>
194
+ # mv iterationPath to .openflow/archive/<id>
195
+ openflow iteration close
196
+ ```
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: openflow-finalize
3
+ description: Use for the OpenFlow finalize phase: final validation, knowledge capture, review, commit support, and archival.
4
+ ---
5
+
6
+ # OpenFlow Finalize
7
+
8
+ Close the flow so `.openflow/` explains what shipped, how it was validated, what remains, and what knowledge should persist.
9
+
10
+ This skill depends on:
11
+
12
+ - `openflow-workflow-governance` for level, stage, and gate rules.
13
+ - `openflow-cli-reference` for exact CLI command syntax and options.
14
+
15
+ ## Inputs
16
+
17
+ - `.openflow/current.json`
18
+ - active iteration `flow.json`
19
+ - active iteration `STATE.md`
20
+ - active iteration `SPEC.md`
21
+ - active iteration `TASKS.md`
22
+ - active iteration `CONTEXT.md`
23
+ - active iteration `PLAN.md` when present
24
+ - active iteration `reviews/spec-review.json`
25
+ - active iteration `extensions/**/result.json`
26
+ - Repository diff and validation output
27
+
28
+ ## Archive Gate
29
+
30
+ Before finalize:
31
+
32
+ - Run `openflow validate --flow .openflow/iterations/<iteration-id>`.
33
+ - Confirm all completed tasks have evidence.
34
+ - Confirm incomplete tasks are explicitly marked `deferred:`, `blocked:`, or `waived:` with rationale.
35
+ - Confirm required extension results passed or have explicit accepted deferral.
36
+ - Run final relevant project validation.
37
+ - For code changes with behavior impact, use `code-reviewer` (mode: compliance) followed by `code-reviewer` (mode: quality) for complex reviews. Use `artifact-reviewer` (mode: docs) when documentation impact warrants it.
38
+ - Use `artifact-reviewer` (mode: validation) when evidence quality is uncertain.
39
+
40
+ ## Flow
41
+
42
+ 1. Run `openflow preflight --command finalize` and parse the JSON output. If `valid` is `false`, stop and tell the user what went wrong in plain language — do not show the raw preflight error.
43
+ 2. Use `language` and `iterationPath` from the output for all subsequent steps.
44
+ 3. Read `flow.json`, `STATE.md`, `SPEC.md`, `TASKS.md`, `CONTEXT.md`, optional `PLAN.md`, `reviews/spec-review.json`, extension results, and current repository status from `iterationPath`.
45
+ 4. Run `openflow validate --flow .openflow/iterations/<iteration-id>`.
46
+ 5. Confirm every completed task has evidence and every required extension passed or has an accepted deferral.
47
+ 6. Confirm every incomplete task is explicitly deferred, blocked, or waived with rationale before final finalize.
48
+ 7. Run final project validation relevant to the diff.
49
+ 8. Write `SUMMARY.md` with shipped changes, validation evidence, deferred items, and durable knowledge. Use the template in `references/summary-template.md`.
50
+ 9. Use `artifact-reviewer` (mode: validation) when task evidence or extension results need a final readiness check.
51
+ 10. **Extract structured knowledge** to `.openflow/knowledge/`, using `WORKING_MEMORY.md` as the primary source:
52
+ - **Primary source — WORKING_MEMORY.md** (located at `.openflow/iterations/<iteration-id>/WORKING_MEMORY.md`):
53
+ - Read the three append-only sections:
54
+ - `## Execution Observations` → extract potential `decision` and `guideline` knowledge from execution observations.
55
+ - `## Knowledge Candidates` → use directly as candidate input for knowledge extraction.
56
+ - `## Blockers and Resolutions` → extract `pitfall` knowledge from blocker descriptions and their resolutions.
57
+ - **Fallback source — SUMMARY.md**: use `SUMMARY.md` only when `WORKING_MEMORY.md` does not exist or all three append-only sections are empty.
58
+ - **Call `knowledge-curator` Agent** for each candidate knowledge entry to perform:
59
+ - **Dedup check** (`dedup` operation): compare summary + tags with existing entries in `.openflow/knowledge/` of the same type. Skip if a duplicate is found, or merge into the existing entry.
60
+ - **Schema validation** (`validate` operation): ensure frontmatter conforms to the schema defined in `workflow-governance` `references/knowledge-schema.md`.
61
+ - **Create knowledge files by type** (follow file format in `workflow-governance` `references/knowledge-schema.md`):
62
+ - `decision` → `.openflow/knowledge/decisions/NNN-<slug>.md`
63
+ - `guideline` → `.openflow/knowledge/guidelines/NNN-<slug>.md`
64
+ - `pitfall` → `.openflow/knowledge/pitfalls/NNN-<slug>.md`
65
+ - `process` → `.openflow/knowledge/processes/NNN-<slug>.md`
66
+ - **Update indexes** after creating knowledge files:
67
+ - Regenerate `.openflow/knowledge/catalog.json` from all knowledge files.
68
+ - Update the per-type `index.json` in each affected type directory.
69
+ - Regenerate `.openflow/knowledge/CATALOG.md` from the updated catalog data.
70
+ - Only extract when the extraction criteria in `workflow-governance` are met.
71
+ - If no durable knowledge meets extraction criteria, skip this step.
72
+ 11. Verify knowledge files were created correctly by checking the format follows the `workflow-governance` `references/knowledge-schema.md` specification.
73
+ 12. Run `openflow flow set-stage archived` and `openflow flow set-gate approved`, then run `openflow validate --flow <iterationPath>`.
74
+ 13. Move the iteration folder to the archive:
75
+ ```bash
76
+ mv .openflow/iterations/<iteration-id> .openflow/archive/<iteration-id>
77
+ ```
78
+ 14. Run `openflow iteration close` to clear `activeIteration`.
79
+ 15. Produce commit support according to the project policy.
80
+
81
+ Do not finalize if validation is failing.
82
+ Write generated OpenFlow documents in the resolved language; default to `en-US` if not configured.
83
+ Do not use OpenFlow MCP for workflow state management. MCP is only for Review UI interaction; write `.openflow` artifacts directly and validate them with `openflow validate`.
84
+
85
+ ## Summary Rules
86
+
87
+ Write active iteration `SUMMARY.md` with:
88
+
89
+ - Shipped Changes
90
+ - Validation Evidence
91
+ - Deferred Items
92
+ - Durable Knowledge
93
+
94
+ Durable knowledge should include project conventions, decisions, domain language, and recurring failure modes worth preserving.
95
+
96
+ Extract knowledge files only when there is durable knowledge with future reuse value. Do not create long-term knowledge for ordinary task logs.
97
+
98
+ ## Commit Support
99
+
100
+ Follow the host repository policy. If committing is not appropriate, produce a commit message draft and list the files that changed.
101
+
102
+ ## User-Facing Output
103
+
104
+ When communicating with the user:
105
+
106
+ - Do not show raw `openflow validate` or `openflow preflight` error codes, field names, or schema rules. Translate errors into plain language (e.g. "There is a formatting issue in SUMMARY.md").
107
+ - Do not explain internal OpenFlow state machine concepts (gates, stages, revisions, level routing rationale) unless the user asks.
108
+ - Do not output "Insight" blocks about OpenFlow's internal mechanics, validation rules, or artifact schemas.
109
+ - Keep status updates short: what was archived and what the user should do next.
@@ -0,0 +1,39 @@
1
+ # SUMMARY.md
2
+
3
+ `SUMMARY.md` is the final human-readable closeout for `/openflow-finalize`.
4
+
5
+ Location:
6
+
7
+ ```text
8
+ .openflow/iterations/<iteration-id>/SUMMARY.md
9
+ ```
10
+
11
+ Template:
12
+
13
+ ```markdown
14
+ # Summary
15
+
16
+ ## Shipped Changes
17
+
18
+ - <what changed, grouped by user-visible or system outcome>
19
+
20
+ ## Validation Evidence
21
+
22
+ - <commands, test results, screenshots, review signals, or extension results>
23
+
24
+ ## Deferred Items
25
+
26
+ - <deferred, blocked, or waived work with rationale>
27
+
28
+ ## Durable Knowledge
29
+
30
+ - <project conventions, decisions, domain language, or recurring failure modes worth preserving>
31
+ ```
32
+
33
+ Rules:
34
+
35
+ - Write the summary before final archive validation.
36
+ - Do not repeat every implementation detail; summarize outcomes and evidence.
37
+ - Every completed task in `TASKS.md` should be represented by validation evidence here.
38
+ - Deferred items must match unchecked tasks or known follow-ups.
39
+ - Durable knowledge is optional in substance but the heading is required. Use `None identified.` when there is nothing worth preserving.