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,178 @@
1
+ # Phase 5: Epics & Stories
2
+
3
+ Decompose the specification into executable Epics and Stories with dependency mapping.
4
+
5
+ ## Objective
6
+
7
+ - Group requirements into 3-7 logical Epics
8
+ - Tag MVP subset of Epics
9
+ - Generate 2-5 Stories per Epic in standard user story format
10
+ - Map cross-Epic dependencies (Mermaid diagram)
11
+ - Generate epics.md using template
12
+
13
+ ## Input
14
+
15
+ - Dependency: `{workDir}/requirements/_index.md`, `{workDir}/architecture/_index.md` (and individual files)
16
+ - Reference: `{workDir}/product-brief.md`
17
+ - Config: `{workDir}/spec-config.json`
18
+ - Template: `templates/epics-template.md` (directory structure: `_index.md` + `EPIC-*.md`)
19
+
20
+ ## Execution Steps
21
+
22
+ ### Step 0: Load Validation Context
23
+
24
+ Run `ccw spec load --category validation` for verification rules and acceptance criteria to validate epic decomposition.
25
+
26
+ ### Step 1: Load Phase 2-4 Context
27
+
28
+ ```javascript
29
+ const specConfig = JSON.parse(Read(`${workDir}/spec-config.json`));
30
+ const productBrief = Read(`${workDir}/product-brief.md`);
31
+ const requirements = Read(`${workDir}/requirements.md`);
32
+ const architecture = Read(`${workDir}/architecture.md`);
33
+
34
+ let glossary = null;
35
+ try {
36
+ glossary = JSON.parse(Read(`${workDir}/glossary.json`));
37
+ } catch (e) { /* proceed without */ }
38
+ ```
39
+
40
+ ### Step 2: Epic Decomposition via Gemini CLI
41
+
42
+ ```javascript
43
+ Bash({
44
+ command: `ccw cli -p "PURPOSE: Decompose requirements into executable Epics and Stories for implementation planning.
45
+ Success: 3-7 Epics with prioritized Stories, dependency map, and MVP subset clearly defined.
46
+
47
+ PRODUCT BRIEF (summary):
48
+ ${productBrief.slice(0, 2000)}
49
+
50
+ REQUIREMENTS:
51
+ ${requirements.slice(0, 5000)}
52
+
53
+ ARCHITECTURE (summary):
54
+ ${architecture.slice(0, 3000)}
55
+
56
+ TASK:
57
+ - Group requirements into 3-7 logical Epics:
58
+ - Each Epic: EPIC-NNN ID, title, description, priority (Must/Should/Could)
59
+ - Group by functional domain or user journey stage
60
+ - Tag MVP Epics (minimum set for initial release)
61
+
62
+ - For each Epic, generate 2-5 Stories:
63
+ - Each Story: STORY-{EPIC}-NNN ID, title
64
+ - User story format: As a [persona], I want [action] so that [benefit]
65
+ - 2-4 acceptance criteria per story (testable)
66
+ - Relative size estimate: S/M/L/XL
67
+ - Trace to source requirement(s): REQ-NNN
68
+
69
+ - Create dependency map:
70
+ - Cross-Epic dependencies (which Epics block others)
71
+ - Mermaid graph LR format
72
+ - Recommended execution order with rationale
73
+
74
+ - Define MVP:
75
+ - Which Epics are in MVP
76
+ - MVP definition of done (3-5 criteria)
77
+ - What is explicitly deferred post-MVP
78
+
79
+ MODE: analysis
80
+ EXPECTED: Structured output with: Epic list (ID, title, priority, MVP flag), Stories per Epic (ID, user story, AC, size, trace), dependency Mermaid diagram, execution order, MVP definition
81
+ CONSTRAINTS:
82
+ - Every Must-have requirement must appear in at least one Story
83
+ - Stories must be small enough to implement independently (no XL stories in MVP)
84
+ - Dependencies should be minimized across Epics
85
+ \${glossary ? \`- Maintain terminology consistency with glossary: \${glossary.terms.map(t => t.term).join(', ')}\` : ''}
86
+ " --tool gemini --mode analysis`,
87
+ run_in_background: true
88
+ });
89
+
90
+ // Wait for CLI result
91
+ ```
92
+
93
+ ### Step 3: Interactive Validation (Optional)
94
+
95
+ ```javascript
96
+ if (!autoMode) {
97
+ // Present Epic overview table and dependency diagram
98
+ AskUserQuestion({
99
+ questions: [
100
+ {
101
+ question: "Review the Epic breakdown. Any adjustments needed?",
102
+ header: "Epics",
103
+ multiSelect: false,
104
+ options: [
105
+ { label: "Looks good", description: "Epic structure is appropriate" },
106
+ { label: "Merge epics", description: "Some epics should be combined" },
107
+ { label: "Split epic", description: "An epic is too large, needs splitting" },
108
+ { label: "Adjust MVP", description: "Change which epics are in MVP" }
109
+ ]
110
+ }
111
+ ]
112
+ });
113
+ // Apply user adjustments
114
+ }
115
+ ```
116
+
117
+ ### Step 4: Generate epics/ directory
118
+
119
+ ```javascript
120
+ const template = Read('templates/epics-template.md');
121
+
122
+ // Create epics directory
123
+ Bash(`mkdir -p "${workDir}/epics"`);
124
+
125
+ const status = autoMode ? 'complete' : 'draft';
126
+ const timestamp = new Date().toISOString();
127
+
128
+ // Parse CLI output into structured Epics
129
+ const epicsList = parseEpics(cliOutput); // [{id, slug, title, priority, mvp, size, stories[], reqs[], adrs[], deps[]}]
130
+
131
+ // Step 4a: Write individual EPIC-*.md files (one per Epic, stories included)
132
+ epicsList.forEach(epic => {
133
+ // Use EPIC-NNN-{slug}.md template from templates/epics-template.md
134
+ // Fill: id, title, priority, mvp, size, description, requirements links,
135
+ // architecture links, dependency links, stories with user stories + AC
136
+ Write(`${workDir}/epics/EPIC-${epic.id}-${epic.slug}.md`, epicContent);
137
+ });
138
+
139
+ // Step 4b: Write _index.md (overview + dependency map + MVP scope + traceability)
140
+ // Use _index.md template from templates/epics-template.md
141
+ // Fill: epic overview table (with links), dependency Mermaid diagram,
142
+ // execution order, MVP scope, traceability matrix, estimation summary
143
+ Write(`${workDir}/epics/_index.md`, indexContent);
144
+
145
+ // Update spec-config.json
146
+ specConfig.phasesCompleted.push({
147
+ phase: 5,
148
+ name: "epics-stories",
149
+ output_dir: "epics/",
150
+ output_index: "epics/_index.md",
151
+ file_count: epicsList.length + 1,
152
+ completed_at: timestamp
153
+ });
154
+ Write(`${workDir}/spec-config.json`, JSON.stringify(specConfig, null, 2));
155
+ ```
156
+
157
+ ## Output
158
+
159
+ - **Directory**: `epics/`
160
+ - `_index.md` — Overview table, dependency map, MVP scope, traceability matrix, links
161
+ - `EPIC-NNN-{slug}.md` — Individual Epic with Stories (per Epic)
162
+ - **Format**: Markdown with YAML frontmatter, cross-linked to requirements and architecture via relative paths
163
+
164
+ ## Quality Checklist
165
+
166
+ - [ ] 3-7 Epic files with EPIC-NNN IDs
167
+ - [ ] >= 1 Epic tagged as MVP in frontmatter
168
+ - [ ] 2-5 Stories per Epic file
169
+ - [ ] Stories use "As a...I want...So that..." format
170
+ - [ ] `_index.md` has cross-Epic dependency map (Mermaid)
171
+ - [ ] `_index.md` links to all individual Epic files
172
+ - [ ] Relative sizing (S/M/L/XL) per Story
173
+ - [ ] Epic files link to requirement files and ADR files
174
+ - [ ] All files have valid YAML frontmatter
175
+
176
+ ## Next Phase
177
+
178
+ Proceed to [Phase 6: Readiness Check](06-readiness-check.md) to validate the complete specification package.
@@ -0,0 +1,144 @@
1
+ # Phase 6.5: Auto-Fix
2
+
3
+ Automatically repair specification issues identified in Phase 6 Readiness Check.
4
+
5
+ ## Objective
6
+
7
+ - Parse readiness-report.md to extract Error and Warning items
8
+ - Group issues by originating Phase (2-5)
9
+ - Re-generate affected sections with error context injected into CLI prompts
10
+ - Re-run Phase 6 validation after fixes
11
+
12
+ ## Input
13
+
14
+ - Dependency: `{workDir}/readiness-report.md` (Phase 6 output)
15
+ - Config: `{workDir}/spec-config.json` (with iteration_count)
16
+ - All Phase 2-5 outputs
17
+
18
+ ## Execution Steps
19
+
20
+ ### Step 1: Parse Readiness Report
21
+
22
+ ```javascript
23
+ const readinessReport = Read(`${workDir}/readiness-report.md`);
24
+ const specConfig = JSON.parse(Read(`${workDir}/spec-config.json`));
25
+
26
+ // Load glossary for terminology consistency during fixes
27
+ let glossary = null;
28
+ try {
29
+ glossary = JSON.parse(Read(`${workDir}/glossary.json`));
30
+ } catch (e) { /* proceed without */ }
31
+
32
+ // Extract issues from readiness report
33
+ // Parse Error and Warning severity items
34
+ // Group by originating phase:
35
+ // Phase 2 issues: vision, problem statement, scope, personas
36
+ // Phase 3 issues: requirements, acceptance criteria, priority, traceability
37
+ // Phase 4 issues: architecture, ADRs, tech stack, data model, state machine
38
+ // Phase 5 issues: epics, stories, dependencies, MVP scope
39
+
40
+ const issuesByPhase = {
41
+ 2: [], // product brief issues
42
+ 3: [], // requirements issues
43
+ 4: [], // architecture issues
44
+ 5: [] // epics issues
45
+ };
46
+
47
+ // Parse structured issues from report
48
+ // Each issue: { severity: "Error"|"Warning", description: "...", location: "file:section" }
49
+
50
+ // Map phase numbers to output files
51
+ const phaseOutputFile = {
52
+ 2: 'product-brief.md',
53
+ 3: 'requirements/_index.md',
54
+ 4: 'architecture/_index.md',
55
+ 5: 'epics/_index.md'
56
+ };
57
+ ```
58
+
59
+ ### Step 2: Fix Affected Phases (Sequential)
60
+
61
+ For each phase with issues (in order 2 -> 3 -> 4 -> 5):
62
+
63
+ ```javascript
64
+ for (const [phase, issues] of Object.entries(issuesByPhase)) {
65
+ if (issues.length === 0) continue;
66
+
67
+ const errorContext = issues.map(i => `[${i.severity}] ${i.description} (at ${i.location})`).join('\n');
68
+
69
+ // Read current phase output
70
+ const currentOutput = Read(`${workDir}/${phaseOutputFile[phase]}`);
71
+
72
+ Bash({
73
+ command: `ccw cli -p "PURPOSE: Fix specification issues identified in readiness check for Phase ${phase}.
74
+ Success: All listed issues resolved while maintaining consistency with other documents.
75
+
76
+ CURRENT DOCUMENT:
77
+ ${currentOutput.slice(0, 5000)}
78
+
79
+ ISSUES TO FIX:
80
+ ${errorContext}
81
+
82
+ ${glossary ? `GLOSSARY (maintain consistency):
83
+ ${JSON.stringify(glossary.terms, null, 2)}` : ''}
84
+
85
+ TASK:
86
+ - Address each listed issue specifically
87
+ - Maintain all existing content that is not flagged
88
+ - Ensure terminology consistency with glossary
89
+ - Preserve YAML frontmatter and cross-references
90
+ - Use RFC 2119 keywords for behavioral requirements
91
+ - Increment document version number
92
+
93
+ MODE: analysis
94
+ EXPECTED: Corrected document content addressing all listed issues
95
+ CONSTRAINTS: Minimal changes - only fix flagged issues, do not restructure unflagged sections
96
+ " --tool gemini --mode analysis`,
97
+ run_in_background: true
98
+ });
99
+
100
+ // Wait for result, apply fixes to document
101
+ // Update document version in frontmatter
102
+ }
103
+ ```
104
+
105
+ ### Step 3: Update State
106
+
107
+ ```javascript
108
+ specConfig.phasesCompleted.push({
109
+ phase: 6.5,
110
+ name: "auto-fix",
111
+ iteration: specConfig.iteration_count,
112
+ phases_fixed: Object.keys(issuesByPhase).filter(p => issuesByPhase[p].length > 0),
113
+ completed_at: new Date().toISOString()
114
+ });
115
+ Write(`${workDir}/spec-config.json`, JSON.stringify(specConfig, null, 2));
116
+ ```
117
+
118
+ ### Step 4: Re-run Phase 6 Validation
119
+
120
+ ```javascript
121
+ // Re-execute Phase 6: Readiness Check
122
+ // This creates a new readiness-report.md
123
+ // If still Fail and iteration_count < 2: loop back to Step 1
124
+ // If Pass or iteration_count >= 2: proceed to handoff
125
+ ```
126
+
127
+ ## Output
128
+
129
+ - **Updated**: Phase 2-5 documents (only affected ones)
130
+ - **Updated**: `spec-config.json` (iteration tracking)
131
+ - **Triggers**: Phase 6 re-validation
132
+
133
+ ## Quality Checklist
134
+
135
+ - [ ] All Error-severity issues addressed
136
+ - [ ] Warning-severity issues attempted (best effort)
137
+ - [ ] Document versions incremented for modified files
138
+ - [ ] Terminology consistency maintained
139
+ - [ ] Cross-references still valid after fixes
140
+ - [ ] Iteration count not exceeded (max 2)
141
+
142
+ ## Next Phase
143
+
144
+ Re-run [Phase 6: Readiness Check](06-readiness-check.md) to validate fixes.