claude-code-workflow 7.2.5 → 7.2.6

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 (221) hide show
  1. package/.claude/commands/workflow/analyze-with-file.md +11 -10
  2. package/.claude/skills/ccw-help/command.json +3 -3
  3. package/.claude/skills/ccw-help/index/all-commands.json +3 -3
  4. package/.claude/skills/ccw-help/index/by-category.json +3 -3
  5. package/.claude/skills/ccw-help/index/by-use-case.json +3 -3
  6. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  7. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  8. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  9. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  10. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  11. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  12. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  13. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  14. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  15. package/.claude/skills/team-roadmap-dev/SKILL.md +1 -1
  16. package/.claude/skills/team-roadmap-dev/roles/coordinator/role.md +1 -1
  17. package/.claude/skills/team-roadmap-dev/specs/team-config.json +1 -1
  18. package/ccw/dist/commands/install.d.ts.map +1 -1
  19. package/ccw/dist/commands/install.js +11 -9
  20. package/ccw/dist/commands/install.js.map +1 -1
  21. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  22. package/ccw/dist/tools/cli-executor-core.js +0 -25
  23. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  24. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  25. package/ccw/dist/tools/cli-executor-state.js +0 -31
  26. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  27. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  28. package/ccw/dist/tools/cli-history-store.js +1 -30
  29. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  30. package/ccw/frontend/dist/assets/{AlertDialog-CFGtc76Y.js → AlertDialog-BMFUcfv_.js} +2 -2
  31. package/ccw/frontend/dist/assets/{AlertDialog-CFGtc76Y.js.map → AlertDialog-BMFUcfv_.js.map} +1 -1
  32. package/ccw/frontend/dist/assets/{AnalysisPage-Duxia_dG.js → AnalysisPage-Bxa333tD.js} +2 -2
  33. package/ccw/frontend/dist/assets/{AnalysisPage-Duxia_dG.js.map → AnalysisPage-Bxa333tD.js.map} +1 -1
  34. package/ccw/frontend/dist/assets/{ApiSettingsPage-CU9hesAE.js → ApiSettingsPage-BFVU-wcR.js} +2 -2
  35. package/ccw/frontend/dist/assets/{ApiSettingsPage-CU9hesAE.js.map → ApiSettingsPage-BFVU-wcR.js.map} +1 -1
  36. package/ccw/frontend/dist/assets/{CliModeToggle-DcdOFSvM.js → CliModeToggle-MDoFAJPL.js} +2 -2
  37. package/ccw/frontend/dist/assets/{CliModeToggle-DcdOFSvM.js.map → CliModeToggle-MDoFAJPL.js.map} +1 -1
  38. package/ccw/frontend/dist/assets/{CliSessionSharePage-oKN-GRIT.js → CliSessionSharePage-DkRmLiNN.js} +2 -2
  39. package/ccw/frontend/dist/assets/{CliSessionSharePage-oKN-GRIT.js.map → CliSessionSharePage-DkRmLiNN.js.map} +1 -1
  40. package/ccw/frontend/dist/assets/{CliViewerPage-_wUoHaY-.js → CliViewerPage-DN8jWddy.js} +2 -2
  41. package/ccw/frontend/dist/assets/{CliViewerPage-_wUoHaY-.js.map → CliViewerPage-DN8jWddy.js.map} +1 -1
  42. package/ccw/frontend/dist/assets/{CodexLensManagerPage-ClPNashJ.js → CodexLensManagerPage-Du_VAJtC.js} +2 -2
  43. package/ccw/frontend/dist/assets/{CodexLensManagerPage-ClPNashJ.js.map → CodexLensManagerPage-Du_VAJtC.js.map} +1 -1
  44. package/ccw/frontend/dist/assets/{Collapsible-Dladh9Eu.js → Collapsible-CF5bSyzt.js} +2 -2
  45. package/ccw/frontend/dist/assets/{Collapsible-Dladh9Eu.js.map → Collapsible-CF5bSyzt.js.map} +1 -1
  46. package/ccw/frontend/dist/assets/{CommandsManagerPage-B6DBb_Ew.js → CommandsManagerPage-Bm_P9I76.js} +2 -2
  47. package/ccw/frontend/dist/assets/{CommandsManagerPage-B6DBb_Ew.js.map → CommandsManagerPage-Bm_P9I76.js.map} +1 -1
  48. package/ccw/frontend/dist/assets/{DeepWikiPage-CDA3xm3R.js → DeepWikiPage-2YIlfWhz.js} +2 -2
  49. package/ccw/frontend/dist/assets/{DeepWikiPage-CDA3xm3R.js.map → DeepWikiPage-2YIlfWhz.js.map} +1 -1
  50. package/ccw/frontend/dist/assets/{EndpointsPage-Bu7iU0Wy.js → EndpointsPage-CMVNz5PY.js} +2 -2
  51. package/ccw/frontend/dist/assets/{EndpointsPage-Bu7iU0Wy.js.map → EndpointsPage-CMVNz5PY.js.map} +1 -1
  52. package/ccw/frontend/dist/assets/{ExplorerPage-xim2cboZ.js → ExplorerPage-C-KFz8YU.js} +2 -2
  53. package/ccw/frontend/dist/assets/{ExplorerPage-xim2cboZ.js.map → ExplorerPage-C-KFz8YU.js.map} +1 -1
  54. package/ccw/frontend/dist/assets/{FixSessionPage-BTFYoFQF.js → FixSessionPage-CdKND69l.js} +2 -2
  55. package/ccw/frontend/dist/assets/{FixSessionPage-BTFYoFQF.js.map → FixSessionPage-CdKND69l.js.map} +1 -1
  56. package/ccw/frontend/dist/assets/{FloatingFileBrowser-B30ANzTJ.js → FloatingFileBrowser-Bf4iqOSd.js} +2 -2
  57. package/ccw/frontend/dist/assets/{FloatingFileBrowser-B30ANzTJ.js.map → FloatingFileBrowser-Bf4iqOSd.js.map} +1 -1
  58. package/ccw/frontend/dist/assets/{FloatingPanel-Ds84B7Ob.js → FloatingPanel-CJbvABPb.js} +2 -2
  59. package/ccw/frontend/dist/assets/{FloatingPanel-Ds84B7Ob.js.map → FloatingPanel-CJbvABPb.js.map} +1 -1
  60. package/ccw/frontend/dist/assets/{GraphExplorerPage-DJ4YnFOQ.js → GraphExplorerPage-DPoozRTR.js} +2 -2
  61. package/ccw/frontend/dist/assets/{GraphExplorerPage-DJ4YnFOQ.js.map → GraphExplorerPage-DPoozRTR.js.map} +1 -1
  62. package/ccw/frontend/dist/assets/{HistoryPage-rzLVsw11.js → HistoryPage-DOMa9gJX.js} +2 -2
  63. package/ccw/frontend/dist/assets/{HistoryPage-rzLVsw11.js.map → HistoryPage-DOMa9gJX.js.map} +1 -1
  64. package/ccw/frontend/dist/assets/{HookManagerPage-DizO_dCP.js → HookManagerPage-Cfn2UEyy.js} +2 -2
  65. package/ccw/frontend/dist/assets/{HookManagerPage-DizO_dCP.js.map → HookManagerPage-Cfn2UEyy.js.map} +1 -1
  66. package/ccw/frontend/dist/assets/{InstallationsPage-BFamuE4y.js → InstallationsPage-qngOxLvm.js} +2 -2
  67. package/ccw/frontend/dist/assets/{InstallationsPage-BFamuE4y.js.map → InstallationsPage-qngOxLvm.js.map} +1 -1
  68. package/ccw/frontend/dist/assets/{IssueHubPage-DHwQWuUc.js → IssueHubPage-Cvf7tH8p.js} +2 -2
  69. package/ccw/frontend/dist/assets/{IssueHubPage-DHwQWuUc.js.map → IssueHubPage-Cvf7tH8p.js.map} +1 -1
  70. package/ccw/frontend/dist/assets/{LiteTasksPage-DMDkG7pi.js → LiteTasksPage-D20smVCY.js} +2 -2
  71. package/ccw/frontend/dist/assets/{LiteTasksPage-DMDkG7pi.js.map → LiteTasksPage-D20smVCY.js.map} +1 -1
  72. package/ccw/frontend/dist/assets/{McpManagerPage-CS2v_1OG.js → McpManagerPage-Bld27yu4.js} +2 -2
  73. package/ccw/frontend/dist/assets/{McpManagerPage-CS2v_1OG.js.map → McpManagerPage-Bld27yu4.js.map} +1 -1
  74. package/ccw/frontend/dist/assets/{MemoryPage-DhYPE-VC.js → MemoryPage-DmknNdBh.js} +2 -2
  75. package/ccw/frontend/dist/assets/{MemoryPage-DhYPE-VC.js.map → MemoryPage-DmknNdBh.js.map} +1 -1
  76. package/ccw/frontend/dist/assets/{NotFoundPage-BLmC7-ot.js → NotFoundPage-DdwPN1xU.js} +2 -2
  77. package/ccw/frontend/dist/assets/{NotFoundPage-BLmC7-ot.js.map → NotFoundPage-DdwPN1xU.js.map} +1 -1
  78. package/ccw/frontend/dist/assets/{OrchestratorPage-1jzSUFZW.js → OrchestratorPage-CgDdmvBg.js} +2 -2
  79. package/ccw/frontend/dist/assets/{OrchestratorPage-1jzSUFZW.js.map → OrchestratorPage-CgDdmvBg.js.map} +1 -1
  80. package/ccw/frontend/dist/assets/{ProjectOverviewPage-gWuAj-Cn.js → ProjectOverviewPage-9Ze9quxh.js} +2 -2
  81. package/ccw/frontend/dist/assets/{ProjectOverviewPage-gWuAj-Cn.js.map → ProjectOverviewPage-9Ze9quxh.js.map} +1 -1
  82. package/ccw/frontend/dist/assets/{PromptHistoryPage-q7ySVNHM.js → PromptHistoryPage-YRkBppOx.js} +2 -2
  83. package/ccw/frontend/dist/assets/{PromptHistoryPage-q7ySVNHM.js.map → PromptHistoryPage-YRkBppOx.js.map} +1 -1
  84. package/ccw/frontend/dist/assets/{ReviewSessionPage-DX1uT_nH.js → ReviewSessionPage-DSaeHw83.js} +2 -2
  85. package/ccw/frontend/dist/assets/{ReviewSessionPage-DX1uT_nH.js.map → ReviewSessionPage-DSaeHw83.js.map} +1 -1
  86. package/ccw/frontend/dist/assets/{RulesManagerPage-Bg6T5W-W.js → RulesManagerPage-BpGwS_jB.js} +2 -2
  87. package/ccw/frontend/dist/assets/{RulesManagerPage-Bg6T5W-W.js.map → RulesManagerPage-BpGwS_jB.js.map} +1 -1
  88. package/ccw/frontend/dist/assets/{SessionDetailPage-C_ig6JSh.js → SessionDetailPage-B_YHME7k.js} +2 -2
  89. package/ccw/frontend/dist/assets/{SessionDetailPage-C_ig6JSh.js.map → SessionDetailPage-B_YHME7k.js.map} +1 -1
  90. package/ccw/frontend/dist/assets/{SessionsPage-BENFqFDn.js → SessionsPage-bW6kEEib.js} +2 -2
  91. package/ccw/frontend/dist/assets/{SessionsPage-BENFqFDn.js.map → SessionsPage-bW6kEEib.js.map} +1 -1
  92. package/ccw/frontend/dist/assets/{SettingsPage-2c-oTxfz.js → SettingsPage-CSwUd2Bw.js} +4 -4
  93. package/ccw/frontend/dist/assets/{SettingsPage-2c-oTxfz.js.map → SettingsPage-CSwUd2Bw.js.map} +1 -1
  94. package/ccw/frontend/dist/assets/{SkillsManagerPage-GLo6DXnt.js → SkillsManagerPage-CyqKvFUi.js} +2 -2
  95. package/ccw/frontend/dist/assets/{SkillsManagerPage-GLo6DXnt.js.map → SkillsManagerPage-CyqKvFUi.js.map} +1 -1
  96. package/ccw/frontend/dist/assets/{SpecsSettingsPage-CRqMV90p.js → SpecsSettingsPage-DHqQNW_y.js} +2 -2
  97. package/ccw/frontend/dist/assets/{SpecsSettingsPage-CRqMV90p.js.map → SpecsSettingsPage-DHqQNW_y.js.map} +1 -1
  98. package/ccw/frontend/dist/assets/{Switch-vlMavMRD.js → Switch-s_-xzEWF.js} +2 -2
  99. package/ccw/frontend/dist/assets/{Switch-vlMavMRD.js.map → Switch-s_-xzEWF.js.map} +1 -1
  100. package/ccw/frontend/dist/assets/{TabsNavigation-CLKz7pWP.js → TabsNavigation-CU50UxOb.js} +2 -2
  101. package/ccw/frontend/dist/assets/{TabsNavigation-CLKz7pWP.js.map → TabsNavigation-CU50UxOb.js.map} +1 -1
  102. package/ccw/frontend/dist/assets/{TaskDrawer-BAFvNqF8.js → TaskDrawer-128XISsA.js} +2 -2
  103. package/ccw/frontend/dist/assets/{TaskDrawer-BAFvNqF8.js.map → TaskDrawer-128XISsA.js.map} +1 -1
  104. package/ccw/frontend/dist/assets/{TeamPage-C2IsDkAv.js → TeamPage-Bg_KII8B.js} +2 -2
  105. package/ccw/frontend/dist/assets/{TeamPage-C2IsDkAv.js.map → TeamPage-Bg_KII8B.js.map} +1 -1
  106. package/ccw/frontend/dist/assets/{TerminalDashboardPage-mgS-iKDm.js → TerminalDashboardPage-CQ9K2zwB.js} +2 -2
  107. package/ccw/frontend/dist/assets/{TerminalDashboardPage-mgS-iKDm.js.map → TerminalDashboardPage-CQ9K2zwB.js.map} +1 -1
  108. package/ccw/frontend/dist/assets/{archive-CxxK_YIp.js → archive--nR2vYUk.js} +2 -2
  109. package/ccw/frontend/dist/assets/{archive-CxxK_YIp.js.map → archive--nR2vYUk.js.map} +1 -1
  110. package/ccw/frontend/dist/assets/{archive-restore-DZsrBaeG.js → archive-restore-CZ7graO0.js} +2 -2
  111. package/ccw/frontend/dist/assets/{archive-restore-DZsrBaeG.js.map → archive-restore-CZ7graO0.js.map} +1 -1
  112. package/ccw/frontend/dist/assets/{arrow-right-BotRHOhr.js → arrow-right-ChKhpVhq.js} +2 -2
  113. package/ccw/frontend/dist/assets/{arrow-right-BotRHOhr.js.map → arrow-right-ChKhpVhq.js.map} +1 -1
  114. package/ccw/frontend/dist/assets/{bookmark-plus-C0MWZ3S9.js → bookmark-plus-X-JcgObI.js} +2 -2
  115. package/ccw/frontend/dist/assets/{bookmark-plus-C0MWZ3S9.js.map → bookmark-plus-X-JcgObI.js.map} +1 -1
  116. package/ccw/frontend/dist/assets/{bot-BcHFJXqD.js → bot-C3uo7Fkg.js} +2 -2
  117. package/ccw/frontend/dist/assets/{bot-BcHFJXqD.js.map → bot-C3uo7Fkg.js.map} +1 -1
  118. package/ccw/frontend/dist/assets/{braces-D_p0IZhP.js → braces-5wZupwrA.js} +2 -2
  119. package/ccw/frontend/dist/assets/{braces-D_p0IZhP.js.map → braces-5wZupwrA.js.map} +1 -1
  120. package/ccw/frontend/dist/assets/{circle-stop-Bt634NUt.js → circle-stop-DZ5hLKjQ.js} +2 -2
  121. package/ccw/frontend/dist/assets/{circle-stop-Bt634NUt.js.map → circle-stop-DZ5hLKjQ.js.map} +1 -1
  122. package/ccw/frontend/dist/assets/{cpu-DjeGKtvT.js → cpu-Dc8IS79i.js} +2 -2
  123. package/ccw/frontend/dist/assets/{cpu-DjeGKtvT.js.map → cpu-Dc8IS79i.js.map} +1 -1
  124. package/ccw/frontend/dist/assets/{ellipsis-vertical-BmNPuatq.js → ellipsis-vertical-B4pqbrsR.js} +2 -2
  125. package/ccw/frontend/dist/assets/{ellipsis-vertical-BmNPuatq.js.map → ellipsis-vertical-B4pqbrsR.js.map} +1 -1
  126. package/ccw/frontend/dist/assets/{eye-B0-xkP67.js → eye-BwniwXnu.js} +2 -2
  127. package/ccw/frontend/dist/assets/{eye-B0-xkP67.js.map → eye-BwniwXnu.js.map} +1 -1
  128. package/ccw/frontend/dist/assets/{eye-off-Bz0Fkli3.js → eye-off-BWntEdln.js} +2 -2
  129. package/ccw/frontend/dist/assets/{eye-off-Bz0Fkli3.js.map → eye-off-BWntEdln.js.map} +1 -1
  130. package/ccw/frontend/dist/assets/{file-json-PUAS4vBm.js → file-json-BDcmkaVn.js} +2 -2
  131. package/ccw/frontend/dist/assets/{file-json-PUAS4vBm.js.map → file-json-BDcmkaVn.js.map} +1 -1
  132. package/ccw/frontend/dist/assets/{file-text-BMeW5-Sb.js → file-text-DsqI3R_g.js} +2 -2
  133. package/ccw/frontend/dist/assets/{file-text-BMeW5-Sb.js.map → file-text-DsqI3R_g.js.map} +1 -1
  134. package/ccw/frontend/dist/assets/{filter-B4wgMvwi.js → filter-CQMcD8RT.js} +2 -2
  135. package/ccw/frontend/dist/assets/{filter-B4wgMvwi.js.map → filter-CQMcD8RT.js.map} +1 -1
  136. package/ccw/frontend/dist/assets/{folder-BSHjjjND.js → folder-jX77-MUi.js} +2 -2
  137. package/ccw/frontend/dist/assets/{folder-BSHjjjND.js.map → folder-jX77-MUi.js.map} +1 -1
  138. package/ccw/frontend/dist/assets/{gauge-7VRNEl22.js → gauge-yQjRXM3o.js} +2 -2
  139. package/ccw/frontend/dist/assets/{gauge-7VRNEl22.js.map → gauge-yQjRXM3o.js.map} +1 -1
  140. package/ccw/frontend/dist/assets/{globe-PvVHBjbW.js → globe-BecpCHYI.js} +2 -2
  141. package/ccw/frontend/dist/assets/{globe-PvVHBjbW.js.map → globe-BecpCHYI.js.map} +1 -1
  142. package/ccw/frontend/dist/assets/{grid-3x3-CsmmDlhN.js → grid-3x3-BrvzDFqU.js} +2 -2
  143. package/ccw/frontend/dist/assets/{grid-3x3-CsmmDlhN.js.map → grid-3x3-BrvzDFqU.js.map} +1 -1
  144. package/ccw/frontend/dist/assets/{hard-drive-D88EZgTY.js → hard-drive-B0cynodE.js} +2 -2
  145. package/ccw/frontend/dist/assets/{hard-drive-D88EZgTY.js.map → hard-drive-B0cynodE.js.map} +1 -1
  146. package/ccw/frontend/dist/assets/{hash-CZpNRWqt.js → hash-xOrTLxBg.js} +2 -2
  147. package/ccw/frontend/dist/assets/{hash-CZpNRWqt.js.map → hash-xOrTLxBg.js.map} +1 -1
  148. package/ccw/frontend/dist/assets/{history-DxN1mopa.js → history-BzXwj8RL.js} +2 -2
  149. package/ccw/frontend/dist/assets/{history-DxN1mopa.js.map → history-BzXwj8RL.js.map} +1 -1
  150. package/ccw/frontend/dist/assets/{index-C04xeBGC.js → index-B9aFbBPN.js} +2 -2
  151. package/ccw/frontend/dist/assets/{index-C04xeBGC.js.map → index-B9aFbBPN.js.map} +1 -1
  152. package/ccw/frontend/dist/assets/{index-BzGEkwIf.js → index-BNZGm_Ur.js} +2 -2
  153. package/ccw/frontend/dist/assets/{index-BzGEkwIf.js.map → index-BNZGm_Ur.js.map} +1 -1
  154. package/ccw/frontend/dist/assets/{index-bSgtHHOF.js → index-D3uMibtZ.js} +4 -4
  155. package/ccw/frontend/dist/assets/{index-bSgtHHOF.js.map → index-D3uMibtZ.js.map} +1 -1
  156. package/ccw/frontend/dist/assets/{index-BUiq2PUK.js → index-DflI9CwB.js} +2 -2
  157. package/ccw/frontend/dist/assets/{index-BUiq2PUK.js.map → index-DflI9CwB.js.map} +1 -1
  158. package/ccw/frontend/dist/assets/{index-CIoWWkDn.js → index-Dy0tUf1F.js} +2 -2
  159. package/ccw/frontend/dist/assets/{index-CIoWWkDn.js.map → index-Dy0tUf1F.js.map} +1 -1
  160. package/ccw/frontend/dist/assets/{index-DlcRFzFq.js → index-osmL8__2.js} +2 -2
  161. package/ccw/frontend/dist/assets/{index-DlcRFzFq.js.map → index-osmL8__2.js.map} +1 -1
  162. package/ccw/frontend/dist/assets/{layout-grid-BZqfuNG0.js → layout-grid-CWFZqQWu.js} +2 -2
  163. package/ccw/frontend/dist/assets/{layout-grid-BZqfuNG0.js.map → layout-grid-CWFZqQWu.js.map} +1 -1
  164. package/ccw/frontend/dist/assets/{lightbulb-DqJ4OHRL.js → lightbulb-BRLgsWe3.js} +2 -2
  165. package/ccw/frontend/dist/assets/{lightbulb-DqJ4OHRL.js.map → lightbulb-BRLgsWe3.js.map} +1 -1
  166. package/ccw/frontend/dist/assets/{link-2-Bq7fLkC9.js → link-2-BpKdq14u.js} +2 -2
  167. package/ccw/frontend/dist/assets/{link-2-Bq7fLkC9.js.map → link-2-BpKdq14u.js.map} +1 -1
  168. package/ccw/frontend/dist/assets/{link-dSLYjCIG.js → link-BxUCReDi.js} +2 -2
  169. package/ccw/frontend/dist/assets/{link-dSLYjCIG.js.map → link-BxUCReDi.js.map} +1 -1
  170. package/ccw/frontend/dist/assets/{list-Bm_CnR56.js → list-Ce9EsAg8.js} +2 -2
  171. package/ccw/frontend/dist/assets/{list-Bm_CnR56.js.map → list-Ce9EsAg8.js.map} +1 -1
  172. package/ccw/frontend/dist/assets/{map-pin-B5TELa0z.js → map-pin-CxzQV1hS.js} +2 -2
  173. package/ccw/frontend/dist/assets/{map-pin-B5TELa0z.js.map → map-pin-CxzQV1hS.js.map} +1 -1
  174. package/ccw/frontend/dist/assets/{messages-square-B9sWItdK.js → messages-square-Dyodk79r.js} +2 -2
  175. package/ccw/frontend/dist/assets/{messages-square-B9sWItdK.js.map → messages-square-Dyodk79r.js.map} +1 -1
  176. package/ccw/frontend/dist/assets/{minimize-2-Z1MYs_Tp.js → minimize-2-s0009UK9.js} +2 -2
  177. package/ccw/frontend/dist/assets/{minimize-2-Z1MYs_Tp.js.map → minimize-2-s0009UK9.js.map} +1 -1
  178. package/ccw/frontend/dist/assets/{package-EEv4N_Qk.js → package-C69biuJL.js} +2 -2
  179. package/ccw/frontend/dist/assets/{package-EEv4N_Qk.js.map → package-C69biuJL.js.map} +1 -1
  180. package/ccw/frontend/dist/assets/{plug-CEkvvYXh.js → plug-DERl-wQd.js} +2 -2
  181. package/ccw/frontend/dist/assets/{plug-CEkvvYXh.js.map → plug-DERl-wQd.js.map} +1 -1
  182. package/ccw/frontend/dist/assets/{power-B6Rod0u_.js → power-CdvaDgTh.js} +2 -2
  183. package/ccw/frontend/dist/assets/{power-B6Rod0u_.js.map → power-CdvaDgTh.js.map} +1 -1
  184. package/ccw/frontend/dist/assets/{save-DULWrB2g.js → save-C_Uot2e4.js} +2 -2
  185. package/ccw/frontend/dist/assets/{save-DULWrB2g.js.map → save-C_Uot2e4.js.map} +1 -1
  186. package/ccw/frontend/dist/assets/{send-C4z974WG.js → send-R1XtAXeP.js} +2 -2
  187. package/ccw/frontend/dist/assets/{send-C4z974WG.js.map → send-R1XtAXeP.js.map} +1 -1
  188. package/ccw/frontend/dist/assets/{square-check-big-CqEEw-V0.js → square-check-big-Cyqi4INj.js} +2 -2
  189. package/ccw/frontend/dist/assets/{square-check-big-CqEEw-V0.js.map → square-check-big-Cyqi4INj.js.map} +1 -1
  190. package/ccw/frontend/dist/assets/{square-pen-D-4BrMtQ.js → square-pen-BmLNjUUw.js} +2 -2
  191. package/ccw/frontend/dist/assets/{square-pen-D-4BrMtQ.js.map → square-pen-BmLNjUUw.js.map} +1 -1
  192. package/ccw/frontend/dist/assets/{star-CDVVM69o.js → star-CakKtIYu.js} +2 -2
  193. package/ccw/frontend/dist/assets/{star-CDVVM69o.js.map → star-CakKtIYu.js.map} +1 -1
  194. package/ccw/frontend/dist/assets/{style-CumJ7XC8.js → style-DdNmehyz.js} +2 -2
  195. package/ccw/frontend/dist/assets/{style-CumJ7XC8.js.map → style-DdNmehyz.js.map} +1 -1
  196. package/ccw/frontend/dist/assets/{target-Dr9SuV1Y.js → target-CUvfwM3S.js} +2 -2
  197. package/ccw/frontend/dist/assets/{target-Dr9SuV1Y.js.map → target-CUvfwM3S.js.map} +1 -1
  198. package/ccw/frontend/dist/assets/{test-tube-DzDRKk8F.js → test-tube-BVwrOGiZ.js} +2 -2
  199. package/ccw/frontend/dist/assets/{test-tube-DzDRKk8F.js.map → test-tube-BVwrOGiZ.js.map} +1 -1
  200. package/ccw/frontend/dist/assets/{upload-CihSmIM7.js → upload-CY1NwcDw.js} +2 -2
  201. package/ccw/frontend/dist/assets/{upload-CihSmIM7.js.map → upload-CY1NwcDw.js.map} +1 -1
  202. package/ccw/frontend/dist/assets/{useApiSettings-CevxWX2z.js → useApiSettings-9JuzUfPE.js} +2 -2
  203. package/ccw/frontend/dist/assets/{useApiSettings-CevxWX2z.js.map → useApiSettings-9JuzUfPE.js.map} +1 -1
  204. package/ccw/frontend/dist/assets/{useCli-jVaF89uU.js → useCli-Bb7Zo-OI.js} +2 -2
  205. package/ccw/frontend/dist/assets/{useCli-jVaF89uU.js.map → useCli-Bb7Zo-OI.js.map} +1 -1
  206. package/ccw/frontend/dist/assets/{useCommands-D4uGmNpF.js → useCommands-BUu-hUYI.js} +2 -2
  207. package/ccw/frontend/dist/assets/{useCommands-D4uGmNpF.js.map → useCommands-BUu-hUYI.js.map} +1 -1
  208. package/ccw/frontend/dist/assets/{useDebounce-BEYmuZYP.js → useDebounce-CptXgLBn.js} +2 -2
  209. package/ccw/frontend/dist/assets/{useDebounce-BEYmuZYP.js.map → useDebounce-CptXgLBn.js.map} +1 -1
  210. package/ccw/frontend/dist/assets/{useFileExplorer-DEv0DVy7.js → useFileExplorer-B7dN8VT1.js} +2 -2
  211. package/ccw/frontend/dist/assets/{useFileExplorer-DEv0DVy7.js.map → useFileExplorer-B7dN8VT1.js.map} +1 -1
  212. package/ccw/frontend/dist/assets/{useLocale-BRJreqvl.js → useLocale-D6USNXOr.js} +2 -2
  213. package/ccw/frontend/dist/assets/{useLocale-BRJreqvl.js.map → useLocale-D6USNXOr.js.map} +1 -1
  214. package/ccw/frontend/dist/assets/{useSkills-lnfeXe9l.js → useSkills-r8yfiQ-u.js} +3 -3
  215. package/ccw/frontend/dist/assets/{useSkills-lnfeXe9l.js.map → useSkills-r8yfiQ-u.js.map} +1 -1
  216. package/ccw/frontend/dist/assets/{useSystemSettings-PlxVdbXI.js → useSystemSettings-BVWDQLMy.js} +2 -2
  217. package/ccw/frontend/dist/assets/{useSystemSettings-PlxVdbXI.js.map → useSystemSettings-BVWDQLMy.js.map} +1 -1
  218. package/ccw/frontend/dist/assets/{wand-sparkles-BbqUxeEg.js → wand-sparkles-Zdaej5bR.js} +2 -2
  219. package/ccw/frontend/dist/assets/{wand-sparkles-BbqUxeEg.js.map → wand-sparkles-Zdaej5bR.js.map} +1 -1
  220. package/ccw/frontend/dist/index.html +1 -1
  221. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ # Phase 4: Apply Improvements
2
+
3
+ > **COMPACT SENTINEL [Phase 4: Improve]**
4
+ > This phase contains 4 execution steps (Step 4.1 -- 4.4).
5
+ > If you can read this sentinel but cannot find the full Step protocol below, context has been compressed.
6
+ > Recovery: `Read("phases/04-improve.md")`
7
+
8
+ Apply targeted improvements to skill files based on evaluation suggestions. Uses a general-purpose Agent to make changes, ensuring only suggested modifications are applied.
9
+
10
+ ## Objective
11
+
12
+ - Read evaluation suggestions from current iteration
13
+ - Launch Agent to apply improvements in priority order
14
+ - Document all changes made
15
+ - Update iteration state
16
+
17
+ ## Execution
18
+
19
+ ### Step 4.1: Prepare Improvement Context
20
+
21
+ ```javascript
22
+ const N = state.current_iteration;
23
+ const iterDir = `${state.work_dir}/iterations/iteration-${N}`;
24
+ const evaluation = state.iterations[N - 1].evaluation;
25
+
26
+ // Verify we have suggestions to apply
27
+ if (!evaluation.suggestions || evaluation.suggestions.length === 0) {
28
+ // No suggestions -- skip improvement, mark iteration complete
29
+ state.iterations[N - 1].improvement = {
30
+ changes_applied: [],
31
+ changes_file: null,
32
+ improvement_rationale: 'No suggestions provided by evaluation'
33
+ };
34
+ state.iterations[N - 1].status = 'completed';
35
+ Write(`${state.work_dir}/iteration-state.json`, JSON.stringify(state, null, 2));
36
+ // -> Return to orchestrator for next iteration
37
+ return;
38
+ }
39
+
40
+ // Build file inventory for agent context
41
+ const skillFileInventory = state.target_skills.map(skill => {
42
+ return `Skill: ${skill.name} (${skill.path})\nFiles:\n` +
43
+ skill.files.map(f => ` - ${f}`).join('\n');
44
+ }).join('\n\n');
45
+
46
+ // Chain mode: add chain relationship context
47
+ const chainContext = state.execution_mode === 'chain'
48
+ ? `\nChain Order: ${state.chain_order.join(' -> ')}\n` +
49
+ `Chain Scores: ${state.chain_order.map(s =>
50
+ `${s}: ${state.iterations[N-1].evaluation?.chain_scores?.[s] || 'N/A'}`
51
+ ).join(', ')}\n` +
52
+ `Weakest Link: ${state.chain_order.reduce((min, s) => {
53
+ const score = state.iterations[N-1].evaluation?.chain_scores?.[s] || 100;
54
+ return score < (state.iterations[N-1].evaluation?.chain_scores?.[min] || 100) ? s : min;
55
+ }, state.chain_order[0])}`
56
+ : '';
57
+ ```
58
+
59
+ ### Step 4.2: Launch Improvement Agent
60
+
61
+ > **CHECKPOINT**: Before launching agent, verify:
62
+ > 1. evaluation.suggestions is non-empty
63
+ > 2. All target_file paths in suggestions are valid
64
+
65
+ ```javascript
66
+ const suggestionsText = evaluation.suggestions.map((s, i) =>
67
+ `${i + 1}. [${s.priority.toUpperCase()}] ${s.description}\n` +
68
+ ` Target: ${s.target_file}\n` +
69
+ ` Rationale: ${s.rationale}\n` +
70
+ (s.code_snippet ? ` Suggested change:\n ${s.code_snippet}\n` : '')
71
+ ).join('\n');
72
+
73
+ Agent({
74
+ subagent_type: 'general-purpose',
75
+ run_in_background: false,
76
+ description: `Apply skill improvements iteration ${N}`,
77
+ prompt: `## Task: Apply Targeted Improvements to Skill Files
78
+
79
+ You are improving a workflow skill based on evaluation feedback. Apply ONLY the suggested changes -- do not refactor, add features, or "improve" beyond what is explicitly suggested.
80
+
81
+ ## Current Score: ${evaluation.score}/100
82
+ Dimension breakdown:
83
+ ${evaluation.dimensions.map(d => `- ${d.name}: ${d.score}/100`).join('\n')}
84
+
85
+ ## Skill File Inventory
86
+ ${skillFileInventory}
87
+
88
+ ${chainContext ? `## Chain Context\n${chainContext}\n\nPrioritize improvements on the weakest skill in the chain. Also consider interface compatibility between adjacent skills in the chain.\n` : ''}
89
+
90
+ ## Improvement Suggestions (apply in priority order)
91
+ ${suggestionsText}
92
+
93
+ ## Rules
94
+ 1. Read each target file BEFORE modifying it
95
+ 2. Apply ONLY the suggested changes -- no unsolicited modifications
96
+ 3. If a suggestion's target_file doesn't exist, skip it and note in summary
97
+ 4. If a suggestion conflicts with existing patterns, adapt it to fit (note adaptation)
98
+ 5. Preserve existing code style, naming conventions, and structure
99
+ 6. After all changes, write a change summary to: ${iterDir}/iteration-${N}-changes.md
100
+
101
+ ## Changes Summary Format (write to ${iterDir}/iteration-${N}-changes.md)
102
+
103
+ # Iteration ${N} Changes
104
+
105
+ ## Applied Suggestions
106
+ - [high] description: what was changed in which file
107
+ - [medium] description: what was changed in which file
108
+
109
+ ## Files Modified
110
+ - path/to/file.md: brief description of changes
111
+
112
+ ## Skipped Suggestions (if any)
113
+ - description: reason for skipping
114
+
115
+ ## Notes
116
+ - Any adaptations or considerations
117
+
118
+ ## Success Criteria
119
+ - All high-priority suggestions applied
120
+ - Medium-priority suggestions applied if feasible
121
+ - Low-priority suggestions applied if trivial
122
+ - Changes summary written to ${iterDir}/iteration-${N}-changes.md
123
+ `
124
+ });
125
+ ```
126
+
127
+ ### Step 4.3: Verify Changes
128
+
129
+ After agent completes:
130
+
131
+ ```javascript
132
+ // Verify changes summary was written
133
+ const changesFile = `${iterDir}/iteration-${N}-changes.md`;
134
+ const changesExist = Glob(changesFile).length > 0;
135
+
136
+ if (!changesExist) {
137
+ // Agent didn't write summary -- create a minimal one
138
+ Write(changesFile, `# Iteration ${N} Changes\n\n## Notes\nAgent completed but did not produce changes summary.\n`);
139
+ }
140
+
141
+ // Read changes summary to extract applied changes
142
+ const changesContent = Read(changesFile);
143
+
144
+ // Parse applied changes (heuristic: count lines starting with "- [")
145
+ const appliedMatches = changesContent.match(/^- \[.+?\]/gm) || [];
146
+ const changes_applied = appliedMatches.map(m => ({
147
+ summary: m.replace(/^- /, ''),
148
+ file: '' // Extracted from context
149
+ }));
150
+ ```
151
+
152
+ ### Step 4.4: Update State
153
+
154
+ ```javascript
155
+ state.iterations[N - 1].improvement = {
156
+ changes_applied: changes_applied,
157
+ changes_file: changesFile,
158
+ improvement_rationale: `Applied ${changes_applied.length} improvements based on evaluation score ${evaluation.score}`
159
+ };
160
+ state.iterations[N - 1].status = 'completed';
161
+ state.updated_at = new Date().toISOString();
162
+
163
+ // Also update the skill files list in case new files were created
164
+ for (const skill of state.target_skills) {
165
+ skill.files = Glob(`${skill.path}/**/*.md`).map(f => f.replace(skill.path + '/', ''));
166
+ }
167
+
168
+ Write(`${state.work_dir}/iteration-state.json`, JSON.stringify(state, null, 2));
169
+
170
+ // -> Return to orchestrator for next iteration (Phase 2) or termination check
171
+ ```
172
+
173
+ ## Error Handling
174
+
175
+ | Error | Recovery |
176
+ |-------|----------|
177
+ | Agent fails to complete | Rollback from skill-snapshot: `cp -r "${iterDir}/skill-snapshot/${skill.name}/*" "${skill.path}/"` |
178
+ | Agent corrupts files | Same rollback from snapshot |
179
+ | Changes summary missing | Create minimal summary, continue |
180
+ | target_file not found | Agent skips suggestion, notes in summary |
181
+
182
+ ## Output
183
+
184
+ - **Files**: `iteration-{N}-changes.md`, modified skill files
185
+ - **State**: `iterations[N-1].improvement` and `.status` updated
186
+ - **Next**: Return to orchestrator, begin next iteration (Phase 2) or terminate
@@ -0,0 +1,166 @@
1
+ # Phase 5: Final Report
2
+
3
+ > **COMPACT SENTINEL [Phase 5: Report]**
4
+ > This phase contains 4 execution steps (Step 5.1 -- 5.4).
5
+ > If you can read this sentinel but cannot find the full Step protocol below, context has been compressed.
6
+ > Recovery: `Read("phases/05-report.md")`
7
+
8
+ Generate comprehensive iteration history report and display results to user.
9
+
10
+ ## Objective
11
+
12
+ - Read complete iteration state
13
+ - Generate formatted final report with score progression
14
+ - Write final-report.md
15
+ - Display summary to user
16
+
17
+ ## Execution
18
+
19
+ ### Step 5.1: Read Complete State
20
+
21
+ ```javascript
22
+ const state = JSON.parse(Read(`${state.work_dir}/iteration-state.json`));
23
+ state.status = 'completed';
24
+ state.updated_at = new Date().toISOString();
25
+ ```
26
+
27
+ ### Step 5.2: Generate Report
28
+
29
+ ```javascript
30
+ // Determine outcome
31
+ const outcomeMap = {
32
+ quality_threshold_met: 'PASSED -- Quality threshold reached',
33
+ max_iterations_reached: 'MAX ITERATIONS -- Threshold not reached',
34
+ convergence_detected: 'CONVERGED -- Score stopped improving',
35
+ error_limit_reached: 'FAILED -- Too many errors'
36
+ };
37
+ const outcome = outcomeMap[state.termination_reason] || 'COMPLETED';
38
+
39
+ // Build score progression table
40
+ const scoreTable = state.iterations
41
+ .filter(i => i.evaluation)
42
+ .map(i => {
43
+ const dims = i.evaluation.dimensions || [];
44
+ const dimScores = ['clarity', 'completeness', 'correctness', 'effectiveness', 'efficiency']
45
+ .map(id => {
46
+ const dim = dims.find(d => d.id === id);
47
+ return dim ? dim.score : '-';
48
+ });
49
+ return `| ${i.round} | ${i.evaluation.score} | ${dimScores.join(' | ')} |`;
50
+ }).join('\n');
51
+
52
+ // Build iteration details
53
+ const iterationDetails = state.iterations.map(iter => {
54
+ const evalSection = iter.evaluation
55
+ ? `**Score**: ${iter.evaluation.score}/100\n` +
56
+ `**Strengths**: ${iter.evaluation.strengths?.join(', ') || 'N/A'}\n` +
57
+ `**Weaknesses**: ${iter.evaluation.weaknesses?.slice(0, 3).join(', ') || 'N/A'}`
58
+ : '**Evaluation**: Skipped or failed';
59
+
60
+ const changesSection = iter.improvement
61
+ ? `**Changes Applied**: ${iter.improvement.changes_applied?.length || 0}\n` +
62
+ (iter.improvement.changes_applied?.map(c => ` - ${c.summary}`).join('\n') || ' None')
63
+ : '**Improvements**: None';
64
+
65
+ return `### Iteration ${iter.round}\n${evalSection}\n${changesSection}`;
66
+ }).join('\n\n');
67
+
68
+ const report = `# Skill Iter Tune -- Final Report
69
+
70
+ ## Summary
71
+
72
+ | Field | Value |
73
+ |-------|-------|
74
+ | **Target Skills** | ${state.target_skills.map(s => s.name).join(', ')} |
75
+ | **Execution Mode** | ${state.execution_mode} |
76
+ ${state.execution_mode === 'chain' ? `| **Chain Order** | ${state.chain_order.join(' -> ')} |` : ''}
77
+ | **Test Scenario** | ${state.test_scenario.description} |
78
+ | **Iterations** | ${state.iterations.length} |
79
+ | **Initial Score** | ${state.score_trend[0] || 'N/A'} |
80
+ | **Final Score** | ${state.latest_score}/100 |
81
+ | **Quality Threshold** | ${state.quality_threshold} |
82
+ | **Outcome** | ${outcome} |
83
+ | **Started** | ${state.started_at} |
84
+ | **Completed** | ${state.updated_at} |
85
+
86
+ ## Score Progression
87
+
88
+ | Iter | Composite | Clarity | Completeness | Correctness | Effectiveness | Efficiency |
89
+ |------|-----------|---------|--------------|-------------|---------------|------------|
90
+ ${scoreTable}
91
+
92
+ **Trend**: ${state.score_trend.join(' -> ')}
93
+
94
+ ${state.execution_mode === 'chain' ? `
95
+ ## Chain Score Progression
96
+
97
+ | Iter | ${state.chain_order.join(' | ')} |
98
+ |------|${state.chain_order.map(() => '------').join('|')}|
99
+ ${state.iterations.filter(i => i.evaluation?.chain_scores).map(i => {
100
+ const scores = state.chain_order.map(s => i.evaluation.chain_scores[s] || '-');
101
+ return `| ${i.round} | ${scores.join(' | ')} |`;
102
+ }).join('\n')}
103
+ ` : ''}
104
+
105
+ ## Iteration Details
106
+
107
+ ${iterationDetails}
108
+
109
+ ## Remaining Weaknesses
110
+
111
+ ${state.iterations.length > 0 && state.iterations[state.iterations.length - 1].evaluation
112
+ ? state.iterations[state.iterations.length - 1].evaluation.weaknesses?.map(w => `- ${w}`).join('\n') || 'None identified'
113
+ : 'No evaluation data available'}
114
+
115
+ ## Artifact Locations
116
+
117
+ | Path | Description |
118
+ |------|-------------|
119
+ | \`${state.work_dir}/iteration-state.json\` | Complete state history |
120
+ | \`${state.work_dir}/iterations/iteration-{N}/iteration-{N}-eval.md\` | Per-iteration evaluations |
121
+ | \`${state.work_dir}/iterations/iteration-{N}/iteration-{N}-changes.md\` | Per-iteration change logs |
122
+ | \`${state.work_dir}/final-report.md\` | This report |
123
+ | \`${state.backup_dir}/\` | Original skill backups |
124
+
125
+ ## Restore Original
126
+
127
+ To revert all changes and restore the original skill files:
128
+
129
+ \`\`\`bash
130
+ ${state.target_skills.map(s => `cp -r "${state.backup_dir}/${s.name}"/* "${s.path}/"`).join('\n')}
131
+ \`\`\`
132
+ `;
133
+ ```
134
+
135
+ ### Step 5.3: Write Report and Update State
136
+
137
+ ```javascript
138
+ Write(`${state.work_dir}/final-report.md`, report);
139
+
140
+ state.status = 'completed';
141
+ Write(`${state.work_dir}/iteration-state.json`, JSON.stringify(state, null, 2));
142
+ ```
143
+
144
+ ### Step 5.4: Display Summary to User
145
+
146
+ Output to user:
147
+
148
+ ```
149
+ Skill Iter Tune Complete!
150
+
151
+ Target: {skill names}
152
+ Iterations: {count}
153
+ Score: {initial} -> {final} ({outcome})
154
+ Threshold: {threshold}
155
+
156
+ Score trend: {score1} -> {score2} -> ... -> {scoreN}
157
+
158
+ Full report: {workDir}/final-report.md
159
+ Backups: {backupDir}/
160
+ ```
161
+
162
+ ## Output
163
+
164
+ - **Files**: `final-report.md`
165
+ - **State**: `status = completed`
166
+ - **Next**: Workflow complete. Return control to user.
@@ -0,0 +1,63 @@
1
+ # Evaluation Criteria
2
+
3
+ Skill 质量评估标准,由 Phase 03 (Evaluate) 引用。Gemini 按此标准对 skill 产出物进行多维度评分。
4
+
5
+ ## Dimensions
6
+
7
+ | Dimension | Weight | ID | Description |
8
+ |-----------|--------|----|-------------|
9
+ | Clarity | 0.20 | clarity | 指令清晰无歧义,结构良好,易于遵循。Phase 文件有明确的 Step 划分、输入输出说明 |
10
+ | Completeness | 0.25 | completeness | 覆盖所有必要阶段、边界情况、错误处理。没有遗漏关键执行路径 |
11
+ | Correctness | 0.25 | correctness | 逻辑正确,数据流一致,Phase 间无矛盾。State schema 与实际使用匹配 |
12
+ | Effectiveness | 0.20 | effectiveness | 在给定测试场景下能产出高质量输出。产物满足用户需求和成功标准 |
13
+ | Efficiency | 0.10 | efficiency | 无冗余内容,上下文使用合理,不浪费 token。Phase 职责清晰无重叠 |
14
+
15
+ ## Scoring Guide
16
+
17
+ | Range | Level | Description |
18
+ |-------|-------|-------------|
19
+ | 90-100 | Excellent | 生产级别,几乎无改进空间 |
20
+ | 80-89 | Good | 可投入使用,仅需微调 |
21
+ | 70-79 | Adequate | 功能可用,有明显可改进区域 |
22
+ | 60-69 | Needs Work | 存在影响产出质量的显著问题 |
23
+ | 0-59 | Poor | 结构或逻辑存在根本性问题 |
24
+
25
+ ## Composite Score Calculation
26
+
27
+ ```
28
+ composite = sum(dimension.score * dimension.weight)
29
+ ```
30
+
31
+ ## Output JSON Schema
32
+
33
+ ```json
34
+ {
35
+ "composite_score": 75,
36
+ "dimensions": [
37
+ { "name": "Clarity", "id": "clarity", "score": 80, "weight": 0.20, "feedback": "..." },
38
+ { "name": "Completeness", "id": "completeness", "score": 70, "weight": 0.25, "feedback": "..." },
39
+ { "name": "Correctness", "id": "correctness", "score": 78, "weight": 0.25, "feedback": "..." },
40
+ { "name": "Effectiveness", "id": "effectiveness", "score": 72, "weight": 0.20, "feedback": "..." },
41
+ { "name": "Efficiency", "id": "efficiency", "score": 85, "weight": 0.10, "feedback": "..." }
42
+ ],
43
+ "strengths": ["...", "...", "..."],
44
+ "weaknesses": ["...", "...", "..."],
45
+ "suggestions": [
46
+ {
47
+ "priority": "high",
48
+ "target_file": "phases/02-execute.md",
49
+ "description": "Add explicit error handling for CLI timeout",
50
+ "rationale": "Current phase has no recovery path when CLI execution exceeds timeout",
51
+ "code_snippet": "optional suggested replacement code"
52
+ }
53
+ ]
54
+ }
55
+ ```
56
+
57
+ ## Evaluation Focus by Iteration
58
+
59
+ | Iteration | Primary Focus |
60
+ |-----------|--------------|
61
+ | 1 | 全面评估,建立 baseline |
62
+ | 2-3 | 重点关注上一轮 weaknesses 是否改善,避免重复已解决的问题 |
63
+ | 4+ | 精细化改进,关注 Effectiveness 和 Efficiency |
@@ -0,0 +1,134 @@
1
+ # Evaluation Prompt Template
2
+
3
+ Phase 03 使用此模板构造 ccw cli 提示词,让 Gemini 按多维度评估 skill 质量。
4
+
5
+ ## Template
6
+
7
+ ```
8
+ PURPOSE: Evaluate the quality of a workflow skill by examining both its definition files and the artifacts it produced when executed against a test scenario. Provide a structured multi-dimensional score with actionable improvement suggestions.
9
+
10
+ SKILL DEFINITION:
11
+ ${skillContent}
12
+
13
+ TEST SCENARIO:
14
+ ${testScenario.description}
15
+ Requirements: ${testScenario.requirements}
16
+ Success Criteria: ${testScenario.success_criteria}
17
+
18
+ ARTIFACTS PRODUCED:
19
+ ${artifactsSummary}
20
+
21
+ EVALUATION CRITERIA:
22
+ ${evaluationCriteria}
23
+
24
+ ${previousEvalContext}
25
+
26
+ TASK:
27
+ 1. Read all skill definition files and produced artifacts carefully
28
+ 2. Score each dimension on 0-100 based on the evaluation criteria:
29
+ - Clarity (weight 0.20): Instructions unambiguous, well-structured, easy to follow
30
+ - Completeness (weight 0.25): All phases, edge cases, error handling covered
31
+ - Correctness (weight 0.25): Logic sound, data flow consistent, no contradictions
32
+ - Effectiveness (weight 0.20): Produces high-quality output for the test scenario
33
+ - Efficiency (weight 0.10): Minimal redundancy, appropriate context usage
34
+ 3. Calculate weighted composite score
35
+ 4. List top 3 strengths
36
+ 5. List top 3-5 weaknesses with specific file:section references
37
+ 6. Provide 3-5 prioritized improvement suggestions with concrete changes
38
+
39
+ MODE: analysis
40
+
41
+ EXPECTED OUTPUT FORMAT (strict JSON, no markdown wrapping):
42
+ {
43
+ "composite_score": <number 0-100>,
44
+ "dimensions": [
45
+ { "name": "Clarity", "id": "clarity", "score": <0-100>, "weight": 0.20, "feedback": "<specific feedback>" },
46
+ { "name": "Completeness", "id": "completeness", "score": <0-100>, "weight": 0.25, "feedback": "<specific feedback>" },
47
+ { "name": "Correctness", "id": "correctness", "score": <0-100>, "weight": 0.25, "feedback": "<specific feedback>" },
48
+ { "name": "Effectiveness", "id": "effectiveness", "score": <0-100>, "weight": 0.20, "feedback": "<specific feedback>" },
49
+ { "name": "Efficiency", "id": "efficiency", "score": <0-100>, "weight": 0.10, "feedback": "<specific feedback>" }
50
+ ],
51
+ "strengths": ["<strength 1>", "<strength 2>", "<strength 3>"],
52
+ "weaknesses": ["<weakness 1 with file:section reference>", "..."],
53
+ "suggestions": [
54
+ {
55
+ "priority": "high|medium|low",
56
+ "target_file": "<relative path to skill file>",
57
+ "description": "<what to change>",
58
+ "rationale": "<why this improves quality>",
59
+ "code_snippet": "<optional: suggested replacement content>"
60
+ }
61
+ ],
62
+ "chain_scores": {
63
+ "<skill_name>": "<number 0-100, per-skill score — only present in chain mode>"
64
+ }
65
+ }
66
+
67
+ CONSTRAINTS:
68
+ - Be rigorous and specific — reference exact file paths and sections
69
+ - Each suggestion MUST include a target_file that maps to a skill file
70
+ - Focus suggestions on highest-impact changes first
71
+ - Do NOT suggest changes already addressed in previous iterations
72
+ - Output ONLY the JSON object, no surrounding text or markdown
73
+ ```
74
+
75
+ ## Variable Substitution
76
+
77
+ | Variable | Source | Description |
78
+ |----------|--------|-------------|
79
+ | `${skillContent}` | Same as execute-prompt.md | 完整 skill 文件内容 |
80
+ | `${testScenario.*}` | iteration-state.json | 测试场景信息 |
81
+ | `${artifactsSummary}` | Phase 03 reads artifacts/ dir | 产出物文件列表 + 内容摘要 |
82
+ | `${evaluationCriteria}` | specs/evaluation-criteria.md | 评分标准全文 |
83
+ | `${previousEvalContext}` | 历史迭代记录 | 前几轮评估摘要(避免重复建议) |
84
+ | `${chainContext}` | Phase 03 constructs | chain 模式下的链上下文信息 |
85
+
86
+ ## previousEvalContext Construction
87
+
88
+ ```javascript
89
+ // Build context from prior iterations to avoid repeating suggestions
90
+ const previousEvalContext = state.iterations.length > 0
91
+ ? `PREVIOUS ITERATIONS (context for avoiding duplicate suggestions):
92
+ ${state.iterations.map(iter => `
93
+ Iteration ${iter.round}: Score ${iter.evaluation?.score || 'N/A'}
94
+ Applied changes: ${iter.improvement?.changes_applied?.map(c => c.summary).join('; ') || 'none'}
95
+ Remaining weaknesses: ${iter.evaluation?.weaknesses?.slice(0, 3).join('; ') || 'none'}
96
+ `).join('')}
97
+ IMPORTANT: Focus on NEW issues or issues NOT adequately addressed in previous improvements.`
98
+ : '';
99
+ ```
100
+
101
+ ## chainContext Construction
102
+
103
+ ```javascript
104
+ // Build chain context for evaluation (chain mode only)
105
+ const chainContext = state.execution_mode === 'chain'
106
+ ? `CHAIN CONTEXT:
107
+ This skill chain contains ${state.chain_order.length} skills executed in order:
108
+ ${state.chain_order.map((s, i) => `${i+1}. ${s}`).join('\n')}
109
+ Current evaluation covers the entire chain output.
110
+ Please provide per-skill quality scores in an additional "chain_scores" field.`
111
+ : '';
112
+ ```
113
+
114
+ ## artifactsSummary Construction
115
+
116
+ ```javascript
117
+ // Read manifest.json if available, otherwise list files
118
+ const manifestPath = `${iterDir}/artifacts/manifest.json`;
119
+ let artifactsSummary;
120
+
121
+ if (fileExists(manifestPath)) {
122
+ const manifest = JSON.parse(Read(manifestPath));
123
+ artifactsSummary = manifest.artifacts.map(a =>
124
+ `- ${a.path}: ${a.description} (Phase ${a.phase})`
125
+ ).join('\n');
126
+ } else {
127
+ // Fallback: list all files with first 200 lines each
128
+ const files = Glob(`${iterDir}/artifacts/**/*`);
129
+ artifactsSummary = files.map(f => {
130
+ const content = Read(f, { limit: 200 });
131
+ return `--- ${f.replace(iterDir + '/artifacts/', '')} ---\n${content}`;
132
+ }).join('\n\n');
133
+ }
134
+ ```
@@ -0,0 +1,97 @@
1
+ # Execute Prompt Template
2
+
3
+ Phase 02 使用此模板构造 ccw cli 提示词,让 Claude 模拟执行 skill 并产出所有预期产物。
4
+
5
+ ## Template
6
+
7
+ ```
8
+ PURPOSE: Simulate executing the following workflow skill against a test scenario. Produce all expected output artifacts as if the skill were invoked with the given input. This is for evaluating skill quality.
9
+
10
+ SKILL CONTENT:
11
+ ${skillContent}
12
+
13
+ TEST SCENARIO:
14
+ Description: ${testScenario.description}
15
+ Input Arguments: ${testScenario.input_args}
16
+ Requirements: ${testScenario.requirements}
17
+ Success Criteria: ${testScenario.success_criteria}
18
+
19
+ TASK:
20
+ 1. Study the complete skill structure (SKILL.md + all phase files)
21
+ 2. Follow the skill's execution flow sequentially (Phase 1 → Phase N)
22
+ 3. For each phase, produce the artifacts that phase would generate
23
+ 4. Write all output artifacts to the current working directory
24
+ 5. Create a manifest.json listing all produced artifacts with descriptions
25
+
26
+ MODE: write
27
+
28
+ CONTEXT: @**/*
29
+
30
+ EXPECTED:
31
+ - All artifacts the skill would produce for this test scenario
32
+ - Each artifact in its correct relative path
33
+ - A manifest.json at root: { "artifacts": [{ "path": "...", "description": "...", "phase": N }] }
34
+
35
+ CONSTRAINTS:
36
+ - Follow the skill execution flow exactly — do not skip or reorder phases
37
+ - Produce realistic, high-quality output (not placeholder content)
38
+ - If the skill requires user interaction (AskUserQuestion), use reasonable defaults
39
+ - If the skill invokes external tools/CLIs, document what would be called but produce expected output directly
40
+ ```
41
+
42
+ ## Variable Substitution
43
+
44
+ | Variable | Source | Description |
45
+ |----------|--------|-------------|
46
+ | `${skillContent}` | Phase 02 reads all skill files | 完整 SKILL.md + phase 文件内容,用 markdown headers 分隔 |
47
+ | `${testScenario.description}` | iteration-state.json | 用户描述的测试场景 |
48
+ | `${testScenario.input_args}` | iteration-state.json | 模拟传给 skill 的参数 |
49
+ | `${testScenario.requirements}` | iteration-state.json | 质量要求列表 |
50
+ | `${testScenario.success_criteria}` | iteration-state.json | 成功标准定义 |
51
+
52
+ ## Chain Mode Extension
53
+
54
+ When running in chain mode, the template is invoked once per skill in `chain_order`. Each invocation includes:
55
+
56
+ ### Additional Variable
57
+
58
+ | Variable | Source | Description |
59
+ |----------|--------|-------------|
60
+ | `${previousChainOutput}` | Phase 02 chain loop | 前序 skill 的 artifacts 摘要 (chain 模式下非首个 skill) |
61
+
62
+ ### Chain Prompt Modification
63
+
64
+ When `execution_mode === 'chain'`, the prompt includes:
65
+
66
+ ```
67
+ PREVIOUS CHAIN OUTPUT (from upstream skill "${previousSkillName}"):
68
+ ${previousChainOutput}
69
+
70
+ IMPORTANT: Use the above output as input context for this skill's execution.
71
+ ```
72
+
73
+ This section is only added for skills at position 2+ in the chain. The first skill in the chain receives no upstream context.
74
+
75
+ ## skillContent Construction
76
+
77
+ ```javascript
78
+ // Read only executable skill files and format with consistent headers
79
+ const skillMd = Read(`${skill.path}/SKILL.md`);
80
+ const phaseFiles = Glob(`${skill.path}/phases/*.md`).map(f => ({
81
+ relativePath: f.replace(skill.path + '/', ''),
82
+ content: Read(f)
83
+ }));
84
+ const specFiles = Glob(`${skill.path}/specs/*.md`).map(f => ({
85
+ relativePath: f.replace(skill.path + '/', ''),
86
+ content: Read(f)
87
+ }));
88
+
89
+ const skillContent = `
90
+ ### File: SKILL.md
91
+ ${skillMd}
92
+
93
+ ${phaseFiles.map(f => `### File: ${f.relativePath}\n${f.content}`).join('\n\n')}
94
+
95
+ ${specFiles.length > 0 ? specFiles.map(f => `### File: ${f.relativePath}\n${f.content}`).join('\n\n') : ''}
96
+ `.trim();
97
+ ```
@@ -148,7 +148,7 @@ AskUserQuestion({
148
148
  |----------|------------|
149
149
  | Unknown --role value | Error with role registry list |
150
150
  | Role file not found | Error with expected path (roles/{name}/role.md) |
151
- | project-tech.json missing | Coordinator invokes /workflow:init |
151
+ | project-tech.json missing | Coordinator invokes /workflow:spec:setup |
152
152
  | Phase verification fails with gaps | Coordinator triggers gap closure loop (max 3 iterations) |
153
153
  | Max gap closure iterations (3) | Report to user, ask for guidance |
154
154
  | Worker crash | Respawn worker, reassign task |
@@ -284,7 +284,7 @@ Delegate to `commands/monitor.md`:
284
284
 
285
285
  | Scenario | Resolution |
286
286
  |----------|------------|
287
- | project-tech.json missing | Invoke /workflow:init automatically |
287
+ | project-tech.json missing | Invoke /workflow:spec:setup automatically |
288
288
  | User cancels roadmap discussion | Save session state, exit gracefully |
289
289
  | Planner fails | Retry once, then ask user for guidance |
290
290
  | Executor fails on plan | Mark plan as failed, continue with next |
@@ -85,7 +85,7 @@
85
85
  "init_prerequisite": {
86
86
  "required_files": [".workflow/project-tech.json"],
87
87
  "optional_files": [".workflow/specs/*.md"],
88
- "init_command": "/workflow:init"
88
+ "init_command": "/workflow:spec:setup "
89
89
  },
90
90
  "_metadata": {
91
91
  "created_at": "2026-02-24",
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAoCA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4JD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuU3E;AAoUD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuDnH;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BxE;AA2BD;;GAEG;AACH,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsND;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D3F"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAoCA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4JD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyU3E;AAoUD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuDnH;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BxE;AA2BD;;GAEG;AACH,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsND;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D3F"}