claude-code-workflow 7.2.10 → 7.2.12
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.
- package/.claude/agents/cli-planning-agent.md +3 -0
- package/.claude/agents/debug-explore-agent.md +1 -0
- package/.claude/agents/tdd-developer.md +1 -0
- package/.claude/agents/team-worker.md +1 -1
- package/.claude/agents/test-action-planning-agent.md +3 -0
- package/.claude/agents/test-context-search-agent.md +1 -0
- package/.claude/agents/test-fix-agent.md +3 -0
- package/.claude/commands/workflow/analyze-with-file.md +108 -54
- package/.claude/commands/workflow-tune.md +811 -0
- package/.claude/skills/review-code/SKILL.md +2 -0
- package/.claude/skills/review-cycle/SKILL.md +4 -0
- package/.claude/skills/skill-simplify/phases/02-optimize.md +4 -0
- package/.claude/skills/spec-generator/phases/05-epics-stories.md +4 -0
- package/.claude/skills/team-arch-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-frontend-debug/roles/analyzer/role.md +3 -2
- package/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md +1 -1
- package/.claude/skills/team-perf-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-quality-assurance/roles/executor/role.md +2 -1
- package/.claude/skills/team-review/roles/reviewer/role.md +2 -1
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +2 -1
- package/.claude/skills/team-testing/roles/executor/role.md +2 -1
- package/.claude/skills/team-testing/roles/generator/role.md +2 -1
- package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +2 -1
- package/.claude/skills/team-ux-improve/specs/team-config.json +6 -6
- package/.claude/skills/workflow-execute/phases/06-review.md +4 -4
- package/.claude/skills/workflow-lite-execute/SKILL.md +106 -14
- package/.claude/skills/workflow-lite-plan/SKILL.md +34 -72
- package/.claude/skills/workflow-lite-test-review/SKILL.md +41 -26
- package/.claude/skills/workflow-plan/phases/05-plan-verify.md +4 -0
- package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +1 -0
- package/.claude/skills/workflow-tdd-plan/phases/05-tdd-task-generation.md +2 -1
- package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +1 -0
- package/.claude/skills/workflow-test-fix/phases/05-test-cycle-execute.md +2 -1
- package/.codex/skills/analyze-with-file/SKILL.md +2 -0
- package/.codex/skills/debug-with-file/SKILL.md +4 -0
- package/.codex/skills/issue-discover/SKILL.md +1 -0
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +3 -0
- package/.codex/skills/team-designer/agents/validation-reporter.md +186 -0
- package/.codex/skills/team-iterdev/agents/gc-controller.md +193 -0
- package/.codex/skills/team-iterdev/agents/task-analyzer.md +206 -0
- package/.codex/skills/team-lifecycle-v4/agents/quality-gate.md +165 -0
- package/.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md +163 -0
- package/.codex/skills/team-lifecycle-v4/agents/supervisor.md +182 -0
- package/.codex/skills/team-uidesign/agents/completion-handler.md +177 -0
- package/.codex/skills/team-uidesign/agents/gc-loop-handler.md +162 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +4 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +2 -0
- package/ccw/dist/commands/spec.d.ts.map +1 -1
- package/ccw/dist/commands/spec.js +9 -4
- package/ccw/dist/commands/spec.js.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.js +3 -1
- package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
- package/ccw/dist/tools/spec-index-builder.d.ts +8 -4
- package/ccw/dist/tools/spec-index-builder.d.ts.map +1 -1
- package/ccw/dist/tools/spec-index-builder.js +8 -4
- package/ccw/dist/tools/spec-index-builder.js.map +1 -1
- package/ccw/dist/tools/spec-init.d.ts +1 -1
- package/ccw/dist/tools/spec-init.d.ts.map +1 -1
- package/ccw/dist/tools/spec-init.js +127 -0
- package/ccw/dist/tools/spec-init.js.map +1 -1
- package/ccw/dist/tools/spec-loader.d.ts.map +1 -1
- package/ccw/dist/tools/spec-loader.js +2 -1
- package/ccw/dist/tools/spec-loader.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js → AlertDialog-BW9jiZ-p.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js.map → AlertDialog-BW9jiZ-p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js → AnalysisPage-ds-w_nVO.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js.map → AnalysisPage-ds-w_nVO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js → ApiSettingsPage-DlCbXxTz.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js.map → ApiSettingsPage-DlCbXxTz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js → CliModeToggle-Dq3nL4fF.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js.map → CliModeToggle-Dq3nL4fF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js → CliSessionSharePage-BNDkEE4u.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js.map → CliSessionSharePage-BNDkEE4u.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js → CliViewerPage-ChM-uNx_.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js.map → CliViewerPage-ChM-uNx_.js.map} +1 -1
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js +2 -0
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js.map +1 -0
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js → Collapsible-CRNbykXN.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js.map → Collapsible-CRNbykXN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js → CommandsManagerPage-C2JWcemF.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js.map → CommandsManagerPage-C2JWcemF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js → DeepWikiPage-CvleOtJy.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js.map → DeepWikiPage-CvleOtJy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js → EndpointsPage-CMOWQG64.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js.map → EndpointsPage-CMOWQG64.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js → ExplorerPage-DaFPRlNo.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js.map → ExplorerPage-DaFPRlNo.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js → FixSessionPage-CC4p04Az.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js.map → FixSessionPage-CC4p04Az.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js → FloatingFileBrowser-DROn1xZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js.map → FloatingFileBrowser-DROn1xZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js → FloatingPanel-CmL_yhDv.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js.map → FloatingPanel-CmL_yhDv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js → GraphExplorerPage-DCV5ybKE.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js.map → GraphExplorerPage-DCV5ybKE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js → HistoryPage-D0fYQZgc.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js.map → HistoryPage-D0fYQZgc.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js → HookManagerPage-D2FuJfsM.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js.map → HookManagerPage-D2FuJfsM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js → InstallationsPage-tjklillZ.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js.map → InstallationsPage-tjklillZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js → IssueHubPage-E4JVrhO1.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js.map → IssueHubPage-E4JVrhO1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js → LiteTasksPage-aJuRoyLt.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js.map → LiteTasksPage-aJuRoyLt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js → McpManagerPage-BJeuWJv1.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js.map → McpManagerPage-BJeuWJv1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js → MemoryPage-BI4FAXhs.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js.map → MemoryPage-BI4FAXhs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js → NotFoundPage-DD2svchp.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js.map → NotFoundPage-DD2svchp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js → OrchestratorPage-FC__7yYa.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js.map → OrchestratorPage-FC__7yYa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js → ProjectOverviewPage-DBB_-FzV.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js.map → ProjectOverviewPage-DBB_-FzV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js → PromptHistoryPage-BwOAvCH8.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js.map → PromptHistoryPage-BwOAvCH8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js → ReviewSessionPage-Dd1-g_gp.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js.map → ReviewSessionPage-Dd1-g_gp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js → RulesManagerPage-B3RGdsKD.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js.map → RulesManagerPage-B3RGdsKD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js → SessionDetailPage-DM-W5R8K.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js.map → SessionDetailPage-DM-W5R8K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js → SessionsPage-BVz1KCc7.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js.map → SessionsPage-BVz1KCc7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js → SettingsPage-ComW7EZS.js} +4 -4
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js.map → SettingsPage-ComW7EZS.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js → SkillsManagerPage-CKom9XwV.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js.map → SkillsManagerPage-CKom9XwV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js → SpecsSettingsPage-DQz7WP2s.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js.map → SpecsSettingsPage-DQz7WP2s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js → Switch-BPMdND9H.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js.map → Switch-BPMdND9H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js → TabsNavigation-qqt70VYL.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js.map → TabsNavigation-qqt70VYL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js → TaskDrawer-BqK_qiHX.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js.map → TaskDrawer-BqK_qiHX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js → TeamPage-u5_i0Rgh.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js.map → TeamPage-u5_i0Rgh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js → TerminalDashboardPage-rUtC9e40.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js.map → TerminalDashboardPage-rUtC9e40.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js → archive-C3u8YNQF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js.map → archive-C3u8YNQF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js → archive-restore-DfQ998g5.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js.map → archive-restore-DfQ998g5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js → arrow-right-BshJM9Po.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js.map → arrow-right-BshJM9Po.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js → bookmark-plus-D03qJyOZ.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js.map → bookmark-plus-D03qJyOZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js → bot-CyzWuwq0.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js.map → bot-CyzWuwq0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js → braces-BPgtyjsG.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js.map → braces-BPgtyjsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js → circle-stop-Dix1AOmw.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js.map → circle-stop-Dix1AOmw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js → cpu-CCQ4Q0Zh.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js.map → cpu-CCQ4Q0Zh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js → ellipsis-vertical-BpTysg-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js.map → ellipsis-vertical-BpTysg-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js → eye-DGY1rAZs.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js.map → eye-DGY1rAZs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js → eye-off-D8t3JfWG.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js.map → eye-off-D8t3JfWG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js → file-json-BAdJb0n8.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js.map → file-json-BAdJb0n8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js → file-text-DrJFiOUB.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js.map → file-text-DrJFiOUB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js → filter-CKqzYbz7.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js.map → filter-CKqzYbz7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js → folder-CV8511y9.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js.map → folder-CV8511y9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js → gauge-XKvmu_uU.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js.map → gauge-XKvmu_uU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js → globe-C56cDUzX.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js.map → globe-C56cDUzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js → grid-3x3-Bya-suFW.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js.map → grid-3x3-Bya-suFW.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js → hard-drive-CmuTZpsB.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js.map → hard-drive-CmuTZpsB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js → hash-CRPT_tJQ.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js.map → hash-CRPT_tJQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js → history-C1pJZQCL.js} +2 -2
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js.map → history-C1pJZQCL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js → index-B6TpijCe.js} +2 -2
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js.map → index-B6TpijCe.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js → index-Bcq-7r6F.js} +2 -2
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js.map → index-Bcq-7r6F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js → index-CI8-rBff.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js.map → index-CI8-rBff.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js → index-Dmt9OiEf.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js.map → index-Dmt9OiEf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js → index-anSMmEF8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js.map → index-anSMmEF8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js → index-dWT2M6Ef.js} +4 -4
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js.map → index-dWT2M6Ef.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js → layout-grid-TSO0BFQE.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js.map → layout-grid-TSO0BFQE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js → lightbulb-Caj6fIQD.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js.map → lightbulb-Caj6fIQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js → link-2-DE9lMxa-.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js.map → link-2-DE9lMxa-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js → link-BZtPgLW0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js.map → link-BZtPgLW0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js → list-DubWyY-U.js} +2 -2
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js.map → list-DubWyY-U.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js → map-pin-DwN_48AF.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js.map → map-pin-DwN_48AF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js → messages-square-bjxvaiM9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js.map → messages-square-bjxvaiM9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js → minimize-2-CGfBKD_V.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js.map → minimize-2-CGfBKD_V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js → package-nzWY6ilt.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js.map → package-nzWY6ilt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js → plug-CiLce49C.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js.map → plug-CiLce49C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js → power-CFLmB-U9.js} +2 -2
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js.map → power-CFLmB-U9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js → save-DuO6OF0C.js} +2 -2
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js.map → save-DuO6OF0C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js → send-CZk9p0mM.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js.map → send-CZk9p0mM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js → square-check-big-BY_1YQQg.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js.map → square-check-big-BY_1YQQg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js → square-pen-CnZgm6g-.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js.map → square-pen-CnZgm6g-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js → star-Cn1F0qy7.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js.map → star-Cn1F0qy7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js → style-Dxs1iXCV.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js.map → style-Dxs1iXCV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js → target-Bz1fLRKH.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js.map → target-Bz1fLRKH.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js → test-tube-C6qCYlDr.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js.map → test-tube-C6qCYlDr.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js → upload-C71kd4Qs.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js.map → upload-C71kd4Qs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js → useApiSettings-CqP2BAJ7.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js.map → useApiSettings-CqP2BAJ7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js → useCli-PCoPoVeM.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js.map → useCli-PCoPoVeM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js → useCommands-3OfPQPw4.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js.map → useCommands-3OfPQPw4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js → useDebounce-bXiFhQx9.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js.map → useDebounce-bXiFhQx9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js → useFileExplorer-DEyUm46_.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js.map → useFileExplorer-DEyUm46_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js → useLocale-sXTrdxcJ.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js.map → useLocale-sXTrdxcJ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js → useSkills-D0W0kXYm.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js.map → useSkills-D0W0kXYm.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js → useSystemSettings-DZ-8lZsG.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js.map → useSystemSettings-DZ-8lZsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js → wand-sparkles-83GmAYuw.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js.map → wand-sparkles-83GmAYuw.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/.claude/commands/ddd/auto.md +0 -359
- package/.claude/commands/ddd/doc-generate.md +0 -222
- package/.claude/commands/ddd/doc-refresh.md +0 -218
- package/.claude/commands/ddd/execute.md +0 -416
- package/.claude/commands/ddd/index-build.md +0 -212
- package/.claude/commands/ddd/plan.md +0 -611
- package/.claude/commands/ddd/scan.md +0 -365
- package/.claude/commands/ddd/sync.md +0 -353
- package/.claude/commands/ddd/update.md +0 -160
- package/.claude/commands/idaw/add.md +0 -287
- package/.claude/commands/idaw/resume.md +0 -442
- package/.claude/commands/idaw/run-coordinate.md +0 -648
- package/.claude/commands/idaw/run.md +0 -539
- package/.claude/commands/idaw/status.md +0 -182
- package/.claude/skills/team-arch-opt/role-specs/analyzer.md +0 -80
- package/.claude/skills/team-arch-opt/role-specs/designer.md +0 -118
- package/.claude/skills/team-arch-opt/role-specs/refactorer.md +0 -106
- package/.claude/skills/team-arch-opt/role-specs/reviewer.md +0 -116
- package/.claude/skills/team-arch-opt/role-specs/validator.md +0 -117
- package/.claude/skills/team-brainstorm/role-specs/challenger.md +0 -63
- package/.claude/skills/team-brainstorm/role-specs/evaluator.md +0 -58
- package/.claude/skills/team-brainstorm/role-specs/ideator.md +0 -71
- package/.claude/skills/team-brainstorm/role-specs/synthesizer.md +0 -59
- package/.claude/skills/team-frontend/role-specs/analyst.md +0 -91
- package/.claude/skills/team-frontend/role-specs/architect.md +0 -85
- package/.claude/skills/team-frontend/role-specs/developer.md +0 -92
- package/.claude/skills/team-frontend/role-specs/qa.md +0 -78
- package/.claude/skills/team-issue/role-specs/explorer.md +0 -95
- package/.claude/skills/team-issue/role-specs/implementer.md +0 -89
- package/.claude/skills/team-issue/role-specs/integrator.md +0 -86
- package/.claude/skills/team-issue/role-specs/planner.md +0 -83
- package/.claude/skills/team-issue/role-specs/reviewer.md +0 -89
- package/.claude/skills/team-iterdev/role-specs/architect.md +0 -64
- package/.claude/skills/team-iterdev/role-specs/developer.md +0 -73
- package/.claude/skills/team-iterdev/role-specs/reviewer.md +0 -65
- package/.claude/skills/team-iterdev/role-specs/tester.md +0 -87
- package/.claude/skills/team-perf-opt/role-specs/benchmarker.md +0 -110
- package/.claude/skills/team-perf-opt/role-specs/optimizer.md +0 -102
- package/.claude/skills/team-perf-opt/role-specs/profiler.md +0 -73
- package/.claude/skills/team-perf-opt/role-specs/reviewer.md +0 -91
- package/.claude/skills/team-perf-opt/role-specs/strategist.md +0 -114
- package/.claude/skills/team-planex/role-specs/executor.md +0 -90
- package/.claude/skills/team-planex/role-specs/planner.md +0 -110
- package/.claude/skills/team-quality-assurance/role-specs/analyst.md +0 -79
- package/.claude/skills/team-quality-assurance/role-specs/executor.md +0 -64
- package/.claude/skills/team-quality-assurance/role-specs/generator.md +0 -67
- package/.claude/skills/team-quality-assurance/role-specs/scout.md +0 -66
- package/.claude/skills/team-quality-assurance/role-specs/strategist.md +0 -70
- package/.claude/skills/team-review/role-specs/fixer.md +0 -75
- package/.claude/skills/team-review/role-specs/reviewer.md +0 -66
- package/.claude/skills/team-review/role-specs/scanner.md +0 -70
- package/.claude/skills/team-roadmap-dev/role-specs/executor.md +0 -71
- package/.claude/skills/team-roadmap-dev/role-specs/planner.md +0 -77
- package/.claude/skills/team-roadmap-dev/role-specs/verifier.md +0 -73
- package/.claude/skills/team-tech-debt/role-specs/assessor.md +0 -70
- package/.claude/skills/team-tech-debt/role-specs/executor.md +0 -80
- package/.claude/skills/team-tech-debt/role-specs/planner.md +0 -71
- package/.claude/skills/team-tech-debt/role-specs/scanner.md +0 -85
- package/.claude/skills/team-tech-debt/role-specs/validator.md +0 -83
- package/.claude/skills/team-testing/role-specs/analyst.md +0 -94
- package/.claude/skills/team-testing/role-specs/executor.md +0 -97
- package/.claude/skills/team-testing/role-specs/generator.md +0 -96
- package/.claude/skills/team-testing/role-specs/strategist.md +0 -82
- package/.claude/skills/team-uidesign/role-specs/designer.md +0 -72
- package/.claude/skills/team-uidesign/role-specs/implementer.md +0 -74
- package/.claude/skills/team-uidesign/role-specs/researcher.md +0 -84
- package/.claude/skills/team-uidesign/role-specs/reviewer.md +0 -70
- package/.claude/skills/team-ux-improve/role-specs/designer.md +0 -191
- package/.claude/skills/team-ux-improve/role-specs/diagnoser.md +0 -110
- package/.claude/skills/team-ux-improve/role-specs/explorer.md +0 -109
- package/.claude/skills/team-ux-improve/role-specs/implementer.md +0 -164
- package/.claude/skills/team-ux-improve/role-specs/scanner.md +0 -117
- package/.claude/skills/team-ux-improve/role-specs/tester.md +0 -163
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js +0 -2
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js.map +0 -1
|
@@ -40,7 +40,7 @@ Produces exploration results, a structured plan (plan.json), independent task fi
|
|
|
40
40
|
|
|
41
41
|
**Output Directory**: `.workflow/.lite-plan/{task-slug}-{YYYY-MM-DD}/`
|
|
42
42
|
|
|
43
|
-
**Agent Usage**:
|
|
43
|
+
**Agent Usage**: All complexities → `cli-lite-planning-agent`
|
|
44
44
|
|
|
45
45
|
**Schema Reference**: `~/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json`
|
|
46
46
|
|
|
@@ -51,7 +51,7 @@ Produces exploration results, a structured plan (plan.json), independent task fi
|
|
|
51
51
|
| LP-0 | Initialize workflowPreferences | autoYes, forceExplore |
|
|
52
52
|
| LP-1 | Complexity assessment → parallel cli-explore-agents (1-4) | exploration-*.json + manifest |
|
|
53
53
|
| LP-2 | Aggregate + dedup clarification_needs → multi-round AskUserQuestion | clarificationContext (in-memory) |
|
|
54
|
-
| LP-3 |
|
|
54
|
+
| LP-3 | cli-lite-planning-agent | plan.json + .task/TASK-*.json |
|
|
55
55
|
| LP-4 | Display plan → AskUserQuestion (Confirm + Execution + Review) | userSelection |
|
|
56
56
|
| LP-5 | Build executionContext → Skill("lite-execute") | handoff (Mode 1) |
|
|
57
57
|
|
|
@@ -85,7 +85,7 @@ bash(`mkdir -p ${sessionFolder} && test -d ${sessionFolder} && echo "SUCCESS: ${
|
|
|
85
85
|
TodoWrite({ todos: [
|
|
86
86
|
{ content: `LP-Phase 1: Exploration [${complexity}] ${selectedAngles.length} angles`, status: "in_progress", activeForm: `Exploring: ${selectedAngles.join(', ')}` },
|
|
87
87
|
{ content: "LP-Phase 2: Clarification", status: "pending" },
|
|
88
|
-
{ content:
|
|
88
|
+
{ content: "LP-Phase 3: Planning [cli-lite-planning-agent]", status: "pending" },
|
|
89
89
|
{ content: "LP-Phase 4: Confirmation", status: "pending" },
|
|
90
90
|
{ content: "LP-Phase 5: Execution", status: "pending" }
|
|
91
91
|
]})
|
|
@@ -154,12 +154,7 @@ function selectAngles(taskDescription, count) {
|
|
|
154
154
|
|
|
155
155
|
const selectedAngles = selectAngles(task_description, complexity === 'High' ? 4 : (complexity === 'Medium' ? 3 : 1))
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
const planningStrategy = (
|
|
159
|
-
complexity === 'Low' && !hasPriorAnalysis && selectedAngles.length <= 1
|
|
160
|
-
) ? 'Direct Claude Planning' : 'cli-lite-planning-agent'
|
|
161
|
-
|
|
162
|
-
console.log(`Exploration Plan: ${complexity} | ${selectedAngles.join(', ')} | ${planningStrategy}`)
|
|
157
|
+
console.log(`Exploration Plan: ${complexity} | ${selectedAngles.join(', ')} | cli-lite-planning-agent`)
|
|
163
158
|
```
|
|
164
159
|
|
|
165
160
|
**Launch Parallel Explorations**:
|
|
@@ -328,56 +323,7 @@ taskFiles.forEach(taskPath => {
|
|
|
328
323
|
})
|
|
329
324
|
```
|
|
330
325
|
|
|
331
|
-
**
|
|
332
|
-
```javascript
|
|
333
|
-
const schema = Bash(`cat ~/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json`)
|
|
334
|
-
|
|
335
|
-
const manifest = file_exists(`${sessionFolder}/explorations-manifest.json`)
|
|
336
|
-
? JSON.parse(Read(`${sessionFolder}/explorations-manifest.json`))
|
|
337
|
-
: { explorations: [] }
|
|
338
|
-
manifest.explorations.forEach(exp => {
|
|
339
|
-
console.log(`\n### Exploration: ${exp.angle}\n${Read(exp.path)}`)
|
|
340
|
-
})
|
|
341
|
-
|
|
342
|
-
// When handoffSpec exists, use it as primary planning input
|
|
343
|
-
// implementation_scope[].acceptance_criteria -> convergence.criteria
|
|
344
|
-
// implementation_scope[].target_files -> files[]
|
|
345
|
-
// implementation_scope[].objective -> task title/description
|
|
346
|
-
if (handoffSpec) {
|
|
347
|
-
console.log(`\n### Handoff Spec from ${handoffSpec.source}`)
|
|
348
|
-
console.log(`Scope items: ${handoffSpec.implementation_scope.length}`)
|
|
349
|
-
handoffSpec.implementation_scope.forEach((item, i) => {
|
|
350
|
-
console.log(` ${i+1}. ${item.objective} [${item.priority}] — Done when: ${item.acceptance_criteria.join('; ')}`)
|
|
351
|
-
})
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
// Generate tasks — MUST incorporate exploration insights OR handoff spec
|
|
355
|
-
// When handoffSpec: map implementation_scope[] → tasks[] (1:1 or group by context)
|
|
356
|
-
// Field names: convergence.criteria (not acceptance), files[].change (not modification_points), test (not verification)
|
|
357
|
-
const tasks = [
|
|
358
|
-
{
|
|
359
|
-
id: "TASK-001", title: "...", description: "...", depends_on: [],
|
|
360
|
-
convergence: { criteria: ["..."] }, // From handoffSpec: item.acceptance_criteria
|
|
361
|
-
files: [{ path: "...", change: "..." }], // From handoffSpec: item.target_files + item.change_summary
|
|
362
|
-
implementation: ["..."], test: "..."
|
|
363
|
-
}
|
|
364
|
-
]
|
|
365
|
-
|
|
366
|
-
const taskDir = `${sessionFolder}/.task`
|
|
367
|
-
Bash(`mkdir -p "${taskDir}"`)
|
|
368
|
-
tasks.forEach(task => Write(`${taskDir}/${task.id}.json`, JSON.stringify(task, null, 2)))
|
|
369
|
-
|
|
370
|
-
const plan = {
|
|
371
|
-
summary: "...", approach: "...",
|
|
372
|
-
task_ids: tasks.map(t => t.id), task_count: tasks.length,
|
|
373
|
-
complexity: "Low", estimated_time: "...", recommended_execution: "Agent",
|
|
374
|
-
_metadata: { timestamp: getUtc8ISOString(), source: "direct-planning", planning_mode: "direct", plan_type: "feature" }
|
|
375
|
-
}
|
|
376
|
-
Write(`${sessionFolder}/plan.json`, JSON.stringify(plan, null, 2))
|
|
377
|
-
// MUST continue to LP-Phase 4 — DO NOT execute code here
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
**Medium/High Complexity** — Invoke cli-lite-planning-agent:
|
|
326
|
+
**Invoke cli-lite-planning-agent**:
|
|
381
327
|
|
|
382
328
|
```javascript
|
|
383
329
|
Task(
|
|
@@ -492,8 +438,8 @@ ${tasks.map((t, i) => `${i+1}. ${t.title} (${t.scope || t.files?.[0]?.path || ''
|
|
|
492
438
|
let userSelection
|
|
493
439
|
|
|
494
440
|
if (workflowPreferences.autoYes) {
|
|
495
|
-
console.log(`[Auto] Allow & Execute | Auto | Skip`)
|
|
496
|
-
userSelection = { confirmation: "Allow", execution_method: "Auto", code_review_tool: "Skip" }
|
|
441
|
+
console.log(`[Auto] Allow & Execute | Auto | Skip + Skip`)
|
|
442
|
+
userSelection = { confirmation: "Allow", execution_method: "Auto", code_review_tool: "Skip", convergence_review_tool: "Skip" }
|
|
497
443
|
} else {
|
|
498
444
|
// "Other" in Execution allows specifying CLI tools from ~/.claude/cli-tools.json
|
|
499
445
|
userSelection = AskUserQuestion({
|
|
@@ -519,14 +465,25 @@ if (workflowPreferences.autoYes) {
|
|
|
519
465
|
]
|
|
520
466
|
},
|
|
521
467
|
{
|
|
522
|
-
question: "Code review after execution?",
|
|
523
|
-
header: "Review",
|
|
468
|
+
question: "Code review after execution? (runs in lite-execute)",
|
|
469
|
+
header: "Code Review",
|
|
524
470
|
multiSelect: false,
|
|
525
471
|
options: [
|
|
526
|
-
{ label: "Gemini Review", description: "Gemini CLI review" },
|
|
527
|
-
{ label: "Codex Review", description: "
|
|
472
|
+
{ label: "Gemini Review", description: "Gemini CLI: git diff quality review" },
|
|
473
|
+
{ label: "Codex Review", description: "Codex CLI: git-aware code review (--mode review)" },
|
|
528
474
|
{ label: "Agent Review", description: "@code-reviewer agent" },
|
|
529
|
-
{ label: "Skip", description: "No review" }
|
|
475
|
+
{ label: "Skip", description: "No code review" }
|
|
476
|
+
]
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
question: "Convergence review in test-review phase?",
|
|
480
|
+
header: "Convergence Review",
|
|
481
|
+
multiSelect: false,
|
|
482
|
+
options: [
|
|
483
|
+
{ label: "Agent", description: "Agent: verify convergence criteria against implementation" },
|
|
484
|
+
{ label: "Gemini", description: "Gemini CLI: convergence verification" },
|
|
485
|
+
{ label: "Codex", description: "Codex CLI: convergence verification" },
|
|
486
|
+
{ label: "Skip", description: "Skip convergence review, run tests only" }
|
|
530
487
|
]
|
|
531
488
|
}
|
|
532
489
|
]
|
|
@@ -534,7 +491,7 @@ if (workflowPreferences.autoYes) {
|
|
|
534
491
|
}
|
|
535
492
|
```
|
|
536
493
|
|
|
537
|
-
// TodoWrite: Phase 4 → completed `[${userSelection.execution_method}
|
|
494
|
+
// TodoWrite: Phase 4 → completed `[${userSelection.execution_method} | CR:${userSelection.code_review_tool} | CVR:${userSelection.convergence_review_tool}]`, Phase 5 → in_progress
|
|
538
495
|
|
|
539
496
|
## 10. LP-Phase 5: Handoff to Execution
|
|
540
497
|
|
|
@@ -561,6 +518,7 @@ executionContext = {
|
|
|
561
518
|
clarificationContext: clarificationContext || null,
|
|
562
519
|
executionMethod: userSelection.execution_method,
|
|
563
520
|
codeReviewTool: userSelection.code_review_tool,
|
|
521
|
+
convergenceReviewTool: userSelection.convergence_review_tool,
|
|
564
522
|
originalUserInput: task_description,
|
|
565
523
|
executorAssignments: executorAssignments, // { taskId: { executor, reason } } — overrides executionMethod
|
|
566
524
|
session: {
|
|
@@ -588,7 +546,7 @@ TodoWrite({ todos: [
|
|
|
588
546
|
{ content: "LP-Phase 1: Exploration", status: "completed" },
|
|
589
547
|
{ content: "LP-Phase 2: Clarification", status: "completed" },
|
|
590
548
|
{ content: "LP-Phase 3: Planning", status: "completed" },
|
|
591
|
-
{ content: `LP-Phase 4: Confirmed [${userSelection.execution_method}]`, status: "completed" },
|
|
549
|
+
{ content: `LP-Phase 4: Confirmed [${userSelection.execution_method} | CR:${userSelection.code_review_tool} | CVR:${userSelection.convergence_review_tool}]`, status: "completed" },
|
|
592
550
|
{ content: `LP-Phase 5: Handoff → lite-execute`, status: "completed" },
|
|
593
551
|
{ content: `LE-Phase 1: Task Loading [${taskCount} tasks]`, status: "in_progress", activeForm: "Loading tasks" }
|
|
594
552
|
]})
|
|
@@ -605,6 +563,7 @@ Skill("lite-execute")
|
|
|
605
563
|
├── explorations-manifest.json # Exploration index
|
|
606
564
|
├── planning-context.md # Evidence paths + understanding
|
|
607
565
|
├── plan.json # Plan overview (task_ids[])
|
|
566
|
+
├── code-review.md # Generated by lite-execute Step 4
|
|
608
567
|
├── test-checklist.json # Generated by lite-test-review
|
|
609
568
|
├── test-review.md # Generated by lite-test-review
|
|
610
569
|
└── .task/
|
|
@@ -618,9 +577,12 @@ Skill("lite-execute")
|
|
|
618
577
|
```
|
|
619
578
|
lite-plan (LP-Phase 1-5)
|
|
620
579
|
└─ Skill("lite-execute") ← executionContext (global)
|
|
621
|
-
├─ Step 1-
|
|
580
|
+
├─ Step 1-3: Task Execution
|
|
581
|
+
├─ Step 4: Code Review (quality/correctness/security)
|
|
622
582
|
└─ Step 5: Skill("lite-test-review") ← testReviewContext (global)
|
|
623
|
-
├─ TR-Phase 1
|
|
583
|
+
├─ TR-Phase 1: Detect test framework
|
|
584
|
+
├─ TR-Phase 2: Convergence verification (plan criteria)
|
|
585
|
+
├─ TR-Phase 3-4: Run tests + Auto-fix
|
|
624
586
|
└─ TR-Phase 5: Report + Sync specs
|
|
625
587
|
```
|
|
626
588
|
|
|
@@ -629,7 +591,7 @@ lite-plan (LP-Phase 1-5)
|
|
|
629
591
|
| Error | Resolution |
|
|
630
592
|
|-------|------------|
|
|
631
593
|
| Exploration agent failure | Skip exploration, continue with task description only |
|
|
632
|
-
| Planning agent failure |
|
|
594
|
+
| Planning agent failure | Retry with reduced complexity or suggest breaking task |
|
|
633
595
|
| Clarification timeout | Use exploration findings as-is |
|
|
634
596
|
| Confirmation timeout | Save context, display resume instructions |
|
|
635
597
|
| Modify loop > 3 times | Suggest breaking task or using /workflow-plan |
|
|
@@ -649,7 +611,7 @@ Auto mode authorizes the complete plan-and-execute workflow with a single confir
|
|
|
649
611
|
- [ ] Parallel exploration agents launched with run_in_background=false
|
|
650
612
|
- [ ] Explorations manifest built from auto-discovered files
|
|
651
613
|
- [ ] Clarification needs aggregated, deduped, and presented in batches of 4
|
|
652
|
-
- [ ] Plan generated via
|
|
614
|
+
- [ ] Plan generated via cli-lite-planning-agent
|
|
653
615
|
- [ ] Plan output as two-layer: plan.json (task_ids[]) + .task/TASK-*.json
|
|
654
616
|
- [ ] User confirmation collected (or auto-approved in auto mode)
|
|
655
617
|
- [ ] executionContext fully built with all artifacts and session references
|
|
@@ -8,6 +8,8 @@ allowed-tools: Skill, Agent, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash
|
|
|
8
8
|
|
|
9
9
|
Test review and fix engine for lite-execute chain or standalone invocation.
|
|
10
10
|
|
|
11
|
+
**Project Context**: Run `ccw spec load --category test` for test framework conventions, coverage targets, and fixtures.
|
|
12
|
+
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
## Usage
|
|
@@ -29,31 +31,31 @@ Test review and fix engine for lite-execute chain or standalone invocation.
|
|
|
29
31
|
|
|
30
32
|
**Input Source**: `testReviewContext` global variable set by lite-execute Step 4
|
|
31
33
|
|
|
32
|
-
**Behavior**: Skip session discovery, inherit
|
|
34
|
+
**Behavior**: Skip session discovery, inherit convergenceReviewTool from execution chain, proceed directly to TR-Phase 1.
|
|
33
35
|
|
|
34
|
-
> **Note**: lite-execute Step
|
|
36
|
+
> **Note**: lite-execute Step 5 is the chain gate. Mode 1 invocation means execution + code review are complete — proceed with convergence verification + tests.
|
|
35
37
|
|
|
36
38
|
### Mode 2: Standalone
|
|
37
39
|
|
|
38
40
|
**Trigger**: User calls with session path or `--last`
|
|
39
41
|
|
|
40
|
-
**Behavior**: Discover session → load plan + tasks → `
|
|
42
|
+
**Behavior**: Discover session → load plan + tasks → `convergenceReviewTool = 'agent'` → proceed to TR-Phase 1.
|
|
41
43
|
|
|
42
44
|
```javascript
|
|
43
|
-
let sessionPath, plan, taskFiles,
|
|
45
|
+
let sessionPath, plan, taskFiles, convergenceReviewTool
|
|
44
46
|
|
|
45
47
|
if (testReviewContext) {
|
|
46
48
|
// Mode 1: from lite-execute chain
|
|
47
49
|
sessionPath = testReviewContext.session.folder
|
|
48
50
|
plan = testReviewContext.planObject
|
|
49
51
|
taskFiles = testReviewContext.taskFiles.map(tf => JSON.parse(Read(tf.path)))
|
|
50
|
-
|
|
52
|
+
convergenceReviewTool = testReviewContext.convergenceReviewTool || 'agent'
|
|
51
53
|
} else {
|
|
52
54
|
// Mode 2: standalone — find last session or use provided path
|
|
53
55
|
sessionPath = resolveSessionPath($ARGUMENTS) // Glob('.workflow/.lite-plan/*/plan.json'), take last
|
|
54
56
|
plan = JSON.parse(Read(`${sessionPath}/plan.json`))
|
|
55
57
|
taskFiles = plan.task_ids.map(id => JSON.parse(Read(`${sessionPath}/.task/${id}.json`)))
|
|
56
|
-
|
|
58
|
+
convergenceReviewTool = 'agent'
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
const skipFix = $ARGUMENTS?.includes('--skip-fix') || false
|
|
@@ -64,7 +66,7 @@ const skipFix = $ARGUMENTS?.includes('--skip-fix') || false
|
|
|
64
66
|
| Phase | Core Action | Output |
|
|
65
67
|
|-------|-------------|--------|
|
|
66
68
|
| TR-Phase 1 | Detect test framework + gather changes | testConfig, changedFiles |
|
|
67
|
-
| TR-Phase 2 |
|
|
69
|
+
| TR-Phase 2 | Convergence verification against plan criteria | reviewResults[] |
|
|
68
70
|
| TR-Phase 3 | Run tests + generate checklist | test-checklist.json |
|
|
69
71
|
| TR-Phase 4 | Auto-fix failures (iterative, max 3 rounds) | Fixed code + updated checklist |
|
|
70
72
|
| TR-Phase 5 | Output report + chain to session:sync | test-review.md |
|
|
@@ -91,32 +93,45 @@ Output: `testConfig = { command, framework, type }` + `changedFiles[]`
|
|
|
91
93
|
|
|
92
94
|
// TodoWrite: Phase 1 → completed, Phase 2 → in_progress
|
|
93
95
|
|
|
94
|
-
## TR-Phase 2:
|
|
96
|
+
## TR-Phase 2: Convergence Verification
|
|
95
97
|
|
|
96
|
-
**Skip if**: `
|
|
98
|
+
**Skip if**: `convergenceReviewTool === 'skip'` — set all tasks to PASS, proceed to Phase 3.
|
|
97
99
|
|
|
98
|
-
|
|
100
|
+
Verify each task's convergence criteria are met in the implementation and identify test gaps.
|
|
99
101
|
|
|
100
|
-
**Agent Review** (
|
|
102
|
+
**Agent Convergence Review** (convergenceReviewTool === 'agent', default):
|
|
101
103
|
|
|
102
104
|
For each task in taskFiles:
|
|
103
|
-
1. Extract `convergence.criteria[]`
|
|
104
|
-
2.
|
|
105
|
-
3. Read matched
|
|
106
|
-
4. Check test coverage:
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
1. Extract `convergence.criteria[]` from the task
|
|
106
|
+
2. Match `task.files[].path` against `changedFiles` to find actually-changed files
|
|
107
|
+
3. Read each matched file, verify each convergence criterion with file:line evidence
|
|
108
|
+
4. Check test coverage gaps:
|
|
109
|
+
- If `task.test.unit` defined but no matching test files in changedFiles → mark as test gap
|
|
110
|
+
- If `task.test.integration` defined but no integration test in changedFiles → mark as test gap
|
|
111
|
+
5. Build `reviewResult = { taskId, title, criteria_met[], criteria_unmet[], test_gaps[], files_reviewed[] }`
|
|
112
|
+
|
|
113
|
+
**Verdict logic**:
|
|
114
|
+
- PASS = all `convergence.criteria` met + no test gaps
|
|
115
|
+
- PARTIAL = some criteria met OR has test gaps
|
|
116
|
+
- FAIL = no criteria met
|
|
109
117
|
|
|
110
|
-
**CLI Review** (
|
|
118
|
+
**CLI Convergence Review** (convergenceReviewTool === 'gemini' or 'codex'):
|
|
111
119
|
|
|
112
120
|
```javascript
|
|
113
|
-
const reviewId = `${sessionId}-
|
|
114
|
-
|
|
115
|
-
|
|
121
|
+
const reviewId = `${sessionId}-convergence`
|
|
122
|
+
const taskCriteria = taskFiles.map(t => `${t.id}: [${(t.convergence?.criteria || []).join(' | ')}]`).join('\n')
|
|
123
|
+
Bash(`ccw cli -p "PURPOSE: Convergence verification — check each task's completion criteria against actual implementation
|
|
124
|
+
TASK: • For each task below, verify every convergence criterion is satisfied in the changed files • Mark each criterion as MET (with file:line evidence) or UNMET (with what's missing) • Identify test coverage gaps (planned tests not found in changes)
|
|
125
|
+
|
|
126
|
+
TASK CRITERIA:
|
|
127
|
+
${taskCriteria}
|
|
128
|
+
|
|
129
|
+
CHANGED FILES: ${changedFiles.join(', ')}
|
|
130
|
+
|
|
116
131
|
MODE: analysis
|
|
117
|
-
CONTEXT: @${sessionPath}/plan.json @${sessionPath}/.task/*.json @**/* | Memory: lite-execute completed
|
|
118
|
-
EXPECTED: Per-task verdict
|
|
119
|
-
CONSTRAINTS: Read-only | Focus on convergence verification" --tool ${
|
|
132
|
+
CONTEXT: @${sessionPath}/plan.json @${sessionPath}/.task/*.json @**/* | Memory: lite-execute completed
|
|
133
|
+
EXPECTED: Per-task verdict (PASS/PARTIAL/FAIL) with per-criterion evidence + test gap list
|
|
134
|
+
CONSTRAINTS: Read-only | Focus strictly on convergence criteria verification, NOT code quality (code review already done in lite-execute)" --tool ${convergenceReviewTool} --mode analysis --id ${reviewId}`, { run_in_background: true })
|
|
120
135
|
// STOP - wait for hook callback, then parse CLI output into reviewResults format
|
|
121
136
|
```
|
|
122
137
|
|
|
@@ -205,13 +220,13 @@ Skill({ skill: "workflow:session:sync", args: `-y "Test review: ${testChecklist.
|
|
|
205
220
|
|
|
206
221
|
## Data Structures
|
|
207
222
|
|
|
208
|
-
### testReviewContext (Input - Mode 1, set by lite-execute)
|
|
223
|
+
### testReviewContext (Input - Mode 1, set by lite-execute Step 5)
|
|
209
224
|
|
|
210
225
|
```javascript
|
|
211
226
|
{
|
|
212
227
|
planObject: { /* same as executionContext.planObject */ },
|
|
213
228
|
taskFiles: [{ id: string, path: string }],
|
|
214
|
-
|
|
229
|
+
convergenceReviewTool: "skip" | "agent" | "gemini" | "codex",
|
|
215
230
|
executionResults: [...],
|
|
216
231
|
originalUserInput: string,
|
|
217
232
|
session: {
|
|
@@ -34,6 +34,10 @@ You **MUST** consider the user input before proceeding (if not empty).
|
|
|
34
34
|
|
|
35
35
|
## Execution
|
|
36
36
|
|
|
37
|
+
### Step 5.0: Load Validation Context
|
|
38
|
+
|
|
39
|
+
Run `ccw spec load --category validation` for verification rules and acceptance criteria.
|
|
40
|
+
|
|
37
41
|
### Step 5.1: Initialize Analysis Context
|
|
38
42
|
|
|
39
43
|
```bash
|
|
@@ -222,6 +222,7 @@ Execute complete context-search-agent workflow for TDD implementation planning:
|
|
|
222
222
|
### Phase 1: Initialization & Pre-Analysis
|
|
223
223
|
1. **Project State Loading**:
|
|
224
224
|
- Run: \`ccw spec load --category execution\` to load project context, tech stack, and guidelines.
|
|
225
|
+
- Run: \`ccw spec load --category test\` to load test framework conventions, coverage targets, and fixtures.
|
|
225
226
|
- If files don't exist, proceed with fresh analysis.
|
|
226
227
|
2. **Detection**: Check for existing context-package (early exit if valid)
|
|
227
228
|
3. **Foundation**: Initialize CodexLens, get project structure, load docs
|
|
@@ -237,13 +237,14 @@ MCP Capabilities: {exa_code, exa_web, code_index}
|
|
|
237
237
|
These files provide project-level constraints that apply to ALL tasks:
|
|
238
238
|
|
|
239
239
|
1. **ccw spec load --category execution** (project specs and tech analysis)
|
|
240
|
+
2. **ccw spec load --category test** (test framework, coverage targets, conventions)
|
|
240
241
|
- Contains: tech_stack, architecture_type, key_components, build_system, test_framework, coding_conventions, naming_rules, forbidden_patterns, quality_gates, custom_constraints
|
|
241
242
|
- Usage: Populate plan.json shared_context, align task tech choices, set correct test commands
|
|
242
243
|
- Apply as HARD CONSTRAINTS on all generated tasks — task implementation steps,
|
|
243
244
|
acceptance criteria, and convergence.verification MUST respect these guidelines
|
|
244
245
|
- If empty/missing: No additional constraints (proceed normally)
|
|
245
246
|
|
|
246
|
-
Loading order: \`ccw spec load --category execution\` → planning-notes.md → context-package.json
|
|
247
|
+
Loading order: \`ccw spec load --category execution\` → \`ccw spec load --category test\` → planning-notes.md → context-package.json
|
|
247
248
|
|
|
248
249
|
## USER CONFIGURATION (from Phase 0)
|
|
249
250
|
Execution Method: ${userConfig.executionMethod} // agent|hybrid|cli
|
|
@@ -346,6 +346,7 @@ Execute complete context-search-agent workflow for implementation planning:
|
|
|
346
346
|
### Phase 1: Initialization & Pre-Analysis
|
|
347
347
|
1. **Project State Loading**:
|
|
348
348
|
- Run: \`ccw spec load --category execution\` to load project context, tech stack, and guidelines.
|
|
349
|
+
- Run: \`ccw spec load --category test\` to load test framework conventions, coverage targets, and fixtures.
|
|
349
350
|
- If files don't exist, proceed with fresh analysis.
|
|
350
351
|
2. **Detection**: Check for existing context-package (early exit if valid)
|
|
351
352
|
3. **Foundation**: Initialize CodexLens, get project structure, load docs
|
|
@@ -249,7 +249,8 @@ Task(
|
|
|
249
249
|
${selectedStrategy} - ${strategyDescription}
|
|
250
250
|
|
|
251
251
|
## PROJECT CONTEXT (MANDATORY)
|
|
252
|
-
1. Run: \`ccw spec load --category execution\` (tech stack,
|
|
252
|
+
1. Run: \`ccw spec load --category execution\` (tech stack, build system, constraints)
|
|
253
|
+
2. Run: \`ccw spec load --category test\` (test framework, coverage targets, conventions)
|
|
253
254
|
|
|
254
255
|
## MANDATORY FIRST STEPS
|
|
255
256
|
1. Read test results: ${session.test_results_path}
|
|
@@ -96,6 +96,7 @@ Step 1: Topic Understanding
|
|
|
96
96
|
Step 2: Exploration (Inline, No Agents)
|
|
97
97
|
├─ Detect codebase → search relevant modules, patterns
|
|
98
98
|
│ ├─ Run `ccw spec load --category exploration` (if spec system available)
|
|
99
|
+
│ ├─ Run `ccw spec load --category debug` (known issues and root-cause notes)
|
|
99
100
|
│ └─ Use Grep, Glob, Read, mcp__ace-tool__search_context
|
|
100
101
|
├─ Multi-perspective analysis (if selected, serial)
|
|
101
102
|
│ ├─ Single: Comprehensive analysis
|
|
@@ -320,6 +321,7 @@ const hasCodebase = Bash(`
|
|
|
320
321
|
if (hasCodebase !== 'none') {
|
|
321
322
|
// 1. Read project metadata (if exists)
|
|
322
323
|
// - Run `ccw spec load --category exploration` (load project specs)
|
|
324
|
+
// - Run `ccw spec load --category debug` (known issues and root-cause notes)
|
|
323
325
|
// - .workflow/specs/*.md (project conventions)
|
|
324
326
|
|
|
325
327
|
// 2. Search codebase for relevant content
|
|
@@ -232,6 +232,7 @@ const agentId = spawn_agent({
|
|
|
232
232
|
### MANDATORY FIRST STEPS (Agent Execute)
|
|
233
233
|
1. **Read role definition**: ~/.codex/agents/{agent-type}.md (MUST read first)
|
|
234
234
|
2. Execute: ccw spec load --category exploration
|
|
235
|
+
3. Execute: ccw spec load --category debug (known issues cross-reference)
|
|
235
236
|
|
|
236
237
|
## TASK CONTEXT
|
|
237
238
|
${taskContext}
|
|
@@ -95,6 +95,7 @@ dimensions.forEach(dimension => {
|
|
|
95
95
|
4. Validate file access: bash(ls -la ${targetFiles.join(' ')})
|
|
96
96
|
5. Execute: cat ~/.ccw/workflows/cli-templates/schemas/review-dimension-results-schema.json (get output schema reference)
|
|
97
97
|
6. Execute: ccw spec load --category "exploration execution" (technology stack and constraints)
|
|
98
|
+
7. Execute: ccw spec load --category review (review standards and checklists)
|
|
98
99
|
|
|
99
100
|
---
|
|
100
101
|
|
|
@@ -217,6 +218,7 @@ dimensions.forEach(dimension => {
|
|
|
217
218
|
5. Read review state: ${reviewStateJsonPath}
|
|
218
219
|
6. Execute: cat ~/.ccw/workflows/cli-templates/schemas/review-dimension-results-schema.json (get output schema reference)
|
|
219
220
|
7. Execute: ccw spec load --category "exploration execution" (technology stack and constraints)
|
|
221
|
+
8. Execute: ccw spec load --category review (review standards and checklists)
|
|
220
222
|
|
|
221
223
|
---
|
|
222
224
|
|
|
@@ -335,6 +337,7 @@ const deepDiveAgentId = spawn_agent({
|
|
|
335
337
|
5. Read test files: bash(find ${projectDir}/tests -name "*${basename(file, '.ts')}*" -type f)
|
|
336
338
|
6. Execute: cat ~/.ccw/workflows/cli-templates/schemas/review-deep-dive-results-schema.json (get output schema reference)
|
|
337
339
|
7. Execute: ccw spec load --category "exploration execution" (technology stack and constraints for remediation)
|
|
340
|
+
8. Execute: ccw spec load --category review (review standards and checklists)
|
|
338
341
|
|
|
339
342
|
---
|
|
340
343
|
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Validation Reporter Agent
|
|
2
|
+
|
|
3
|
+
Validate generated skill package structure and content, reporting results with PASS/WARN/FAIL verdict.
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
|
|
7
|
+
- **Type**: `interactive`
|
|
8
|
+
- **Role File**: `agents/validation-reporter.md`
|
|
9
|
+
- **Responsibility**: Validate generated skill package structure and content, report results
|
|
10
|
+
|
|
11
|
+
## Boundaries
|
|
12
|
+
|
|
13
|
+
### MUST
|
|
14
|
+
|
|
15
|
+
- Load role definition via MANDATORY FIRST STEPS pattern
|
|
16
|
+
- Load the generated skill package from session artifacts
|
|
17
|
+
- Validate all structural integrity checks
|
|
18
|
+
- Produce structured output with clear PASS/WARN/FAIL verdict
|
|
19
|
+
- Include specific file references in findings
|
|
20
|
+
|
|
21
|
+
### MUST NOT
|
|
22
|
+
|
|
23
|
+
- Skip the MANDATORY FIRST STEPS role loading
|
|
24
|
+
- Modify generated skill files
|
|
25
|
+
- Produce unstructured output
|
|
26
|
+
- Report PASS without actually validating all checks
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Toolbox
|
|
31
|
+
|
|
32
|
+
### Available Tools
|
|
33
|
+
|
|
34
|
+
| Tool | Type | Purpose |
|
|
35
|
+
|------|------|---------|
|
|
36
|
+
| `Read` | builtin | Load generated skill files and verify content |
|
|
37
|
+
| `Glob` | builtin | Find files by pattern in skill package |
|
|
38
|
+
| `Grep` | builtin | Search for cross-references and patterns |
|
|
39
|
+
| `Bash` | builtin | Run validation commands, check JSON syntax |
|
|
40
|
+
|
|
41
|
+
### Tool Usage Patterns
|
|
42
|
+
|
|
43
|
+
**Read Pattern**: Load skill package files for validation
|
|
44
|
+
```
|
|
45
|
+
Read("{session_folder}/artifacts/<skill-name>/SKILL.md")
|
|
46
|
+
Read("{session_folder}/artifacts/<skill-name>/team-config.json")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Glob Pattern**: Discover actual role files
|
|
50
|
+
```
|
|
51
|
+
Glob("{session_folder}/artifacts/<skill-name>/roles/*.md")
|
|
52
|
+
Glob("{session_folder}/artifacts/<skill-name>/commands/*.md")
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Grep Pattern**: Check cross-references
|
|
56
|
+
```
|
|
57
|
+
Grep("role:", "{session_folder}/artifacts/<skill-name>/SKILL.md")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Execution
|
|
63
|
+
|
|
64
|
+
### Phase 1: Package Loading
|
|
65
|
+
|
|
66
|
+
**Objective**: Load the generated skill package from session artifacts.
|
|
67
|
+
|
|
68
|
+
**Input**:
|
|
69
|
+
|
|
70
|
+
| Source | Required | Description |
|
|
71
|
+
|--------|----------|-------------|
|
|
72
|
+
| Skill package path | Yes | Path to generated skill directory in artifacts/ |
|
|
73
|
+
| teamConfig.json | Yes | Original configuration used for generation |
|
|
74
|
+
|
|
75
|
+
**Steps**:
|
|
76
|
+
|
|
77
|
+
1. Read SKILL.md from the generated package
|
|
78
|
+
2. Read team-config.json from the generated package
|
|
79
|
+
3. Enumerate all files in the package using Glob
|
|
80
|
+
4. Read teamConfig.json from session folder for comparison
|
|
81
|
+
|
|
82
|
+
**Output**: Loaded skill package contents and file inventory
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Phase 2: Structural Validation
|
|
87
|
+
|
|
88
|
+
**Objective**: Validate structural integrity of the generated skill package.
|
|
89
|
+
|
|
90
|
+
**Steps**:
|
|
91
|
+
|
|
92
|
+
1. **SKILL.md validation**:
|
|
93
|
+
- Verify file exists
|
|
94
|
+
- Verify valid frontmatter (name, description, allowed-tools)
|
|
95
|
+
- Verify Role Registry table is present
|
|
96
|
+
|
|
97
|
+
2. **Role Registry consistency**:
|
|
98
|
+
- Extract roles listed in SKILL.md Role Registry table
|
|
99
|
+
- Glob actual files in roles/ directory
|
|
100
|
+
- Compare: every registry entry has a matching file, every file has a registry entry
|
|
101
|
+
|
|
102
|
+
3. **Role file validation**:
|
|
103
|
+
- Read each role.md in roles/ directory
|
|
104
|
+
- Verify valid frontmatter (prefix, inner_loop, message_types)
|
|
105
|
+
- Check frontmatter values are non-empty
|
|
106
|
+
|
|
107
|
+
4. **Pipeline validation**:
|
|
108
|
+
- Extract pipeline stages from SKILL.md or specs/pipelines.md
|
|
109
|
+
- Verify each stage references an existing role
|
|
110
|
+
|
|
111
|
+
5. **team-config.json validation**:
|
|
112
|
+
- Verify file exists and is valid JSON
|
|
113
|
+
- Verify roles listed match SKILL.md Role Registry
|
|
114
|
+
|
|
115
|
+
6. **Cross-reference validation**:
|
|
116
|
+
- Check coordinator commands/ files exist if referenced in SKILL.md
|
|
117
|
+
- Verify no broken file paths in cross-references
|
|
118
|
+
|
|
119
|
+
7. **Issue classification**:
|
|
120
|
+
|
|
121
|
+
| Finding Severity | Condition | Impact |
|
|
122
|
+
|------------------|-----------|--------|
|
|
123
|
+
| FAIL | Missing required file or broken structure | Package unusable |
|
|
124
|
+
| WARN | Inconsistency between files or missing optional content | Package may have issues |
|
|
125
|
+
| INFO | Style or formatting suggestions | Non-blocking |
|
|
126
|
+
|
|
127
|
+
**Output**: Validation findings with severity classifications
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Phase 3: Verdict Report
|
|
132
|
+
|
|
133
|
+
**Objective**: Report validation results with overall verdict.
|
|
134
|
+
|
|
135
|
+
| Verdict | Condition | Action |
|
|
136
|
+
|---------|-----------|--------|
|
|
137
|
+
| PASS | No FAIL findings, zero or few WARN | Package is ready for use |
|
|
138
|
+
| WARN | No FAIL findings, but multiple WARN issues | Package usable with noted issues |
|
|
139
|
+
| FAIL | One or more FAIL findings | Package requires regeneration or manual fix |
|
|
140
|
+
|
|
141
|
+
**Output**: Verdict with detailed findings
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Structured Output Template
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
## Summary
|
|
149
|
+
- Verdict: PASS | WARN | FAIL
|
|
150
|
+
- Skill: <skill-name>
|
|
151
|
+
- Files checked: <count>
|
|
152
|
+
|
|
153
|
+
## Findings
|
|
154
|
+
- [FAIL] description with file reference (if any)
|
|
155
|
+
- [WARN] description with file reference (if any)
|
|
156
|
+
- [INFO] description with file reference (if any)
|
|
157
|
+
|
|
158
|
+
## Validation Details
|
|
159
|
+
- SKILL.md frontmatter: OK | MISSING | INVALID
|
|
160
|
+
- Role Registry vs roles/: OK | MISMATCH (<details>)
|
|
161
|
+
- Role frontmatter: OK | INVALID (<which files>)
|
|
162
|
+
- Pipeline references: OK | BROKEN (<which stages>)
|
|
163
|
+
- team-config.json: OK | MISSING | INVALID
|
|
164
|
+
- Cross-references: OK | BROKEN (<which paths>)
|
|
165
|
+
|
|
166
|
+
## Verdict
|
|
167
|
+
- PASS: Package is structurally valid and ready for use
|
|
168
|
+
OR
|
|
169
|
+
- WARN: Package is usable but has noted issues
|
|
170
|
+
1. Issue description
|
|
171
|
+
OR
|
|
172
|
+
- FAIL: Package requires fixes before use
|
|
173
|
+
1. Issue description + suggested resolution
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Error Handling
|
|
179
|
+
|
|
180
|
+
| Scenario | Resolution |
|
|
181
|
+
|----------|------------|
|
|
182
|
+
| Skill package directory not found | Report as FAIL, request correct path |
|
|
183
|
+
| SKILL.md missing | Report as FAIL finding, cannot proceed with full validation |
|
|
184
|
+
| team-config.json invalid JSON | Report as FAIL, include parse error |
|
|
185
|
+
| Role file unreadable | Report as WARN, note which file |
|
|
186
|
+
| Timeout approaching | Output current findings with "PARTIAL" status |
|