claude-code-workflow 7.2.28 → 7.2.29
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/.codex/skills/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- package/.codex/skills/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js → AlertDialog-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-koEYiemK.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-koEYiemK.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CH3smL37.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CH3smL37.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-generator
|
|
3
3
|
description: "Specification generator - 7 phase document chain producing product brief, PRD, architecture, epics, and issues. Agent-delegated heavy phases (2-5, 6.5) with Codex review gates. Triggers on \"generate spec\", \"create specification\", \"spec generator\", \"workflow:spec\"."
|
|
4
|
-
|
|
4
|
+
agents: doc-generator
|
|
5
|
+
phases: 9
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Spec Generator
|
|
@@ -27,22 +28,22 @@ Phase 5: Epics & Stories -> epics/ (_index.md + EPIC-*.md)
|
|
|
27
28
|
| (Gemini + Codex review)
|
|
28
29
|
Phase 6: Readiness Check -> readiness-report.md + spec-summary.md [Inline]
|
|
29
30
|
| (Gemini + Codex dual validation + per-req verification)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
+-- Pass (>=80%): Handoff or Phase 7
|
|
32
|
+
+-- Review (60-79%): Handoff with caveats or Phase 7
|
|
33
|
+
+-- Fail (<60%): Phase 6.5 Auto-Fix (max 2 iterations)
|
|
33
34
|
|
|
|
34
35
|
Phase 6.5: Auto-Fix -> Updated Phase 2-5 documents [Agent]
|
|
35
36
|
|
|
|
36
|
-
|
|
37
|
+
+-- Re-run Phase 6 validation
|
|
37
38
|
|
|
|
38
39
|
Phase 7: Issue Export -> issue-export-report.md [Inline]
|
|
39
|
-
(Epic
|
|
40
|
+
(Epic->Issue mapping, ccw issue create, wave assignment)
|
|
40
41
|
```
|
|
41
42
|
|
|
42
43
|
## Key Design Principles
|
|
43
44
|
|
|
44
45
|
1. **Document Chain**: Each phase builds on previous outputs, creating a traceable specification chain from idea to executable issues
|
|
45
|
-
2. **Agent-Delegated**: Heavy document phases (2-5, 6.5) run in `doc-generator` agents
|
|
46
|
+
2. **Agent-Delegated**: Heavy document phases (2-5, 6.5) run in `doc-generator` agents via `spawn_agent`, keeping main context lean (summaries only)
|
|
46
47
|
3. **Multi-Perspective Analysis**: CLI tools (Gemini/Codex/Claude) provide product, technical, and user perspectives in parallel
|
|
47
48
|
4. **Codex Review Gates**: Phases 3, 5, 6 include Codex CLI review for quality validation before output
|
|
48
49
|
5. **Interactive by Default**: Each phase offers user confirmation points; `-y` flag enables full auto mode
|
|
@@ -55,6 +56,36 @@ Phase 7: Issue Export -> issue-export-report.md
|
|
|
55
56
|
|
|
56
57
|
---
|
|
57
58
|
|
|
59
|
+
## Agent Registry
|
|
60
|
+
|
|
61
|
+
| Agent | task_name | Role File | Responsibility | Pattern | fork_context |
|
|
62
|
+
|-------|-----------|-----------|----------------|---------|-------------|
|
|
63
|
+
| doc-generator (Phase 2) | `doc-gen-p2` | ~/.codex/agents/doc-generator.toml | Product brief + glossary generation | 2.1 Standard | false |
|
|
64
|
+
| doc-generator (Phase 3) | `doc-gen-p3` | ~/.codex/agents/doc-generator.toml | Requirements / PRD generation | 2.1 Standard | false |
|
|
65
|
+
| doc-generator (Phase 4) | `doc-gen-p4` | ~/.codex/agents/doc-generator.toml | Architecture + ADR generation | 2.1 Standard | false |
|
|
66
|
+
| doc-generator (Phase 5) | `doc-gen-p5` | ~/.codex/agents/doc-generator.toml | Epics & Stories generation | 2.1 Standard | false |
|
|
67
|
+
| doc-generator (Phase 6.5) | `doc-gen-fix` | ~/.codex/agents/doc-generator.toml | Auto-fix readiness issues | 2.1 Standard | false |
|
|
68
|
+
| cli-explore-agent (Phase 1) | `spec-explorer` | ~/.codex/agents/cli-explore-agent.toml | Codebase exploration | 2.1 Standard | false |
|
|
69
|
+
|
|
70
|
+
> **COMPACT PROTECTION**: Agent files are execution documents. When context compression occurs and agent instructions are reduced to summaries, **you MUST immediately `Read` the corresponding agent file to reload before continuing execution**.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Fork Context Strategy
|
|
75
|
+
|
|
76
|
+
| Agent | task_name | fork_context | fork_from | Rationale |
|
|
77
|
+
|-------|-----------|-------------|-----------|-----------|
|
|
78
|
+
| cli-explore-agent | `spec-explorer` | false | — | Independent utility: codebase scan, isolated task |
|
|
79
|
+
| doc-generator (P2) | `doc-gen-p2` | false | — | Sequential pipeline: context passed via file paths in message |
|
|
80
|
+
| doc-generator (P3) | `doc-gen-p3` | false | — | Sequential pipeline: reads P2 output files from disk |
|
|
81
|
+
| doc-generator (P4) | `doc-gen-p4` | false | — | Sequential pipeline: reads P2-P3 output files from disk |
|
|
82
|
+
| doc-generator (P5) | `doc-gen-p5` | false | — | Sequential pipeline: reads P2-P4 output files from disk |
|
|
83
|
+
| doc-generator (P6.5) | `doc-gen-fix` | false | — | Utility fix: reads readiness-report.md + affected phase files |
|
|
84
|
+
|
|
85
|
+
**Why all `fork_context: false`**: This is a Pipeline pattern (2.5) — each phase produces files on disk and the next phase reads them. No agent needs the orchestrator's conversation history; all context is explicitly passed via file paths in the spawn message.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
58
89
|
## Mandatory Prerequisites
|
|
59
90
|
|
|
60
91
|
> **Do NOT skip**: Before performing any operations, you **must** completely read the following documents. Proceeding without reading the specifications will result in outputs that do not meet quality standards.
|
|
@@ -92,6 +123,9 @@ Phase 1: Discovery & Seed Analysis
|
|
|
92
123
|
|- Parse input (text or file reference)
|
|
93
124
|
|- Gemini CLI seed analysis (problem, users, domain, dimensions)
|
|
94
125
|
|- Codebase exploration (conditional, if project detected)
|
|
126
|
+
| |- spawn_agent({ task_name: "spec-explorer", fork_context: false, message: ... })
|
|
127
|
+
| |- wait_agent({ targets: ["spec-explorer"], timeout_ms: 300000 })
|
|
128
|
+
| |- close_agent({ target: "spec-explorer" })
|
|
95
129
|
|- Spec type selection: service|api|library|platform (interactive, -y defaults to service)
|
|
96
130
|
|- User confirmation (interactive, -y skips)
|
|
97
131
|
|- Output: spec-config.json, discovery-context.json (optional)
|
|
@@ -107,35 +141,39 @@ Phase 1.5: Requirement Expansion & Clarification
|
|
|
107
141
|
|- Output: refined-requirements.json
|
|
108
142
|
|
|
109
143
|
Phase 2: Product Brief [AGENT: doc-generator]
|
|
110
|
-
|-
|
|
144
|
+
|- spawn_agent({ task_name: "doc-gen-p2", fork_context: false, message: <context envelope> })
|
|
111
145
|
|- Agent reads: phases/02-product-brief.md
|
|
112
146
|
|- Agent executes: 3 parallel CLI analyses + synthesis + glossary generation
|
|
113
147
|
|- Agent writes: product-brief.md, glossary.json
|
|
114
|
-
|-
|
|
148
|
+
|- wait_agent({ targets: ["doc-gen-p2"], timeout_ms: 600000 })
|
|
149
|
+
|- close_agent({ target: "doc-gen-p2" })
|
|
115
150
|
|- Orchestrator validates: files exist, spec-config.json updated
|
|
116
151
|
|
|
117
152
|
Phase 3: Requirements / PRD [AGENT: doc-generator]
|
|
118
|
-
|-
|
|
153
|
+
|- spawn_agent({ task_name: "doc-gen-p3", fork_context: false, message: <context envelope> })
|
|
119
154
|
|- Agent reads: phases/03-requirements.md
|
|
120
155
|
|- Agent executes: Gemini expansion + Codex review (Step 2.5) + priority sorting
|
|
121
156
|
|- Agent writes: requirements/ directory (_index.md + REQ-*.md + NFR-*.md)
|
|
122
|
-
|-
|
|
157
|
+
|- wait_agent({ targets: ["doc-gen-p3"], timeout_ms: 600000 })
|
|
158
|
+
|- close_agent({ target: "doc-gen-p3" })
|
|
123
159
|
|- Orchestrator validates: directory exists, file count matches
|
|
124
160
|
|
|
125
161
|
Phase 4: Architecture [AGENT: doc-generator]
|
|
126
|
-
|-
|
|
162
|
+
|- spawn_agent({ task_name: "doc-gen-p4", fork_context: false, message: <context envelope> })
|
|
127
163
|
|- Agent reads: phases/04-architecture.md
|
|
128
164
|
|- Agent executes: Gemini analysis + Codex review + codebase mapping
|
|
129
165
|
|- Agent writes: architecture/ directory (_index.md + ADR-*.md)
|
|
130
|
-
|-
|
|
166
|
+
|- wait_agent({ targets: ["doc-gen-p4"], timeout_ms: 600000 })
|
|
167
|
+
|- close_agent({ target: "doc-gen-p4" })
|
|
131
168
|
|- Orchestrator validates: directory exists, ADR files present
|
|
132
169
|
|
|
133
170
|
Phase 5: Epics & Stories [AGENT: doc-generator]
|
|
134
|
-
|-
|
|
171
|
+
|- spawn_agent({ task_name: "doc-gen-p5", fork_context: false, message: <context envelope> })
|
|
135
172
|
|- Agent reads: phases/05-epics-stories.md
|
|
136
173
|
|- Agent executes: Gemini decomposition + Codex review (Step 2.5) + validation
|
|
137
174
|
|- Agent writes: epics/ directory (_index.md + EPIC-*.md)
|
|
138
|
-
|-
|
|
175
|
+
|- wait_agent({ targets: ["doc-gen-p5"], timeout_ms: 600000 })
|
|
176
|
+
|- close_agent({ target: "doc-gen-p5" })
|
|
139
177
|
|- Orchestrator validates: directory exists, MVP epics present
|
|
140
178
|
|
|
141
179
|
Phase 6: Readiness Check [INLINE + ENHANCED]
|
|
@@ -150,16 +188,17 @@ Phase 6: Readiness Check [INLINE + ENHANCED]
|
|
|
150
188
|
|- Handoff options: Phase 7 (issue export), lite-plan, req-plan, plan, iterate
|
|
151
189
|
|
|
152
190
|
Phase 6.5: Auto-Fix (conditional) [AGENT: doc-generator]
|
|
153
|
-
|-
|
|
191
|
+
|- spawn_agent({ task_name: "doc-gen-fix", fork_context: false, message: <context envelope> })
|
|
154
192
|
|- Agent reads: phases/06-5-auto-fix.md + readiness-report.md
|
|
155
193
|
|- Agent executes: fix affected Phase 2-5 documents
|
|
156
|
-
|-
|
|
194
|
+
|- wait_agent({ targets: ["doc-gen-fix"], timeout_ms: 600000 })
|
|
195
|
+
|- close_agent({ target: "doc-gen-fix" })
|
|
157
196
|
|- Re-run Phase 6 validation
|
|
158
197
|
|- Max 2 iterations, then force handoff
|
|
159
198
|
|
|
160
199
|
Phase 7: Issue Export [INLINE]
|
|
161
200
|
|- Ref: phases/07-issue-export.md
|
|
162
|
-
|- Read EPIC-*.md files, assign waves (MVP
|
|
201
|
+
|- Read EPIC-*.md files, assign waves (MVP->wave-1, others->wave-2)
|
|
163
202
|
|- Create issues via ccw issue create (one per Epic)
|
|
164
203
|
|- Map Epic dependencies to issue dependencies
|
|
165
204
|
|- Generate issue-export-report.md
|
|
@@ -168,21 +207,21 @@ Phase 7: Issue Export [INLINE]
|
|
|
168
207
|
|
|
169
208
|
Complete: Full specification package with issues ready for execution
|
|
170
209
|
|
|
171
|
-
Phase 6/7
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
210
|
+
Phase 6/7 -> Handoff Bridge (conditional, based on user selection):
|
|
211
|
+
+- team-planex: Execute issues via coordinated team workflow
|
|
212
|
+
+- lite-plan: Extract first MVP Epic description -> direct text input
|
|
213
|
+
+- plan / req-plan: Create WFS session + .brainstorming/ bridge files
|
|
214
|
+
| +- guidance-specification.md (synthesized from spec outputs)
|
|
215
|
+
| +- feature-specs/feature-index.json (Epic -> Feature mapping)
|
|
216
|
+
| +-- feature-specs/F-{num}-{slug}.md (one per Epic)
|
|
217
|
+
+- context-search-agent auto-discovers .brainstorming/
|
|
218
|
+
-> context-package.json.brainstorm_artifacts populated
|
|
219
|
+
-> action-planning-agent consumes: guidance_spec (P1) -> feature_index (P2)
|
|
181
220
|
```
|
|
182
221
|
|
|
183
222
|
## Directory Setup
|
|
184
223
|
|
|
185
|
-
```
|
|
224
|
+
```
|
|
186
225
|
// Session ID generation
|
|
187
226
|
const slug = topic.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]+/g, '-').slice(0, 40);
|
|
188
227
|
const date = new Date().toISOString().slice(0, 10);
|
|
@@ -196,24 +235,24 @@ Bash(`mkdir -p "${workDir}"`);
|
|
|
196
235
|
|
|
197
236
|
```
|
|
198
237
|
.workflow/.spec/SPEC-{slug}-{YYYY-MM-DD}/
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
238
|
+
+-- spec-config.json # Session configuration + phase state
|
|
239
|
+
+-- discovery-context.json # Codebase exploration results (optional)
|
|
240
|
+
+-- refined-requirements.json # Phase 1.5: Confirmed requirements after discussion
|
|
241
|
+
+-- glossary.json # Phase 2: Terminology glossary for cross-doc consistency
|
|
242
|
+
+-- product-brief.md # Phase 2: Product brief
|
|
243
|
+
+-- requirements/ # Phase 3: Detailed PRD (directory)
|
|
244
|
+
| +-- _index.md # Summary, MoSCoW table, traceability, links
|
|
245
|
+
| +-- REQ-NNN-{slug}.md # Individual functional requirement
|
|
246
|
+
| +-- NFR-{type}-NNN-{slug}.md # Individual non-functional requirement
|
|
247
|
+
+-- architecture/ # Phase 4: Architecture decisions (directory)
|
|
248
|
+
| +-- _index.md # Overview, components, tech stack, links
|
|
249
|
+
| +-- ADR-NNN-{slug}.md # Individual Architecture Decision Record
|
|
250
|
+
+-- epics/ # Phase 5: Epic/Story breakdown (directory)
|
|
251
|
+
| +-- _index.md # Epic table, dependency map, MVP scope
|
|
252
|
+
| +-- EPIC-NNN-{slug}.md # Individual Epic with Stories
|
|
253
|
+
+-- readiness-report.md # Phase 6: Quality report (+ per-req verification table)
|
|
254
|
+
+-- spec-summary.md # Phase 6: One-page executive summary
|
|
255
|
+
+-- issue-export-report.md # Phase 7: Issue mapping table + spec links
|
|
217
256
|
```
|
|
218
257
|
|
|
219
258
|
## State Management
|
|
@@ -255,79 +294,134 @@ Bash(`mkdir -p "${workDir}"`);
|
|
|
255
294
|
|
|
256
295
|
## Core Rules
|
|
257
296
|
|
|
258
|
-
1. **Start Immediately**: First action is
|
|
297
|
+
1. **Start Immediately**: First action is Phase 0 (spec study), then Phase 1
|
|
259
298
|
2. **Progressive Phase Loading**: Read phase docs ONLY when that phase is about to execute
|
|
260
|
-
3. **Auto-Continue**: All phases run autonomously;
|
|
299
|
+
3. **Auto-Continue**: All phases run autonomously; proceed to next phase after current completes
|
|
261
300
|
4. **Parse Every Output**: Extract required data from each phase for next phase context
|
|
262
301
|
5. **DO NOT STOP**: Continuous 7-phase pipeline until all phases complete or user exits
|
|
263
|
-
6. **Respect -y Flag**: When auto mode, skip all
|
|
302
|
+
6. **Respect -y Flag**: When auto mode, skip all user interaction calls, use recommended defaults
|
|
264
303
|
7. **Respect -c Flag**: When continue mode, load spec-config.json and resume from checkpoint
|
|
265
304
|
8. **Inject Glossary**: From Phase 3 onward, inject glossary.json terms into every CLI prompt
|
|
266
305
|
9. **Load Profile**: Read templates/profiles/{spec_type}-profile.md and inject requirements into Phase 2-5 prompts
|
|
267
306
|
10. **Iterate on Failure**: When Phase 6 score < 60%, auto-trigger Phase 6.5 (max 2 iterations)
|
|
268
|
-
11. **Agent Delegation**: Phase 2-5 and 6.5 MUST be delegated to `doc-generator` agents via
|
|
269
|
-
12. **Lean Context**: Orchestrator only sees agent return summaries
|
|
270
|
-
13. **Validate Agent Output**: After each
|
|
307
|
+
11. **Agent Delegation**: Phase 2-5 and 6.5 MUST be delegated to `doc-generator` agents via `spawn_agent` — never execute inline
|
|
308
|
+
12. **Lean Context**: Orchestrator only sees agent return summaries from `wait_agent`, never the full document content
|
|
309
|
+
13. **Validate Agent Output**: After each `wait_agent` returns, verify files exist on disk and spec-config.json was updated
|
|
310
|
+
14. **Lifecycle Balance**: Every `spawn_agent` MUST have a matching `close_agent` after `wait_agent` retrieves results
|
|
271
311
|
|
|
272
312
|
## Agent Delegation Protocol
|
|
273
313
|
|
|
274
|
-
For Phase 2-5 and 6.5, the orchestrator delegates to a `doc-generator` agent via
|
|
314
|
+
For Phase 2-5 and 6.5, the orchestrator delegates to a `doc-generator` agent via `spawn_agent`. The orchestrator builds a lean context envelope — passing only paths, never file content.
|
|
275
315
|
|
|
276
316
|
### Context Envelope Template
|
|
277
317
|
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
318
|
+
```
|
|
319
|
+
spawn_agent({
|
|
320
|
+
task_name: "doc-gen-p<N>",
|
|
321
|
+
fork_context: false,
|
|
322
|
+
message: `
|
|
323
|
+
## Spec Generator - Phase <N>: <phase-name>
|
|
324
|
+
|
|
325
|
+
### MANDATORY FIRST STEPS (Agent Execute)
|
|
326
|
+
1. **Read role definition**: ~/.codex/agents/doc-generator.toml (MUST read first)
|
|
327
|
+
2. Read: <skill-dir>/phases/<phase-file>
|
|
328
|
+
|
|
329
|
+
---
|
|
285
330
|
|
|
286
331
|
### Session
|
|
287
|
-
- ID:
|
|
288
|
-
- Work Dir:
|
|
289
|
-
- Auto Mode:
|
|
290
|
-
- Spec Type:
|
|
332
|
+
- ID: <session-id>
|
|
333
|
+
- Work Dir: <work-dir>
|
|
334
|
+
- Auto Mode: <auto-mode>
|
|
335
|
+
- Spec Type: <spec-type>
|
|
291
336
|
|
|
292
337
|
### Input (read from disk)
|
|
293
|
-
|
|
338
|
+
<input-files-list>
|
|
294
339
|
|
|
295
340
|
### Instructions
|
|
296
|
-
Read:
|
|
297
|
-
Apply template:
|
|
341
|
+
Read: <skill-dir>/phases/<phase-file>
|
|
342
|
+
Apply template: <skill-dir>/templates/<template-file>
|
|
298
343
|
|
|
299
344
|
### Glossary (Phase 3+ only)
|
|
300
|
-
Read:
|
|
345
|
+
Read: <work-dir>/glossary.json
|
|
301
346
|
|
|
302
347
|
### Output
|
|
303
|
-
Write files to:
|
|
304
|
-
Update:
|
|
348
|
+
Write files to: <work-dir>/<output-path>
|
|
349
|
+
Update: <work-dir>/spec-config.json (phasesCompleted)
|
|
305
350
|
Return: JSON summary { files_created, quality_notes, key_decisions }
|
|
306
351
|
`
|
|
307
|
-
})
|
|
352
|
+
})
|
|
308
353
|
```
|
|
309
354
|
|
|
310
355
|
### Orchestrator Post-Agent Validation
|
|
311
356
|
|
|
312
|
-
After each agent
|
|
357
|
+
After each agent phase, the orchestrator validates output:
|
|
313
358
|
|
|
314
|
-
```
|
|
315
|
-
// 1.
|
|
316
|
-
const
|
|
359
|
+
```
|
|
360
|
+
// 1. Wait for agent completion
|
|
361
|
+
const result = wait_agent({ targets: ["doc-gen-p<N>"], timeout_ms: 600000 })
|
|
362
|
+
|
|
363
|
+
// 2. Handle timeout
|
|
364
|
+
if (result.timed_out) {
|
|
365
|
+
assign_task({
|
|
366
|
+
target: "doc-gen-p<N>",
|
|
367
|
+
items: [{ type: "text", text: "Please finalize current work and output results immediately." }]
|
|
368
|
+
})
|
|
369
|
+
const retryResult = wait_agent({ targets: ["doc-gen-p<N>"], timeout_ms: 120000 })
|
|
370
|
+
if (retryResult.timed_out) {
|
|
371
|
+
close_agent({ target: "doc-gen-p<N>" })
|
|
372
|
+
// Fall back to inline execution for this phase
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// 3. Close agent (lifecycle balance)
|
|
377
|
+
close_agent({ target: "doc-gen-p<N>" })
|
|
378
|
+
|
|
379
|
+
// 4. Parse agent return summary
|
|
380
|
+
const summary = parseJSON(result.status["doc-gen-p<N>"].completed)
|
|
317
381
|
|
|
318
|
-
//
|
|
382
|
+
// 5. Validate files exist
|
|
319
383
|
summary.files_created.forEach(file => {
|
|
320
|
-
const exists = Glob(
|
|
321
|
-
if (!exists.length)
|
|
322
|
-
})
|
|
384
|
+
const exists = Glob(`<work-dir>/${file}`)
|
|
385
|
+
if (!exists.length) → Error: agent claimed file but not found
|
|
386
|
+
})
|
|
387
|
+
|
|
388
|
+
// 6. Verify spec-config.json updated
|
|
389
|
+
const config = JSON.parse(Read(`<work-dir>/spec-config.json`))
|
|
390
|
+
const phaseComplete = config.phasesCompleted.some(p => p.phase === N)
|
|
391
|
+
if (!phaseComplete) → Error: agent did not update phasesCompleted
|
|
392
|
+
|
|
393
|
+
// 7. Store summary for downstream context (do NOT read full documents)
|
|
394
|
+
phasesSummaries[N] = summary
|
|
395
|
+
```
|
|
323
396
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Lifecycle Management
|
|
400
|
+
|
|
401
|
+
### Timeout Protocol
|
|
402
|
+
|
|
403
|
+
| Phase | task_name | Default Timeout | On Timeout |
|
|
404
|
+
|-------|-----------|-----------------|------------|
|
|
405
|
+
| Phase 1 (explore) | `spec-explorer` | 300000ms (5min) | assign_task "finalize" → re-wait 120s → close |
|
|
406
|
+
| Phase 2 | `doc-gen-p2` | 600000ms (10min) | assign_task "finalize" → re-wait 120s → close + inline fallback |
|
|
407
|
+
| Phase 3 | `doc-gen-p3` | 600000ms (10min) | assign_task "finalize" → re-wait 120s → close + inline fallback |
|
|
408
|
+
| Phase 4 | `doc-gen-p4` | 600000ms (10min) | assign_task "finalize" → re-wait 120s → close + inline fallback |
|
|
409
|
+
| Phase 5 | `doc-gen-p5` | 600000ms (10min) | assign_task "finalize" → re-wait 120s → close + inline fallback |
|
|
410
|
+
| Phase 6.5 | `doc-gen-fix` | 600000ms (10min) | assign_task "finalize" → re-wait 120s → close + force handoff |
|
|
328
411
|
|
|
329
|
-
|
|
330
|
-
|
|
412
|
+
### Cleanup Protocol
|
|
413
|
+
|
|
414
|
+
At the end of each agent-delegated phase, close the agent immediately after retrieving results. Each phase spawns a fresh agent — no agent persists across phases.
|
|
415
|
+
|
|
416
|
+
```
|
|
417
|
+
// Standard per-phase cleanup (after wait_agent succeeds)
|
|
418
|
+
close_agent({ target: "doc-gen-p<N>" })
|
|
419
|
+
|
|
420
|
+
// On workflow abort / user cancellation
|
|
421
|
+
const activeAgents = ["doc-gen-p2", "doc-gen-p3", "doc-gen-p4", "doc-gen-p5", "doc-gen-fix", "spec-explorer"]
|
|
422
|
+
activeAgents.forEach(name => {
|
|
423
|
+
try { close_agent({ target: name }) } catch { /* not active */ }
|
|
424
|
+
})
|
|
331
425
|
```
|
|
332
426
|
|
|
333
427
|
---
|
|
@@ -387,7 +481,7 @@ phasesSummaries[N] = summary;
|
|
|
387
481
|
### Phase 7: Issue Export
|
|
388
482
|
| Document | Purpose | When to Use |
|
|
389
483
|
|----------|---------|-------------|
|
|
390
|
-
| [phases/07-issue-export.md](phases/07-issue-export.md) | Epic
|
|
484
|
+
| [phases/07-issue-export.md](phases/07-issue-export.md) | Epic->Issue mapping and export | Phase start |
|
|
391
485
|
| [specs/quality-gates.md](specs/quality-gates.md) | Issue export quality criteria | Validation |
|
|
392
486
|
|
|
393
487
|
### Debugging & Troubleshooting
|
|
@@ -403,6 +497,7 @@ phasesSummaries[N] = summary;
|
|
|
403
497
|
|-------|-------|-----------|--------|
|
|
404
498
|
| Phase 1 | Empty input | Yes | Error and exit |
|
|
405
499
|
| Phase 1 | CLI seed analysis fails | No | Use basic parsing fallback |
|
|
500
|
+
| Phase 1 | Codebase explore agent timeout | No | close_agent, proceed without discovery-context |
|
|
406
501
|
| Phase 1.5 | Gap analysis CLI fails | No | Skip to user questions with basic prompts |
|
|
407
502
|
| Phase 1.5 | User skips discussion | No | Proceed with seed_analysis as-is |
|
|
408
503
|
| Phase 1.5 | Max rounds reached (5) | No | Force confirmation with current state |
|
|
@@ -417,8 +512,9 @@ phasesSummaries[N] = summary;
|
|
|
417
512
|
| Phase 7 | ccw issue create fails for one Epic | No | Log error, continue with remaining Epics |
|
|
418
513
|
| Phase 7 | No EPIC files found | Yes | Error and return to Phase 5 |
|
|
419
514
|
| Phase 7 | All issue creations fail | Yes | Error with CLI diagnostic, suggest manual creation |
|
|
420
|
-
| Phase 2-5 | Agent
|
|
515
|
+
| Phase 2-5 | Agent timeout (wait_agent timed_out) | No | assign_task "finalize" → re-wait → close + inline fallback |
|
|
421
516
|
| Phase 2-5 | Agent returns incomplete files | No | Log gaps, attempt inline completion for missing files |
|
|
517
|
+
| Any | close_agent on non-existent agent | No | Catch error, continue (agent may have self-terminated) |
|
|
422
518
|
|
|
423
519
|
### CLI Fallback Chain
|
|
424
520
|
|
|
@@ -90,9 +90,8 @@ EXPECTED: JSON output:
|
|
|
90
90
|
}
|
|
91
91
|
CONSTRAINTS: 问题必须是开放式的,建议必须具体可执行,使用用户输入的语言
|
|
92
92
|
" --tool gemini --mode analysis`,
|
|
93
|
-
run_in_background: true
|
|
94
93
|
});
|
|
95
|
-
//
|
|
94
|
+
// Parse CLI result before continuing
|
|
96
95
|
```
|
|
97
96
|
|
|
98
97
|
解析 CLI 输出为结构化数据:
|
|
@@ -186,10 +185,9 @@ EXPECTED: JSON output:
|
|
|
186
185
|
}
|
|
187
186
|
}
|
|
188
187
|
CONSTRAINTS: 避免重复已回答的问题,聚焦未覆盖的领域
|
|
189
|
-
" --tool gemini --mode analysis
|
|
190
|
-
run_in_background: true
|
|
188
|
+
" --tool gemini --mode analysis`
|
|
191
189
|
});
|
|
192
|
-
//
|
|
190
|
+
// Parse CLI result and continue
|
|
193
191
|
|
|
194
192
|
// If status === "ready_for_confirmation", break to confirmation step
|
|
195
193
|
// If status === "need_more_discussion", present follow-up questions
|
|
@@ -284,8 +282,7 @@ TASK:
|
|
|
284
282
|
MODE: analysis
|
|
285
283
|
EXPECTED: JSON output matching refined-requirements.json schema
|
|
286
284
|
CONSTRAINTS: 保守推断,只添加高置信度的扩展
|
|
287
|
-
" --tool gemini --mode analysis
|
|
288
|
-
run_in_background: true
|
|
285
|
+
" --tool gemini --mode analysis`
|
|
289
286
|
});
|
|
290
287
|
// Parse output directly into refined-requirements.json
|
|
291
288
|
}
|
|
@@ -91,9 +91,8 @@ MODE: analysis
|
|
|
91
91
|
EXPECTED: JSON output with fields: problem_statement, target_users[], domain, constraints[], dimensions[], complexity
|
|
92
92
|
CONSTRAINTS: Be specific and actionable, not vague
|
|
93
93
|
" --tool gemini --mode analysis`,
|
|
94
|
-
run_in_background: true
|
|
95
94
|
});
|
|
96
|
-
//
|
|
95
|
+
// Parse CLI result before continuing
|
|
97
96
|
```
|
|
98
97
|
|
|
99
98
|
Parse the CLI output into structured `seedAnalysis`:
|
|
@@ -117,19 +116,29 @@ const hasCodebase = Glob('**/*.{ts,js,py,java,go,rs}').length > 0
|
|
|
117
116
|
|| Glob('Cargo.toml').length > 0;
|
|
118
117
|
|
|
119
118
|
if (hasCodebase) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
119
|
+
spawn_agent({
|
|
120
|
+
task_name: "spec-explorer",
|
|
121
|
+
fork_context: false,
|
|
122
|
+
message: `
|
|
123
|
+
## TASK ASSIGNMENT
|
|
124
|
+
|
|
125
|
+
### MANDATORY FIRST STEPS (Agent Execute)
|
|
126
|
+
1. **Read role definition**: ~/.codex/agents/cli-explore-agent.toml (MUST read first)
|
|
127
|
+
2. Search for code related to topic keywords
|
|
128
|
+
3. Read project config files (package.json, pyproject.toml, etc.) if they exist
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
125
132
|
## Spec Generator Context
|
|
126
133
|
Topic: ${seedInput}
|
|
127
134
|
Dimensions: ${seedAnalysis.dimensions.join(', ')}
|
|
128
135
|
Session: ${workDir}
|
|
129
136
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
Goal: Explore codebase to inform specification decisions
|
|
138
|
+
|
|
139
|
+
Scope:
|
|
140
|
+
- Include: Source code files, config files, existing architecture
|
|
141
|
+
- Exclude: node_modules, dist, build artifacts
|
|
133
142
|
|
|
134
143
|
## Exploration Focus
|
|
135
144
|
- Identify existing implementations related to the topic
|
|
@@ -151,6 +160,16 @@ Schema:
|
|
|
151
160
|
}
|
|
152
161
|
`
|
|
153
162
|
});
|
|
163
|
+
|
|
164
|
+
const exploreResult = wait_agent({ targets: ["spec-explorer"], timeout_ms: 300000 });
|
|
165
|
+
if (exploreResult.timed_out) {
|
|
166
|
+
assign_task({
|
|
167
|
+
target: "spec-explorer",
|
|
168
|
+
items: [{ type: "text", text: "Finalize current findings and write discovery-context.json immediately." }]
|
|
169
|
+
});
|
|
170
|
+
wait_agent({ targets: ["spec-explorer"], timeout_ms: 120000 });
|
|
171
|
+
}
|
|
172
|
+
close_agent({ target: "spec-explorer" });
|
|
154
173
|
}
|
|
155
174
|
```
|
|
156
175
|
|
|
@@ -247,4 +266,4 @@ Write(`${workDir}/spec-config.json`, JSON.stringify(specConfig, null, 2));
|
|
|
247
266
|
|
|
248
267
|
## Next Phase
|
|
249
268
|
|
|
250
|
-
Proceed to [Phase
|
|
269
|
+
Proceed to [Phase 1.5: Requirement Expansion](01-5-requirement-clarification.md) with the generated spec-config.json.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Phase 2: Product Brief
|
|
2
2
|
|
|
3
|
-
> **Execution Mode: Agent Delegated**
|
|
4
|
-
> This phase is executed by a `doc-generator` agent. The orchestrator (
|
|
3
|
+
> **Execution Mode: Agent Delegated (Codex v4)**
|
|
4
|
+
> This phase is executed by a `doc-generator` agent. The orchestrator spawns the agent via `spawn_agent({ task_name: "doc-gen-p2", fork_context: false })` and retrieves results via `wait_agent`. The agent reads this file as part of its MANDATORY FIRST STEPS, executes all steps, writes output files, and returns a JSON summary.
|
|
5
5
|
|
|
6
6
|
Generate a product brief through multi-perspective CLI analysis, establishing "what" and "why".
|
|
7
7
|
|
|
@@ -98,7 +98,6 @@ MODE: analysis
|
|
|
98
98
|
EXPECTED: Structured product analysis with: vision, goals with metrics, scope, competitive positioning, assumptions
|
|
99
99
|
CONSTRAINTS: Focus on 'what' and 'why', not 'how'
|
|
100
100
|
" --tool gemini --mode analysis`,
|
|
101
|
-
run_in_background: true
|
|
102
101
|
});
|
|
103
102
|
```
|
|
104
103
|
|
|
@@ -122,7 +121,6 @@ MODE: analysis
|
|
|
122
121
|
EXPECTED: Technical analysis with: feasibility assessment, constraints, integration complexity, tech recommendations, risks
|
|
123
122
|
CONSTRAINTS: Focus on feasibility and constraints, not detailed architecture
|
|
124
123
|
" --tool codex --mode analysis`,
|
|
125
|
-
run_in_background: true
|
|
126
124
|
});
|
|
127
125
|
```
|
|
128
126
|
|
|
@@ -146,7 +144,6 @@ MODE: analysis
|
|
|
146
144
|
EXPECTED: User analysis with: personas, journey map, pain points, UX criteria, interaction recommendations
|
|
147
145
|
CONSTRAINTS: Focus on user needs and experience, not implementation
|
|
148
146
|
" --tool claude --mode analysis`,
|
|
149
|
-
run_in_background: true
|
|
150
147
|
});
|
|
151
148
|
|
|
152
149
|
// STOP: Wait for all 3 CLI results before continuing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Phase 3: Requirements (PRD)
|
|
2
2
|
|
|
3
|
-
> **Execution Mode: Agent Delegated**
|
|
4
|
-
> This phase is executed by a `doc-generator` agent. The orchestrator (
|
|
3
|
+
> **Execution Mode: Agent Delegated (Codex v4)**
|
|
4
|
+
> This phase is executed by a `doc-generator` agent. The orchestrator spawns the agent via `spawn_agent({ task_name: "doc-gen-p3", fork_context: false })` and retrieves results via `wait_agent`. The agent reads this file as part of its MANDATORY FIRST STEPS, executes all steps, writes output files, and returns a JSON summary.
|
|
5
5
|
|
|
6
6
|
Generate a detailed Product Requirements Document with functional/non-functional requirements, acceptance criteria, and MoSCoW prioritization.
|
|
7
7
|
|
|
@@ -73,10 +73,9 @@ MODE: analysis
|
|
|
73
73
|
EXPECTED: Structured requirements with: ID, title, description, user story, acceptance criteria, priority, traceability to goals
|
|
74
74
|
CONSTRAINTS: Every requirement must be specific enough to estimate and test. No vague requirements like 'system should be fast'.
|
|
75
75
|
" --tool gemini --mode analysis`,
|
|
76
|
-
run_in_background: true
|
|
77
76
|
});
|
|
78
77
|
|
|
79
|
-
//
|
|
78
|
+
// Parse CLI result
|
|
80
79
|
```
|
|
81
80
|
|
|
82
81
|
### Step 2.5: Codex Requirements Review
|
|
@@ -106,10 +105,9 @@ MODE: analysis
|
|
|
106
105
|
EXPECTED: Requirements review with: per-requirement feedback, testability assessment, scope violations, data model gaps, quality rating
|
|
107
106
|
CONSTRAINTS: Be genuinely critical. Focus on requirements that would block implementation if left vague.
|
|
108
107
|
" --tool codex --mode analysis`,
|
|
109
|
-
run_in_background: true
|
|
110
108
|
});
|
|
111
109
|
|
|
112
|
-
//
|
|
110
|
+
// Parse Codex review result
|
|
113
111
|
// Integrate feedback into requirements before writing files:
|
|
114
112
|
// - Fix vague acceptance criteria flagged by Codex
|
|
115
113
|
// - Correct RFC 2119 keyword misuse
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Phase 4: Architecture
|
|
2
2
|
|
|
3
|
-
> **Execution Mode: Agent Delegated**
|
|
4
|
-
> This phase is executed by a `doc-generator` agent. The orchestrator (
|
|
3
|
+
> **Execution Mode: Agent Delegated (Codex v4)**
|
|
4
|
+
> This phase is executed by a `doc-generator` agent. The orchestrator spawns the agent via `spawn_agent({ task_name: "doc-gen-p4", fork_context: false })` and retrieves results via `wait_agent`. The agent reads this file as part of its MANDATORY FIRST STEPS, executes all steps, writes output files, and returns a JSON summary.
|
|
5
5
|
|
|
6
6
|
Generate technical architecture decisions, component design, and technology selections based on requirements.
|
|
7
7
|
|
|
@@ -109,10 +109,9 @@ MODE: analysis
|
|
|
109
109
|
EXPECTED: Complete architecture with: style justification, component diagram, tech stack table, ADRs, data model, security controls, API overview
|
|
110
110
|
CONSTRAINTS: Architecture must support all Must-have requirements. Prefer proven technologies over cutting-edge.
|
|
111
111
|
" --tool gemini --mode analysis`,
|
|
112
|
-
run_in_background: true
|
|
113
112
|
});
|
|
114
113
|
|
|
115
|
-
//
|
|
114
|
+
// Parse CLI result
|
|
116
115
|
```
|
|
117
116
|
|
|
118
117
|
### Step 3: Architecture Review via Codex CLI
|
|
@@ -142,10 +141,9 @@ MODE: analysis
|
|
|
142
141
|
EXPECTED: Architecture review with: per-ADR feedback, scalability concerns, security gaps, technology risks, quality rating
|
|
143
142
|
CONSTRAINTS: Be genuinely critical, not just validating. Focus on actionable improvements.
|
|
144
143
|
" --tool codex --mode analysis`,
|
|
145
|
-
run_in_background: true
|
|
146
144
|
});
|
|
147
145
|
|
|
148
|
-
//
|
|
146
|
+
// Parse CLI result
|
|
149
147
|
```
|
|
150
148
|
|
|
151
149
|
### Step 4: Interactive ADR Decisions (Optional)
|