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,936 @@
1
+ ---
2
+ name: integration-test-cycle
3
+ description: Self-iterating integration test workflow with codebase exploration, test development, autonomous test-fix cycles, and reflection-driven strategy adjustment
4
+ argument-hint: "[-y|--yes] [-c|--continue] [--max-iterations=N] \"module or feature description\""
5
+ allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*), Skill(*)
6
+ ---
7
+
8
+ ## Auto Mode
9
+
10
+ When `--yes` or `-y`: Auto-confirm exploration decisions, use recommended test strategies, skip interactive checkpoints.
11
+
12
+ # Workflow Integration-Test-Cycle Command
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Basic - explore and test a module
18
+ /workflow:integration-test-cycle "用户认证模块的集成测试"
19
+
20
+ # Auto mode - fully autonomous
21
+ /workflow:integration-test-cycle -y "支付流程端到端集成测试"
22
+
23
+ # Continue interrupted session
24
+ /workflow:integration-test-cycle --continue "认证模块"
25
+
26
+ # Custom iteration limit
27
+ /workflow:integration-test-cycle --max-iterations=15 "API网关集成测试"
28
+ ```
29
+
30
+ **Context Source**: cli-explore-agent + Gemini/Codex analysis
31
+ **Output Directory**: `.workflow/.integration-test/{session-id}/`
32
+ **Core Innovation**: Reflection-driven self-iterating test cycle with documented learning evolution
33
+
34
+ ## What & Why
35
+
36
+ ### Core Concept
37
+
38
+ Unified integration test workflow: **Explore → Design → Develop → Test → Reflect → Adjust → Re-test** — a closed-loop that autonomously improves test quality through text-based reflection.
39
+
40
+ **vs Existing Commands**:
41
+ - **test-fix-gen**: Only generates test tasks, requires manual `workflow-test-fix` skill
42
+ - **test-cycle-execute**: Only executes pre-existing tasks, no exploration or test design
43
+ - **This command**: Full lifecycle — from zero knowledge to passing integration tests, with self-reflection
44
+
45
+ ### Value Proposition
46
+ 1. **Zero-to-Tests**: No prior session needed — starts from exploration
47
+ 2. **Self-Improving**: Reflection log drives strategy adjustment between iterations
48
+ 3. **Integration Focus**: Specifically targets cross-module boundaries and API contracts
49
+ 4. **Documented Learning**: Every decision, failure, and adjustment recorded in reflection-log.md
50
+
51
+ ## Output Artifacts
52
+
53
+ **2 核心文件 + 1 追踪目录**,全流程产物最小化:
54
+
55
+ | Artifact | Type | Description |
56
+ |----------|------|-------------|
57
+ | `reflection-log.md` | 人类可读 | ⭐ 唯一文本文档:探索发现、设计决策、迭代反思、累积认知、最终结论 |
58
+ | `state.json` | 机器可读 | 唯一状态文件:探索上下文、测试设计、测试清单、迭代状态、测试结果、修复历史、最终摘要 |
59
+ | `.trace/` | 原始日志 | CLI 输出和测试日志,仅调试用:`cli-{N}.txt`、`test-output.log` |
60
+
61
+ ```
62
+ .workflow/.integration-test/ITG-{slug}-{date}/
63
+ ├── reflection-log.md # ⭐ 唯一人类可读文档 (exploration + design + iterations + conclusions)
64
+ ├── state.json # 唯一机器状态 (exploration + design + inventory + iterations + results + summary)
65
+ └── .trace/ # 原始日志 (仅调试参考)
66
+ ├── cli-1.txt
67
+ ├── cli-2.txt
68
+ └── test-output.log
69
+ ```
70
+
71
+ ## Overview
72
+
73
+ ```
74
+ ┌─────────────────────────────────────────────────────────────────────────┐
75
+ │ SELF-ITERATING INTEGRATION TEST WORKFLOW │
76
+ ├─────────────────────────────────────────────────────────────────────────┤
77
+ │ │
78
+ │ Phase 1: Session Initialization │
79
+ │ ├─ Parse input (module description) │
80
+ │ ├─ Create session directory │
81
+ │ └─ Initialize reflection-log.md + state.json │
82
+ │ │
83
+ │ Phase 2: Codebase Exploration │
84
+ │ ├─ cli-explore-agent: Module structure & dependencies │
85
+ │ ├─ Identify integration points & boundaries │
86
+ │ ├─ Map cross-module data flows │
87
+ │ ├─ Write state.json.exploration │
88
+ │ └─ Append exploration findings to reflection-log.md │
89
+ │ │
90
+ │ Phase 3: Integration Test Design │
91
+ │ ├─ CLI analysis: Design test strategy │
92
+ │ ├─ Define integration scenarios │
93
+ │ ├─ [Interactive] User confirms/adjusts strategy │
94
+ │ ├─ Write state.json.test_design │
95
+ │ └─ Append design decisions to reflection-log.md │
96
+ │ │
97
+ │ Phase 4: Test Development │
98
+ │ ├─ @code-developer: Generate integration tests │
99
+ │ ├─ Code validation (imports, types, mocks) │
100
+ │ ├─ Write state.json.test_inventory │
101
+ │ └─ Append development notes to reflection-log.md │
102
+ │ │
103
+ │ Phase 5: Self-Iterating Test Cycle ◄─── CORE LOOP ──┐ │
104
+ │ ├─ Execute tests │ │
105
+ │ ├─ Calculate pass rate │ │
106
+ │ ├─ Decision: │ │
107
+ │ │ ├─ >= 95% → Phase 6 (Complete) │ │
108
+ │ │ └─ < 95% → Reflect & Adjust ──────────────────→ │ │
109
+ │ │ ├─ Inline reflection to reflection-log.md │ │
110
+ │ │ ├─ Update state.json.iterations │ │
111
+ │ │ ├─ Select strategy based on cumulative learnings │
112
+ │ │ ├─ @cli-planning-agent: Analyze failures │ │
113
+ │ │ ├─ @test-fix-agent: Apply fixes │ │
114
+ │ │ └─ Loop │ │
115
+ │ └─ Max iterations check (default: 10) │
116
+ │ │
117
+ │ Phase 6: Completion │
118
+ │ ├─ Write state.json.summary │
119
+ │ ├─ Finalize reflection-log.md with conclusions │
120
+ │ └─ Offer next steps │
121
+ │ │
122
+ └─────────────────────────────────────────────────────────────────────────┘
123
+ ```
124
+
125
+ ## Implementation
126
+
127
+ ### Session Initialization
128
+
129
+ **Objective**: Create session context and initialize 2 core files.
130
+
131
+ **Required Actions**:
132
+ 1. Extract module/feature description from `$ARGUMENTS`
133
+ 2. Generate session ID: `ITG-{slug}-{date}`
134
+ - slug: lowercase, alphanumeric + Chinese, max 40 chars
135
+ - date: YYYY-MM-DD (UTC+8)
136
+ 3. Define session folder: `.workflow/.integration-test/{session-id}`
137
+ 4. Parse command options:
138
+ - `-c` or `--continue` for session continuation
139
+ - `-y` or `--yes` for auto-approval mode
140
+ - `--max-iterations=N` (default: 10)
141
+ 5. Auto-detect mode: If session folder + reflection-log.md exist → continue mode
142
+ 6. Create directory structure: `{sessionFolder}/`, `{sessionFolder}/.trace/`
143
+
144
+ **Initialize reflection-log.md**:
145
+
146
+ ```markdown
147
+ # Integration Test Reflection Log
148
+
149
+ ## Session: {sessionId}
150
+ - **Topic**: {module_or_feature_description}
151
+ - **Started**: {timestamp}
152
+ - **Mode**: {new|continue}
153
+ - **Max Iterations**: {maxIterations}
154
+
155
+ ---
156
+
157
+ ## Phase 2: Exploration
158
+ > Pending...
159
+
160
+ ## Phase 3: Test Design
161
+ > Pending...
162
+
163
+ ## Phase 4: Test Development
164
+ > Pending...
165
+
166
+ ## Iteration Timeline
167
+ > Iterations will be appended here...
168
+
169
+ ## Cumulative Learnings
170
+ > Updated after each iteration...
171
+
172
+ ## Conclusions
173
+ > Final synthesis after completion...
174
+ ```
175
+
176
+ **Initialize state.json**:
177
+
178
+ ```json
179
+ {
180
+ "session_id": "{sessionId}",
181
+ "module": "{module_description}",
182
+ "started": "{timestamp}",
183
+ "max_iterations": 10,
184
+ "phase": "init",
185
+ "exploration": null,
186
+ "test_design": null,
187
+ "test_inventory": null,
188
+ "iterations": {
189
+ "current": 0,
190
+ "strategy": null,
191
+ "next_action": "explore",
192
+ "history": [],
193
+ "stuck_tests": [],
194
+ "latest_results": null
195
+ },
196
+ "fix_history": [],
197
+ "summary": null
198
+ }
199
+ ```
200
+
201
+ ---
202
+
203
+ ### Phase 2: Codebase Exploration
204
+
205
+ **Objective**: Deep-dive into the target module, identify integration points, dependencies, and data flows.
206
+
207
+ **Workflow Steps**:
208
+
209
+ 1. **Codebase Exploration via cli-explore-agent**
210
+
211
+ ```javascript
212
+ Agent({
213
+ subagent_type: "cli-explore-agent",
214
+ run_in_background: false,
215
+ description: `Explore integration points: ${topicSlug}`,
216
+ prompt: `
217
+ ## Analysis Context
218
+ Topic: ${module_description}
219
+ Session: ${sessionFolder}
220
+
221
+ ## MANDATORY FIRST STEPS
222
+ 1. Run: ccw tool exec get_modules_by_depth '{}'
223
+ 2. Execute relevant searches: module boundaries, exported APIs, shared types
224
+ 3. Read: .workflow/project-tech.json (if exists)
225
+
226
+ ## Exploration Focus
227
+ - **Module Boundaries**: Entry points, public APIs, exported interfaces
228
+ - **Dependencies**: What this module depends on, what depends on it
229
+ - **Integration Points**: Cross-module calls, shared state, event flows
230
+ - **Data Contracts**: Types, schemas, validation at boundaries
231
+ - **Existing Tests**: Current test patterns, test utilities, mocking conventions
232
+ - **Configuration**: Environment dependencies, feature flags, external services
233
+
234
+ ## Output
235
+ Update state.json field "exploration" with:
236
+ {
237
+ "module_structure": { "entry_points": [], "public_apis": [], "internal_modules": [] },
238
+ "dependencies": { "upstream": [], "downstream": [], "external_services": [] },
239
+ "integration_points": [{ "from": "", "to": "", "type": "api|event|shared_state", "contract": "" }],
240
+ "data_flows": [{ "name": "", "path": [], "transforms": [] }],
241
+ "existing_tests": { "test_files": [], "patterns": [], "utilities": [], "mocking_conventions": "" },
242
+ "test_framework": { "runner": "", "assertion_lib": "", "mock_lib": "" },
243
+ "risk_areas": [{ "area": "", "reason": "", "priority": "high|medium|low" }],
244
+ "_metadata": { "files_analyzed": 0, "timestamp": "" }
245
+ }
246
+
247
+ Also set state.json "phase" to "explored".
248
+ `
249
+ })
250
+ ```
251
+
252
+ 2. **Append to reflection-log.md** (replace `## Phase 2: Exploration` placeholder):
253
+
254
+ ```markdown
255
+ ## Phase 2: Exploration - {timestamp}
256
+
257
+ ### What We Found
258
+ - **Module Boundaries**: {summary of entry points and APIs}
259
+ - **Integration Points**: {N} cross-module connections identified
260
+ - **Data Flows**: {key data flow paths}
261
+ - **Existing Test Patterns**: {test framework, conventions}
262
+
263
+ ### Initial Assumptions
264
+ - {assumption_1}: {basis}
265
+ - {assumption_2}: {basis}
266
+
267
+ ### Risk Areas
268
+ - {risk_1}: {why risky for integration testing}
269
+
270
+ ### Decision Log
271
+ > **Decision**: Focus integration testing on {specific boundaries}
272
+ > - **Context**: Exploration revealed {N} integration points
273
+ > - **Chosen**: {approach} — **Reason**: {rationale}
274
+ ```
275
+
276
+ ---
277
+
278
+ ### Phase 3: Integration Test Design
279
+
280
+ **Objective**: Design integration test strategy based on exploration findings.
281
+
282
+ **Workflow Steps**:
283
+
284
+ 1. **CLI Analysis for Test Strategy Design**
285
+
286
+ ```javascript
287
+ Bash({
288
+ command: `ccw cli -p "
289
+ PURPOSE: Design integration test strategy for '${module_description}' based on exploration findings
290
+ Success: Comprehensive test design covering all critical integration points
291
+
292
+ EXPLORATION CONTEXT:
293
+ ${JSON.stringify(state.exploration, null, 2)}
294
+
295
+ TASK:
296
+ • Analyze integration points and prioritize by risk
297
+ • Design test scenarios for each critical integration boundary
298
+ • Define mocking strategy: what to mock vs what to test end-to-end
299
+ • Specify test data setup and teardown patterns
300
+ • Define success criteria per scenario
301
+
302
+ MODE: analysis
303
+ CONTEXT: @**/* | Module: ${module_description}
304
+ EXPECTED: Structured test design with: integration scenarios (grouped by boundary), mocking strategy, test data patterns, execution order, success criteria per scenario
305
+ CONSTRAINTS: Focus on integration boundaries | Follow existing test patterns | Avoid duplicating unit tests
306
+ " --tool gemini --mode analysis --rule analysis-analyze-code-patterns`,
307
+ run_in_background: true
308
+ })
309
+ ```
310
+
311
+ 2. **Interactive Strategy Confirmation** (skip in auto mode)
312
+
313
+ ```javascript
314
+ AskUserQuestion({
315
+ questions: [{
316
+ question: "集成测试策略如何调整?",
317
+ header: "Test Strategy",
318
+ options: [
319
+ { label: "确认策略,开始开发", description: "当前测试设计方案合理,直接开始生成测试" },
320
+ { label: "调整测试范围", description: "需要扩大或缩小集成测试覆盖范围" },
321
+ { label: "修改Mock策略", description: "对哪些模块需要Mock有不同意见" },
322
+ { label: "补充测试场景", description: "有额外的集成测试场景需要覆盖" }
323
+ ],
324
+ multiSelect: false
325
+ }]
326
+ })
327
+ ```
328
+
329
+ 3. **Update state.json** — write `test_design` field:
330
+
331
+ ```json
332
+ {
333
+ "test_design": {
334
+ "integration_scenarios": [
335
+ {
336
+ "id": "IS-001",
337
+ "name": "scenario name",
338
+ "boundary": "moduleA → moduleB",
339
+ "type": "api_contract|event_flow|shared_state|data_pipeline",
340
+ "priority": "critical|high|medium",
341
+ "test_cases": [
342
+ { "name": "happy path", "input": "", "expected": "", "assertion_type": "" },
343
+ { "name": "error propagation", "input": "", "expected": "" },
344
+ { "name": "boundary condition", "input": "", "expected": "" }
345
+ ],
346
+ "mocking": { "mock_targets": [], "real_targets": [], "reason": "" },
347
+ "setup": "description",
348
+ "teardown": "description"
349
+ }
350
+ ],
351
+ "mocking_strategy": {
352
+ "approach": "minimal|moderate|heavy",
353
+ "mock_boundaries": [],
354
+ "real_boundaries": [],
355
+ "rationale": ""
356
+ },
357
+ "execution_order": ["IS-001", "IS-002"],
358
+ "success_criteria": { "pass_rate": 95, "coverage_target": 80 }
359
+ }
360
+ }
361
+ ```
362
+
363
+ Also set `state.json.phase` to `"designed"`.
364
+
365
+ 4. **Append to reflection-log.md** (replace `## Phase 3: Test Design` placeholder):
366
+
367
+ ```markdown
368
+ ## Phase 3: Test Design - {timestamp}
369
+
370
+ ### Strategy Summary
371
+ - **Total Scenarios**: {N} integration scenarios
372
+ - **Priority Distribution**: {N} critical, {N} high, {N} medium
373
+ - **Mocking Approach**: {minimal|moderate|heavy}
374
+
375
+ ### Design Decisions
376
+ > **Decision**: {mocking strategy choice}
377
+ > - **Chosen**: {approach} — **Reason**: {rationale}
378
+
379
+ ### User Feedback
380
+ - {user_adjustment_if_any}
381
+ ```
382
+
383
+ ---
384
+
385
+ ### Phase 4: Test Development
386
+
387
+ **Objective**: Generate integration test code based on the test design.
388
+
389
+ **Workflow Steps**:
390
+
391
+ 1. **Generate Integration Tests via @code-developer**
392
+
393
+ ```javascript
394
+ Agent({
395
+ subagent_type: "code-developer",
396
+ run_in_background: false,
397
+ description: `Generate integration tests: ${topicSlug}`,
398
+ prompt: `
399
+ ## Task Objective
400
+ Generate integration tests based on test design specification.
401
+
402
+ ## MANDATORY FIRST STEPS
403
+ 1. Read state.json: ${sessionFolder}/state.json — use "exploration" and "test_design" fields
404
+ 2. Identify existing test patterns in the codebase
405
+ 3. Read relevant source files for each integration boundary
406
+
407
+ ## Test Development Requirements
408
+ - Follow existing test framework and conventions (from state.json.exploration.test_framework)
409
+ - One test file per integration boundary (or logical grouping)
410
+ - Include: test data setup, scenario execution, assertions, cleanup
411
+ - Use mocking strategy from state.json.test_design.mocking_strategy
412
+ - Cover all test cases defined in integration_scenarios
413
+ - Add descriptive test names: "should {behavior} when {condition}"
414
+
415
+ ## Code Quality
416
+ - No hallucinated imports - verify every import exists
417
+ - No placeholder/TODO code - all tests must be executable
418
+ - Proper async/await handling
419
+ - Proper error assertion (expect specific error types/messages)
420
+
421
+ ## Output
422
+ 1. Write test files to appropriate directories following project conventions
423
+ 2. Update state.json field "test_inventory" with:
424
+ {
425
+ "test_files": [{ "path": "", "scenario_ids": [], "test_count": 0, "boundary": "" }],
426
+ "total_tests": 0,
427
+ "total_files": 0,
428
+ "timestamp": ""
429
+ }
430
+ Also set state.json "phase" to "developed".
431
+ `
432
+ })
433
+ ```
434
+
435
+ 2. **Code Validation Gate via @test-fix-agent**
436
+
437
+ ```javascript
438
+ Agent({
439
+ subagent_type: "test-fix-agent",
440
+ run_in_background: false,
441
+ description: `Validate generated tests: ${topicSlug}`,
442
+ prompt: `
443
+ ## Task Objective
444
+ Validate generated integration test code for common AI-generated issues.
445
+
446
+ ## MANDATORY FIRST STEPS
447
+ 1. Read state.json: ${sessionFolder}/state.json — use "test_inventory" field for file list
448
+ 2. Read each test file listed in test_inventory.test_files
449
+
450
+ ## Validation Checklist
451
+ - [ ] All imports resolve to existing modules
452
+ - [ ] No placeholder or TODO code blocks
453
+ - [ ] Mock setup matches actual module interfaces
454
+ - [ ] Async operations properly awaited
455
+ - [ ] Test assertions are specific (not just "toBeTruthy")
456
+ - [ ] Cleanup/teardown properly implemented
457
+ - [ ] TypeScript types correct (run tsc --noEmit if applicable)
458
+
459
+ ## On Validation Failure
460
+ - Fix issues directly in test files
461
+ - Log fixes to: ${sessionFolder}/.trace/validation-fixes.log
462
+ `
463
+ })
464
+ ```
465
+
466
+ 3. **Append to reflection-log.md** (replace `## Phase 4: Test Development` placeholder):
467
+
468
+ ```markdown
469
+ ## Phase 4: Test Development - {timestamp}
470
+
471
+ ### Generated Tests
472
+ - **Files**: {N} test files
473
+ - **Total Tests**: {N} test cases
474
+ - **Scenarios Covered**: {list}
475
+
476
+ ### Validation Results
477
+ - Issues Found: {N}, Fixed: {N}
478
+
479
+ ### Development Notes
480
+ - {notable patterns used}
481
+ ```
482
+
483
+ ---
484
+
485
+ ### Phase 5: Self-Iterating Test Cycle
486
+
487
+ **Objective**: Execute tests, analyze failures, reflect, adjust strategy, fix, and re-test until pass rate >= 95% or max iterations.
488
+
489
+ **Quality Gate**: Pass rate >= 95% (criticality-aware) or 100%
490
+ **Max Iterations**: From session config (default: 10)
491
+
492
+ #### Iteration Loop
493
+
494
+ ```
495
+ for iteration = 1 to maxIterations:
496
+ 1. Execute Tests → update state.json.iterations.latest_results
497
+ 2. Evaluate: 100% → SUCCESS | >= 95% low-crit → PARTIAL | < 95% → step 3
498
+ 3. Reflect → append inline to reflection-log.md
499
+ 4. Select Strategy (reflection-informed)
500
+ 5. Analyze & Fix → save CLI output to .trace/cli-{N}.txt
501
+ 6. Loop back to step 1
502
+ ```
503
+
504
+ #### Strategy Engine (Reflection-Enhanced)
505
+
506
+ | Strategy | Trigger | Behavior |
507
+ |----------|---------|----------|
508
+ | **Conservative** | Iteration 1-2 (default) | Single targeted fix, full validation |
509
+ | **Aggressive** | Pass rate >80% + similar failures | Batch fix related issues |
510
+ | **Surgical** | Regression detected (pass rate drops >10%) | Minimal changes, rollback focus |
511
+ | **Reflective** | Same tests stuck 3+ iterations | Re-examine assumptions, redesign test |
512
+
513
+ ```javascript
514
+ function selectStrategy(iteration, passRate, stuckTests) {
515
+ if (regressionDetected) return "surgical";
516
+ if (stuckTests.length > 0 && stuckTestIterations >= 3) return "reflective";
517
+ if (iteration <= 2) return "conservative";
518
+ if (passRate > 80 && failurePattern.similarity > 0.7) return "aggressive";
519
+ return "conservative";
520
+ }
521
+ ```
522
+
523
+ #### Inline Reflection Format (appended to reflection-log.md `## Iteration Timeline`)
524
+
525
+ Each iteration appends one section directly into reflection-log.md (no separate files):
526
+
527
+ ```markdown
528
+ ### Iteration {N} - {timestamp}
529
+
530
+ **Results**: {pass_rate}% ({passed}/{total}) | Strategy: {strategy}
531
+ **Failed**: {test_list}
532
+
533
+ **Why It Failed**: {root cause analysis}
534
+ **Assumed vs Reality**: {gap description}
535
+ **Learned**: {key takeaway}
536
+ **Next Action**: {strategy adjustment or specific fix plan}
537
+ ```
538
+
539
+ #### state.json Iteration Update
540
+
541
+ After each iteration, update `state.json.iterations`:
542
+
543
+ ```json
544
+ {
545
+ "iterations": {
546
+ "current": 3,
547
+ "strategy": "aggressive",
548
+ "next_action": "execute_fix",
549
+ "history": [
550
+ {
551
+ "iteration": 1,
552
+ "pass_rate": 70,
553
+ "strategy": "conservative",
554
+ "failed_tests": ["test_auth_integration", "test_payment_flow"],
555
+ "reflection_summary": "Auth token not propagated to payment service",
556
+ "strategy_adjustment": "none"
557
+ },
558
+ {
559
+ "iteration": 2,
560
+ "pass_rate": 82,
561
+ "strategy": "conservative",
562
+ "failed_tests": ["test_payment_flow"],
563
+ "reflection_summary": "Payment timeout too short for integration",
564
+ "strategy_adjustment": "aggressive - similar timeout failures"
565
+ }
566
+ ],
567
+ "stuck_tests": [],
568
+ "latest_results": {
569
+ "pass_rate": 82,
570
+ "passed": 9,
571
+ "failed": 2,
572
+ "total": 11,
573
+ "failures": [
574
+ { "test": "", "file": "", "error": "", "criticality": "high|medium|low" }
575
+ ]
576
+ }
577
+ }
578
+ }
579
+ ```
580
+
581
+ #### Cumulative Learnings Update
582
+
583
+ After each iteration, update the `## Cumulative Learnings` section in reflection-log.md (replace, not append):
584
+
585
+ ```markdown
586
+ ## Cumulative Learnings (Updated: Iteration {N})
587
+
588
+ ### Confirmed Understanding
589
+ - {verified facts}
590
+
591
+ ### Corrected Assumptions
592
+ - ~~{old}~~ → {new} (Iteration {N})
593
+
594
+ ### Effective Strategies
595
+ - {what worked}: {context}
596
+
597
+ ### Ineffective Strategies
598
+ - {what didn't work}: {why}
599
+
600
+ ### Recurring Patterns
601
+ - {pattern}: root cause {cause}
602
+ ```
603
+
604
+ #### Agent Invocations
605
+
606
+ **@test-fix-agent** (test execution):
607
+ ```javascript
608
+ Agent({
609
+ subagent_type: "test-fix-agent",
610
+ run_in_background: false,
611
+ description: `Execute integration tests: iteration ${N}`,
612
+ prompt: `
613
+ ## Task Objective
614
+ Execute integration test suite and report results with criticality assessment.
615
+
616
+ ## MANDATORY FIRST STEPS
617
+ 1. Read state.json: ${sessionFolder}/state.json — use "test_inventory" for test files
618
+ ${isFixIteration ? `2. Read fix strategy from state.json.fix_history (latest entry)` : ''}
619
+
620
+ ## Test Execution
621
+ ${progressiveMode
622
+ ? `- Run affected tests only: ${affectedTests.join(' ')}`
623
+ : '- Run full integration test suite'}
624
+
625
+ ## Criticality Assessment
626
+ For each failure, assign:
627
+ - **high**: Core integration broken, data corruption risk
628
+ - **medium**: Feature degradation, partial failure
629
+ - **low**: Edge case, flaky, environment-specific
630
+
631
+ ## Output
632
+ - Update state.json field "iterations.latest_results" with test results
633
+ - Overwrite ${sessionFolder}/.trace/test-output.log with full output
634
+ `
635
+ })
636
+ ```
637
+
638
+ **@cli-planning-agent** (failure analysis with reflection):
639
+ ```javascript
640
+ Agent({
641
+ subagent_type: "cli-planning-agent",
642
+ run_in_background: false,
643
+ description: `Analyze failures: iteration ${N} - ${strategy}`,
644
+ prompt: `
645
+ ## Task Objective
646
+ Analyze test failures using reflection context and generate fix strategy.
647
+
648
+ ## MANDATORY FIRST STEPS
649
+ 1. Read state.json: ${sessionFolder}/state.json — use "iterations" for history
650
+ 2. Read test output: ${sessionFolder}/.trace/test-output.log
651
+ 3. Read reflection-log.md: ${sessionFolder}/reflection-log.md — "Cumulative Learnings" section
652
+
653
+ ## Reflection Context (CRITICAL)
654
+ - **Iteration History**: ${state.iterations.history}
655
+ - **Stuck Tests**: ${state.iterations.stuck_tests}
656
+ - **What hasn't worked**: Read from "Ineffective Strategies" in reflection-log.md
657
+
658
+ ## Strategy: ${selectedStrategy}
659
+ - Conservative: Single targeted fix, verify no regression
660
+ - Aggressive: Batch fix similar failures
661
+ - Surgical: Minimal changes, rollback-safe
662
+ - Reflective: Challenge assumptions, propose alternative test approach
663
+
664
+ ## Expected Deliverables
665
+ 1. Append fix entry to state.json "fix_history" array:
666
+ { "iteration": ${N}, "strategy": "", "modification_points": [], "affected_tests": [], "confidence": 0.0 }
667
+ 2. Save CLI output to: ${sessionFolder}/.trace/cli-${N}.txt
668
+
669
+ ## Success Criteria
670
+ - Root cause identified (not symptoms)
671
+ - Fix strategy with specific modification points
672
+ - Affected tests listed for progressive testing
673
+ `
674
+ })
675
+ ```
676
+
677
+ **@test-fix-agent** (apply fixes):
678
+ ```javascript
679
+ Agent({
680
+ subagent_type: "test-fix-agent",
681
+ run_in_background: false,
682
+ description: `Apply fixes: iteration ${N} - ${strategy}`,
683
+ prompt: `
684
+ ## Task Objective
685
+ Apply fixes from analysis and validate with targeted tests.
686
+
687
+ ## MANDATORY FIRST STEPS
688
+ 1. Read state.json: ${sessionFolder}/state.json — use latest "fix_history" entry
689
+ 2. Run project syntax checker before any code modification
690
+
691
+ ## Fix Application
692
+ - Apply modifications from fix_history[latest].modification_points
693
+ - Test execution: ${progressiveMode ? 'affected tests only' : 'full suite'}
694
+ ${progressiveMode ? `- Affected tests: ${affectedTests.join(' ')}` : ''}
695
+
696
+ ## Output
697
+ - Update state.json "iterations.latest_results" with new test results
698
+ - Overwrite ${sessionFolder}/.trace/test-output.log
699
+ `
700
+ })
701
+ ```
702
+
703
+ #### Commit Strategy
704
+
705
+ 1. **After Test Development** (Phase 4):
706
+ ```bash
707
+ git add <test_files>
708
+ git commit -m "test(integration): generate integration tests for ${module}"
709
+ ```
710
+
711
+ 2. **After Successful Iteration** (pass rate increased):
712
+ ```bash
713
+ git add .
714
+ git commit -m "test(integration): iteration ${N} - ${strategy} (pass: ${oldRate}% → ${newRate}%)"
715
+ ```
716
+
717
+ 3. **Before Rollback** (regression detected):
718
+ ```bash
719
+ git revert HEAD
720
+ git commit -m "test(integration): rollback iteration ${N} - regression detected"
721
+ ```
722
+
723
+ ---
724
+
725
+ ### Phase 6: Completion
726
+
727
+ **Objective**: Finalize reflection log, update state summary, offer next steps.
728
+
729
+ **Workflow Steps**:
730
+
731
+ 1. **Update state.json** — write `summary` field:
732
+
733
+ ```json
734
+ {
735
+ "summary": {
736
+ "result": "success|partial_success|failure",
737
+ "final_pass_rate": 0,
738
+ "total_iterations": 0,
739
+ "strategies_used": [],
740
+ "test_metrics": {
741
+ "total_tests": 0,
742
+ "passed": 0,
743
+ "failed": 0,
744
+ "test_files": 0,
745
+ "integration_points_covered": 0
746
+ },
747
+ "key_learnings": [],
748
+ "corrected_assumptions": [],
749
+ "recommendations": [],
750
+ "completed": "{timestamp}"
751
+ }
752
+ }
753
+ ```
754
+
755
+ Also set `state.json.phase` to `"completed"`.
756
+
757
+ 2. **Finalize reflection-log.md** — replace `## Conclusions` placeholder:
758
+
759
+ ```markdown
760
+ ## Conclusions - {timestamp}
761
+
762
+ ### Result: {SUCCESS|PARTIAL SUCCESS|NEEDS ATTENTION}
763
+
764
+ ### Metrics
765
+ - **Final Pass Rate**: {X}%
766
+ - **Total Iterations**: {N}
767
+ - **Strategies Used**: {list}
768
+ - **Tests**: {passed}/{total} across {N} files
769
+
770
+ ### What We Established
771
+ - {verified integration behavior}
772
+
773
+ ### What Was Corrected
774
+ - ~~{old assumption}~~ → {corrected understanding}
775
+
776
+ ### Key Insights
777
+ - {insight with impact on future testing}
778
+
779
+ ### Decision Trail
780
+ | Phase/Iteration | Decision | Outcome |
781
+ |-----------------|----------|---------|
782
+ | Exploration | Focus on {boundaries} | Found {N} integration points |
783
+ | Iteration 1 | Conservative single fix | Pass rate: {X}% |
784
+ | ... | ... | ... |
785
+
786
+ ### Recommendations
787
+ - {codebase improvement}
788
+ - {test maintenance}
789
+ ```
790
+
791
+ 3. **Post-Completion Options** (AskUserQuestion)
792
+
793
+ ```javascript
794
+ AskUserQuestion({
795
+ questions: [{
796
+ question: "集成测试完成,下一步?",
797
+ header: "Next Steps",
798
+ options: [
799
+ { label: "创建Issue", description: "将发现的问题创建为Issue跟踪" },
800
+ { label: "扩展测试", description: "基于当前测试继续扩展覆盖范围" },
801
+ { label: "生成报告", description: "导出详细测试报告" },
802
+ { label: "完成", description: "无需进一步操作" }
803
+ ],
804
+ multiSelect: false
805
+ }]
806
+ })
807
+ ```
808
+
809
+ 4. **Sync Session State** (automatic)
810
+ - Execute: `/workflow:session:sync -y "Integration test cycle complete: ${passRate}% pass rate, ${iterations} iterations"`
811
+ - Updates specs/*.md with test learnings and project-tech.json with development index entry
812
+
813
+ ---
814
+
815
+ ## Completion Conditions
816
+
817
+ | Condition | Criteria | Action |
818
+ |-----------|----------|--------|
819
+ | **Full Success** | Pass rate === 100% | Finalize with success summary |
820
+ | **Partial Success** | Pass rate >= 95%, all failures low criticality | Finalize with review notes |
821
+ | **Failure** | Max iterations reached, pass rate < 95% | Generate failure report with full reflection history |
822
+
823
+ ---
824
+
825
+ ## Error Handling
826
+
827
+ | Scenario | Action |
828
+ |----------|--------|
829
+ | cli-explore-agent fails | Fallback to manual exploration via Grep/Glob |
830
+ | CLI analysis timeout | Fallback: Gemini → Qwen → Codex → manual |
831
+ | Test execution crash | Log error, retry with simplified test subset |
832
+ | Max iterations reached | Generate failure report with full reflection history |
833
+ | Regression detected | Rollback via git revert, switch to surgical strategy |
834
+ | Stuck tests (3+ iterations) | Switch to reflective strategy, challenge assumptions |
835
+ | All CLI tools fail | Pattern match from state.json.fix_history, notify user |
836
+
837
+ **CLI Fallback Chain**: Gemini → Qwen → Codex
838
+
839
+ Triggers: Invalid JSON output, confidence < 0.4, HTTP 429/timeout, analysis < 100 words, same root cause 3+ times.
840
+
841
+ ---
842
+
843
+ ## state.json Full Schema
844
+
845
+ Single evolving state file — each phase writes its section:
846
+
847
+ ```json
848
+ {
849
+ "session_id": "ITG-xxx",
850
+ "module": "description",
851
+ "started": "timestamp",
852
+ "max_iterations": 10,
853
+ "phase": "init|explored|designed|developed|iterating|completed",
854
+
855
+ "exploration": {
856
+ "module_structure": { "entry_points": [], "public_apis": [], "internal_modules": [] },
857
+ "dependencies": { "upstream": [], "downstream": [], "external_services": [] },
858
+ "integration_points": [{ "from": "", "to": "", "type": "", "contract": "" }],
859
+ "data_flows": [{ "name": "", "path": [], "transforms": [] }],
860
+ "existing_tests": { "test_files": [], "patterns": [], "utilities": [], "mocking_conventions": "" },
861
+ "test_framework": { "runner": "", "assertion_lib": "", "mock_lib": "" },
862
+ "risk_areas": [{ "area": "", "reason": "", "priority": "" }],
863
+ "_metadata": { "files_analyzed": 0, "timestamp": "" }
864
+ },
865
+
866
+ "test_design": {
867
+ "integration_scenarios": [{ "id": "", "name": "", "boundary": "", "type": "", "priority": "", "test_cases": [], "mocking": {}, "setup": "", "teardown": "" }],
868
+ "mocking_strategy": { "approach": "", "mock_boundaries": [], "real_boundaries": [], "rationale": "" },
869
+ "execution_order": [],
870
+ "success_criteria": { "pass_rate": 95, "coverage_target": 80 }
871
+ },
872
+
873
+ "test_inventory": {
874
+ "test_files": [{ "path": "", "scenario_ids": [], "test_count": 0, "boundary": "" }],
875
+ "total_tests": 0,
876
+ "total_files": 0,
877
+ "timestamp": ""
878
+ },
879
+
880
+ "iterations": {
881
+ "current": 0,
882
+ "strategy": null,
883
+ "next_action": "execute_tests|execute_fix|complete",
884
+ "history": [{ "iteration": 0, "pass_rate": 0, "strategy": "", "failed_tests": [], "reflection_summary": "", "strategy_adjustment": "" }],
885
+ "stuck_tests": [],
886
+ "latest_results": { "pass_rate": 0, "passed": 0, "failed": 0, "total": 0, "failures": [] }
887
+ },
888
+
889
+ "fix_history": [{ "iteration": 0, "strategy": "", "modification_points": [], "affected_tests": [], "confidence": 0.0 }],
890
+
891
+ "summary": {
892
+ "result": "success|partial_success|failure",
893
+ "final_pass_rate": 0,
894
+ "total_iterations": 0,
895
+ "strategies_used": [],
896
+ "test_metrics": {},
897
+ "key_learnings": [],
898
+ "corrected_assumptions": [],
899
+ "recommendations": [],
900
+ "completed": ""
901
+ }
902
+ }
903
+ ```
904
+
905
+ ---
906
+
907
+ ## Best Practices
908
+
909
+ 1. **Clear Module Description**: Specific module names improve exploration quality
910
+ 2. **Trust the Reflection**: Cumulative learnings inform better strategy choices over time
911
+ 3. **Monitor reflection-log.md**: The single document captures the full journey
912
+ 4. **Auto Mode for CI**: Use `-y` for automated pipelines
913
+ 5. **Start Conservative**: Let the strategy engine escalate naturally
914
+ 6. **Review Stuck Tests**: 3+ iterations means test design may need revisiting
915
+ 7. **Incremental Commits**: Each iteration is a safe rollback point
916
+
917
+ ---
918
+
919
+ ## Usage Recommendations
920
+
921
+ **Use this command when:**
922
+ - Starting integration tests from scratch for a module
923
+ - Need comprehensive exploration before test development
924
+ - Want self-healing test cycles with documented reasoning
925
+
926
+ **Use `workflow-test-fix` skill + `workflow-test-fix` skill when:**
927
+ - Already have a completed implementation session (WFS-*)
928
+ - Only need unit/component level tests
929
+
930
+ **Use `workflow-tdd-plan` skill when:**
931
+ - Building new features with test-first approach
932
+ - Red-Green-Refactor cycle
933
+
934
+ ---
935
+
936
+ **Now execute integration-test-cycle for**: $ARGUMENTS