claude-code-workflow 7.2.28 → 7.2.30

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 (348) hide show
  1. package/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json +2 -2
  2. package/.ccw/workflows/cli-templates/schemas/task-schema.json +14 -7
  3. package/.claude/agents/action-planning-agent.md +7 -4
  4. package/.claude/agents/cli-explore-agent.md +77 -63
  5. package/.claude/agents/cli-lite-planning-agent.md +11 -10
  6. package/.claude/agents/issue-plan-agent.md +421 -426
  7. package/.claude/commands/workflow/spec/setup.md +1 -1
  8. package/.claude/skills/ccw-chain/SKILL.md +119 -0
  9. package/.claude/skills/ccw-chain/chains/ccw-cycle.json +21 -0
  10. package/.claude/skills/ccw-chain/chains/ccw-exploration.json +47 -0
  11. package/.claude/skills/ccw-chain/chains/ccw-issue.json +33 -0
  12. package/.claude/skills/ccw-chain/chains/ccw-lightweight.json +57 -0
  13. package/.claude/skills/ccw-chain/chains/ccw-main.json +52 -0
  14. package/.claude/skills/ccw-chain/chains/ccw-standard.json +39 -0
  15. package/.claude/skills/ccw-chain/chains/ccw-team.json +10 -0
  16. package/.claude/skills/ccw-chain/chains/ccw-with-file.json +31 -0
  17. package/.claude/skills/ccw-chain/phases/analyze-with-file.md +788 -0
  18. package/.claude/skills/ccw-chain/phases/brainstorm/SKILL.md +408 -0
  19. package/.claude/skills/ccw-chain/phases/brainstorm/phases/01-mode-routing.md +207 -0
  20. package/.claude/skills/ccw-chain/phases/brainstorm/phases/02-artifacts.md +567 -0
  21. package/.claude/skills/ccw-chain/phases/brainstorm/phases/03-role-analysis.md +748 -0
  22. package/.claude/skills/ccw-chain/phases/brainstorm/phases/04-synthesis.md +827 -0
  23. package/.claude/skills/ccw-chain/phases/brainstorm-with-file.md +482 -0
  24. package/.claude/skills/ccw-chain/phases/collaborative-plan-with-file.md +639 -0
  25. package/.claude/skills/ccw-chain/phases/debug-with-file.md +656 -0
  26. package/.claude/skills/ccw-chain/phases/integration-test-cycle.md +936 -0
  27. package/.claude/skills/ccw-chain/phases/issue-convert-to-plan.md +720 -0
  28. package/.claude/skills/ccw-chain/phases/issue-discover.md +483 -0
  29. package/.claude/skills/ccw-chain/phases/issue-execute.md +629 -0
  30. package/.claude/skills/ccw-chain/phases/issue-from-brainstorm.md +382 -0
  31. package/.claude/skills/ccw-chain/phases/issue-plan.md +343 -0
  32. package/.claude/skills/ccw-chain/phases/issue-queue.md +464 -0
  33. package/.claude/skills/ccw-chain/phases/refactor-cycle.md +852 -0
  34. package/.claude/skills/ccw-chain/phases/review-cycle/SKILL.md +132 -0
  35. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-fix.md +760 -0
  36. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-module.md +764 -0
  37. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-session.md +775 -0
  38. package/.claude/skills/ccw-chain/phases/roadmap-with-file.md +544 -0
  39. package/.claude/skills/ccw-chain/phases/spec-generator/SKILL.md +338 -0
  40. package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-5-requirement-clarification.md +404 -0
  41. package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-discovery.md +257 -0
  42. package/.claude/skills/ccw-chain/phases/spec-generator/phases/02-product-brief.md +274 -0
  43. package/.claude/skills/ccw-chain/phases/spec-generator/phases/03-requirements.md +184 -0
  44. package/.claude/skills/ccw-chain/phases/spec-generator/phases/04-architecture.md +248 -0
  45. package/.claude/skills/ccw-chain/phases/spec-generator/phases/05-epics-stories.md +178 -0
  46. package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-5-auto-fix.md +144 -0
  47. package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-readiness-check.md +480 -0
  48. package/.claude/skills/ccw-chain/phases/team-planex.md +123 -0
  49. package/.claude/skills/ccw-chain/phases/ui-design-explore-auto.md +678 -0
  50. package/.claude/skills/ccw-chain/phases/unified-execute-with-file.md +870 -0
  51. package/.claude/skills/ccw-chain/phases/workflow-execute/SKILL.md +625 -0
  52. package/.claude/skills/ccw-chain/phases/workflow-execute/phases/06-review.md +215 -0
  53. package/.claude/skills/ccw-chain/phases/workflow-lite-plan.md +616 -0
  54. package/.claude/skills/ccw-chain/phases/workflow-multi-cli-plan.md +424 -0
  55. package/.claude/skills/ccw-chain/phases/workflow-plan/SKILL.md +466 -0
  56. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/01-session-discovery.md +99 -0
  57. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/02-context-gathering.md +338 -0
  58. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/03-conflict-resolution.md +422 -0
  59. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/04-task-generation.md +440 -0
  60. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/05-plan-verify.md +395 -0
  61. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/06-replan.md +594 -0
  62. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/SKILL.md +527 -0
  63. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/01-session-discovery.md +57 -0
  64. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/02-context-gathering.md +407 -0
  65. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/03-test-coverage-analysis.md +172 -0
  66. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -0
  67. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/05-tdd-task-generation.md +473 -0
  68. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/06-tdd-structure-validation.md +189 -0
  69. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/07-tdd-verify.md +635 -0
  70. package/.claude/skills/ccw-chain/phases/workflow-test-fix/SKILL.md +482 -0
  71. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/01-session-start.md +60 -0
  72. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/02-test-context-gather.md +493 -0
  73. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/03-test-concept-enhanced.md +150 -0
  74. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/04-test-task-generate.md +346 -0
  75. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/05-test-cycle-execute.md +538 -0
  76. package/.claude/skills/ccw-chain/specs/auto-mode.md +47 -0
  77. package/.claude/skills/ccw-chain/specs/intent-patterns.md +60 -0
  78. package/.claude/skills/chain-loader/SKILL.md +78 -0
  79. package/.claude/skills/chain-loader/phases/01-analyze-skill.md +53 -0
  80. package/.claude/skills/chain-loader/phases/02-design-graph.md +73 -0
  81. package/.claude/skills/chain-loader/phases/03-generate-validate.md +75 -0
  82. package/.claude/skills/chain-loader/specs/chain-schema.md +99 -0
  83. package/.claude/skills/chain-loader/specs/design-patterns.md +99 -0
  84. package/.claude/skills/chain-loader/templates/chain-json.md +63 -0
  85. package/.claude/skills/review-cycle/phases/review-module.md +764 -764
  86. package/.claude/skills/review-cycle/phases/review-session.md +775 -775
  87. package/.claude/skills/workflow-multi-cli-plan/SKILL.md +2 -2
  88. package/.claude/skills/workflow-plan/phases/03-conflict-resolution.md +422 -422
  89. package/.claude/skills/workflow-plan/phases/05-plan-verify.md +395 -395
  90. package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +407 -407
  91. package/.claude/skills/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -426
  92. package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +493 -493
  93. package/.codex/skills/brainstorm/SKILL.md +3 -3
  94. package/.codex/skills/clean/SKILL.md +3 -3
  95. package/.codex/skills/issue-discover/SKILL.md +13 -13
  96. package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
  97. package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
  98. package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
  99. package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
  100. package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
  101. package/.codex/skills/review-cycle/SKILL.md +10 -10
  102. package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
  103. package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
  104. package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
  105. package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
  106. package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
  107. package/.codex/skills/spec-generator/README.md +1 -1
  108. package/.codex/skills/spec-generator/SKILL.md +184 -88
  109. package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
  110. package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
  111. package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
  112. package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
  113. package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
  114. package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
  115. package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
  116. package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
  117. package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
  118. package/.codex/skills/spec-setup/SKILL.md +4 -4
  119. package/.codex/skills/workflow-plan/SKILL.md +6 -6
  120. package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
  121. package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
  122. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
  123. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
  124. package/README.md +14 -0
  125. package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -1
  126. package/ccw/dist/core/routes/litellm-api-routes.js +0 -23
  127. package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -1
  128. package/ccw/dist/tools/chain-loader.d.ts +10 -0
  129. package/ccw/dist/tools/chain-loader.d.ts.map +1 -0
  130. package/ccw/dist/tools/chain-loader.js +642 -0
  131. package/ccw/dist/tools/chain-loader.js.map +1 -0
  132. package/ccw/dist/tools/index.d.ts.map +1 -1
  133. package/ccw/dist/tools/index.js +2 -0
  134. package/ccw/dist/tools/index.js.map +1 -1
  135. package/ccw/dist/tools/json-builder.js +20 -0
  136. package/ccw/dist/tools/json-builder.js.map +1 -1
  137. package/ccw/dist/types/chain-types.d.ts +72 -0
  138. package/ccw/dist/types/chain-types.d.ts.map +1 -0
  139. package/ccw/dist/types/chain-types.js +5 -0
  140. package/ccw/dist/types/chain-types.js.map +1 -0
  141. package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js → AlertDialog-exlTDW81.js} +3 -3
  142. package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js.map → AlertDialog-exlTDW81.js.map} +1 -1
  143. package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js → AnalysisPage-cgV9LfAI.js} +2 -2
  144. package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
  145. package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
  146. package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
  147. package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js → CliModeToggle-Be9xsPiv.js} +2 -2
  148. package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
  149. package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
  150. package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
  151. package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js → CliViewerPage-BrE-oyEq.js} +2 -2
  152. package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
  153. package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js → CodexLensPage-Cd3nrC93.js} +2 -2
  154. package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
  155. package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js → Collapsible-DXFl3VKF.js} +2 -2
  156. package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
  157. package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
  158. package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
  159. package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js → DeepWikiPage-CpDxtmRX.js} +2 -2
  160. package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
  161. package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js → EndpointsPage-BchjWe7s.js} +2 -2
  162. package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
  163. package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js → ExplorerPage-CbWvaJ0y.js} +2 -2
  164. package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
  165. package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js → FixSessionPage-YMjVRiCk.js} +2 -2
  166. package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
  167. package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
  168. package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
  169. package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js → FloatingPanel-BtqzqDVq.js} +2 -2
  170. package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
  171. package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
  172. package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
  173. package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js → HistoryPage-BuWpQ7k5.js} +2 -2
  174. package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
  175. package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js → HookManagerPage-D0BtMIWy.js} +2 -2
  176. package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
  177. package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js → InstallationsPage-C7dwsAKG.js} +2 -2
  178. package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
  179. package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js → IssueHubPage-D0nCNaeB.js} +2 -2
  180. package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
  181. package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
  182. package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
  183. package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js → McpManagerPage-C-S5CehM.js} +2 -2
  184. package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
  185. package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js → MemoryPage-P_B0JVUQ.js} +2 -2
  186. package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
  187. package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js → NotFoundPage-S4Jn9LUE.js} +2 -2
  188. package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
  189. package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
  190. package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
  191. package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
  192. package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
  193. package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js → PromptHistoryPage-YEMjFARX.js} +3 -3
  194. package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
  195. package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js → ReviewSessionPage-DnTm55nG.js} +2 -2
  196. package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
  197. package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js → RulesManagerPage-CUwebtO2.js} +2 -2
  198. package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
  199. package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
  200. package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
  201. package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js → SessionsPage-BpgP4087.js} +2 -2
  202. package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js.map → SessionsPage-BpgP4087.js.map} +1 -1
  203. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
  204. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
  205. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
  206. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
  207. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
  208. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
  209. package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js → Switch-CYSPdqWk.js} +2 -2
  210. package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js.map → Switch-CYSPdqWk.js.map} +1 -1
  211. package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js → TabsNavigation-CPh6Zor1.js} +2 -2
  212. package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
  213. package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js → TaskDrawer-Ds-8830B.js} +2 -2
  214. package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
  215. package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js → TeamPage-CJODUxBk.js} +2 -2
  216. package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js.map → TeamPage-CJODUxBk.js.map} +1 -1
  217. package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
  218. package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
  219. package/ccw/frontend/dist/assets/{archive-DxemgIhF.js → archive-CjwVpw6k.js} +2 -2
  220. package/ccw/frontend/dist/assets/{archive-DxemgIhF.js.map → archive-CjwVpw6k.js.map} +1 -1
  221. package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js → archive-restore-2vZa9Ic3.js} +2 -2
  222. package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
  223. package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js → arrow-right-CUU5XDgT.js} +2 -2
  224. package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
  226. package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{bot-DOwFtzak.js → bot-BwpSRDUa.js} +2 -2
  228. package/ccw/frontend/dist/assets/{bot-DOwFtzak.js.map → bot-BwpSRDUa.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{braces-96qH3aFh.js → braces-DBzUW1XC.js} +2 -2
  230. package/ccw/frontend/dist/assets/{braces-96qH3aFh.js.map → braces-DBzUW1XC.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js → circle-stop-CGNNsjvE.js} +2 -2
  232. package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js → cpu-D27G86Ul.js} +2 -2
  234. package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js.map → cpu-D27G86Ul.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
  236. package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js → eye-C6MOB7Au.js} +2 -2
  238. package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js.map → eye-C6MOB7Au.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js → eye-off-BxfBlZ26.js} +2 -2
  240. package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js.map → eye-off-BxfBlZ26.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js → file-json-NI237wA-.js} +2 -2
  242. package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js.map → file-json-NI237wA-.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js → file-text-Byn2_2v6.js} +2 -2
  244. package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js.map → file-text-Byn2_2v6.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{filter-q9g-bknU.js → filter-D-7PhZjx.js} +2 -2
  246. package/ccw/frontend/dist/assets/{filter-q9g-bknU.js.map → filter-D-7PhZjx.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{folder-CL6vb42J.js → folder-BoAsK_FL.js} +2 -2
  248. package/ccw/frontend/dist/assets/{folder-CL6vb42J.js.map → folder-BoAsK_FL.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js → gauge-DCSxJIS4.js} +2 -2
  250. package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js.map → gauge-DCSxJIS4.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js → globe-CHS3prza.js} +2 -2
  252. package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js.map → globe-CHS3prza.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js → grid-3x3-D7K35U7S.js} +2 -2
  254. package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js → hard-drive-eq9xE07G.js} +2 -2
  256. package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js.map → hard-drive-eq9xE07G.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{hash-80O0kJO7.js → hash-C1DMpBua.js} +2 -2
  258. package/ccw/frontend/dist/assets/{hash-80O0kJO7.js.map → hash-C1DMpBua.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js → history-Di5SBCY-.js} +2 -2
  260. package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js.map → history-Di5SBCY-.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{index-mbeo62f8.js → index--_R7COnA.js} +2 -2
  262. package/ccw/frontend/dist/assets/{index-mbeo62f8.js.map → index--_R7COnA.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{index-rLgoBCfV.js → index-BUol9HDD.js} +3 -3
  264. package/ccw/frontend/dist/assets/{index-rLgoBCfV.js.map → index-BUol9HDD.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{index-Bs80iCX0.js → index-CT9oykfw.js} +2 -2
  266. package/ccw/frontend/dist/assets/{index-Bs80iCX0.js.map → index-CT9oykfw.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js → index-Ddwvf87H.js} +2 -2
  268. package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js.map → index-Ddwvf87H.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js → layout-grid-LiX0qZbN.js} +2 -2
  270. package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js → lightbulb-CL3DVEwb.js} +2 -2
  272. package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js → link-2-CC5cFeq6.js} +2 -2
  274. package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js.map → link-2-CC5cFeq6.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{link-koEYiemK.js → link-ngFQ9bs0.js} +2 -2
  276. package/ccw/frontend/dist/assets/{link-koEYiemK.js.map → link-ngFQ9bs0.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{list-v2_GaLdC.js → list-BEU6I0KK.js} +2 -2
  278. package/ccw/frontend/dist/assets/{list-v2_GaLdC.js.map → list-BEU6I0KK.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js → map-pin-BWZdLA6y.js} +2 -2
  280. package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js.map → map-pin-BWZdLA6y.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js → messages-square-K6_Chm7n.js} +2 -2
  282. package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js.map → messages-square-K6_Chm7n.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js → minimize-2-CWkphauf.js} +2 -2
  284. package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js.map → minimize-2-CWkphauf.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/{package-CH3smL37.js → package-DrNgkamn.js} +2 -2
  286. package/ccw/frontend/dist/assets/{package-CH3smL37.js.map → package-DrNgkamn.js.map} +1 -1
  287. package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js → plug-CMo3sw5_.js} +2 -2
  288. package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js.map → plug-CMo3sw5_.js.map} +1 -1
  289. package/ccw/frontend/dist/assets/{power-F2A_J4l6.js → power-DppNTW5e.js} +2 -2
  290. package/ccw/frontend/dist/assets/{power-F2A_J4l6.js.map → power-DppNTW5e.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{save-Byxot0YU.js → save-CD8aPMbZ.js} +2 -2
  292. package/ccw/frontend/dist/assets/{save-Byxot0YU.js.map → save-CD8aPMbZ.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{send-JjqhUkpw.js → send-B4z90fQD.js} +2 -2
  294. package/ccw/frontend/dist/assets/{send-JjqhUkpw.js.map → send-B4z90fQD.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js → settings-2-CAKRU_QC.js} +2 -2
  296. package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js.map → settings-2-CAKRU_QC.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js → square-check-big-KhI3HrzX.js} +2 -2
  298. package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js → square-pen-BtdGIpuq.js} +2 -2
  300. package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js.map → square-pen-BtdGIpuq.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js → star-ZoBUkXoD.js} +2 -2
  302. package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js.map → star-ZoBUkXoD.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{style-CKs7nnn3.js → style-CltxQP-P.js} +2 -2
  304. package/ccw/frontend/dist/assets/{style-CKs7nnn3.js.map → style-CltxQP-P.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{target-DW5tsDW6.js → target-C32OUSGf.js} +2 -2
  306. package/ccw/frontend/dist/assets/{target-DW5tsDW6.js.map → target-C32OUSGf.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js → test-tube-0IxoyAVZ.js} +2 -2
  308. package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js → upload-4eKCkyBn.js} +2 -2
  310. package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js.map → upload-4eKCkyBn.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js → useApiSettings-zLTUWqhi.js} +2 -2
  312. package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js → useCli-BtN2vpOX.js} +2 -2
  314. package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js.map → useCli-BtN2vpOX.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js → useCommands-_spj49qL.js} +2 -2
  316. package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js.map → useCommands-_spj49qL.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js → useDebounce-Bm9KFZvd.js} +2 -2
  318. package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js → useFileExplorer-DOmpm6v9.js} +2 -2
  320. package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js → useLocale-D2rj4rea.js} +2 -2
  322. package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js.map → useLocale-D2rj4rea.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js → useSkills-OskEpomF.js} +3 -3
  324. package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js.map → useSkills-OskEpomF.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js → useSystemSettings-BjMgsNSF.js} +2 -2
  326. package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js → wand-sparkles-CLhyYWa7.js} +2 -2
  328. package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
  329. package/ccw/frontend/dist/index.html +1 -1
  330. package/ccw/scripts/prepublish-clean.mjs +0 -1
  331. package/package.json +1 -3
  332. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js +0 -150
  333. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +0 -1
  334. package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js +0 -7
  335. package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js.map +0 -1
  336. package/ccw-litellm/README.md +0 -180
  337. package/ccw-litellm/pyproject.toml +0 -35
  338. package/ccw-litellm/src/ccw_litellm/__init__.py +0 -47
  339. package/ccw-litellm/src/ccw_litellm/cli.py +0 -108
  340. package/ccw-litellm/src/ccw_litellm/clients/__init__.py +0 -12
  341. package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +0 -270
  342. package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +0 -198
  343. package/ccw-litellm/src/ccw_litellm/config/__init__.py +0 -22
  344. package/ccw-litellm/src/ccw_litellm/config/loader.py +0 -343
  345. package/ccw-litellm/src/ccw_litellm/config/models.py +0 -162
  346. package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +0 -14
  347. package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +0 -52
  348. package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +0 -45
@@ -0,0 +1,567 @@
1
+ # Phase 2: Interactive Framework Generation (Artifacts)
2
+
3
+ Seven-phase interactive workflow generating confirmed guidance specification through role-based analysis and synthesis. This phase handles all user interaction for topic exploration, role selection, and decision gathering.
4
+
5
+ ## Objective
6
+
7
+ - Collect project context automatically (Phase 0)
8
+ - Analyze topic and extract keywords/challenges (Phase 1)
9
+ - Select roles via intelligent recommendation + user confirmation (Phase 2)
10
+ - Generate deep role-specific questions (Phase 3)
11
+ - Resolve cross-role conflicts (Phase 4)
12
+ - Final clarification and feature decomposition (Phase 4.5)
13
+ - Generate declarative guidance-specification.md (Phase 5)
14
+
15
+ ## Auto Mode
16
+
17
+ When `--yes` or `-y`: Auto-select recommended roles, skip all clarification questions, use default answers.
18
+
19
+ ## TodoWrite Integration
20
+
21
+ **TodoWrite Rule**: EXTEND auto-parallel's task list (NOT replace/overwrite)
22
+
23
+ **When called from auto mode**:
24
+ - Find artifacts parent task → Mark "in_progress"
25
+ - APPEND sub-tasks (Phase 0-5) → Mark each as completes
26
+ - When Phase 5 completes → Mark parent "completed"
27
+ - PRESERVE all other auto-parallel tasks
28
+
29
+ **Standalone Mode**:
30
+ ```json
31
+ [
32
+ {"content": "Initialize session", "status": "pending", "activeForm": "Initializing"},
33
+ {"content": "Phase 0: Context collection", "status": "pending", "activeForm": "Phase 0"},
34
+ {"content": "Phase 1: Topic analysis (2-4 questions)", "status": "pending", "activeForm": "Phase 1"},
35
+ {"content": "Phase 2: Role selection", "status": "pending", "activeForm": "Phase 2"},
36
+ {"content": "Phase 3: Role questions (per role)", "status": "pending", "activeForm": "Phase 3"},
37
+ {"content": "Phase 4: Conflict resolution", "status": "pending", "activeForm": "Phase 4"},
38
+ {"content": "Phase 4.5: Final clarification + Feature decomposition", "status": "pending", "activeForm": "Phase 4.5"},
39
+ {"content": "Phase 5: Generate specification", "status": "pending", "activeForm": "Phase 5"}
40
+ ]
41
+ ```
42
+
43
+ ## Execution
44
+
45
+ ### Session Management
46
+
47
+ - Check `.workflow/active/` for existing sessions
48
+ - Multiple → Prompt selection | Single → Use it | None → Create `WFS-[topic-slug]`
49
+ - Parse `--count N` parameter (default: 3)
50
+ - Store decisions in `workflow-session.json`
51
+
52
+ ### Phase 0: Context Collection
53
+
54
+ **Goal**: Gather project context BEFORE user interaction
55
+
56
+ **Steps**:
57
+ 1. Check if `context-package.json` exists → Skip if valid
58
+ 2. Invoke `context-search-agent` (BRAINSTORM MODE - lightweight)
59
+ 3. Output: `.workflow/active/WFS-{session-id}/.process/context-package.json`
60
+
61
+ **Graceful Degradation**: If agent fails, continue to Phase 1 without context
62
+
63
+ ```javascript
64
+ Task(
65
+ subagent_type="context-search-agent",
66
+ run_in_background=false,
67
+ description="Gather project context for brainstorm",
68
+ prompt=`
69
+ Execute context-search-agent in BRAINSTORM MODE (Phase 1-2 only).
70
+
71
+ Session: ${session_id}
72
+ Task: ${task_description}
73
+ Output: .workflow/${session_id}/.process/context-package.json
74
+
75
+ Required fields: metadata, project_context, assets, dependencies, conflict_detection
76
+ `
77
+ )
78
+ ```
79
+
80
+ ### Phase 1: Topic Analysis
81
+
82
+ **Goal**: Extract keywords/challenges enriched by Phase 0 context
83
+
84
+ **Steps**:
85
+ 1. Load Phase 0 context (tech_stack, modules, conflict_risk)
86
+ 2. Deep topic analysis (entities, challenges, constraints, metrics)
87
+ 3. Generate 2-4 context-aware probing questions
88
+ 4. AskUserQuestion → Store to `session.intent_context`
89
+
90
+ **Example**:
91
+ ```javascript
92
+ AskUserQuestion({
93
+ questions: [
94
+ {
95
+ question: "实时协作平台的主要技术挑战?",
96
+ header: "核心挑战",
97
+ multiSelect: false,
98
+ options: [
99
+ { label: "实时数据同步", description: "100+用户同时在线,状态同步复杂度高" },
100
+ { label: "可扩展性架构", description: "用户规模增长时的系统扩展能力" },
101
+ { label: "冲突解决机制", description: "多用户同时编辑的冲突处理策略" }
102
+ ]
103
+ },
104
+ {
105
+ question: "MVP阶段最关注的指标?",
106
+ header: "优先级",
107
+ multiSelect: false,
108
+ options: [
109
+ { label: "功能完整性", description: "实现所有核心功能" },
110
+ { label: "用户体验", description: "流畅的交互体验和响应速度" },
111
+ { label: "系统稳定性", description: "高可用性和数据一致性" }
112
+ ]
113
+ }
114
+ ]
115
+ })
116
+ ```
117
+
118
+ **⚠️ CRITICAL**: Questions MUST reference topic keywords. Generic "Project type?" violates dynamic generation.
119
+
120
+ ### Phase 1.5: Terminology & Boundary Definition
121
+
122
+ **Goal**: Extract core terminology and define scope boundaries (Non-Goals)
123
+
124
+ **Steps**:
125
+ 1. Analyze Phase 1 user responses and topic description
126
+ 2. Extract 5-10 core domain terms that will be used throughout the specification
127
+ 3. Generate terminology clarification questions if needed
128
+ 4. Define scope boundaries by identifying what is explicitly OUT of scope
129
+
130
+ **Terminology Extraction**:
131
+ ```javascript
132
+ // Based on Phase 1 context and user input
133
+ const coreTerms = extractTerminology({
134
+ topic: session.topic,
135
+ userResponses: session.intent_context,
136
+ contextPackage: contextPackage // from Phase 0
137
+ });
138
+
139
+ // Generate terminology table
140
+ const terminologyTable = coreTerms.map(term => ({
141
+ term: term.canonical,
142
+ definition: term.definition,
143
+ aliases: term.alternatives,
144
+ category: term.category // core|technical|business
145
+ }));
146
+ ```
147
+
148
+ **Non-Goals Definition**:
149
+ ```javascript
150
+ AskUserQuestion({
151
+ questions: [{
152
+ question: "以下哪些是明确 NOT 包含在本次项目范围内的?(可多选)",
153
+ header: "范围边界 (Non-Goals)",
154
+ multiSelect: true,
155
+ options: [
156
+ { label: "移动端应用", description: "本次只做 Web 端,移动端后续考虑" },
157
+ { label: "多语言支持", description: "MVP 阶段只支持中文" },
158
+ { label: "第三方集成", description: "暂不集成外部系统" },
159
+ { label: "高级分析功能", description: "基础功能优先,分析功能 v2" },
160
+ { label: "其他(请在后续补充)", description: "用户自定义排除项" }
161
+ ]
162
+ }]
163
+ });
164
+
165
+ // If user selects "其他", follow up with:
166
+ if (selectedNonGoals.includes("其他")) {
167
+ AskUserQuestion({
168
+ questions: [{
169
+ question: "请描述其他明确排除的功能或范围",
170
+ header: "补充 Non-Goals",
171
+ multiSelect: false,
172
+ freeText: true
173
+ }]
174
+ });
175
+ }
176
+
177
+ // Store to session
178
+ session.terminology = terminologyTable;
179
+ session.non_goals = selectedNonGoals.map(ng => ({
180
+ item: ng.label,
181
+ rationale: ng.description
182
+ }));
183
+ ```
184
+
185
+ **Output**: Updated `workflow-session.json` with `terminology` and `non_goals` fields
186
+
187
+ ### Phase 2: Role Selection
188
+
189
+ **Goal**: User selects roles from intelligent recommendations
190
+
191
+ **Available Roles**: data-architect, product-manager, product-owner, scrum-master, subject-matter-expert, system-architect, test-strategist, ui-designer, ux-expert
192
+
193
+ **Steps**:
194
+ 1. Analyze Phase 1 keywords → Recommend count+2 roles with rationale
195
+ 2. AskUserQuestion (multiSelect=true) → Store to `session.selected_roles`
196
+ 3. If count+2 > 4, split into multiple rounds
197
+
198
+ **Example**:
199
+ ```javascript
200
+ AskUserQuestion({
201
+ questions: [{
202
+ question: "请选择 3 个角色参与头脑风暴分析",
203
+ header: "角色选择",
204
+ multiSelect: true,
205
+ options: [
206
+ { label: "system-architect", description: "实时同步架构设计和技术选型" },
207
+ { label: "ui-designer", description: "协作界面用户体验和状态展示" },
208
+ { label: "product-manager", description: "功能优先级和MVP范围决策" },
209
+ { label: "data-architect", description: "数据同步模型和存储方案设计" }
210
+ ]
211
+ }]
212
+ })
213
+ ```
214
+
215
+ **⚠️ CRITICAL**: User MUST interact. NEVER auto-select without confirmation (unless --yes flag).
216
+
217
+ ### Phase 3: Role-Specific Questions
218
+
219
+ **Goal**: Generate deep questions mapping role expertise to Phase 1 challenges
220
+
221
+ **Algorithm**:
222
+ 1. FOR each selected role:
223
+ - Map Phase 1 challenges to role domain
224
+ - Generate 3-4 questions (implementation depth, trade-offs, edge cases)
225
+ - AskUserQuestion per role → Store to `session.role_decisions[role]`
226
+ 2. Process roles sequentially (one at a time for clarity)
227
+ 3. If role needs > 4 questions, split into multiple rounds
228
+
229
+ **Example** (system-architect):
230
+ ```javascript
231
+ AskUserQuestion({
232
+ questions: [
233
+ {
234
+ question: "100+ 用户实时状态同步方案?",
235
+ header: "状态同步",
236
+ multiSelect: false,
237
+ options: [
238
+ { label: "Event Sourcing", description: "完整事件历史,支持回溯,存储成本高" },
239
+ { label: "集中式状态管理", description: "实现简单,单点瓶颈风险" },
240
+ { label: "CRDT", description: "去中心化,自动合并,学习曲线陡" }
241
+ ]
242
+ },
243
+ {
244
+ question: "两个用户同时编辑冲突如何解决?",
245
+ header: "冲突解决",
246
+ multiSelect: false,
247
+ options: [
248
+ { label: "自动合并", description: "用户无感知,可能产生意外结果" },
249
+ { label: "手动解决", description: "用户控制,增加交互复杂度" },
250
+ { label: "版本控制", description: "保留历史,需要分支管理" }
251
+ ]
252
+ }
253
+ ]
254
+ })
255
+ ```
256
+
257
+ ### Phase 4: Conflict Resolution
258
+
259
+ **Goal**: Resolve ACTUAL conflicts from Phase 3 answers
260
+
261
+ **Algorithm**:
262
+ 1. Analyze Phase 3 answers for conflicts:
263
+ - Contradictory choices (e.g., "fast iteration" vs "complex Event Sourcing")
264
+ - Missing integration (e.g., "Optimistic updates" but no conflict handling)
265
+ - Implicit dependencies (e.g., "Live cursors" but no auth defined)
266
+ 2. Generate clarification questions referencing SPECIFIC Phase 3 choices
267
+ 3. AskUserQuestion (max 4 per call, multi-round) → Store to `session.cross_role_decisions`
268
+ 4. If NO conflicts: Skip Phase 4 (inform user: "未检测到跨角色冲突,跳过Phase 4")
269
+
270
+ **Example**:
271
+ ```javascript
272
+ AskUserQuestion({
273
+ questions: [{
274
+ question: "CRDT 与 UI 回滚期望冲突,如何解决?\n背景:system-architect选择CRDT,ui-designer期望回滚UI",
275
+ header: "架构冲突",
276
+ multiSelect: false,
277
+ options: [
278
+ { label: "采用 CRDT", description: "保持去中心化,调整UI期望" },
279
+ { label: "显示合并界面", description: "增加用户交互,展示冲突详情" },
280
+ { label: "切换到 OT", description: "支持回滚,增加服务器复杂度" }
281
+ ]
282
+ }]
283
+ })
284
+ ```
285
+
286
+ ### Phase 4.5: Final Clarification
287
+
288
+ **Purpose**: Ensure no important points missed before generating specification
289
+
290
+ **Steps**:
291
+ 1. Ask initial check:
292
+ ```javascript
293
+ AskUserQuestion({
294
+ questions: [{
295
+ question: "在生成最终规范之前,是否有前面未澄清的重点需要补充?",
296
+ header: "补充确认",
297
+ multiSelect: false,
298
+ options: [
299
+ { label: "无需补充", description: "前面的讨论已经足够完整" },
300
+ { label: "需要补充", description: "还有重要内容需要澄清" }
301
+ ]
302
+ }]
303
+ })
304
+ ```
305
+ 2. If "需要补充":
306
+ - Analyze user's additional points
307
+ - Generate progressive questions (not role-bound, interconnected)
308
+ - AskUserQuestion (max 4 per round) → Store to `session.additional_decisions`
309
+ - Repeat until user confirms completion
310
+ 3. If "无需补充": Proceed to Feature Decomposition
311
+
312
+ **Progressive Pattern**: Questions interconnected, each round informs next, continue until resolved.
313
+
314
+ #### Feature Decomposition
315
+
316
+ After final clarification, extract implementable feature units from all Phase 1-4 decisions.
317
+
318
+ **Steps**:
319
+ 1. Analyze all accumulated decisions (`intent_context` + `role_decisions` + `cross_role_decisions` + `additional_decisions`)
320
+ 2. Extract candidate features: each must be an independently implementable unit with clear boundaries
321
+ 3. Generate candidate list (max 8 features) with structured format:
322
+ - Feature ID: `F-{3-digit}` (e.g., F-001)
323
+ - Name: kebab-case slug (e.g., `real-time-sync`, `user-auth`)
324
+ - Description: one-sentence summary of the feature's scope
325
+ - Related roles: which roles' decisions drive this feature
326
+ - Priority: High / Medium / Low
327
+ 4. Present candidate list to user for confirmation:
328
+ ```javascript
329
+ AskUserQuestion({
330
+ questions: [{
331
+ question: "以下是从讨论中提取的功能点清单:\n\nF-001: [name] - [description]\nF-002: [name] - [description]\n...\n\n是否需要调整?",
332
+ header: "功能点确认",
333
+ multiSelect: false,
334
+ options: [
335
+ { label: "确认无误", description: "功能点清单完整且合理,继续生成规范" },
336
+ { label: "需要调整", description: "需要增加、删除或修改功能点" }
337
+ ]
338
+ }]
339
+ })
340
+ ```
341
+ 5. If "需要调整": Collect adjustments and re-present until user confirms
342
+ 6. Store confirmed list to `session.feature_list`
343
+
344
+ **Constraints**:
345
+ - Maximum 8 features (if more candidates, merge related items)
346
+ - Each feature MUST be independently implementable (no implicit cross-feature dependencies)
347
+ - Feature ID format: `F-{3-digit}` (F-001, F-002, ...)
348
+ - Feature slug: kebab-case, descriptive of the feature scope
349
+
350
+ **Granularity Guidelines** (用于验证功能点粒度是否合适):
351
+
352
+ | Signal | Too Coarse | Just Right | Too Fine |
353
+ |--------|-----------|------------|----------|
354
+ | 实现范围 | 需要 5+ 个独立模块协同 | 1-3 个模块,边界清晰 | 单个函数或单个 API 端点 |
355
+ | 角色关注 | 所有角色都深度涉及 | 2-4 个角色有实质贡献 | 仅 1 个角色关注 |
356
+ | 可测试性 | 无法写出清晰的验收标准 | 可定义 3-5 条可测量验收标准 | 验收标准等同于单元测试 |
357
+ | 依赖关系 | 与其他功能点循环依赖 | 依赖关系单向且可识别 | 无任何外部依赖(可能遗漏) |
358
+
359
+ **Quality Validation** (Step 3 提取候选功能点后,逐条验证):
360
+ 1. **独立性检查**: 该功能点是否可以在其他功能点未完成时独立交付?若否 → 考虑合并或重新划分
361
+ 2. **完整性检查**: 该功能点是否覆盖了一个用户可感知的完整价值?若否 → 可能太细,考虑合并
362
+ 3. **粒度均衡检查**: 各功能点之间的复杂度是否大致均衡(最大不超过最小的 3 倍)?若否 → 拆分过大的或合并过小的
363
+ 4. **边界清晰检查**: 是否能用一句话描述该功能点的输入和输出?若否 → 边界模糊,需重新定义
364
+
365
+ **Handling Vague Requirements** (当用户需求模糊时的额外步骤):
366
+ - 如果 Phase 1-4 的决策不足以支撑功能点分解(如缺少具体业务场景、技术选型未定),在 Step 4 确认时**主动告知用户**哪些功能点的粒度可能不够精确
367
+ - 对不确定的功能点标注 `Priority: TBD`,在后续 synthesis 阶段通过跨角色分析进一步明确
368
+ - 如果候选功能点 ≤ 2 个,可能是需求过于抽象 → 提示用户补充更多具体场景后再分解
369
+
370
+ ### Phase 5: Generate Specification
371
+
372
+ **Steps**:
373
+ 1. Load all decisions: `intent_context` + `selected_roles` + `role_decisions` + `cross_role_decisions` + `additional_decisions` + `feature_list` + `terminology` + `non_goals`
374
+ 2. Transform Q&A to declarative: Questions → Headers, Answers → CONFIRMED/SELECTED statements
375
+ 3. Apply RFC 2119 keywords (MUST, SHOULD, MAY, MUST NOT, SHOULD NOT) to all behavioral requirements
376
+ 4. Generate `guidance-specification.md` with Concepts & Terminology and Non-Goals sections
377
+ 5. Update `workflow-session.json` (metadata only)
378
+ 6. Validate: No interrogative sentences, all decisions traceable, RFC keywords applied
379
+
380
+ **RFC 2119 Compliance**:
381
+
382
+ All behavioral requirements and constraints MUST be expressed using RFC 2119 keywords:
383
+ - **MUST**: Absolute requirement, non-negotiable
384
+ - **MUST NOT**: Absolute prohibition
385
+ - **SHOULD**: Strong recommendation, may be ignored with valid reason
386
+ - **SHOULD NOT**: Strong discouragement
387
+ - **MAY**: Optional, implementer's choice
388
+
389
+ Example transformations:
390
+ - "用户需要登录" → "The system MUST authenticate users before granting access"
391
+ - "建议使用缓存" → "The system SHOULD cache frequently accessed data"
392
+ - "可以支持 OAuth" → "The system MAY support OAuth2 authentication"
393
+
394
+ ## Question Guidelines
395
+
396
+ ### Core Principle
397
+
398
+ **Target**: 开发者(理解技术但需要从用户需求出发)
399
+
400
+ **Question Structure**: `[业务场景/需求前提] + [技术关注点]`
401
+ **Option Structure**: `标签:[技术方案] + 说明:[业务影响] + [技术权衡]`
402
+
403
+ ### Quality Rules
404
+
405
+ **MUST Include**:
406
+ - ✅ All questions in Chinese (用中文提问)
407
+ - ✅ 业务场景作为问题前提
408
+ - ✅ 技术选项的业务影响说明
409
+ - ✅ 量化指标和约束条件
410
+
411
+ **MUST Avoid**:
412
+ - ❌ 纯技术选型无业务上下文
413
+ - ❌ 过度抽象的用户体验问题
414
+ - ❌ 脱离话题的通用架构问题
415
+
416
+ ### Phase-Specific Requirements
417
+
418
+ | Phase | Focus | Key Requirements |
419
+ |-------|-------|------------------|
420
+ | 1 | 意图理解 | Reference topic keywords, 用户场景、业务约束、优先级 |
421
+ | 2 | 角色推荐 | Intelligent analysis (NOT keyword mapping), explain relevance |
422
+ | 3 | 角色问题 | Reference Phase 1 keywords, concrete options with trade-offs |
423
+ | 4 | 冲突解决 | Reference SPECIFIC Phase 3 choices, explain impact on both roles |
424
+
425
+ ### Multi-Round Execution Pattern
426
+
427
+ ```javascript
428
+ const BATCH_SIZE = 4;
429
+ for (let i = 0; i < allQuestions.length; i += BATCH_SIZE) {
430
+ const batch = allQuestions.slice(i, i + BATCH_SIZE);
431
+ AskUserQuestion({ questions: batch });
432
+ // Store responses before next round
433
+ }
434
+ ```
435
+
436
+ ## Output
437
+
438
+ ### Generated Files
439
+
440
+ **File**: `.workflow/active/WFS-{topic}/.brainstorming/guidance-specification.md`
441
+
442
+ ```markdown
443
+ # [Project] - Confirmed Guidance Specification
444
+
445
+ **Metadata**: [timestamp, type, focus, roles]
446
+
447
+ ## 1. Project Positioning & Goals
448
+ **CONFIRMED Objectives**: [from topic + Phase 1]
449
+ **CONFIRMED Success Criteria**: [from Phase 1 answers]
450
+
451
+ ## 2. Concepts & Terminology
452
+
453
+ **Core Terms**: The following terms are used consistently throughout this specification.
454
+
455
+ | Term | Definition | Aliases | Category |
456
+ |------|------------|---------|----------|
457
+ ${session.terminology.map(t => `| ${t.term} | ${t.definition} | ${t.aliases.join(', ')} | ${t.category} |`).join('\n')}
458
+
459
+ **Usage Rules**:
460
+ - All documents MUST use the canonical term
461
+ - Aliases are for reference only
462
+ - New terms introduced in role analysis MUST be added to this glossary
463
+
464
+ ## 3. Non-Goals (Out of Scope)
465
+
466
+ The following are explicitly OUT of scope for this project:
467
+
468
+ ${session.non_goals.map(ng => `- **${ng.item}**: ${ng.rationale}`).join('\n')}
469
+
470
+ **Rationale**: These exclusions help maintain focus on core objectives and prevent scope creep.
471
+
472
+ ## 4-N. [Role] Decisions
473
+ ### SELECTED Choices
474
+ **[Question topic]**: [User's answer with RFC 2119 keywords]
475
+ - **Rationale**: [From option description]
476
+ - **Impact**: [Implications with RFC keywords]
477
+ - **Requirement Level**: [MUST/SHOULD/MAY based on criticality]
478
+
479
+ **Example**:
480
+ - The system MUST authenticate users within 200ms (P99)
481
+ - The system SHOULD cache frequently accessed data
482
+ - The system MAY support OAuth2 providers (Google, GitHub)
483
+
484
+ ### Cross-Role Considerations
485
+ **[Conflict resolved]**: [Resolution from Phase 4 with RFC keywords]
486
+ - **Affected Roles**: [Roles involved]
487
+ - **Decision**: [MUST/SHOULD/MAY statement]
488
+
489
+ ## Cross-Role Integration
490
+ **CONFIRMED Integration Points**: [API/Data/Auth from multiple roles]
491
+
492
+ ## Risks & Constraints
493
+ **Identified Risks**: [From answers] → Mitigation: [Approach]
494
+
495
+ ## Next Steps
496
+ **⚠️ Automatic Continuation** (when called from auto mode):
497
+ - Auto mode assigns agents for role-specific analysis
498
+ - Each selected role gets conceptual-planning-agent
499
+ - Agents read this guidance-specification.md for context
500
+
501
+ ## Feature Decomposition
502
+
503
+ **Constraints**: Max 8 features | Each independently implementable | ID format: F-{3-digit}
504
+
505
+ | Feature ID | Name | Description | Related Roles | Priority |
506
+ |------------|------|-------------|---------------|----------|
507
+ | F-001 | [kebab-case-slug] | [One-sentence scope] | [role1, role2] | High/Medium/Low |
508
+ | F-002 | [kebab-case-slug] | [One-sentence scope] | [role1] | High/Medium/Low |
509
+
510
+ ## Appendix: Decision Tracking
511
+ | Decision ID | Category | Question | Selected | Phase | Rationale |
512
+ |-------------|----------|----------|----------|-------|-----------|
513
+ | D-001 | Intent | [Q] | [A] | 1 | [Why] |
514
+ | D-002 | Roles | [Selected] | [Roles] | 2 | [Why] |
515
+ | D-003+ | [Role] | [Q] | [A] | 3 | [Why] |
516
+ ```
517
+
518
+ ### Session Metadata
519
+
520
+ ```json
521
+ {
522
+ "session_id": "WFS-{topic-slug}",
523
+ "type": "brainstorming",
524
+ "topic": "{original user input}",
525
+ "selected_roles": ["system-architect", "ui-designer", "product-manager"],
526
+ "phase_completed": "artifacts",
527
+ "timestamp": "2025-10-24T10:30:00Z",
528
+ "count_parameter": 3,
529
+ "style_skill_package": null
530
+ }
531
+ ```
532
+
533
+ **⚠️ Rule**: Session JSON stores ONLY metadata. All guidance content goes to guidance-specification.md.
534
+
535
+ ### Validation Checklist
536
+
537
+ - ✅ No interrogative sentences (use CONFIRMED/SELECTED)
538
+ - ✅ Every decision traceable to user answer
539
+ - ✅ Cross-role conflicts resolved or documented
540
+ - ✅ Next steps concrete and specific
541
+ - ✅ No content duplication between .json and .md
542
+ - ✅ Feature Decomposition table present with validated entries
543
+
544
+ ### Governance Rules
545
+
546
+ - All decisions MUST use CONFIRMED/SELECTED (NO "?" in decision sections)
547
+ - Every decision MUST trace to user answer
548
+ - Conflicts MUST be resolved (not marked "TBD")
549
+ - Next steps MUST be actionable
550
+ - Topic preserved as authoritative reference
551
+
552
+ **CRITICAL**: Guidance is single source of truth for downstream phases. Ambiguity violates governance.
553
+
554
+ ### Update Mechanism
555
+
556
+ ```
557
+ IF guidance-specification.md EXISTS:
558
+ Prompt: "Regenerate completely / Update sections / Cancel"
559
+ ELSE:
560
+ Run full Phase 0-5 flow
561
+ ```
562
+
563
+ - **TodoWrite**: Mark Phase 2 completed, collapse sub-tasks to summary
564
+
565
+ ## Next Phase
566
+
567
+ Return to orchestrator, then auto-continue to [Phase 3: Role Analysis](03-role-analysis.md) (auto mode: parallel execution for all selected roles).