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,616 @@
1
+ ---
2
+ name: workflow-lite-plan
3
+ description: Lightweight planning skill - task analysis, multi-angle exploration, clarification, adaptive planning, confirmation, and execution handoff
4
+ allowed-tools: Skill, Agent, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep
5
+ ---
6
+
7
+ <purpose>
8
+ Planning pipeline: explore → clarify → plan → confirm → handoff to lite-execute.
9
+ Produces exploration results, a structured plan (plan.json), independent task files (.task/TASK-*.json), and hands off to lite-execute for implementation.
10
+ </purpose>
11
+
12
+ <process>
13
+
14
+ ## 1. Context Isolation
15
+
16
+ > **CRITICAL**: If invoked from analyze-with-file (via "执行任务"), the analyze-with-file session is **COMPLETE** and all its phase instructions are FINISHED and MUST NOT be referenced. Only follow LP-Phase 1-5 defined in THIS document. Phase numbers are INDEPENDENT of any prior workflow.
17
+
18
+ ## 2. Input
19
+
20
+ ```
21
+ <task-description> Task description or path to .md file (required)
22
+ ```
23
+
24
+ | Flag | Description |
25
+ |------|-------------|
26
+ | `-y`, `--yes` | Auto mode: Skip clarification, auto-confirm plan, auto-select execution, skip review (entire plan+execute workflow) |
27
+ | `--force-explore` | Force code exploration even when task has prior analysis |
28
+
29
+ **Note**: Workflow preferences (`autoYes`, `forceExplore`) must be initialized at skill start. If not provided by caller, skill will prompt user for workflow mode selection.
30
+
31
+ ## 3. Output Artifacts
32
+
33
+ | Artifact | Description |
34
+ |----------|-------------|
35
+ | `exploration-{angle}.json` | Per-angle exploration results (1-4 files based on complexity) |
36
+ | `explorations-manifest.json` | Index of all exploration files |
37
+ | `planning-context.md` | Evidence paths + synthesized understanding |
38
+ | `plan.json` | Plan overview with task_ids[] (plan-overview-base-schema.json) |
39
+ | `.task/TASK-*.json` | Independent task files (one per task) |
40
+
41
+ **Output Directory**: `.workflow/.lite-plan/{task-slug}-{YYYY-MM-DD}/`
42
+
43
+ **Agent Usage**: All complexities → `cli-lite-planning-agent`
44
+
45
+ **Schema Reference**: `~/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json`
46
+
47
+ ## 4. Phase Summary
48
+
49
+ | Phase | Core Action | Output |
50
+ |-------|-------------|--------|
51
+ | LP-0 | Initialize workflowPreferences | autoYes, forceExplore |
52
+ | LP-1 | Complexity assessment → parallel cli-explore-agents (1-4) | exploration-*.json + manifest |
53
+ | LP-2 | Aggregate + dedup clarification_needs → multi-round AskUserQuestion | clarificationContext (in-memory) |
54
+ | LP-3 | cli-lite-planning-agent | plan.json + .task/TASK-*.json |
55
+ | LP-4 | Display plan → AskUserQuestion (Confirm + Execution + Review) | userSelection |
56
+ | LP-5 | Build executionContext → Skill("lite-execute") | handoff (Mode 1) |
57
+
58
+ ## 5. LP-Phase 0: Workflow Preferences Initialization
59
+
60
+ ```javascript
61
+ if (typeof workflowPreferences === 'undefined' || workflowPreferences === null) {
62
+ workflowPreferences = {
63
+ autoYes: false, // false: show LP-Phase 2/4 prompts | true (-y): skip all prompts
64
+ forceExplore: false
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## 6. LP-Phase 1: Intelligent Multi-Angle Exploration
70
+
71
+ **Session Setup** (MANDATORY):
72
+ ```javascript
73
+ const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
74
+ const taskSlug = task_description.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
75
+ const dateStr = getUtc8ISOString().substring(0, 10)
76
+ const sessionId = `${taskSlug}-${dateStr}`
77
+ const sessionFolder = `.workflow/.lite-plan/${sessionId}`
78
+ bash(`mkdir -p ${sessionFolder} && test -d ${sessionFolder} && echo "SUCCESS: ${sessionFolder}" || echo "FAILED: ${sessionFolder}"`)
79
+ ```
80
+
81
+ **TodoWrite Template** (initial state — subsequent phases update status progressively):
82
+ ```javascript
83
+ // Pattern: set phases[0..N-1].status="completed", phases[N].status="in_progress"
84
+ // Only full block shown here; subsequent updates follow same structure with status changes
85
+ TodoWrite({ todos: [
86
+ { content: `LP-Phase 1: Exploration [${complexity}] ${selectedAngles.length} angles`, status: "in_progress", activeForm: `Exploring: ${selectedAngles.join(', ')}` },
87
+ { content: "LP-Phase 2: Clarification", status: "pending" },
88
+ { content: "LP-Phase 3: Planning [cli-lite-planning-agent]", status: "pending" },
89
+ { content: "LP-Phase 4: Confirmation", status: "pending" },
90
+ { content: "LP-Phase 5: Execution", status: "pending" }
91
+ ]})
92
+ ```
93
+
94
+ **Exploration Decision Logic**:
95
+ ```javascript
96
+ const hasPriorAnalysis = /##\s*Prior Analysis/i.test(task_description)
97
+ const hasHandoffSpec = /```json:handoff-spec/i.test(task_description)
98
+
99
+ // Parse structured handoff from analyze-with-file (if present)
100
+ let handoffSpec = null
101
+ if (hasHandoffSpec) {
102
+ const specMatch = task_description.match(/```json:handoff-spec\s*\n([\s\S]*?)\n```/)
103
+ if (specMatch) {
104
+ handoffSpec = JSON.parse(specMatch[1])
105
+ // handoffSpec contains: { source, session_id, session_folder, summary,
106
+ // implementation_scope[], code_anchors[], key_files[], key_findings[], decision_context[] }
107
+ // implementation_scope[]: { objective, rationale, priority, target_files[], acceptance_criteria[], change_summary }
108
+ console.log(`[Handoff] From ${handoffSpec.source} session ${handoffSpec.session_id}`)
109
+ console.log(`[Handoff] ${handoffSpec.implementation_scope.length} scoped items with acceptance criteria`)
110
+ }
111
+ }
112
+
113
+ needsExploration = workflowPreferences.forceExplore ? true
114
+ : (hasPriorAnalysis || hasHandoffSpec) ? false
115
+ : (task.mentions_specific_files ||
116
+ task.requires_codebase_context ||
117
+ task.needs_architecture_understanding ||
118
+ task.modifies_existing_code)
119
+
120
+ if (!needsExploration) {
121
+ // manifest absent; LP-Phase 3 loads with safe fallback
122
+ // If handoffSpec exists, it provides pre-scoped implementation context
123
+ proceed_to_next_phase()
124
+ }
125
+ ```
126
+
127
+ **Context Protection**: File reading >=50k chars → force `needsExploration=true` (delegate to cli-explore-agent)
128
+
129
+ **Complexity Assessment**:
130
+ ```javascript
131
+ const complexity = analyzeTaskComplexity(task_description)
132
+ // 'Low': single file, single function, zero cross-module impact (fix typo, rename var, adjust constant)
133
+ // 'Medium': multiple files OR integration point OR new pattern (add endpoint, implement feature, refactor)
134
+ // 'High': cross-module, architectural, systemic (new subsystem, migration, security overhaul)
135
+ // Default bias: uncertain between Low/Medium → choose Medium
136
+
137
+ const ANGLE_PRESETS = {
138
+ architecture: ['architecture', 'dependencies', 'modularity', 'integration-points'],
139
+ security: ['security', 'auth-patterns', 'dataflow', 'validation'],
140
+ performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
141
+ bugfix: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
142
+ feature: ['patterns', 'integration-points', 'testing', 'dependencies']
143
+ }
144
+
145
+ function selectAngles(taskDescription, count) {
146
+ const text = taskDescription.toLowerCase()
147
+ let preset = 'feature'
148
+ if (/refactor|architect|restructure|modular/.test(text)) preset = 'architecture'
149
+ else if (/security|auth|permission|access/.test(text)) preset = 'security'
150
+ else if (/performance|slow|optimi|cache/.test(text)) preset = 'performance'
151
+ else if (/fix|bug|error|issue|broken/.test(text)) preset = 'bugfix'
152
+ return ANGLE_PRESETS[preset].slice(0, count)
153
+ }
154
+
155
+ const selectedAngles = selectAngles(task_description, complexity === 'High' ? 4 : (complexity === 'Medium' ? 3 : 1))
156
+
157
+ console.log(`Exploration Plan: ${complexity} | ${selectedAngles.join(', ')} | cli-lite-planning-agent`)
158
+ ```
159
+
160
+ **Launch Parallel Explorations**:
161
+
162
+ **CRITICAL**: MUST NOT use `run_in_background: true` — exploration results are REQUIRED before planning.
163
+
164
+ ```javascript
165
+ const explorationTasks = selectedAngles.map((angle, index) =>
166
+ Task(
167
+ subagent_type="cli-explore-agent",
168
+ run_in_background=false,
169
+ description=`Explore: ${angle}`,
170
+ prompt=`
171
+ ## Task Objective
172
+ Execute **${angle}** exploration for task planning context.
173
+
174
+ ## Output Location
175
+ **Session Folder**: ${sessionFolder}
176
+ **Output File**: ${sessionFolder}/exploration-${angle}.json
177
+
178
+ ## Assigned Context
179
+ - **Exploration Angle**: ${angle}
180
+ - **Task Description**: ${task_description}
181
+ - **Exploration Index**: ${index + 1} of ${selectedAngles.length}
182
+
183
+ ## Exploration Strategy (${angle} focus)
184
+
185
+ **Step 1: Structural Scan** (Bash)
186
+ - get_modules_by_depth.sh → identify modules related to ${angle}
187
+ - find/rg → locate files relevant to ${angle} aspect
188
+ - Analyze imports/dependencies from ${angle} perspective
189
+
190
+ **Step 2: Semantic Analysis** (Gemini CLI)
191
+ - How does existing code handle ${angle} concerns?
192
+ - What patterns are used for ${angle}?
193
+ - Where would new code integrate from ${angle} viewpoint?
194
+
195
+ **Step 3: Write Output**
196
+ - Consolidate ${angle} findings into JSON
197
+ - Identify ${angle}-specific clarification needs
198
+
199
+ ## Expected Output
200
+ **Schema**: explore-json-schema.json (auto-loaded by agent)
201
+ - All fields scoped to ${angle} perspective
202
+ - Ensure rationale is specific and >10 chars (not generic)
203
+ - Include file:line locations in integration_points
204
+ - _metadata.exploration_angle: "${angle}"
205
+
206
+ ## Success Criteria
207
+ - [ ] get_modules_by_depth.sh executed
208
+ - [ ] At least 3 relevant files with specific rationale (>10 chars) + role classification
209
+ - [ ] Patterns are actionable (code examples, not generic advice)
210
+ - [ ] Integration points include file:line locations
211
+ - [ ] Constraints are project-specific to ${angle}
212
+ - [ ] JSON follows schema; clarification_needs includes options + recommended
213
+ - [ ] Files with relevance >= 0.7 have key_code array + topic_relation
214
+
215
+ ## Execution
216
+ **Write**: \`${sessionFolder}/exploration-${angle}.json\`
217
+ **Return**: 2-3 sentence summary of ${angle} findings
218
+ `
219
+ )
220
+ )
221
+ // Execute all exploration tasks in parallel
222
+ ```
223
+
224
+ **Auto-discover & Build Manifest**:
225
+ ```javascript
226
+ const explorationFiles = bash(`find ${sessionFolder} -name "exploration-*.json" -type f`)
227
+ .split('\n').filter(f => f.trim())
228
+
229
+ const explorationManifest = {
230
+ session_id: sessionId,
231
+ task_description: task_description,
232
+ timestamp: getUtc8ISOString(),
233
+ complexity: complexity,
234
+ exploration_count: explorationFiles.length,
235
+ explorations: explorationFiles.map(file => {
236
+ const data = JSON.parse(Read(file))
237
+ return {
238
+ angle: data._metadata.exploration_angle,
239
+ file: path.basename(file),
240
+ path: file,
241
+ index: data._metadata.exploration_index
242
+ }
243
+ })
244
+ }
245
+
246
+ Write(`${sessionFolder}/explorations-manifest.json`, JSON.stringify(explorationManifest, null, 2))
247
+ console.log(`Exploration complete: ${explorationManifest.explorations.map(e => e.angle).join(', ')}`)
248
+ ```
249
+
250
+ // TodoWrite: Phase 1 → completed, Phase 2 → in_progress
251
+
252
+ **Output**: `exploration-{angle}.json` (1-4 files) + `explorations-manifest.json`
253
+
254
+ ## 7. LP-Phase 2: Clarification (Optional, Multi-Round)
255
+
256
+ **Skip if**: No exploration or `clarification_needs` is empty across all explorations
257
+
258
+ **CRITICAL**: AskUserQuestion limits max 4 questions per call. **MUST execute multiple rounds** to exhaust all clarification needs.
259
+
260
+ ```javascript
261
+ const manifest = file_exists(`${sessionFolder}/explorations-manifest.json`)
262
+ ? JSON.parse(Read(`${sessionFolder}/explorations-manifest.json`))
263
+ : { exploration_count: 0, explorations: [] }
264
+ const explorations = manifest.explorations.map(exp => ({
265
+ angle: exp.angle,
266
+ data: JSON.parse(Read(exp.path))
267
+ }))
268
+
269
+ // Aggregate from all explorations
270
+ const allClarifications = []
271
+ explorations.forEach(exp => {
272
+ if (exp.data.clarification_needs?.length > 0) {
273
+ exp.data.clarification_needs.forEach(need => {
274
+ allClarifications.push({ ...need, source_angle: exp.angle })
275
+ })
276
+ }
277
+ })
278
+
279
+ // Intelligent dedup: merge similar intent across angles, combine options
280
+ const dedupedClarifications = intelligentMerge(allClarifications)
281
+
282
+ if (workflowPreferences.autoYes) {
283
+ console.log(`[Auto] Skipping ${dedupedClarifications.length} clarification questions`)
284
+ } else if (dedupedClarifications.length > 0) {
285
+ const BATCH_SIZE = 4
286
+ const totalRounds = Math.ceil(dedupedClarifications.length / BATCH_SIZE)
287
+
288
+ for (let i = 0; i < dedupedClarifications.length; i += BATCH_SIZE) {
289
+ const batch = dedupedClarifications.slice(i, i + BATCH_SIZE)
290
+ const currentRound = Math.floor(i / BATCH_SIZE) + 1
291
+ console.log(`### Clarification Round ${currentRound}/${totalRounds}`)
292
+
293
+ AskUserQuestion({
294
+ questions: batch.map(need => ({
295
+ question: `[${need.source_angle}] ${need.question}\n\nContext: ${need.context}`,
296
+ header: need.source_angle.substring(0, 12),
297
+ multiSelect: false,
298
+ options: need.options.map((opt, index) => ({
299
+ label: need.recommended === index ? `${opt} ★` : opt,
300
+ description: need.recommended === index ? `Recommended` : `Use ${opt}`
301
+ }))
302
+ }))
303
+ })
304
+ // Store batch responses in clarificationContext before next round
305
+ }
306
+ }
307
+ ```
308
+
309
+ **Output**: `clarificationContext` (in-memory)
310
+
311
+ ## 8. LP-Phase 3: Planning
312
+
313
+ **IMPORTANT**: LP-Phase 3 is **planning only** — NO code execution. All execution happens in LP-Phase 5 via lite-execute.
314
+
315
+ **Executor Assignment** (after plan generation):
316
+ ```javascript
317
+ // Priority: 1. User explicit ("用 gemini 分析..." → gemini) | 2. Default → agent
318
+ const executorAssignments = {} // { taskId: { executor: 'gemini'|'codex'|'agent', reason } }
319
+ const taskFiles = Glob(`${sessionFolder}/.task/TASK-*.json`)
320
+ taskFiles.forEach(taskPath => {
321
+ const task = JSON.parse(Read(taskPath))
322
+ executorAssignments[task.id] = { executor: '...', reason: '...' }
323
+ })
324
+ ```
325
+
326
+ **Invoke cli-lite-planning-agent**:
327
+
328
+ ```javascript
329
+ Task(
330
+ subagent_type="cli-lite-planning-agent",
331
+ run_in_background=false,
332
+ description="Generate detailed implementation plan",
333
+ prompt=`
334
+ Generate implementation plan and write plan.json.
335
+
336
+ ## Output Location
337
+ **Session Folder**: ${sessionFolder}
338
+ **Output Files**:
339
+ - ${sessionFolder}/planning-context.md (evidence + understanding)
340
+ - ${sessionFolder}/plan.json (plan overview — NO embedded tasks[])
341
+ - ${sessionFolder}/.task/TASK-*.json (independent task files, one per task)
342
+
343
+ ## Project Context (MANDATORY)
344
+ Execute: ccw spec load --category planning
345
+ **CRITICAL**: All generated tasks MUST comply with constraints in specs/*.md
346
+
347
+ ## Task Description
348
+ ${task_description}
349
+
350
+ ## Multi-Angle Exploration Context
351
+
352
+ ${manifest.explorations.length > 0
353
+ ? manifest.explorations.map(exp => `### Exploration: ${exp.angle} (${exp.file})
354
+ Path: ${exp.path}
355
+ Read this file for detailed ${exp.angle} analysis.`).join('\n\n') + `
356
+
357
+ Total: ${manifest.exploration_count} | Angles: ${manifest.explorations.map(e => e.angle).join(', ')}
358
+ Manifest: ${sessionFolder}/explorations-manifest.json`
359
+ : `No exploration files. Task Description contains "## Prior Analysis" — use as primary planning context.`}
360
+
361
+ ## Structured Handoff Spec (from analyze-with-file)
362
+ ${handoffSpec ? `
363
+ **Source**: ${handoffSpec.source} session ${handoffSpec.session_id}
364
+ **CRITICAL**: Use implementation_scope as PRIMARY input for task generation.
365
+ Each scope item maps to one or more tasks. Acceptance criteria become convergence.criteria.
366
+
367
+ ${JSON.stringify(handoffSpec.implementation_scope, null, 2)}
368
+
369
+ **Code Anchors** (implementation targets):
370
+ ${JSON.stringify(handoffSpec.code_anchors?.slice(0, 8), null, 2)}
371
+
372
+ **Key Findings** (context):
373
+ ${JSON.stringify(handoffSpec.key_findings?.slice(0, 5), null, 2)}
374
+
375
+ **Task Generation Rules when handoffSpec present**:
376
+ 1. Each implementation_scope item → 1 task (group only if tightly coupled)
377
+ 2. scope.acceptance_criteria[] → task.convergence.criteria[]
378
+ 3. scope.target_files[] → task.files[] with change from scope.change_summary
379
+ 4. scope.objective → task.title, scope.rationale → task.description context
380
+ 5. scope.priority → task ordering (high first)
381
+ ` : 'No structured handoff spec — use task description and explorations as input.'}
382
+
383
+ ## User Clarifications
384
+ ${JSON.stringify(clarificationContext) || "None"}
385
+
386
+ ## Complexity Level
387
+ ${complexity}
388
+
389
+ ## Requirements
390
+ - _metadata.exploration_angles: ${JSON.stringify(manifest.explorations.map(e => e.angle))}
391
+ - Two-layer output: plan.json (task_ids[], NO tasks[]) + .task/TASK-*.json
392
+ - Field names: files[].change (not modification_points), convergence.criteria (not acceptance)
393
+
394
+ ## Task Grouping Rules
395
+ 1. **Group by feature**: All changes for one feature = one task (even if 3-5 files)
396
+ 2. **Group by context**: Related functional changes can be grouped together
397
+ 3. **Minimize agent count**: Group simple unrelated tasks to reduce overhead
398
+ 4. **Avoid file-per-task**: Do NOT create separate tasks for each file
399
+ 5. **Substantial tasks**: Each task = 15-60 minutes of work
400
+ 6. **True dependencies only**: depends_on only when Task B needs Task A's output
401
+ 7. **Prefer parallel**: Most tasks should be independent
402
+
403
+ ## Execution
404
+ 1. ccw spec load → 2. Read ALL exploration files → 3. Synthesize + generate
405
+ 4. Write: planning-context.md, .task/TASK-*.json, plan.json (task_ids[], NO tasks[])
406
+ 5. Return brief completion summary
407
+ `
408
+ )
409
+ ```
410
+
411
+ **Output**: `${sessionFolder}/plan.json`
412
+
413
+ // TodoWrite: Phase 3 → completed, Phase 4 → in_progress
414
+
415
+ ## 9. LP-Phase 4: Task Confirmation & Execution Selection
416
+
417
+ **Display Plan**:
418
+ ```javascript
419
+ const plan = JSON.parse(Read(`${sessionFolder}/plan.json`))
420
+ const tasks = (plan.task_ids || []).map(id => JSON.parse(Read(`${sessionFolder}/.task/${id}.json`)))
421
+
422
+ console.log(`
423
+ ## Implementation Plan
424
+ **Summary**: ${plan.summary}
425
+ **Approach**: ${plan.approach}
426
+ **Tasks** (${tasks.length}):
427
+ ${tasks.map((t, i) => `${i+1}. ${t.title} (${t.scope || t.files?.[0]?.path || ''})`).join('\n')}
428
+ **Complexity**: ${plan.complexity} | **Time**: ${plan.estimated_time} | **Recommended**: ${plan.recommended_execution}
429
+ `)
430
+ ```
431
+
432
+ **Collect Confirmation**:
433
+ ```javascript
434
+ let userSelection
435
+
436
+ if (workflowPreferences.autoYes) {
437
+ console.log(`[Auto] Allow & Execute | Auto | Skip + Skip`)
438
+ userSelection = { confirmation: "Allow", execution_method: "Auto", code_review_tool: "Skip", convergence_review_tool: "Skip" }
439
+ } else {
440
+ // "Other" in Execution allows specifying CLI tools from ~/.claude/cli-tools.json
441
+ userSelection = AskUserQuestion({
442
+ questions: [
443
+ {
444
+ question: `Confirm plan and authorize execution? (${tasks.length} tasks, ${plan.complexity})`,
445
+ header: "Confirm",
446
+ multiSelect: false,
447
+ options: [
448
+ { label: "Allow & Execute", description: "Approve plan and begin execution immediately (no further prompts)" },
449
+ { label: "Modify", description: "Adjust before execution" },
450
+ { label: "Cancel", description: "Abort workflow" }
451
+ ]
452
+ },
453
+ {
454
+ question: "Execution method:",
455
+ header: "Execution",
456
+ multiSelect: false,
457
+ options: [
458
+ { label: "Agent", description: "@code-developer agent" },
459
+ { label: "Codex", description: "codex CLI tool" },
460
+ { label: "Auto", description: `Auto: ${plan.complexity === 'Low' ? 'Agent' : 'Codex'}` }
461
+ ]
462
+ },
463
+ {
464
+ question: "Code review after execution? (runs in lite-execute)",
465
+ header: "Code Review",
466
+ multiSelect: false,
467
+ options: [
468
+ { label: "Gemini Review", description: "Gemini CLI: git diff quality review" },
469
+ { label: "Codex Review", description: "Codex CLI: git-aware code review (--mode review)" },
470
+ { label: "Agent Review", description: "@code-reviewer agent" },
471
+ { label: "Skip", description: "No code review" }
472
+ ]
473
+ },
474
+ {
475
+ question: "Convergence review in test-review phase?",
476
+ header: "Convergence Review",
477
+ multiSelect: false,
478
+ options: [
479
+ { label: "Agent", description: "Agent: verify convergence criteria against implementation" },
480
+ { label: "Gemini", description: "Gemini CLI: convergence verification" },
481
+ { label: "Codex", description: "Codex CLI: convergence verification" },
482
+ { label: "Skip", description: "Skip convergence review, run tests only" }
483
+ ]
484
+ }
485
+ ]
486
+ })
487
+ }
488
+ ```
489
+
490
+ // TodoWrite: Phase 4 → completed `[${userSelection.execution_method} | CR:${userSelection.code_review_tool} | CVR:${userSelection.convergence_review_tool}]`, Phase 5 → in_progress
491
+
492
+ ## 10. LP-Phase 5: Handoff to Execution
493
+
494
+ **CRITICAL**: lite-plan NEVER executes code directly. ALL execution goes through lite-execute.
495
+
496
+ **Build executionContext**:
497
+ ```javascript
498
+ const manifest = file_exists(`${sessionFolder}/explorations-manifest.json`)
499
+ ? JSON.parse(Read(`${sessionFolder}/explorations-manifest.json`))
500
+ : { exploration_count: 0, explorations: [] }
501
+ const explorations = {}
502
+ manifest.explorations.forEach(exp => {
503
+ if (file_exists(exp.path)) explorations[exp.angle] = JSON.parse(Read(exp.path))
504
+ })
505
+
506
+ const plan = JSON.parse(Read(`${sessionFolder}/plan.json`))
507
+
508
+ executionContext = {
509
+ planObject: plan,
510
+ taskFiles: (plan.task_ids || []).map(id => ({ id, path: `${sessionFolder}/.task/${id}.json` })),
511
+ explorationsContext: explorations,
512
+ explorationAngles: manifest.explorations.map(e => e.angle),
513
+ explorationManifest: manifest,
514
+ clarificationContext: clarificationContext || null,
515
+ executionMethod: userSelection.execution_method,
516
+ codeReviewTool: userSelection.code_review_tool,
517
+ convergenceReviewTool: userSelection.convergence_review_tool,
518
+ originalUserInput: task_description,
519
+ executorAssignments: executorAssignments, // { taskId: { executor, reason } } — overrides executionMethod
520
+ session: {
521
+ id: sessionId,
522
+ folder: sessionFolder,
523
+ artifacts: {
524
+ explorations: manifest.explorations.map(exp => ({ angle: exp.angle, path: exp.path })),
525
+ explorations_manifest: `${sessionFolder}/explorations-manifest.json`,
526
+ plan: `${sessionFolder}/plan.json`,
527
+ task_dir: `${sessionFolder}/.task`
528
+ }
529
+ }
530
+ }
531
+ ```
532
+
533
+ **Handoff**:
534
+ ```javascript
535
+ if (!workflowPreferences.autoYes) {
536
+ console.log(`Handing off to execution engine. No further prompts.`)
537
+ }
538
+
539
+ // TodoWrite: Phase 5 → completed, add LE-Phase 1 → in_progress
540
+ const taskCount = (plan.task_ids || []).length
541
+ TodoWrite({ todos: [
542
+ { content: "LP-Phase 1: Exploration", status: "completed" },
543
+ { content: "LP-Phase 2: Clarification", status: "completed" },
544
+ { content: "LP-Phase 3: Planning", status: "completed" },
545
+ { content: `LP-Phase 4: Confirmed [${userSelection.execution_method} | CR:${userSelection.code_review_tool} | CVR:${userSelection.convergence_review_tool}]`, status: "completed" },
546
+ { content: `LP-Phase 5: Handoff → lite-execute`, status: "completed" },
547
+ { content: `LE-Phase 1: Task Loading [${taskCount} tasks]`, status: "in_progress", activeForm: "Loading tasks" }
548
+ ]})
549
+
550
+ Skill("lite-execute")
551
+ // executionContext passed as global variable (Mode 1: In-Memory Plan)
552
+ ```
553
+
554
+ ## 11. Session Folder Structure
555
+
556
+ ```
557
+ .workflow/.lite-plan/{task-slug}-{YYYY-MM-DD}/
558
+ ├── exploration-{angle}.json (1-4) # Per-angle exploration
559
+ ├── explorations-manifest.json # Exploration index
560
+ ├── planning-context.md # Evidence paths + understanding
561
+ ├── plan.json # Plan overview (task_ids[])
562
+ ├── code-review.md # Generated by lite-execute Step 4
563
+ ├── test-checklist.json # Generated by lite-test-review
564
+ ├── test-review.md # Generated by lite-test-review
565
+ └── .task/
566
+ ├── TASK-001.json
567
+ ├── TASK-002.json
568
+ └── ...
569
+ ```
570
+
571
+ ## Chain: lite-plan → lite-execute → lite-test-review
572
+
573
+ ```
574
+ lite-plan (LP-Phase 1-5)
575
+ └─ Skill("lite-execute") ← executionContext (global)
576
+ ├─ Step 1-3: Task Execution
577
+ ├─ Step 4: Code Review (quality/correctness/security)
578
+ └─ Step 5: Skill("lite-test-review") ← testReviewContext (global)
579
+ ├─ TR-Phase 1: Detect test framework
580
+ ├─ TR-Phase 2: Convergence verification (plan criteria)
581
+ ├─ TR-Phase 3-4: Run tests + Auto-fix
582
+ └─ TR-Phase 5: Report + Sync specs
583
+ ```
584
+
585
+ ## 12. Error Handling
586
+
587
+ | Error | Resolution |
588
+ |-------|------------|
589
+ | Exploration agent failure | Skip exploration, continue with task description only |
590
+ | Planning agent failure | Retry with reduced complexity or suggest breaking task |
591
+ | Clarification timeout | Use exploration findings as-is |
592
+ | Confirmation timeout | Save context, display resume instructions |
593
+ | Modify loop > 3 times | Suggest breaking task or using /workflow-plan |
594
+
595
+ </process>
596
+
597
+ <auto_mode>
598
+ When `workflowPreferences.autoYes === true` (entire plan+execute workflow):
599
+ - **Clarification**: Skipped | **Plan Confirmation**: Allow & Execute | **Execution**: Auto | **Review**: Skip
600
+
601
+ Auto mode authorizes the complete plan-and-execute workflow with a single confirmation. No further prompts.
602
+ </auto_mode>
603
+
604
+ <success_criteria>
605
+ - [ ] Workflow preferences (autoYes, forceExplore) initialized at LP-Phase 0
606
+ - [ ] Complexity assessed and exploration angles selected appropriately
607
+ - [ ] Parallel exploration agents launched with run_in_background=false
608
+ - [ ] Explorations manifest built from auto-discovered files
609
+ - [ ] Clarification needs aggregated, deduped, and presented in batches of 4
610
+ - [ ] Plan generated via cli-lite-planning-agent
611
+ - [ ] Plan output as two-layer: plan.json (task_ids[]) + .task/TASK-*.json
612
+ - [ ] User confirmation collected (or auto-approved in auto mode)
613
+ - [ ] executionContext fully built with all artifacts and session references
614
+ - [ ] Handoff to lite-execute via Skill("lite-execute") with executionContext
615
+ - [ ] No code execution in planning phases -- all execution deferred to lite-execute
616
+ </success_criteria>