claude-code-workflow 7.2.9 → 7.2.11

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 (324) hide show
  1. package/.claude/agents/cli-planning-agent.md +3 -0
  2. package/.claude/agents/debug-explore-agent.md +1 -0
  3. package/.claude/agents/tdd-developer.md +1 -0
  4. package/.claude/agents/team-worker.md +1 -1
  5. package/.claude/agents/test-action-planning-agent.md +3 -0
  6. package/.claude/agents/test-context-search-agent.md +1 -0
  7. package/.claude/agents/test-fix-agent.md +3 -0
  8. package/.claude/skills/review-code/SKILL.md +2 -0
  9. package/.claude/skills/review-cycle/SKILL.md +4 -0
  10. package/.claude/skills/skill-simplify/phases/02-optimize.md +4 -0
  11. package/.claude/skills/spec-generator/phases/05-epics-stories.md +4 -0
  12. package/.claude/skills/team-arch-opt/specs/team-config.json +5 -5
  13. package/.claude/skills/team-frontend-debug/roles/analyzer/role.md +3 -2
  14. package/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md +1 -1
  15. package/.claude/skills/team-perf-opt/specs/team-config.json +5 -5
  16. package/.claude/skills/team-quality-assurance/roles/executor/role.md +2 -1
  17. package/.claude/skills/team-review/roles/reviewer/role.md +2 -1
  18. package/.claude/skills/team-tech-debt/roles/scanner/role.md +2 -1
  19. package/.claude/skills/team-testing/roles/executor/role.md +2 -1
  20. package/.claude/skills/team-testing/roles/generator/role.md +2 -1
  21. package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +2 -1
  22. package/.claude/skills/team-ux-improve/specs/team-config.json +6 -6
  23. package/.claude/skills/workflow-execute/phases/06-review.md +4 -4
  24. package/.claude/skills/workflow-lite-test-review/SKILL.md +2 -0
  25. package/.claude/skills/workflow-plan/phases/05-plan-verify.md +4 -0
  26. package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +1 -0
  27. package/.claude/skills/workflow-tdd-plan/phases/05-tdd-task-generation.md +2 -1
  28. package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +1 -0
  29. package/.claude/skills/workflow-test-fix/phases/05-test-cycle-execute.md +2 -1
  30. package/.claude/skills/workflow-tune/SKILL.md +487 -0
  31. package/.claude/skills/workflow-tune/phases/01-setup.md +548 -0
  32. package/.claude/skills/workflow-tune/phases/02-step-execute.md +197 -0
  33. package/.claude/skills/workflow-tune/phases/03-step-analyze.md +386 -0
  34. package/.claude/skills/workflow-tune/phases/04-synthesize.md +257 -0
  35. package/.claude/skills/workflow-tune/phases/05-optimize-report.md +246 -0
  36. package/.claude/skills/workflow-tune/specs/workflow-eval-criteria.md +57 -0
  37. package/.claude/skills/workflow-tune/templates/step-analysis-prompt.md +88 -0
  38. package/.claude/skills/workflow-tune/templates/synthesis-prompt.md +90 -0
  39. package/.codex/skills/analyze-with-file/SKILL.md +64 -103
  40. package/.codex/skills/debug-with-file/SKILL.md +4 -0
  41. package/.codex/skills/issue-discover/SKILL.md +1 -0
  42. package/.codex/skills/review-cycle/phases/02-parallel-review.md +3 -0
  43. package/.codex/skills/roadmap-with-file/SKILL.md +11 -17
  44. package/.codex/skills/team-designer/agents/validation-reporter.md +186 -0
  45. package/.codex/skills/team-iterdev/agents/gc-controller.md +193 -0
  46. package/.codex/skills/team-iterdev/agents/task-analyzer.md +206 -0
  47. package/.codex/skills/team-lifecycle-v4/agents/quality-gate.md +165 -0
  48. package/.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md +163 -0
  49. package/.codex/skills/team-lifecycle-v4/agents/supervisor.md +182 -0
  50. package/.codex/skills/team-uidesign/agents/completion-handler.md +177 -0
  51. package/.codex/skills/team-uidesign/agents/gc-loop-handler.md +162 -0
  52. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +4 -0
  53. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +2 -0
  54. package/ccw/dist/commands/spec.d.ts.map +1 -1
  55. package/ccw/dist/commands/spec.js +9 -4
  56. package/ccw/dist/commands/spec.js.map +1 -1
  57. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
  58. package/ccw/dist/core/routes/codexlens-routes.js +3 -1
  59. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
  60. package/ccw/dist/tools/spec-index-builder.d.ts +8 -4
  61. package/ccw/dist/tools/spec-index-builder.d.ts.map +1 -1
  62. package/ccw/dist/tools/spec-index-builder.js +8 -4
  63. package/ccw/dist/tools/spec-index-builder.js.map +1 -1
  64. package/ccw/dist/tools/spec-init.d.ts +1 -1
  65. package/ccw/dist/tools/spec-init.d.ts.map +1 -1
  66. package/ccw/dist/tools/spec-init.js +127 -0
  67. package/ccw/dist/tools/spec-init.js.map +1 -1
  68. package/ccw/dist/tools/spec-loader.d.ts.map +1 -1
  69. package/ccw/dist/tools/spec-loader.js +2 -1
  70. package/ccw/dist/tools/spec-loader.js.map +1 -1
  71. package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js → AlertDialog-BW9jiZ-p.js} +2 -2
  72. package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js.map → AlertDialog-BW9jiZ-p.js.map} +1 -1
  73. package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js → AnalysisPage-ds-w_nVO.js} +2 -2
  74. package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js.map → AnalysisPage-ds-w_nVO.js.map} +1 -1
  75. package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js → ApiSettingsPage-DlCbXxTz.js} +2 -2
  76. package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js.map → ApiSettingsPage-DlCbXxTz.js.map} +1 -1
  77. package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js → CliModeToggle-Dq3nL4fF.js} +2 -2
  78. package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js.map → CliModeToggle-Dq3nL4fF.js.map} +1 -1
  79. package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js → CliSessionSharePage-BNDkEE4u.js} +2 -2
  80. package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js.map → CliSessionSharePage-BNDkEE4u.js.map} +1 -1
  81. package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js → CliViewerPage-ChM-uNx_.js} +2 -2
  82. package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js.map → CliViewerPage-ChM-uNx_.js.map} +1 -1
  83. package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js +2 -0
  84. package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js.map +1 -0
  85. package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js → Collapsible-CRNbykXN.js} +2 -2
  86. package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js.map → Collapsible-CRNbykXN.js.map} +1 -1
  87. package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js → CommandsManagerPage-C2JWcemF.js} +2 -2
  88. package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js.map → CommandsManagerPage-C2JWcemF.js.map} +1 -1
  89. package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js → DeepWikiPage-CvleOtJy.js} +2 -2
  90. package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js.map → DeepWikiPage-CvleOtJy.js.map} +1 -1
  91. package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js → EndpointsPage-CMOWQG64.js} +2 -2
  92. package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js.map → EndpointsPage-CMOWQG64.js.map} +1 -1
  93. package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js → ExplorerPage-DaFPRlNo.js} +2 -2
  94. package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js.map → ExplorerPage-DaFPRlNo.js.map} +1 -1
  95. package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js → FixSessionPage-CC4p04Az.js} +2 -2
  96. package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js.map → FixSessionPage-CC4p04Az.js.map} +1 -1
  97. package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js → FloatingFileBrowser-DROn1xZ5.js} +2 -2
  98. package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js.map → FloatingFileBrowser-DROn1xZ5.js.map} +1 -1
  99. package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js → FloatingPanel-CmL_yhDv.js} +2 -2
  100. package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js.map → FloatingPanel-CmL_yhDv.js.map} +1 -1
  101. package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js → GraphExplorerPage-DCV5ybKE.js} +2 -2
  102. package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js.map → GraphExplorerPage-DCV5ybKE.js.map} +1 -1
  103. package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js → HistoryPage-D0fYQZgc.js} +2 -2
  104. package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js.map → HistoryPage-D0fYQZgc.js.map} +1 -1
  105. package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js → HookManagerPage-D2FuJfsM.js} +2 -2
  106. package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js.map → HookManagerPage-D2FuJfsM.js.map} +1 -1
  107. package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js → InstallationsPage-tjklillZ.js} +2 -2
  108. package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js.map → InstallationsPage-tjklillZ.js.map} +1 -1
  109. package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js → IssueHubPage-E4JVrhO1.js} +2 -2
  110. package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js.map → IssueHubPage-E4JVrhO1.js.map} +1 -1
  111. package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js → LiteTasksPage-aJuRoyLt.js} +2 -2
  112. package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js.map → LiteTasksPage-aJuRoyLt.js.map} +1 -1
  113. package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js → McpManagerPage-BJeuWJv1.js} +2 -2
  114. package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js.map → McpManagerPage-BJeuWJv1.js.map} +1 -1
  115. package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js → MemoryPage-BI4FAXhs.js} +2 -2
  116. package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js.map → MemoryPage-BI4FAXhs.js.map} +1 -1
  117. package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js → NotFoundPage-DD2svchp.js} +2 -2
  118. package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js.map → NotFoundPage-DD2svchp.js.map} +1 -1
  119. package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js → OrchestratorPage-FC__7yYa.js} +2 -2
  120. package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js.map → OrchestratorPage-FC__7yYa.js.map} +1 -1
  121. package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js → ProjectOverviewPage-DBB_-FzV.js} +2 -2
  122. package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js.map → ProjectOverviewPage-DBB_-FzV.js.map} +1 -1
  123. package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js → PromptHistoryPage-BwOAvCH8.js} +2 -2
  124. package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js.map → PromptHistoryPage-BwOAvCH8.js.map} +1 -1
  125. package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js → ReviewSessionPage-Dd1-g_gp.js} +2 -2
  126. package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js.map → ReviewSessionPage-Dd1-g_gp.js.map} +1 -1
  127. package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js → RulesManagerPage-B3RGdsKD.js} +2 -2
  128. package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js.map → RulesManagerPage-B3RGdsKD.js.map} +1 -1
  129. package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js → SessionDetailPage-DM-W5R8K.js} +2 -2
  130. package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js.map → SessionDetailPage-DM-W5R8K.js.map} +1 -1
  131. package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js → SessionsPage-BVz1KCc7.js} +2 -2
  132. package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js.map → SessionsPage-BVz1KCc7.js.map} +1 -1
  133. package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js → SettingsPage-ComW7EZS.js} +4 -4
  134. package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js.map → SettingsPage-ComW7EZS.js.map} +1 -1
  135. package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js → SkillsManagerPage-CKom9XwV.js} +2 -2
  136. package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js.map → SkillsManagerPage-CKom9XwV.js.map} +1 -1
  137. package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js → SpecsSettingsPage-DQz7WP2s.js} +2 -2
  138. package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js.map → SpecsSettingsPage-DQz7WP2s.js.map} +1 -1
  139. package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js → Switch-BPMdND9H.js} +2 -2
  140. package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js.map → Switch-BPMdND9H.js.map} +1 -1
  141. package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js → TabsNavigation-qqt70VYL.js} +2 -2
  142. package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js.map → TabsNavigation-qqt70VYL.js.map} +1 -1
  143. package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js → TaskDrawer-BqK_qiHX.js} +2 -2
  144. package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js.map → TaskDrawer-BqK_qiHX.js.map} +1 -1
  145. package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js → TeamPage-u5_i0Rgh.js} +2 -2
  146. package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js.map → TeamPage-u5_i0Rgh.js.map} +1 -1
  147. package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js → TerminalDashboardPage-rUtC9e40.js} +2 -2
  148. package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js.map → TerminalDashboardPage-rUtC9e40.js.map} +1 -1
  149. package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js → archive-C3u8YNQF.js} +2 -2
  150. package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js.map → archive-C3u8YNQF.js.map} +1 -1
  151. package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js → archive-restore-DfQ998g5.js} +2 -2
  152. package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js.map → archive-restore-DfQ998g5.js.map} +1 -1
  153. package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js → arrow-right-BshJM9Po.js} +2 -2
  154. package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js.map → arrow-right-BshJM9Po.js.map} +1 -1
  155. package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js → bookmark-plus-D03qJyOZ.js} +2 -2
  156. package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js.map → bookmark-plus-D03qJyOZ.js.map} +1 -1
  157. package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js → bot-CyzWuwq0.js} +2 -2
  158. package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js.map → bot-CyzWuwq0.js.map} +1 -1
  159. package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js → braces-BPgtyjsG.js} +2 -2
  160. package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js.map → braces-BPgtyjsG.js.map} +1 -1
  161. package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js → circle-stop-Dix1AOmw.js} +2 -2
  162. package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js.map → circle-stop-Dix1AOmw.js.map} +1 -1
  163. package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js → cpu-CCQ4Q0Zh.js} +2 -2
  164. package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js.map → cpu-CCQ4Q0Zh.js.map} +1 -1
  165. package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js → ellipsis-vertical-BpTysg-Y.js} +2 -2
  166. package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js.map → ellipsis-vertical-BpTysg-Y.js.map} +1 -1
  167. package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js → eye-DGY1rAZs.js} +2 -2
  168. package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js.map → eye-DGY1rAZs.js.map} +1 -1
  169. package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js → eye-off-D8t3JfWG.js} +2 -2
  170. package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js.map → eye-off-D8t3JfWG.js.map} +1 -1
  171. package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js → file-json-BAdJb0n8.js} +2 -2
  172. package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js.map → file-json-BAdJb0n8.js.map} +1 -1
  173. package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js → file-text-DrJFiOUB.js} +2 -2
  174. package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js.map → file-text-DrJFiOUB.js.map} +1 -1
  175. package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js → filter-CKqzYbz7.js} +2 -2
  176. package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js.map → filter-CKqzYbz7.js.map} +1 -1
  177. package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js → folder-CV8511y9.js} +2 -2
  178. package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js.map → folder-CV8511y9.js.map} +1 -1
  179. package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js → gauge-XKvmu_uU.js} +2 -2
  180. package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js.map → gauge-XKvmu_uU.js.map} +1 -1
  181. package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js → globe-C56cDUzX.js} +2 -2
  182. package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js.map → globe-C56cDUzX.js.map} +1 -1
  183. package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js → grid-3x3-Bya-suFW.js} +2 -2
  184. package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js.map → grid-3x3-Bya-suFW.js.map} +1 -1
  185. package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js → hard-drive-CmuTZpsB.js} +2 -2
  186. package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js.map → hard-drive-CmuTZpsB.js.map} +1 -1
  187. package/ccw/frontend/dist/assets/{hash-Bd1RD285.js → hash-CRPT_tJQ.js} +2 -2
  188. package/ccw/frontend/dist/assets/{hash-Bd1RD285.js.map → hash-CRPT_tJQ.js.map} +1 -1
  189. package/ccw/frontend/dist/assets/{history-eyyCQA6b.js → history-C1pJZQCL.js} +2 -2
  190. package/ccw/frontend/dist/assets/{history-eyyCQA6b.js.map → history-C1pJZQCL.js.map} +1 -1
  191. package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js → index-B6TpijCe.js} +2 -2
  192. package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js.map → index-B6TpijCe.js.map} +1 -1
  193. package/ccw/frontend/dist/assets/{index-b2C0iFd1.js → index-Bcq-7r6F.js} +2 -2
  194. package/ccw/frontend/dist/assets/{index-b2C0iFd1.js.map → index-Bcq-7r6F.js.map} +1 -1
  195. package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js → index-CI8-rBff.js} +2 -2
  196. package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js.map → index-CI8-rBff.js.map} +1 -1
  197. package/ccw/frontend/dist/assets/{index-CY6Lueph.js → index-Dmt9OiEf.js} +2 -2
  198. package/ccw/frontend/dist/assets/{index-CY6Lueph.js.map → index-Dmt9OiEf.js.map} +1 -1
  199. package/ccw/frontend/dist/assets/{index-DfeBbFXo.js → index-anSMmEF8.js} +2 -2
  200. package/ccw/frontend/dist/assets/{index-DfeBbFXo.js.map → index-anSMmEF8.js.map} +1 -1
  201. package/ccw/frontend/dist/assets/{index-B6I7GQC5.js → index-dWT2M6Ef.js} +4 -4
  202. package/ccw/frontend/dist/assets/{index-B6I7GQC5.js.map → index-dWT2M6Ef.js.map} +1 -1
  203. package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js → layout-grid-TSO0BFQE.js} +2 -2
  204. package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js.map → layout-grid-TSO0BFQE.js.map} +1 -1
  205. package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js → lightbulb-Caj6fIQD.js} +2 -2
  206. package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js.map → lightbulb-Caj6fIQD.js.map} +1 -1
  207. package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js → link-2-DE9lMxa-.js} +2 -2
  208. package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js.map → link-2-DE9lMxa-.js.map} +1 -1
  209. package/ccw/frontend/dist/assets/{link-CL4JmoHb.js → link-BZtPgLW0.js} +2 -2
  210. package/ccw/frontend/dist/assets/{link-CL4JmoHb.js.map → link-BZtPgLW0.js.map} +1 -1
  211. package/ccw/frontend/dist/assets/{list-CDmYFcio.js → list-DubWyY-U.js} +2 -2
  212. package/ccw/frontend/dist/assets/{list-CDmYFcio.js.map → list-DubWyY-U.js.map} +1 -1
  213. package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js → map-pin-DwN_48AF.js} +2 -2
  214. package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js.map → map-pin-DwN_48AF.js.map} +1 -1
  215. package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js → messages-square-bjxvaiM9.js} +2 -2
  216. package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js.map → messages-square-bjxvaiM9.js.map} +1 -1
  217. package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js → minimize-2-CGfBKD_V.js} +2 -2
  218. package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js.map → minimize-2-CGfBKD_V.js.map} +1 -1
  219. package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js → package-nzWY6ilt.js} +2 -2
  220. package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js.map → package-nzWY6ilt.js.map} +1 -1
  221. package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js → plug-CiLce49C.js} +2 -2
  222. package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js.map → plug-CiLce49C.js.map} +1 -1
  223. package/ccw/frontend/dist/assets/{power-DmIojFl-.js → power-CFLmB-U9.js} +2 -2
  224. package/ccw/frontend/dist/assets/{power-DmIojFl-.js.map → power-CFLmB-U9.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{save-BFa03OnG.js → save-DuO6OF0C.js} +2 -2
  226. package/ccw/frontend/dist/assets/{save-BFa03OnG.js.map → save-DuO6OF0C.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{send-Vet3sN4J.js → send-CZk9p0mM.js} +2 -2
  228. package/ccw/frontend/dist/assets/{send-Vet3sN4J.js.map → send-CZk9p0mM.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js → square-check-big-BY_1YQQg.js} +2 -2
  230. package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js.map → square-check-big-BY_1YQQg.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js → square-pen-CnZgm6g-.js} +2 -2
  232. package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js.map → square-pen-CnZgm6g-.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{star-BCQHcnSe.js → star-Cn1F0qy7.js} +2 -2
  234. package/ccw/frontend/dist/assets/{star-BCQHcnSe.js.map → star-Cn1F0qy7.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{style-CJsrp48L.js → style-Dxs1iXCV.js} +2 -2
  236. package/ccw/frontend/dist/assets/{style-CJsrp48L.js.map → style-Dxs1iXCV.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{target-CBzCJCB1.js → target-Bz1fLRKH.js} +2 -2
  238. package/ccw/frontend/dist/assets/{target-CBzCJCB1.js.map → target-Bz1fLRKH.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js → test-tube-C6qCYlDr.js} +2 -2
  240. package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js.map → test-tube-C6qCYlDr.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js → upload-C71kd4Qs.js} +2 -2
  242. package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js.map → upload-C71kd4Qs.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js → useApiSettings-CqP2BAJ7.js} +2 -2
  244. package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js.map → useApiSettings-CqP2BAJ7.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js → useCli-PCoPoVeM.js} +2 -2
  246. package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js.map → useCli-PCoPoVeM.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js → useCommands-3OfPQPw4.js} +2 -2
  248. package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js.map → useCommands-3OfPQPw4.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js → useDebounce-bXiFhQx9.js} +2 -2
  250. package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js.map → useDebounce-bXiFhQx9.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js → useFileExplorer-DEyUm46_.js} +2 -2
  252. package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js.map → useFileExplorer-DEyUm46_.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js → useLocale-sXTrdxcJ.js} +2 -2
  254. package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js.map → useLocale-sXTrdxcJ.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js → useSkills-D0W0kXYm.js} +3 -3
  256. package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js.map → useSkills-D0W0kXYm.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js → useSystemSettings-DZ-8lZsG.js} +2 -2
  258. package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js.map → useSystemSettings-DZ-8lZsG.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js → wand-sparkles-83GmAYuw.js} +2 -2
  260. package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js.map → wand-sparkles-83GmAYuw.js.map} +1 -1
  261. package/ccw/frontend/dist/index.html +1 -1
  262. package/package.json +1 -1
  263. package/.claude/skills/team-arch-opt/role-specs/analyzer.md +0 -80
  264. package/.claude/skills/team-arch-opt/role-specs/designer.md +0 -118
  265. package/.claude/skills/team-arch-opt/role-specs/refactorer.md +0 -106
  266. package/.claude/skills/team-arch-opt/role-specs/reviewer.md +0 -116
  267. package/.claude/skills/team-arch-opt/role-specs/validator.md +0 -117
  268. package/.claude/skills/team-brainstorm/role-specs/challenger.md +0 -63
  269. package/.claude/skills/team-brainstorm/role-specs/evaluator.md +0 -58
  270. package/.claude/skills/team-brainstorm/role-specs/ideator.md +0 -71
  271. package/.claude/skills/team-brainstorm/role-specs/synthesizer.md +0 -59
  272. package/.claude/skills/team-frontend/role-specs/analyst.md +0 -91
  273. package/.claude/skills/team-frontend/role-specs/architect.md +0 -85
  274. package/.claude/skills/team-frontend/role-specs/developer.md +0 -92
  275. package/.claude/skills/team-frontend/role-specs/qa.md +0 -78
  276. package/.claude/skills/team-issue/role-specs/explorer.md +0 -95
  277. package/.claude/skills/team-issue/role-specs/implementer.md +0 -89
  278. package/.claude/skills/team-issue/role-specs/integrator.md +0 -86
  279. package/.claude/skills/team-issue/role-specs/planner.md +0 -83
  280. package/.claude/skills/team-issue/role-specs/reviewer.md +0 -89
  281. package/.claude/skills/team-iterdev/role-specs/architect.md +0 -64
  282. package/.claude/skills/team-iterdev/role-specs/developer.md +0 -73
  283. package/.claude/skills/team-iterdev/role-specs/reviewer.md +0 -65
  284. package/.claude/skills/team-iterdev/role-specs/tester.md +0 -87
  285. package/.claude/skills/team-perf-opt/role-specs/benchmarker.md +0 -110
  286. package/.claude/skills/team-perf-opt/role-specs/optimizer.md +0 -102
  287. package/.claude/skills/team-perf-opt/role-specs/profiler.md +0 -73
  288. package/.claude/skills/team-perf-opt/role-specs/reviewer.md +0 -91
  289. package/.claude/skills/team-perf-opt/role-specs/strategist.md +0 -114
  290. package/.claude/skills/team-planex/role-specs/executor.md +0 -90
  291. package/.claude/skills/team-planex/role-specs/planner.md +0 -110
  292. package/.claude/skills/team-quality-assurance/role-specs/analyst.md +0 -79
  293. package/.claude/skills/team-quality-assurance/role-specs/executor.md +0 -64
  294. package/.claude/skills/team-quality-assurance/role-specs/generator.md +0 -67
  295. package/.claude/skills/team-quality-assurance/role-specs/scout.md +0 -66
  296. package/.claude/skills/team-quality-assurance/role-specs/strategist.md +0 -70
  297. package/.claude/skills/team-review/role-specs/fixer.md +0 -75
  298. package/.claude/skills/team-review/role-specs/reviewer.md +0 -66
  299. package/.claude/skills/team-review/role-specs/scanner.md +0 -70
  300. package/.claude/skills/team-roadmap-dev/role-specs/executor.md +0 -71
  301. package/.claude/skills/team-roadmap-dev/role-specs/planner.md +0 -77
  302. package/.claude/skills/team-roadmap-dev/role-specs/verifier.md +0 -73
  303. package/.claude/skills/team-tech-debt/role-specs/assessor.md +0 -70
  304. package/.claude/skills/team-tech-debt/role-specs/executor.md +0 -80
  305. package/.claude/skills/team-tech-debt/role-specs/planner.md +0 -71
  306. package/.claude/skills/team-tech-debt/role-specs/scanner.md +0 -85
  307. package/.claude/skills/team-tech-debt/role-specs/validator.md +0 -83
  308. package/.claude/skills/team-testing/role-specs/analyst.md +0 -94
  309. package/.claude/skills/team-testing/role-specs/executor.md +0 -97
  310. package/.claude/skills/team-testing/role-specs/generator.md +0 -96
  311. package/.claude/skills/team-testing/role-specs/strategist.md +0 -82
  312. package/.claude/skills/team-uidesign/role-specs/designer.md +0 -72
  313. package/.claude/skills/team-uidesign/role-specs/implementer.md +0 -74
  314. package/.claude/skills/team-uidesign/role-specs/researcher.md +0 -84
  315. package/.claude/skills/team-uidesign/role-specs/reviewer.md +0 -70
  316. package/.claude/skills/team-ux-improve/role-specs/designer.md +0 -191
  317. package/.claude/skills/team-ux-improve/role-specs/diagnoser.md +0 -110
  318. package/.claude/skills/team-ux-improve/role-specs/explorer.md +0 -109
  319. package/.claude/skills/team-ux-improve/role-specs/implementer.md +0 -164
  320. package/.claude/skills/team-ux-improve/role-specs/scanner.md +0 -117
  321. package/.claude/skills/team-ux-improve/role-specs/tester.md +0 -163
  322. package/.codex/skills/analyze-with-file/EXECUTE.md +0 -716
  323. package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js +0 -2
  324. package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js.map +0 -1
@@ -1,110 +0,0 @@
1
- ---
2
- prefix: DIAG
3
- inner_loop: false
4
- message_types:
5
- success: diag_complete
6
- error: error
7
- ---
8
-
9
- # State Diagnoser
10
-
11
- Diagnose root causes of UI issues: state management problems, event binding failures, async handling errors.
12
-
13
- ## Phase 2: Context & Complexity Assessment
14
-
15
- 1. Load scan report from `<session>/artifacts/scan-report.md`
16
- 2. Load scanner state via `team_msg(operation="get_state", session_id=<session-id>, role="scanner")`
17
-
18
- ### Wisdom Input
19
-
20
- 1. Read `<session>/wisdom/patterns/ui-feedback.md` and `<session>/wisdom/patterns/state-management.md` if available
21
- 2. Use patterns to identify root causes of UI interaction issues
22
- 3. Reference `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` for common causes
23
-
24
- 3. Assess issue complexity:
25
-
26
- | Complexity | Criteria | Strategy |
27
- |------------|----------|----------|
28
- | High | 5+ issues, cross-component state | CLI delegation |
29
- | Medium | 2-4 issues, single component | CLI for analysis |
30
- | Low | 1 issue, simple pattern | Inline analysis |
31
-
32
- ### Complex Analysis (use CLI)
33
-
34
- For complex multi-file state management issues:
35
-
36
- ```
37
- Bash(`ccw cli -p "PURPOSE: Analyze state management patterns and identify root causes
38
- CONTEXT: @<issue-files>
39
- EXPECTED: Root cause analysis with fix recommendations
40
- CONSTRAINTS: Focus on reactive update patterns" --tool gemini --mode analysis`)
41
- ```
42
-
43
- ## Phase 3: Root Cause Analysis
44
-
45
- For each issue from scan report:
46
-
47
- ### State Management Diagnosis
48
-
49
- | Pattern | Root Cause | Fix Strategy |
50
- |---------|------------|--------------|
51
- | Array.splice/push | Direct mutation, no reactive trigger | Use filter/map/spread for new array |
52
- | Object property change | Direct mutation | Use spread operator or reactive API |
53
- | Missing useState/ref | No state tracking | Add state variable |
54
- | Stale closure | Captured old state value | Use functional setState or ref.current |
55
-
56
- ### Event Binding Diagnosis
57
-
58
- | Pattern | Root Cause | Fix Strategy |
59
- |---------|------------|--------------|
60
- | onClick without handler | Missing event binding | Add event handler function |
61
- | Async without await | Unhandled promise | Add async/await or .then() |
62
- | No error catching | Uncaught exceptions | Wrap in try/catch |
63
- | Event propagation issue | stopPropagation missing | Add event.stopPropagation() |
64
-
65
- ### Async Handling Diagnosis
66
-
67
- | Pattern | Root Cause | Fix Strategy |
68
- |---------|------------|--------------|
69
- | No loading state | Missing async state tracking | Add isLoading state |
70
- | No error handling | Missing catch block | Add try/catch with error state |
71
- | Race condition | Multiple concurrent requests | Add request cancellation or debounce |
72
-
73
- ## Phase 4: Diagnosis Report
74
-
75
- 1. Generate root cause analysis for each issue:
76
-
77
- ```markdown
78
- # Diagnosis Report
79
-
80
- ## Issue #1: Upload form no loading state
81
- - **File**: src/components/Upload.tsx:45
82
- - **Root Cause**: Form submit handler is async but no loading state variable exists
83
- - **Pattern Type**: Missing async state tracking
84
- - **Fix Recommendation**:
85
- - Add `const [isLoading, setIsLoading] = useState(false)` (React)
86
- - Add `const isLoading = ref(false)` (Vue)
87
- - Wrap async call in try/finally with setIsLoading(true/false)
88
- - Disable button when isLoading is true
89
- ```
90
-
91
- 2. Write report to `<session>/artifacts/diagnosis.md`
92
-
93
- ### Wisdom Contribution
94
-
95
- If new root cause patterns discovered:
96
- 1. Write diagnosis patterns to `<session>/wisdom/contributions/diagnoser-patterns-<timestamp>.md`
97
- 2. Format: Symptom, root cause, detection method, fix approach
98
-
99
- 3. Share state via team_msg:
100
- ```
101
- team_msg(operation="log", session_id=<session-id>, from="diagnoser",
102
- type="state_update", data={
103
- diagnosed_issues: <count>,
104
- pattern_types: {
105
- state_management: <count>,
106
- event_binding: <count>,
107
- async_handling: <count>
108
- }
109
- })
110
- ```
@@ -1,109 +0,0 @@
1
- ---
2
- prefix: EXPLORE
3
- inner_loop: false
4
- message_types:
5
- success: explore_complete
6
- error: error
7
- ---
8
-
9
- # Codebase Explorer
10
-
11
- Explore codebase for UI component patterns, state management conventions, and framework-specific patterns. Callable by coordinator only.
12
-
13
- ## Phase 2: Exploration Scope
14
-
15
- 1. Parse exploration request from task description
16
- 2. Determine file patterns based on framework:
17
-
18
- ### Wisdom Input
19
-
20
- 1. Read `<session>/wisdom/patterns/ui-feedback.md` and `<session>/wisdom/patterns/state-management.md` if available
21
- 2. Use known patterns as reference when exploring codebase for component structures
22
- 3. Check `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` to identify problematic patterns during exploration
23
-
24
- | Framework | Patterns |
25
- |-----------|----------|
26
- | React | `**/*.tsx`, `**/*.jsx`, `**/use*.ts`, `**/store*.ts` |
27
- | Vue | `**/*.vue`, `**/composables/*.ts`, `**/stores/*.ts` |
28
-
29
- 3. Check exploration cache: `<session>/explorations/cache-index.json`
30
- - If cache hit and fresh -> return cached results
31
- - If cache miss or stale -> proceed to Phase 3
32
-
33
- ## Phase 3: Codebase Exploration
34
-
35
- Use ACE search for semantic queries:
36
-
37
- ```
38
- mcp__ace-tool__search_context(
39
- project_root_path="<project-path>",
40
- query="<exploration-query>"
41
- )
42
- ```
43
-
44
- Exploration dimensions:
45
-
46
- | Dimension | Query | Purpose |
47
- |-----------|-------|---------|
48
- | Component patterns | "UI components with user interactions" | Find interactive components |
49
- | State management | "State management patterns useState ref reactive" | Identify state conventions |
50
- | Event handling | "Event handlers onClick onChange onSubmit" | Map event patterns |
51
- | Error handling | "Error handling try catch error state" | Find error patterns |
52
- | Feedback mechanisms | "Loading state spinner progress indicator" | Find existing feedback |
53
-
54
- For each dimension, collect:
55
- - File paths
56
- - Pattern examples
57
- - Convention notes
58
-
59
- ## Phase 4: Exploration Summary
60
-
61
- 1. Generate pattern summary:
62
-
63
- ```markdown
64
- # Exploration Summary
65
-
66
- ## Framework: React/Vue
67
-
68
- ## Component Patterns
69
- - Button components use <pattern>
70
- - Form components use <pattern>
71
-
72
- ## State Management Conventions
73
- - Global state: Zustand/Pinia
74
- - Local state: useState/ref
75
- - Async state: custom hooks/composables
76
-
77
- ## Event Handling Patterns
78
- - Form submit: <pattern>
79
- - Button click: <pattern>
80
-
81
- ## Existing Feedback Mechanisms
82
- - Loading: <pattern>
83
- - Error: <pattern>
84
- - Success: <pattern>
85
- ```
86
-
87
- 2. Cache results to `<session>/explorations/cache-index.json`
88
- 3. Write summary to `<session>/explorations/exploration-summary.md`
89
-
90
- ### Wisdom Contribution
91
-
92
- If new component patterns or framework conventions discovered:
93
- 1. Write pattern summaries to `<session>/wisdom/contributions/explorer-patterns-<timestamp>.md`
94
- 2. Format:
95
- - Pattern Name: Descriptive name
96
- - Framework: React/Vue/etc.
97
- - Use Case: When to apply this pattern
98
- - Code Example: Representative snippet
99
- - Adoption: How widely used in codebase
100
-
101
- 4. Share state via team_msg:
102
- ```
103
- team_msg(operation="log", session_id=<session-id>, from="explorer",
104
- type="state_update", data={
105
- framework: <framework>,
106
- components_found: <count>,
107
- patterns_identified: [<pattern-list>]
108
- })
109
- ```
@@ -1,164 +0,0 @@
1
- ---
2
- prefix: IMPL
3
- inner_loop: true
4
- message_types:
5
- success: impl_complete
6
- error: error
7
- ---
8
-
9
- # Code Implementer
10
-
11
- Generate executable fix code with proper state management, event handling, and UI feedback bindings.
12
-
13
- ## Phase 2: Task & Design Loading
14
-
15
- 1. Extract session path from task description
16
- 2. Read design guide: `<session>/artifacts/design-guide.md`
17
- 3. Extract implementation tasks from design guide
18
- 4. **Wisdom Input**:
19
- - Read `<session>/wisdom/patterns/state-management.md` for state handling patterns
20
- - Read `<session>/wisdom/patterns/ui-feedback.md` for UI feedback implementation patterns
21
- - Read `<session>/wisdom/principles/general-ux.md` for implementation principles
22
- - Load framework-specific conventions if available
23
- - Apply these patterns and principles when generating code to ensure consistency and quality
24
- 5. **For inner loop**: Load context_accumulator from prior IMPL tasks
25
-
26
- ### Context Accumulator (Inner Loop)
27
-
28
- ```
29
- context_accumulator = {
30
- completed_fixes: [<fix-1>, <fix-2>],
31
- modified_files: [<file-1>, <file-2>],
32
- patterns_applied: [<pattern-1>]
33
- }
34
- ```
35
-
36
- ## Phase 3: Code Implementation
37
-
38
- Implementation backend selection:
39
-
40
- | Backend | Condition | Method |
41
- |---------|-----------|--------|
42
- | CLI | Complex multi-file changes | `ccw cli --tool gemini --mode write` |
43
- | Direct | Simple single-file changes | Inline Edit/Write |
44
-
45
- ### CLI Implementation (Complex)
46
-
47
- ```
48
- Bash(`ccw cli -p "PURPOSE: Implement loading state and error handling for upload form
49
- TASK:
50
- - Add useState for isLoading and error
51
- - Wrap async call in try/catch/finally
52
- - Update UI bindings for button and error display
53
- CONTEXT: @src/components/Upload.tsx
54
- EXPECTED: Modified Upload.tsx with complete implementation
55
- CONSTRAINTS: Maintain existing code style" --tool gemini --mode write`)
56
- ```
57
-
58
- ### Direct Implementation (Simple)
59
-
60
- For simple state variable additions or UI binding changes:
61
-
62
- ```
63
- Edit({
64
- file_path: "src/components/Upload.tsx",
65
- old_string: "const handleUpload = async () => {",
66
- new_string: "const [isLoading, setIsLoading] = useState(false);\nconst [error, setError] = useState<string | null>(null);\n\nconst handleUpload = async () => {\n setIsLoading(true);\n setError(null);\n try {"
67
- })
68
- ```
69
-
70
- ### Implementation Steps
71
-
72
- For each fix in design guide:
73
- 1. Read target file
74
- 2. Determine complexity (simple vs complex)
75
- 3. Apply fix using appropriate backend
76
- 4. Verify syntax (no compilation errors)
77
- 5. Append to context_accumulator
78
-
79
- ## Phase 4: Self-Validation
80
-
81
- | Check | Method | Pass Criteria |
82
- |-------|--------|---------------|
83
- | Syntax | IDE diagnostics or tsc --noEmit | No errors |
84
- | File existence | Verify planned files exist | All present |
85
- | Acceptance criteria | Match against design guide | All met |
86
-
87
- Validation steps:
88
- 1. Run syntax check on modified files
89
- 2. Verify all files from design guide exist
90
- 3. Check acceptance criteria from design guide
91
- 4. If validation fails -> attempt auto-fix (max 2 attempts)
92
-
93
- ### Context Accumulator Update
94
-
95
- Append to context_accumulator:
96
- ```
97
- {
98
- completed_fixes: [...prev, <current-fix>],
99
- modified_files: [...prev, <current-files>],
100
- patterns_applied: [...prev, <current-patterns>]
101
- }
102
- ```
103
-
104
- Write summary to `<session>/artifacts/fixes/README.md`:
105
- ```markdown
106
- # Implementation Summary
107
-
108
- ## Completed Fixes
109
- - Issue #1: Upload form loading state - DONE
110
- - Issue #2: Error handling - DONE
111
-
112
- ## Modified Files
113
- - src/components/Upload.tsx
114
- - src/components/Form.tsx
115
-
116
- ## Patterns Applied
117
- - React useState for loading/error states
118
- - try/catch/finally for async handling
119
- - Conditional rendering for error messages
120
- ```
121
-
122
- Share state via team_msg:
123
- ```
124
- team_msg(operation="log", session_id=<session-id>, from="implementer",
125
- type="state_update", data={
126
- completed_fixes: <count>,
127
- modified_files: [<file-list>],
128
- validation_passed: true
129
- })
130
- ```
131
-
132
- ### Wisdom Contribution
133
-
134
- If reusable code patterns or snippets created:
135
- 1. Write code snippets to `<session>/wisdom/contributions/implementer-snippets-<timestamp>.md`
136
- 2. Format: Use case, code snippet with comments, framework compatibility notes
137
-
138
- Example contribution format:
139
- ```markdown
140
- # Implementer Snippets - <timestamp>
141
-
142
- ## Loading State Pattern (React)
143
-
144
- ### Use Case
145
- Async operations requiring loading indicator
146
-
147
- ### Code Snippet
148
- ```tsx
149
- const [isLoading, setIsLoading] = useState(false);
150
-
151
- const handleAsyncAction = async () => {
152
- setIsLoading(true);
153
- try {
154
- await performAction();
155
- } finally {
156
- setIsLoading(false);
157
- }
158
- };
159
- ```
160
-
161
- ### Framework Compatibility
162
- - React 16.8+ (hooks)
163
- - Next.js compatible
164
- ```
@@ -1,117 +0,0 @@
1
- ---
2
- prefix: SCAN
3
- inner_loop: false
4
- message_types:
5
- success: scan_complete
6
- error: error
7
- ---
8
-
9
- # UI Scanner
10
-
11
- Scan UI components to identify interaction issues: unresponsive buttons, missing feedback mechanisms, state not refreshing.
12
-
13
- ## Phase 2: Context Loading
14
-
15
- | Input | Source | Required |
16
- |-------|--------|----------|
17
- | Project path | Task description CONTEXT | Yes |
18
- | Framework | Task description CONTEXT | Yes |
19
- | Scan scope | Task description CONSTRAINTS | Yes |
20
-
21
- 1. Extract session path and project path from task description
22
- 2. Detect framework from project structure:
23
-
24
- | Signal | Framework |
25
- |--------|-----------|
26
- | package.json has "react" | React |
27
- | package.json has "vue" | Vue |
28
- | *.tsx files present | React |
29
- | *.vue files present | Vue |
30
-
31
- 3. Build file pattern list for scanning:
32
- - React: `**/*.tsx`, `**/*.jsx`, `**/use*.ts`
33
- - Vue: `**/*.vue`, `**/composables/*.ts`
34
-
35
- ### Wisdom Input
36
-
37
- 1. Read `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` if available
38
- 2. Use anti-patterns to identify known UX issues during scanning
39
- 3. Check `<session>/wisdom/patterns/ui-feedback.md` for expected feedback patterns
40
-
41
- ### Complex Analysis (use CLI)
42
-
43
- For large projects with many components:
44
-
45
- ```
46
- Bash(`ccw cli -p "PURPOSE: Discover all UI components with user interactions
47
- CONTEXT: @<project-path>/**/*.tsx @<project-path>/**/*.vue
48
- EXPECTED: Component list with interaction types (click, submit, input, select)
49
- CONSTRAINTS: Focus on interactive components only" --tool gemini --mode analysis`)
50
- ```
51
-
52
- ## Phase 3: Component Scanning
53
-
54
- Scan strategy:
55
-
56
- | Category | Detection Pattern | Severity |
57
- |----------|-------------------|----------|
58
- | Unresponsive actions | onClick/\@click without async handling or error catching | High |
59
- | Missing loading state | Form submit without isLoading/loading ref | High |
60
- | State not refreshing | Array.splice/push without reactive reassignment | High |
61
- | Missing error feedback | try/catch without error state or user notification | Medium |
62
- | Missing success feedback | API call without success confirmation | Medium |
63
- | No empty state | Data list without empty state placeholder | Low |
64
- | Input without validation | Form input without validation rules | Low |
65
- | Missing file selector | Text input for file/folder path without picker | Medium |
66
-
67
- For each component file:
68
- 1. Read file content
69
- 2. Scan for interaction patterns using Grep
70
- 3. Check for feedback mechanisms (loading, error, success states)
71
- 4. Check state update patterns (mutation vs reactive)
72
- 5. Record issues with file:line references
73
-
74
- ## Phase 4: Issue Report Generation
75
-
76
- 1. Classify issues by severity (High/Medium/Low)
77
- 2. Group by category (unresponsive, missing feedback, state issues, input UX)
78
- 3. Generate structured report:
79
-
80
- ```markdown
81
- # UI Scan Report
82
-
83
- ## Summary
84
- - Total issues: <count>
85
- - High: <count> | Medium: <count> | Low: <count>
86
-
87
- ## Issues
88
-
89
- ### High Severity
90
- | # | File:Line | Component | Issue | Category |
91
- |---|-----------|-----------|-------|----------|
92
- | 1 | src/components/Upload.tsx:45 | UploadForm | No loading state on submit | Missing feedback |
93
-
94
- ### Medium Severity
95
- ...
96
-
97
- ### Low Severity
98
- ...
99
- ```
100
-
101
- 4. Write report to `<session>/artifacts/scan-report.md`
102
- 5. Share state via team_msg:
103
- ```
104
- team_msg(operation="log", session_id=<session-id>, from="scanner",
105
- type="state_update", data={
106
- total_issues: <count>,
107
- high: <count>, medium: <count>, low: <count>,
108
- categories: [<category-list>],
109
- scanned_files: <count>
110
- })
111
- ```
112
-
113
- ### Wisdom Contribution
114
-
115
- If novel UX issues discovered that aren't in anti-patterns:
116
- 1. Write findings to `<session>/wisdom/contributions/scanner-issues-<timestamp>.md`
117
- 2. Format: Issue description, detection criteria, affected components
@@ -1,163 +0,0 @@
1
- ---
2
- prefix: TEST
3
- inner_loop: false
4
- message_types:
5
- success: test_complete
6
- error: error
7
- fix: fix_required
8
- ---
9
-
10
- # Test Engineer
11
-
12
- Generate and run tests to verify fixes (loading states, error handling, state updates).
13
-
14
- ## Phase 2: Environment Detection
15
-
16
- 1. Detect test framework from project files:
17
-
18
- | Signal | Framework |
19
- |--------|-----------|
20
- | package.json has "jest" | Jest |
21
- | package.json has "vitest" | Vitest |
22
- | package.json has "@testing-library/react" | React Testing Library |
23
- | package.json has "@vue/test-utils" | Vue Test Utils |
24
-
25
- 2. Get changed files from implementer state:
26
- ```
27
- team_msg(operation="get_state", session_id=<session-id>, role="implementer")
28
- ```
29
-
30
- 3. Load test strategy from design guide
31
-
32
- ### Wisdom Input
33
-
34
- 1. Read `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` for common issues to test
35
- 2. Read `<session>/wisdom/patterns/ui-feedback.md` for expected feedback behaviors to verify
36
- 3. Use wisdom to design comprehensive test cases covering known edge cases
37
-
38
- ## Phase 3: Test Generation & Execution
39
-
40
- ### Test Generation
41
-
42
- For each modified file, generate test cases:
43
-
44
- **React Example**:
45
- ```typescript
46
- import { render, screen, fireEvent, waitFor } from '@testing-library/react';
47
- import Upload from '../Upload';
48
-
49
- describe('Upload Component', () => {
50
- it('shows loading state during upload', async () => {
51
- global.fetch = vi.fn(() => Promise.resolve({ ok: true }));
52
-
53
- render(<Upload />);
54
- const uploadButton = screen.getByRole('button', { name: /upload/i });
55
-
56
- fireEvent.click(uploadButton);
57
-
58
- // Check loading state
59
- await waitFor(() => {
60
- expect(screen.getByText(/uploading.../i)).toBeInTheDocument();
61
- expect(uploadButton).toBeDisabled();
62
- });
63
-
64
- // Check normal state restored
65
- await waitFor(() => {
66
- expect(uploadButton).not.toBeDisabled();
67
- });
68
- });
69
-
70
- it('displays error message on failure', async () => {
71
- global.fetch = vi.fn(() => Promise.reject(new Error('Upload failed')));
72
-
73
- render(<Upload />);
74
- fireEvent.click(screen.getByRole('button', { name: /upload/i }));
75
-
76
- await waitFor(() => {
77
- expect(screen.getByText(/upload failed/i)).toBeInTheDocument();
78
- });
79
- });
80
- });
81
- ```
82
-
83
- ### Test Execution
84
-
85
- Iterative test-fix cycle (max 5 iterations):
86
-
87
- 1. Run tests: `npm test` or `npm run test:unit`
88
- 2. Parse results -> calculate pass rate
89
- 3. If pass rate >= 95% -> exit (success)
90
- 4. If pass rate < 95% and iterations < 5:
91
- - Analyze failures
92
- - Use CLI to generate fixes:
93
- ```
94
- Bash(`ccw cli -p "PURPOSE: Fix test failures
95
- CONTEXT: @<test-file> @<source-file>
96
- EXPECTED: Fixed code that passes tests
97
- CONSTRAINTS: Maintain existing functionality" --tool gemini --mode write`)
98
- ```
99
- - Increment iteration counter
100
- - Loop to step 1
101
- 5. If iterations >= 5 -> send fix_required message
102
-
103
- ## Phase 4: Test Report
104
-
105
- ### Wisdom Contribution
106
-
107
- If new edge cases or test patterns discovered:
108
- 1. Write test findings to `<session>/wisdom/contributions/tester-edge-cases-<timestamp>.md`
109
- 2. Format: Edge case description, test scenario, expected behavior, actual behavior
110
-
111
- Generate test report:
112
-
113
- ```markdown
114
- # Test Report
115
-
116
- ## Summary
117
- - Total tests: <count>
118
- - Passed: <count>
119
- - Failed: <count>
120
- - Pass rate: <percentage>%
121
- - Fix iterations: <count>
122
-
123
- ## Test Results
124
-
125
- ### Passed Tests
126
- - ✅ Upload Component > shows loading state during upload
127
- - ✅ Upload Component > displays error message on failure
128
-
129
- ### Failed Tests
130
- - ❌ Form Component > validates input before submit
131
- - Error: Expected validation message not found
132
-
133
- ## Coverage
134
- - Statements: 85%
135
- - Branches: 78%
136
- - Functions: 90%
137
- - Lines: 84%
138
-
139
- ## Remaining Issues
140
- - Form validation test failing (needs manual review)
141
- ```
142
-
143
- Write report to `<session>/artifacts/test-report.md`
144
-
145
- Share state via team_msg:
146
- ```
147
- team_msg(operation="log", session_id=<session-id>, from="tester",
148
- type="state_update", data={
149
- total_tests: <count>,
150
- passed: <count>,
151
- failed: <count>,
152
- pass_rate: <percentage>,
153
- fix_iterations: <count>
154
- })
155
- ```
156
-
157
- If pass rate < 95%, send fix_required message:
158
- ```
159
- SendMessage({
160
- to: "coordinator",
161
- message: "[tester] Test validation incomplete. Pass rate: <percentage>%. Manual review needed."
162
- })
163
- ```