@runfusion/fusion 0.73.0-beta.2 → 0.73.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/agent-browser.mjs +8 -0
  2. package/dist/bin.js +7664 -11386
  3. package/dist/child-process-worker.js +4292 -8374
  4. package/dist/client/.vite/manifest.json +266 -256
  5. package/dist/client/assets/{AgentDetailView-CUoHZPZr.js → AgentDetailView-BBOL6AgZ.js} +3 -3
  6. package/dist/client/assets/{AgentPermissionPolicyEditor-DKoHJIlF.js → AgentPermissionPolicyEditor-DV7OPUhR.js} +1 -1
  7. package/dist/client/assets/{AgentsView-CaBo-FHV.js → AgentsView-B6xoAHyV.js} +4 -4
  8. package/dist/client/assets/ChatView-DwVjnxM8.js +8 -0
  9. package/dist/client/assets/{CommandCenter-wgiEIVuC.js → CommandCenter-DYWaoYFD.js} +9 -9
  10. package/dist/client/assets/DevServerView-BY5up-NA.js +1 -0
  11. package/dist/client/assets/{DirectoryPicker-B7YwgF53.js → DirectoryPicker-fM8MJa2r.js} +1 -1
  12. package/dist/client/assets/DocumentsView-D2KxsPG_.js +1 -0
  13. package/dist/client/assets/{EvalsView-BjyqxMS_.js → EvalsView-U8dOvTRM.js} +1 -1
  14. package/dist/client/assets/{ExperimentalAgentOnboardingModal-_PMSa_gN.js → ExperimentalAgentOnboardingModal-C27y8Y-1.js} +1 -1
  15. package/dist/client/assets/{GoalsView-BzLA8GX9.js → GoalsView-D-2wmy-O.js} +1 -1
  16. package/dist/client/assets/{InsightsView-Cb_tUr1V.js → InsightsView-zLyuQL_l.js} +2 -2
  17. package/dist/client/assets/{MemoryView-CRxOPCQq.js → MemoryView-D-tSn48u.js} +2 -2
  18. package/dist/client/assets/{PiExtensionsManager-XQ5rWJT3.js → PiExtensionsManager-DvwmvGEY.js} +2 -2
  19. package/dist/client/assets/PluginManager-BACOwQAN.js +1 -0
  20. package/dist/client/assets/{PullRequestView-CX6fScVe.js → PullRequestView-DULyv21u.js} +2 -2
  21. package/dist/client/assets/{ReportModal-BSCk5ER1.css → ReportModal-BuhhqtXJ.css} +1 -1
  22. package/dist/client/assets/ReportModal-CUlKMFWa.js +21 -0
  23. package/dist/client/assets/{ResearchView-DgKzxRUL.js → ResearchView-DM_O3IFc.js} +2 -2
  24. package/dist/client/assets/{SecretsView-C83SIrjR.js → SecretsView-Bq3u_nAf.js} +1 -1
  25. package/dist/client/assets/SessionTerminal-D00ByR6U.js +2 -0
  26. package/dist/client/assets/SettingsModal-Bb3pIxiX.js +21 -0
  27. package/dist/client/assets/SettingsModal-CMLHZBhX.css +1 -0
  28. package/dist/client/assets/SettingsModal-QRaBE1ds.js +1 -0
  29. package/dist/client/assets/{SettingsTextareaRow-BKGsmZ7C.js → SettingsTextareaRow-CHOJ-qHz.js} +1 -1
  30. package/dist/client/assets/{SetupWizardModal-DIb4q-VT.js → SetupWizardModal-DriQyd81.js} +2 -2
  31. package/dist/client/assets/{SkillsView-D1Zxh1iX.js → SkillsView-BtDyujiZ.js} +1 -1
  32. package/dist/client/assets/{TodoView-CGIcE6Yr.js → TodoView-BNHUnz50.js} +2 -2
  33. package/dist/client/assets/{WorkflowNodeEditor-BtWrziOX.css → WorkflowNodeEditor-BNgkFJ_P.css} +1 -1
  34. package/dist/client/assets/WorkflowNodeEditor-BXikFpra.js +8 -0
  35. package/dist/client/assets/agent-import-generation-B2kYEm1O.js +1 -0
  36. package/dist/client/assets/app-B_HrdDXZ.js +13 -0
  37. package/dist/client/assets/{app-BsIXfnu-.js → app-C6yo-M_n.js} +1 -1
  38. package/dist/client/assets/{app-B-IdUeIu.js → app-CH8ZgPm4.js} +1 -1
  39. package/dist/client/assets/{app-D9ktpVhR.js → app-D4DpgDss.js} +1 -1
  40. package/dist/client/assets/{app-nBTNvNKK.js → app-Qv0blCyY.js} +1 -1
  41. package/dist/client/assets/{app-C8muVNUU.js → app-kFdtajPy.js} +1 -1
  42. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Dv83GkUE.js → architectureDiagram-3BPJPVTR-B-Efjj4Z.js} +1 -1
  43. package/dist/client/assets/{blockDiagram-GPEHLZMM-B_j-RJOz.js → blockDiagram-GPEHLZMM-CaOVxrlM.js} +1 -1
  44. package/dist/client/assets/{c4Diagram-AAUBKEIU-Cy3f-SD1.js → c4Diagram-AAUBKEIU-D8aYt5F1.js} +1 -1
  45. package/dist/client/assets/channel-5bPK6pTS.js +1 -0
  46. package/dist/client/assets/{chunk-2J33WTMH-CPolddUJ.js → chunk-2J33WTMH-VSDT0J0r.js} +1 -1
  47. package/dist/client/assets/{chunk-4BX2VUAB-BAGPgwkc.js → chunk-4BX2VUAB-Chx1wQgD.js} +1 -1
  48. package/dist/client/assets/{chunk-55IACEB6-dzYFOH0q.js → chunk-55IACEB6-MlqjhIJg.js} +1 -1
  49. package/dist/client/assets/{chunk-727SXJPM-ul9hGhiR.js → chunk-727SXJPM-BheQNUi8.js} +1 -1
  50. package/dist/client/assets/{chunk-AQP2D5EJ-C75yqe4-.js → chunk-AQP2D5EJ-C5EoJhfJ.js} +1 -1
  51. package/dist/client/assets/{chunk-FMBD7UC4-BwiLAyup.js → chunk-FMBD7UC4-B8_8qP3j.js} +1 -1
  52. package/dist/client/assets/{chunk-ND2GUHAM-CVv1sLhy.js → chunk-ND2GUHAM-BuglCGRx.js} +1 -1
  53. package/dist/client/assets/{chunk-QZHKN3VN-D1c-k3xL.js → chunk-QZHKN3VN-B7_06dxp.js} +1 -1
  54. package/dist/client/assets/classDiagram-4FO5ZUOK-Dv9RQDqG.js +1 -0
  55. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dv9RQDqG.js +1 -0
  56. package/dist/client/assets/{cose-bilkent-S5V4N54A-DosMsFd6.js → cose-bilkent-S5V4N54A-Cm-ZOycx.js} +1 -1
  57. package/dist/client/assets/{dagre-BM42HDAG-9os-QBXe.js → dagre-BM42HDAG-Dj_Gwjpv.js} +1 -1
  58. package/dist/client/assets/{dashboard-view-CNVTxyWE.js → dashboard-view-B4CRL5Fy.js} +1 -1
  59. package/dist/client/assets/{dashboard-view-Bn7iL770.js → dashboard-view-noD9p0Zs.js} +1 -1
  60. package/dist/client/assets/{dashboard-view-iwAS1HTp.js → dashboard-view-pXXSUxG9.js} +1 -1
  61. package/dist/client/assets/{diagram-2AECGRRQ-ChjuJgA6.js → diagram-2AECGRRQ-C_9BfShy.js} +1 -1
  62. package/dist/client/assets/{diagram-5GNKFQAL-Cq10aB4z.js → diagram-5GNKFQAL-Cmg2qpCj.js} +1 -1
  63. package/dist/client/assets/{diagram-KO2AKTUF-CKjyrzjg.js → diagram-KO2AKTUF-2FNo2HXb.js} +1 -1
  64. package/dist/client/assets/{diagram-LMA3HP47-DxCc1BsH.js → diagram-LMA3HP47-DgnVeCp-.js} +1 -1
  65. package/dist/client/assets/{diagram-OG6HWLK6-DJWEkDsR.js → diagram-OG6HWLK6-iAIR50HH.js} +1 -1
  66. package/dist/client/assets/{erDiagram-TEJ5UH35-gVkDYC92.js → erDiagram-TEJ5UH35-Da4I04eN.js} +1 -1
  67. package/dist/client/assets/{flowDiagram-I6XJVG4X-1lw1mQRQ.js → flowDiagram-I6XJVG4X-Bv9r2T0m.js} +1 -1
  68. package/dist/client/assets/{folder-open-Nmr7nRmN.js → folder-open-CwWtrDh6.js} +1 -1
  69. package/dist/client/assets/{ganttDiagram-6RSMTGT7-Yzq4WZRo.js → ganttDiagram-6RSMTGT7-BMeO84U_.js} +1 -1
  70. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-cFR9Gv8n.js → gitGraphDiagram-PVQCEYII-CWDh_RIb.js} +1 -1
  71. package/dist/client/assets/index-CB3mYxAB.css +1 -0
  72. package/dist/client/assets/index-CE7C_XsS.js +2661 -0
  73. package/dist/client/assets/{infoDiagram-5YYISTIA-BbRiTnD3.js → infoDiagram-5YYISTIA-BAE4KtCL.js} +1 -1
  74. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DD4i2Znk.js → ishikawaDiagram-YF4QCWOH-C_iXAuOy.js} +1 -1
  75. package/dist/client/assets/{journeyDiagram-JHISSGLW-qHPO2M-C.js → journeyDiagram-JHISSGLW-BnxSHwDo.js} +1 -1
  76. package/dist/client/assets/{kanban-definition-UN3LZRKU-EuFfgxUv.js → kanban-definition-UN3LZRKU-DYNRm3Nu.js} +1 -1
  77. package/dist/client/assets/{mermaid.core-Cru9Vzsy.js → mermaid.core-B3hvDDep.js} +4 -4
  78. package/dist/client/assets/{mindmap-definition-RKZ34NQL-mCvtfapj.js → mindmap-definition-RKZ34NQL-s7KBEuPD.js} +1 -1
  79. package/dist/client/assets/{pieDiagram-4H26LBE5-BSc_a5Dz.js → pieDiagram-4H26LBE5-Cy1_IPUD.js} +1 -1
  80. package/dist/client/assets/{puzzle-Cz66CEWW.js → puzzle-DWc6gFQ7.js} +1 -1
  81. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Um2SLb_d.js → quadrantDiagram-W4KKPZXB-DqgVGp41.js} +1 -1
  82. package/dist/client/assets/{requirementDiagram-4Y6WPE33-B94evN7g.js → requirementDiagram-4Y6WPE33-CA5-TDeF.js} +1 -1
  83. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BH7NLX-K.js → sankeyDiagram-5OEKKPKP-Cuvi3RgE.js} +1 -1
  84. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DusrBGQp.js → sequenceDiagram-3UESZ5HK-Da3GfmGP.js} +1 -1
  85. package/dist/client/assets/{shield-alert-CcQuaRHN.js → shield-alert-_iY63ED4.js} +1 -1
  86. package/dist/client/assets/{standing-instructions-template-CVnY93Xy.js → standing-instructions-template-CCd2YY9c.js} +1 -1
  87. package/dist/client/assets/{stateDiagram-AJRCARHV-GRjL9YlX.js → stateDiagram-AJRCARHV-CZ_I9ENR.js} +1 -1
  88. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-BBsv6ppQ.js → stateDiagram-v2-BHNVJYJU-BomoRVhY.js} +1 -1
  89. package/dist/client/assets/{timeline-definition-PNZ67QCA-DC6UeqjY.js → timeline-definition-PNZ67QCA-C3CYvIuR.js} +1 -1
  90. package/dist/client/assets/{upload-CjJp7lEX.js → upload-D0RrO65v.js} +1 -1
  91. package/dist/client/assets/{users-DgimRYHz.js → users-CGszBY2v.js} +1 -1
  92. package/dist/client/assets/{vennDiagram-CIIHVFJN-C272zK9h.js → vennDiagram-CIIHVFJN-By9fi8NW.js} +1 -1
  93. package/dist/client/assets/{wardley-L42UT6IY-KkRF-2j9.js → wardley-L42UT6IY-DErnXPkI.js} +1 -1
  94. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-B4brtKRt.js → wardleyDiagram-YWT4CUSO-DFfXZVPk.js} +1 -1
  95. package/dist/client/assets/{xychartDiagram-2RQKCTM6--PFSKt1s.js → xychartDiagram-2RQKCTM6-9Y5oZ5mi.js} +1 -1
  96. package/dist/client/index.html +4 -2
  97. package/dist/client/version.json +1 -1
  98. package/dist/extension.js +4516 -8539
  99. package/dist/migrations/0000_initial.sql +2 -0
  100. package/dist/migrations/0026_bigint_counters.sql +85 -14
  101. package/dist/migrations/0033_fn-8505_wedge_notification.sql +5 -0
  102. package/dist/plugin-sdk/index.js +1 -0
  103. package/dist/plugins/.fusion-ce-agents/.fusion-ce-upstream-provenance.json +7 -0
  104. package/dist/plugins/.fusion-ce-agents/ce-adversarial-document-reviewer.md +115 -0
  105. package/dist/plugins/.fusion-ce-agents/ce-adversarial-reviewer.md +111 -0
  106. package/dist/plugins/.fusion-ce-agents/ce-agent-native-planning-strategist.md +71 -0
  107. package/dist/plugins/.fusion-ce-agents/ce-agent-native-reviewer.md +181 -0
  108. package/dist/plugins/.fusion-ce-agents/ce-ankane-readme-writer.md +50 -0
  109. package/dist/plugins/.fusion-ce-agents/ce-api-contract-reviewer.md +52 -0
  110. package/dist/plugins/.fusion-ce-agents/ce-architecture-strategist.md +53 -0
  111. package/dist/plugins/.fusion-ce-agents/ce-best-practices-researcher.md +122 -0
  112. package/dist/plugins/.fusion-ce-agents/ce-code-simplicity-reviewer.md +87 -0
  113. package/dist/plugins/.fusion-ce-agents/ce-coherence-reviewer.md +73 -0
  114. package/dist/plugins/.fusion-ce-agents/ce-correctness-reviewer.md +52 -0
  115. package/dist/plugins/.fusion-ce-agents/ce-data-integrity-guardian.md +75 -0
  116. package/dist/plugins/.fusion-ce-agents/ce-data-migration-reviewer.md +119 -0
  117. package/dist/plugins/.fusion-ce-agents/ce-deployment-verification-agent.md +164 -0
  118. package/dist/plugins/.fusion-ce-agents/ce-design-implementation-reviewer.md +94 -0
  119. package/dist/plugins/.fusion-ce-agents/ce-design-iterator.md +197 -0
  120. package/dist/plugins/.fusion-ce-agents/ce-design-lens-reviewer.md +56 -0
  121. package/dist/plugins/.fusion-ce-agents/ce-feasibility-reviewer.md +65 -0
  122. package/dist/plugins/.fusion-ce-agents/ce-figma-design-sync.md +172 -0
  123. package/dist/plugins/.fusion-ce-agents/ce-framework-docs-researcher.md +100 -0
  124. package/dist/plugins/.fusion-ce-agents/ce-git-history-analyzer.md +47 -0
  125. package/dist/plugins/.fusion-ce-agents/ce-issue-intelligence-analyst.md +207 -0
  126. package/dist/plugins/.fusion-ce-agents/ce-julik-frontend-races-reviewer.md +52 -0
  127. package/dist/plugins/.fusion-ce-agents/ce-learnings-researcher.md +254 -0
  128. package/dist/plugins/.fusion-ce-agents/ce-maintainability-reviewer.md +77 -0
  129. package/dist/plugins/.fusion-ce-agents/ce-pattern-recognition-specialist.md +62 -0
  130. package/dist/plugins/.fusion-ce-agents/ce-performance-oracle.md +115 -0
  131. package/dist/plugins/.fusion-ce-agents/ce-performance-reviewer.md +54 -0
  132. package/dist/plugins/.fusion-ce-agents/ce-pr-comment-resolver.md +63 -0
  133. package/dist/plugins/.fusion-ce-agents/ce-previous-comments-reviewer.md +68 -0
  134. package/dist/plugins/.fusion-ce-agents/ce-product-lens-reviewer.md +92 -0
  135. package/dist/plugins/.fusion-ce-agents/ce-project-standards-reviewer.md +84 -0
  136. package/dist/plugins/.fusion-ce-agents/ce-reliability-reviewer.md +52 -0
  137. package/dist/plugins/.fusion-ce-agents/ce-repo-research-analyst.md +263 -0
  138. package/dist/plugins/.fusion-ce-agents/ce-scope-guardian-reviewer.md +79 -0
  139. package/dist/plugins/.fusion-ce-agents/ce-security-lens-reviewer.md +48 -0
  140. package/dist/plugins/.fusion-ce-agents/ce-security-reviewer.md +54 -0
  141. package/dist/plugins/.fusion-ce-agents/ce-security-sentinel.md +98 -0
  142. package/dist/plugins/.fusion-ce-agents/ce-session-historian.md +89 -0
  143. package/dist/plugins/.fusion-ce-agents/ce-slack-researcher.md +133 -0
  144. package/dist/plugins/.fusion-ce-agents/ce-spec-flow-analyzer.md +87 -0
  145. package/dist/plugins/.fusion-ce-agents/ce-swift-ios-reviewer.md +107 -0
  146. package/dist/plugins/.fusion-ce-agents/ce-testing-reviewer.md +52 -0
  147. package/dist/plugins/.fusion-ce-agents/ce-web-researcher.md +127 -0
  148. package/dist/plugins/.fusion-ce-skills/.fusion-ce-upstream-provenance.json +7 -0
  149. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/SKILL.md +318 -0
  150. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
  151. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/brainstorm-sections.md +354 -0
  152. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/handoff.md +172 -0
  153. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/html-rendering.md +662 -0
  154. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/markdown-rendering.md +236 -0
  155. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/synthesis-summary.md +271 -0
  156. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/universal-brainstorming.md +71 -0
  157. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/visual-probes.md +128 -0
  158. package/dist/plugins/.fusion-ce-skills/ce-brainstorm/scripts/visual-probe-server.js +419 -0
  159. package/dist/plugins/.fusion-ce-skills/ce-code-review/SKILL.md +821 -0
  160. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/action-class-rubric.md +26 -0
  161. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/bulk-preview.md +112 -0
  162. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/cross-model-review.md +63 -0
  163. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/diff-scope.md +41 -0
  164. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/findings-schema.json +137 -0
  165. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/persona-catalog.md +63 -0
  166. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/adversarial-reviewer.md +102 -0
  167. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/agent-native-reviewer.md +173 -0
  168. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/api-contract-reviewer.md +43 -0
  169. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/correctness-reviewer.md +43 -0
  170. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/data-migration-reviewer.md +111 -0
  171. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/deployment-verification-agent.md +157 -0
  172. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/julik-frontend-races-reviewer.md +44 -0
  173. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/learnings-researcher.md +247 -0
  174. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/maintainability-reviewer.md +68 -0
  175. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/performance-reviewer.md +45 -0
  176. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/previous-comments-reviewer.md +59 -0
  177. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/project-standards-reviewer.md +75 -0
  178. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/reliability-reviewer.md +43 -0
  179. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/security-reviewer.md +45 -0
  180. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/swift-ios-reviewer.md +99 -0
  181. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/testing-reviewer.md +43 -0
  182. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/review-output-template.md +170 -0
  183. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/subagent-template.md +199 -0
  184. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/tracker-defer.md +149 -0
  185. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/validator-template.md +89 -0
  186. package/dist/plugins/.fusion-ce-skills/ce-code-review/references/walkthrough.md +249 -0
  187. package/dist/plugins/.fusion-ce-skills/ce-code-review/scripts/cross-model-adversarial-review.sh +218 -0
  188. package/dist/plugins/.fusion-ce-skills/ce-commit/SKILL.md +105 -0
  189. package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/SKILL.md +134 -0
  190. package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/references/branch-creation.md +55 -0
  191. package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/references/pr-description-writing.md +115 -0
  192. package/dist/plugins/.fusion-ce-skills/ce-compound/SKILL.md +712 -0
  193. package/dist/plugins/.fusion-ce-skills/ce-compound/assets/resolution-template.md +94 -0
  194. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
  195. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
  196. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
  197. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
  198. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/performance-oracle.md +108 -0
  199. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/security-sentinel.md +91 -0
  200. package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/session-historian.md +83 -0
  201. package/dist/plugins/.fusion-ce-skills/ce-compound/references/concepts-vocabulary.md +78 -0
  202. package/dist/plugins/.fusion-ce-skills/ce-compound/references/schema.yaml +231 -0
  203. package/dist/plugins/.fusion-ce-skills/ce-compound/references/yaml-schema.md +118 -0
  204. package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/discover-sessions.sh +130 -0
  205. package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-errors.py +254 -0
  206. package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-metadata.py +456 -0
  207. package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-skeleton.py +570 -0
  208. package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/validate-frontmatter.py +137 -0
  209. package/dist/plugins/.fusion-ce-skills/ce-debug/SKILL.md +257 -0
  210. package/dist/plugins/.fusion-ce-skills/ce-debug/references/anti-patterns.md +91 -0
  211. package/dist/plugins/.fusion-ce-skills/ce-debug/references/defense-in-depth.md +35 -0
  212. package/dist/plugins/.fusion-ce-skills/ce-debug/references/investigation-techniques.md +374 -0
  213. package/dist/plugins/.fusion-ce-skills/ce-doc-review/SKILL.md +70 -0
  214. package/dist/plugins/.fusion-ce-skills/ce-ideate/SKILL.md +401 -0
  215. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/issue-intelligence-analyst.md +200 -0
  216. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
  217. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/slack-researcher.md +127 -0
  218. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/web-researcher.md +121 -0
  219. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/divergent-ideation.md +89 -0
  220. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/html-rendering.md +662 -0
  221. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/ideation-sections.md +191 -0
  222. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/markdown-rendering.md +236 -0
  223. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/post-ideation-workflow.md +166 -0
  224. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/universal-ideation.md +107 -0
  225. package/dist/plugins/.fusion-ce-skills/ce-ideate/references/web-research-cache.md +55 -0
  226. package/dist/plugins/.fusion-ce-skills/ce-plan/SKILL.md +858 -0
  227. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/agent-native-planning-strategist.md +62 -0
  228. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/architecture-strategist.md +46 -0
  229. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/best-practices-researcher.md +114 -0
  230. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
  231. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/data-migration-reviewer.md +103 -0
  232. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/deployment-verification-agent.md +157 -0
  233. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/framework-docs-researcher.md +93 -0
  234. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
  235. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/learnings-researcher.md +247 -0
  236. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
  237. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/performance-oracle.md +108 -0
  238. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/repo-research-analyst.md +256 -0
  239. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/security-sentinel.md +91 -0
  240. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/slack-researcher.md +127 -0
  241. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/spec-flow-analyzer.md +80 -0
  242. package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/web-researcher.md +121 -0
  243. package/dist/plugins/.fusion-ce-skills/ce-plan/references/approach-altitude.md +55 -0
  244. package/dist/plugins/.fusion-ce-skills/ce-plan/references/deepening-workflow.md +259 -0
  245. package/dist/plugins/.fusion-ce-skills/ce-plan/references/html-rendering.md +668 -0
  246. package/dist/plugins/.fusion-ce-skills/ce-plan/references/markdown-rendering.md +236 -0
  247. package/dist/plugins/.fusion-ce-skills/ce-plan/references/plan-handoff.md +126 -0
  248. package/dist/plugins/.fusion-ce-skills/ce-plan/references/plan-sections.md +405 -0
  249. package/dist/plugins/.fusion-ce-skills/ce-plan/references/synthesis-summary.md +396 -0
  250. package/dist/plugins/.fusion-ce-skills/ce-plan/references/universal-planning.md +168 -0
  251. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/SKILL.md +53 -0
  252. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/agents/pr-comment-resolver.md +56 -0
  253. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/evaluation-rubric.md +106 -0
  254. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/full-mode.md +283 -0
  255. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/targeted-mode.md +45 -0
  256. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/get-pr-comments +159 -0
  257. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/get-thread-for-comment +76 -0
  258. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/reply-to-pr-thread +33 -0
  259. package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/resolve-pr-thread +23 -0
  260. package/dist/plugins/.fusion-ce-skills/ce-strategy/SKILL.md +97 -0
  261. package/dist/plugins/.fusion-ce-skills/ce-strategy/references/interview.md +143 -0
  262. package/dist/plugins/.fusion-ce-skills/ce-strategy/references/strategy-template.md +89 -0
  263. package/dist/plugins/.fusion-ce-skills/ce-work/SKILL.md +429 -0
  264. package/dist/plugins/.fusion-ce-skills/ce-work/references/agents/figma-design-sync.md +165 -0
  265. package/dist/plugins/.fusion-ce-skills/ce-work/references/execution-engines.md +85 -0
  266. package/dist/plugins/.fusion-ce-skills/ce-work/references/non-code-execution.md +23 -0
  267. package/dist/plugins/.fusion-ce-skills/ce-work/references/review-findings-followup.md +104 -0
  268. package/dist/plugins/.fusion-ce-skills/ce-work/references/shipping-workflow.md +133 -0
  269. package/dist/plugins/.fusion-ce-skills/ce-work/references/tracker-defer.md +149 -0
  270. package/dist/plugins/fusion-plugin-compound-engineering/.bundled.reload-3.js +11266 -0
  271. package/dist/plugins/fusion-plugin-compound-engineering/.bundled.reload-4.js +11266 -0
  272. package/dist/plugins/fusion-plugin-dependency-graph/.bundled.reload-1.js +8206 -0
  273. package/dist/plugins/fusion-plugin-grok-runtime/.bundled.reload-2.js +26623 -0
  274. package/package.json +6 -3
  275. package/skill/fusion/references/engine-tools.md +6 -2
  276. package/dist/client/assets/ChatView-Bv0J5p5U.js +0 -8
  277. package/dist/client/assets/DevServerView-Ue9XG_4H.js +0 -1
  278. package/dist/client/assets/DocumentsView-C1Ptwcv5.js +0 -1
  279. package/dist/client/assets/PluginManager-CXPSlWxs.js +0 -1
  280. package/dist/client/assets/ReportModal-JhZZXZlj.js +0 -21
  281. package/dist/client/assets/SessionTerminal-BrK3psiC.js +0 -2
  282. package/dist/client/assets/SettingsModal-Bby9vLGx.js +0 -21
  283. package/dist/client/assets/SettingsModal-DVLqY1-7.js +0 -1
  284. package/dist/client/assets/SettingsModal-DXArgTTx.css +0 -1
  285. package/dist/client/assets/WorkflowNodeEditor-BXUC0lim.js +0 -8
  286. package/dist/client/assets/app-DUszvars.js +0 -13
  287. package/dist/client/assets/channel-BuhC8kaT.js +0 -1
  288. package/dist/client/assets/classDiagram-4FO5ZUOK-vpRR5WOg.js +0 -1
  289. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-vpRR5WOg.js +0 -1
  290. package/dist/client/assets/index-Cg9ahVtV.js +0 -2661
  291. package/dist/client/assets/index-uhXHk1ek.css +0 -1
@@ -0,0 +1,396 @@
1
+ # Scoping Synthesis
2
+
3
+ **Scoping synthesis ≠ plan doc.** The scoping synthesis is the scope/decisions checkpoint that plan-write (Phase 5.2) consumes as input. It surfaces decisions the agent CAN make at synthesis time: scope-level (does this plan cover the full brainstorm or narrow to a subset?), posture (extend existing pattern vs. introduce new abstraction), test approach. It does NOT surface decisions plan-write produces: PR count, commit/branch sequencing, effort or time estimates, Implementation Unit lists, exact file paths, test command recipes. If the synthesis claims any of those, it has leaked plan-write thinking and must be re-cut to scope-decisions only. Even when the agent has formed plan-write opinions earlier in the session, the synthesis stays at scope altitude — the user is being asked to affirm scope, not to rubber-stamp implementation.
4
+
5
+ **Two-stage shape: internal draft, then chat-time synthesis.** The synthesis is composed in two stages. Stage 1 is an internal three-bucket draft (Stated / Inferred / Out of scope) the agent uses to think comprehensively about scope. Stage 2 is the compressed chat-time output: a tier-shaped summary plus "Call outs" (zero or more, capped by plan depth — see the cap table under "How many call-outs are right?") — the specific forks where the user might redirect. The user only sees stage 2. The internal draft still informs the plan body via the doc-shape routing below; it just doesn't reach the user verbatim. This split exists because the comprehensive audit shape produced too much detail for the user to weigh in on, even when the granularity rules were followed.
6
+
7
+ **Three-bucket structure is the internal draft, not the user-facing artifact.** It does its scope-thinking job during stage 1 and dissolves when Phase 5.2 writes the plan: Stated content informs the Product Contract's Requirements, Inferred content informs Key Technical Decisions / Implementation Units (interactive mode) or the Planning Contract's `### Assumptions` (non-interactive mode), Out-of-scope content informs the Product Contract's Scope Boundaries. The plan has no parallel `## Synthesis` section — only the stage-2 summary embeds, under the Product Contract's `### Summary`. See "Doc shape after confirmation" below for the exact routing and section nesting.
8
+
9
+ This content is loaded when a synthesis-summary phase fires in ce-plan. There are two variants — they share structure but differ in timing and content focus:
10
+
11
+ - **Solo variant** (Phase 0.7): fires after Phase 0.4 bootstrap and Phase 0.6 depth classification, before Phase 1 research begins. Catches scope misinterpretation before sub-agent dispatch is spent. Full breadth — problem frame, intended behavior, success criteria, in/out scope.
12
+ - **Brainstorm-sourced variant** (Phase 5.1.5): fires after Phase 1 research, before Phase 5.2 plan-write. Focuses on plan-time decisions (which files/modules to touch, which patterns extended vs. introduced new, test scope, refactor scope). Brainstorm-validated WHAT is assumed and not re-stated.
13
+
14
+ Both variants share the two-stage shape, the keep test for call-outs, soft-cut behavior, and the doc-shape routing. In non-interactive (headless) mode, both compose the internal draft and skip stage 2 — the user-facing compression is moot when there is no synchronous user. The internal draft dissolves into the plan body the same way, with Inferred bets routing to a `## Assumptions` section. See "Headless mode (shared)" below for the full routing.
15
+
16
+ ---
17
+
18
+ ## Stage 1: internal three-bucket draft (shared)
19
+
20
+ The internal draft is structured in three labeled buckets. Items may appear in two buckets when meaningfully both — flag the inclusion-then-exclusion as Inferred so the reasoning is captured.
21
+
22
+ - **Stated** — what the user said directly (in the original prompt, prior conversation, dialogue answers, or the upstream brainstorm doc when present). Items here have explicit user-language anchors.
23
+ - **Inferred** — what the agent assumed to fill gaps. Scope boundaries the user never explicitly named, success criteria extrapolated from intent, technical assumptions made because the brief interview didn't probe them. The Inferred list is the most actionable bucket — items here are the agent's bets that the user can correct.
24
+ - **Out of scope** — deliberately excluded items. Adjacent work the agent considered but decided not to include, refactors, nice-to-haves, future-work items.
25
+
26
+ This draft is internal. Do not paste it verbatim into chat. Compose it as a thinking step, then derive stage 2 from it.
27
+
28
+ ---
29
+
30
+ ## Stage 2: chat-time scoping synthesis
31
+
32
+ Stage 2 is what the user actually sees. The shape differs between variants because they serve different purposes — brainstorm-sourced plans inherit a validated WHAT and surface plan-specific HOW; solo plans have no upstream and the synthesis is the WHAT.
33
+
34
+ ### Brainstorm-sourced shape (Phase 5.1.5)
35
+
36
+ Two content sections plus call-outs:
37
+
38
+ 1. **Brainstorm-scope restatement** (1-2 sentences, prose). Restates the brainstorm's scope as orientation. The user wrote this content, but the synthesis may be read days later or in parallel with other plans — the restatement is the topic anchor that says "this is the artifact we're planning against." Stay in the brainstorm's own vocabulary. Do NOT enumerate Implementation Units, restate constraints back at the user, or list acceptance examples.
39
+
40
+ 2. **Plan-specific scoping decisions** (prose, or bullets when multi-faceted). Scope-level commitments the agent made that the brainstorm did not: does this plan cover the full brainstorm scope or narrow to a subset; are adjacent refactors pulled in or held out; what test scope at scenario level (which sites, which acceptance examples). Each item must pass the **affirmability test** — the user can affirm or redirect it without reading code. This section is scope claims at affirm-or-redirect level, NOT a description of where the implementation reaches, NOT PR count or commit sequencing, NOT Implementation Unit lists, NOT exact file paths or test commands — those are all plan-write outputs the synthesis cannot honestly claim. If the plan covers the full brainstorm scope with no narrowing, expansions, or adjacent work, this section stays short ("This plan covers the full brainstorm scope; test scope is X").
41
+
42
+ 3. **Call outs** (zero or more, capped by plan depth — see "How many call-outs are right?" below). Each a real fork where the user's input materially changes the plan. Omit the "Call outs:" header entirely when zero forks survived the keep test.
43
+
44
+ ### Solo shape (Phase 0.7)
45
+
46
+ No upstream document; the synthesis itself is the scope claim:
47
+
48
+ 1. **Scope claim** (prose, or bullets when multi-faceted). What the agent is planning to build, at affirm-or-redirect level — names what's in and what's out. NOT an enumeration of Implementation Units the plan will contain.
49
+
50
+ 2. **Call outs** (zero or more, capped by plan depth). Same as brainstorm-sourced.
51
+
52
+ ### Shape budgets
53
+
54
+ Tier-aware budgets are **ceilings, not targets**. Less is correct when there isn't more to say — filling the budget produces noise.
55
+
56
+ | Plan depth | Restatement (brainstorm-sourced) | Plan-specific scoping (brainstorm-sourced) / Scope claim (solo) |
57
+ |---|---|---|
58
+ | Lightweight | 1 sentence | 1-3 lines prose |
59
+ | Standard | 1-2 sentences | up to 3-5 lines or 2-4 bullets |
60
+ | Deep | 1-2 sentences | up to 4-6 lines or 3-6 bullets |
61
+
62
+ Form within each section (prose, bullets, mix) follows whatever communicates best.
63
+
64
+ ### Shared rules
65
+
66
+ - **No "Stated" bucket in chat** (the orientation or scope-claim covers it).
67
+ - **No "Out of scope" bucket as a separate list** — fold a non-obvious exclusion into a call-out when it survives the keep test, otherwise drop it.
68
+ - **Source-document vocabulary.** When a brainstorm exists, use its terms. Don't invent agent-coded shorthand (e.g., "skill-instruction shape", "hooks engine selection at Step 2a entry"). When referencing acceptance examples, requirements, or flows, name them in plain terms ("the install-prompt acceptance case") — never use bare IDs.
69
+
70
+ - **Pre-emit mechanical checks.** Before emitting the synthesis, scan the output:
71
+ - **Bare ID references** (`AE\d+`, `R\d+`, `F\d+`, `A\d+`, `U\d+`) → replace with plain names. Mixed forms (case named AND ID cited) still violate the rule because the ID adds noise without information.
72
+ - **File paths** (`path/like.md`, `path/like.py`, `internal/cli/...`, `skills/.../...`, etc.) → cut unless the path IS the topic of an explicit fork in the call-outs. Allowed: "cleanup hook in the existing archive step vs. a new dedicated phase" (where the path is implicit in the decision). Forbidden: paths listed to demonstrate completeness, preview Implementation Units, or describe where the implementation reaches. The synthesis names *what* the plan targets, not *where* the code lives.
73
+
74
+ ### The keep test for each call-out
75
+
76
+ Before keeping a candidate call-out from the internal draft, run the **affirmability test**: would the user need to look at code to evaluate this? If yes, it is plan-body content — cut. If no, apply the keep test — one of the following must be true:
77
+
78
+ - **Real fork**: another reasonable agent might choose differently on this dimension (extend pattern X vs. introduce abstraction Y; scan source A vs. source B; etc.)
79
+ - **Non-obvious behavioral choice**: a default the agent picked that the user would not see by reading the summary alone, but that materially affects what the plan does (e.g., "scans the working-dir snapshot before the copy step" — the user would not infer the scan target from a description of the gate's purpose)
80
+ - **Non-obvious exclusion**: an item was deliberately excluded that the user might want to add back in
81
+ - **Cheap-now-expensive-later correction**: a bet the user is well-placed to redirect now that would be expensive to undo after research or plan-write
82
+
83
+ Cut anything else, including:
84
+
85
+ - Mechanical items where there is no real alternative (e.g., "no new dependencies" when the work clearly does not need any)
86
+ - Implementation choices that will be settled during the work (e.g., regex precision tuned during impl)
87
+ - Items already implied by the summary
88
+
89
+ ### The detail test (per call-out and per summary bullet)
90
+
91
+ After the keep test, every surviving item runs the **detail test**: 1-2 lines max, conversational not documentary. A call-out or summary bullet that runs to 4+ lines of dense prose is naming an implementation consequence rather than a decision — re-cut at higher abstraction.
92
+
93
+ The keep test addresses *which* items survive. The detail test addresses *how much* each surviving item says. Without it, the count cap is gameable: an agent can hit "3 call-outs" while each call-out is a 6-line paragraph, and the synthesis reads as a doc preview instead of a checkpoint.
94
+
95
+ ### How many call-outs are right?
96
+
97
+ The cap is heuristic, not law. The real discipline is the keep test on each candidate. Typical bounds by plan depth:
98
+
99
+ | Plan depth | Typical | Cap |
100
+ |---|---|---|
101
+ | Lightweight | 0-2 | 3 |
102
+ | Standard | 1-3 | 4 |
103
+ | Deep | 2-5 | 6 |
104
+
105
+ **If the stage-2 pass exceeds the tier cap, OR any call-out or summary bullet runs to 4+ lines of dense prose, the synthesis is misshapen — do not raise the cap or accept the bloat, re-cut at a higher level of abstraction.** Almost always, 2-3 of those call-outs are sub-decisions of one larger fork (file path, flag name, JSON key behavior, and dependency choice are usually four facets of one "how to extend the existing scaffold" decision, not four independent forks). Collapse related call-outs into a single decision named at the level the user actually weighs in on. The user's job is to redirect forks, not to validate every implementation consequence of a fork they have already implicitly agreed to by accepting the higher-level decision.
106
+
107
+ A useful test: read the call-outs aloud. If two or more sound like "and also" extensions of the same idea, they belong as one.
108
+
109
+ ### Anti-patterns in call-outs
110
+
111
+ Each anti-pattern below produces a call-out that fails the affirmability test. If a candidate call-out matches one of these, it is plan-body content — cut, do not rephrase.
112
+
113
+ - Names a file path or module name (`internal/artifacts/pii.go`)
114
+ - Names a flag, env var, or exact env value (`--accept-redaction-list=<finding-id,...>`)
115
+ - Specifies a JSON shape, response format, or exact data structure
116
+ - Names HTTP status codes, event names, or exact error wording
117
+ - Describes implementation flow ("first X, then Y, then Z")
118
+ - Names exact method signatures, call graphs, or SQL syntax
119
+ - States a mechanical choice with no real alternative ("uses stdlib regexp")
120
+
121
+ The line-number, signature, and code-spec rules are not new — they have always been forbidden in Inferred bullets. They apply equally to call-outs, which are now the user-facing surface.
122
+
123
+ ---
124
+
125
+ ## When to skip the blocking confirmation
126
+
127
+ The auto-proceed path (announce without waiting for user confirmation) fires only when **plan depth is Lightweight AND zero call-outs survive the keep test**. For Standard or Deep plans, always fire the confirmation gate even when zero call-outs survive — substance earns the checkpoint, not interaction history. A Deep plan with rich silent decisions and a 1-3 line summary is exactly the case where rubber-stamping is most likely; the explicit confirmation request gives the user a real chance to push back before research or plan-write proceeds.
128
+
129
+ When auto-proceed applies (Lightweight + zero call-outs), emit a one-line announcement and continue:
130
+
131
+ ```
132
+ Planning: [1-3 line summary]
133
+
134
+ No open decisions to weigh in on — proceeding to [research / plan-write]. Interrupt if I have the scope wrong.
135
+ ```
136
+
137
+ The announcement is mandatory when skipping — silent proceeding is not allowed. The "why" (no forks worth flagging) must be visible.
138
+
139
+ For Standard/Deep with zero call-outs, the confirmation template still fires; the "Call outs:" header is simply omitted. The user gets the summary plus the explicit confirmation request.
140
+
141
+ ---
142
+
143
+ ## Synthesis structural discipline (shared)
144
+
145
+ Both variants share these structural rules. They address failure modes where the synthesis becomes a Phase 5.2 (plan-write) preview instead of a scope checkpoint.
146
+
147
+ **Summary leads, call-outs follow** — not the reverse, and no separate framing block above. Putting extensive content ABOVE the synthesis (an approach pitch, files-touched bullets, rationale block) inverts the structure: the synthesis becomes a footnote to the proposal instead of the proposal being a tier-budgeted summary the call-outs depend on.
148
+
149
+ **Anti-pattern: synthesis as plan-pitch.** Plan-body content — file paths, code shapes, sentinel strings, exact error messages, "Recommendation" / "Behavior when X" / "Why this shape" rationale — does not belong in chat output regardless of where it appears: not in a block above the call-outs, not inside the summary, and not nested in a call-out's commentary or sub-bullets. The position rule and the content rule are independent: a structurally-legal placement (inside a call-out bullet) does not legitimize plan-body content. If you find yourself writing it anywhere, stop. That content is Phase 5.2 (plan-write) territory — it belongs in the plan body the next phase will write, not in the synthesis presentation. The synthesis is a scope/decisions checkpoint: a tier-budgeted summary plus call-outs bounded by the tiered cap (see "How many call-outs are right?"). Implementation detail leaking into the synthesis (anywhere) is a sign Phases 1-4 (research and structuring) and Phase 5.2 (plan-write) have collapsed into the synthesis-confirmation step.
150
+
151
+ **Anti-pattern: numerical attestation.** "All nine requirements covered," "all three flows in scope," "five acceptance examples addressed," counts of files or test scenarios. These are the agent showing its work or attesting completeness, not naming scope decisions. "Covers the full brainstorm scope" already conveys the claim; the count adds nothing the user can affirm or redirect. Cut the numbers; keep the scope claim.
152
+
153
+ **A revision is not a confirmation.** After any user revision (even a trivially-understood swap), integrate the change, re-present the revised stage 2 with the change reflected, and wait for explicit confirmation before writing the plan. The loop is:
154
+
155
+ 1. Present stage 2 → user responds
156
+ 2. User confirms → write the plan
157
+ 3. User revises → integrate, re-present revised stage 2, return to step 1
158
+
159
+ Plan-write (Phase 5.2) fires only on explicit confirm or after the soft-cut blocking question's "proceed" option. Never write immediately after a revision, even when the revision is small enough that the agent feels it understood — the confirmation step is what makes the synthesis **confirmed** rather than "agent's last proposal."
160
+
161
+ ---
162
+
163
+ ## Granularity: name the decision; don't expand it (shared)
164
+
165
+ Each call-out should be affirmable or rejectable by the user **without reading code**. Name the decision at the granularity that lets the user say "yes" or "I want X instead." Anything more specific is plan-body content — Phase 5.2's job, not synthesis's.
166
+
167
+ **Allowed** (when these ARE the decisions being made):
168
+ - File / module names — "skip filter in the matcher" when "where to put it" is the choice
169
+ - Pattern names — "extends the existing event-skip pattern" when "extend vs. introduce" is the choice
170
+ - Column / table names — "user-TZ" or "destination-calendar TZ" when "which source" is the choice
171
+ - Approach posture — "DB-side query with Google-side fallback" when "which strategy" is the choice
172
+
173
+ **Not allowed** (always plan-body, regardless of variant):
174
+ - Line numbers (`route.ts:249-255`)
175
+ - Exact method signatures, call graphs, or implementation flow ("at the top, before include/exclude evaluation, returning ...")
176
+ - Exact JSON / response shapes (`{pause, cleanup: {eventsDeleted, eventsFailed, errors}}`)
177
+ - HTTP status codes (`409`, `404`, `403`)
178
+ - Exact event / activity-log / type names (`userPauseSet/userPauseEdited/...`)
179
+ - Exact wording of error messages or UI labels
180
+ - SQL syntax or query bodies
181
+
182
+ The line is drawn slightly differently per variant. **Solo (Phase 0.7)** stays at the higher level — brainstorm's WHAT hasn't been validated yet, so file/module names are usually too specific; talk in terms of "the rule entity," not "syncRules table." **Brainstorm-sourced (Phase 5.1.5)** allows the file / module / pattern / column level when those ARE plan-time decisions, but not implementation flow specifics.
183
+
184
+ ### Bad-vs-good examples
185
+
186
+ | Plan-body in call-out (wrong) | Decision-level (right) |
187
+ |---|---|
188
+ | Timezone source: `users.timezone` (IANA), fallback to destination calendar TZ if null. Research found `useTimezoneSync` and `ProtectionStatsCalculator` establish the pattern. | Timezone source: user-TZ (reverses brainstorm's tentative lean — research found established infra and pattern precedent) |
189
+ | Skip filter goes in `RuleMatcher.eventMatchesRule` at the top, before include/exclude evaluation, using the existing `filteredReason` mechanism. | Skip filter extends the existing event-skip pattern in the matcher (vs. introducing a new mechanism) |
190
+ | Reactivation guard: explicit safety in `[ruleId]/route.ts` PATCH — when `isActive: false → true`, the existing handler clears `status/pausedAt/pausedReason`. | Reactivation guard: pause window state preserved through the isActive toggle's existing system-pause-clearing path |
191
+ | Partial cleanup failure response: `{pause, cleanup: {eventsDeleted, eventsFailed, errors}}`; pause window persists regardless of cleanup outcome. | Partial cleanup failure: pause window persists; partial-failure response mirrors the existing rule-edit precedent |
192
+
193
+ The test: a scanner reading a call-out should affirm or reject it without needing to read code. If they would have to look up a column name, method name, or call graph to evaluate the call-out, the granularity is wrong — that's plan-body content.
194
+
195
+ ### Worked example: compression from internal draft to call-outs
196
+
197
+ For a PII redaction gate proposal where the internal draft had 4 Stated items, 7 Inferred items, and 3 Out-of-scope items, the compressed stage 2 looks like:
198
+
199
+ ```
200
+ Planning a mechanical PII redaction gate before promote (the unguarded leak path from the amazon-orders retro) and alongside the existing vendor-prefix scanner at publish. Phase-1 detectors are shape-only — card last-4, postal address, JSON person names. Default halts; per-finding ack via flag.
201
+
202
+ **Call outs:**
203
+ - Person-name filter works by JSON key (allowlist of attribution keys: `printer`, `printer_name`, `owner_name`, `author`), not by name value.
204
+ - Promote scans the working-dir snapshot before the copy step, not the staged copy.
205
+ - Publish combines PII + vendor-prefix findings into one report, not fail-fast on first.
206
+
207
+ Confirm and I'll proceed to research, drawing on this scope.
208
+ ```
209
+
210
+ What got cut from the internal draft and why:
211
+
212
+ - "Module name: `internal/artifacts/pii.go`" — plan-body content (file path), fails affirmability test
213
+ - "Flag name: `--accept-redaction-list=<finding-id,...>`" — plan-body content (exact flag string), fails affirmability test
214
+ - "No new dependencies — stdlib regexp + filepath.WalkDir only" — mechanical, no real alternative
215
+ - "Detector regex precision tuned during implementation" — deferred-impl, not a plan-time fork
216
+ - All three Out-of-scope items — either restated in prose ("defer to #960") or implicitly excluded by scope
217
+
218
+ What survived: three real forks where another reasonable agent might choose differently and the user can correct cheaply now. Each is affirmable in one sentence without reading code.
219
+
220
+ ---
221
+
222
+ ## Solo variant (Phase 0.7)
223
+
224
+ Fires only when:
225
+ - Phase 0.2 found no upstream brainstorm doc
226
+ - AND Phase 0.4 stayed in ce-plan (did not route to ce-debug, ce-work, or universal-planning)
227
+ - AND Phase 0.5 cleared (no unresolved blockers)
228
+ - AND not on Phase 0.1 fast paths (resume normal, deepen-intent)
229
+
230
+ Each guard is an explicit conditional in SKILL.md, not implicit. R2 solo does NOT fire on resume/deepen, route-out, or brainstorm-sourced paths.
231
+
232
+ **Content focus**: full-breadth internal draft. Phase 0.4 bootstrap is brief by design ("ask one or two clarifying questions"), so the agent has made substantial inferences before Phase 0.7 fires. The Inferred bucket in the internal draft is especially load-bearing here — the agent's bets are widest. Stage 2 compression still applies: most of those inferences will not survive the keep test, and that is correct — the user should only see the forks they can meaningfully redirect.
233
+
234
+ **Counter-warning for rich-context invocations.** When the inference source is *not* just Phase 0.4 bootstrap — e.g., a prior in-conversation validation agent, completed sibling work units earlier in the same session, or a planning artifact already in the conversation — the temptation is to dump that material into call-outs verbatim. The granularity rules tighten in this case, not loosen: the agent has more material to compress, not more material to expose. A bet that's already been validated upstream is **Stated** (internal), not Inferred (internal); a bet whose specifics belong in plan-body is named at decision-level in the call-out regardless of how much detail upstream context provided. If recent turns produced detailed code, file paths, or research artifacts, expect the internal draft to over-share and compress proactively before stage 2.
235
+
236
+ **Why pre-research, not pre-write**: research effort would be wasted if scope is wrong. Catching scope errors before sub-agent dispatch (Phase 1.1's repo-research-analyst, learnings-researcher, etc.) saves token and time cost.
237
+
238
+ ### Stage 2 template (solo)
239
+
240
+ **Summary discipline (required):** describe **what scope the plan will target**, forward-looking (what *will* be planned), not retrospective. The summary's job is to help the user pattern-match against intent before reading call-outs — solo invocation has minimal pre-write dialogue, so the summary is especially load-bearing here. Form (prose, bullets, mix) and length follow the tier budget in "Stage 2: chat-time scoping synthesis" above; detail test applies per bullet.
241
+
242
+ **Anti-fluff guidance:** lead with the actual thing being planned in plain words. No qualifiers ("comprehensive," "thoughtful," "substantive"). No re-stating the user's prompt. If the scope cannot be said within the tier budget without filler, the synthesis isn't ready yet.
243
+
244
+ **Confirmation template (fires for Standard/Deep regardless of call-out count, or for any tier with one or more call-outs surviving):**
245
+
246
+ ```
247
+ Based on your request and our brief discussion, here's the scope I'm proposing to plan against:
248
+
249
+ [scope claim — what the plan will target, what it will not; affirm-or-redirect level; NOT an enumeration of Implementation Units]
250
+
251
+ **Call outs:** (omit this header when zero forks survived the keep test)
252
+ - [decision-level fork in 1-2 lines: name the choice and optional one-clause trade-off in parens. NO multi-sentence rationale, NO "my default is X" pitch — those belong in Key Technical Decisions in the plan body, not the synthesis]
253
+
254
+ Confirm and I'll proceed to research, drawing on this scope. (You can also redirect to /ce-brainstorm if this is bigger than you initially thought — I'll stop here and load it for you.)
255
+ ```
256
+
257
+ **Auto-proceed template (fires only for Lightweight with zero call-outs):**
258
+
259
+ ```
260
+ Planning: [1-3 line scope claim]
261
+
262
+ No open decisions to weigh in on — proceeding to research. Interrupt if I have the scope wrong.
263
+ ```
264
+
265
+ Then continue to Phase 1 without waiting. Use prose for any user response that does arrive (no `AskUserQuestion` menu). Justification is Interaction Rule 5(a) in SKILL.md.
266
+
267
+ ---
268
+
269
+ ## Brainstorm-sourced variant (Phase 5.1.5)
270
+
271
+ Fires only when:
272
+ - Phase 0.2 found upstream brainstorm doc (brainstorm-sourced invocation)
273
+ - AND not on Phase 0.1 fast paths
274
+
275
+ **Content focus**: plan-time decisions only. The brainstorm + R1 synthesis already validated WHAT to build; the internal draft and stage 2 surface HOW the plan will execute that work — decisions the brainstorm did not make.
276
+
277
+ Items to surface in the internal draft:
278
+ - **Files/modules to touch (and not touch)** — what the implementation reaches into
279
+ - **Patterns extended vs. introduced new** — architectural decisions the agent made within confirmed scope (R2's content focus, not bias toward either direction)
280
+ - **Test scope** — which existing-but-untested code is in/out of test scope for this work
281
+ - **Refactor scope** — adjacent cleanup, if any, going to deferred items vs. active diff
282
+ - **Cross-cutting impact** — auth, migrations, shared types when they're touched
283
+
284
+ Most of these will not survive the keep test as separate call-outs. Surface only the forks where another reasonable agent might choose differently and the user can correct cheaply now.
285
+
286
+ **Reads from the Product Contract, not a synthesis section**: the upstream artifact is a requirements-only unified plan (`product_contract_source: ce-brainstorm`), not a separate brainstorm doc, and it has no `## Synthesis` section (the synthesis is a chat-time artifact in ce-brainstorm; only the prose summary embeds, under the Product Contract). Phase 5.1.5 derives plan-time decisions from the Product Contract's sections — Summary, Problem Frame, Requirements, Key Flows, Scope Boundaries — plus Phase 1 research. Legacy standalone requirements docs (`origin: docs/brainstorms/...`) and older brainstorms that may carry a legacy `## Synthesis` section still work; that content is treated as supplementary, not authoritative, with the Product Contract / body sections taking precedence.
287
+
288
+ **Why pre-write, not pre-research**: brainstorm doc + R1 synthesis already validated WHAT, so research is well-targeted. Plan-time decisions emerge during research and structuring (Phases 1-4), so pre-write catches them at the latest cheap moment — before Phase 5.2 commits the plan to disk.
289
+
290
+ ### Stage 2 template (brainstorm-sourced)
291
+
292
+ **Summary discipline (required):** describe **how the implementation approaches the work** at a high level — files/modules touched, patterns extended vs. introduced, scope boundaries the plan honors. Forward-looking (what *will* be in the plan), not retrospective. Brainstorm-validated WHAT is assumed; the summary covers HOW. Form (prose, bullets, mix) and length follow the tier budget in "Stage 2: chat-time scoping synthesis" above; detail test applies per bullet.
293
+
294
+ **Anti-fluff guidance:** lead with the actual implementation shape in plain words. No qualifiers, no re-stating the brainstorm's WHAT. If the summary just restates the brainstorm's Problem Frame, rewrite it to focus on plan-time decisions.
295
+
296
+ **Confirmation template (fires for Standard/Deep regardless of call-out count, or for any tier with one or more call-outs surviving):**
297
+
298
+ ```
299
+ The brainstorm scopes [1-2 sentence restatement of the brainstorm's scope as orientation; in the brainstorm's own vocabulary; NOT an enumeration of Implementation Units, constraints, or acceptance examples].
300
+
301
+ This plan [plan-specific scoping: what's covered vs. deferred vs. expanded relative to the brainstorm; test scope; any adjacent refactors pulled in or held out. Prose or bullets per substance].
302
+
303
+ **Call outs:** (omit this header when zero forks survived the keep test)
304
+ - [plan-time fork in 1-2 lines: name the choice and optional one-clause trade-off in parens. NO multi-sentence rationale, NO "my default is X" pitch — those belong in Key Technical Decisions in the plan body, not the synthesis]
305
+
306
+ Confirm and I'll write the plan next, drawing on the brainstorm, research, and this synthesis.
307
+ ```
308
+
309
+ **Auto-proceed template (fires only for Lightweight with zero call-outs):**
310
+
311
+ ```
312
+ Planning [brief brainstorm-scope restatement] — [plan-specific shape in one clause].
313
+
314
+ No open decisions to weigh in on — proceeding to plan-write. Interrupt if I have the scope wrong.
315
+ ```
316
+
317
+ Then continue to Phase 5.2 without waiting. Use prose for any user response that does arrive. Justification is Interaction Rule 5(a).
318
+
319
+ ---
320
+
321
+ ## Soft-cut on circularity (shared)
322
+
323
+ Track which call-outs the user touched per round. The soft-cut blocking question fires **only when the same call-out is revised twice** (or a third-round revision targets a call-out already revised in round two). New-call-out revisions across rounds proceed without limit.
324
+
325
+ **Identity across rounds is by decision dimension, not surface wording.** A revision may cause stage 2 to re-derive — the same underlying fork can come back rephrased, merged with another call-out, or split into two. "Same call-out" means the same decision being made (e.g., "where does the scan run" stays one decision whether it's worded as "promote scans the working-dir snapshot" or "scan target: pre-copy working dir"). When a re-cut collapses multiple prior call-outs into one, the new combined call-out inherits the "touched" status of any of its constituents — soft-cut fires if any of those underlying decisions was already revised once before.
326
+
327
+ When the soft-cut fires, use the platform's blocking question tool with two options:
328
+
329
+ - `Proceed and continue to [research / plan-write]`
330
+ - `Hold off — keep discussing before continuing`
331
+
332
+ Fall back to numbered list in chat only when no blocking tool exists or the call errors. Never silently skip.
333
+
334
+ ---
335
+
336
+ ## Headless mode (shared)
337
+
338
+ When the skill is invoked from an automated workflow such as LFG or any `disable-model-invocation` context, the skill runs in non-interactive mode (no synchronous user). The artifact is read by downstream skills (ce-doc-review, ce-work) and human reviewers (PR review).
339
+
340
+ **Stage 2 is moot in headless mode.** Compose the internal draft (stage 1) as usual, but skip the chat-time compression — there is no synchronous user to confirm to, no call-outs to derive, no auto-proceed announcement. Route the internal draft directly into the plan body via the doc-shape table below.
341
+
342
+ **Per-variant behavior** (the timing matters for which phases follow):
343
+
344
+ - **Solo variant (Phase 0.7)**: fires *before* research. Compose the internal draft and continue to Phase 1 research as normal. Inferred content is held until plan-write (Phase 5.2), where it routes to `## Assumptions`.
345
+ - **Brainstorm-sourced variant (Phase 5.1.5)**: fires *after* research, before plan-write. Compose the internal draft and proceed to Phase 5.2 plan-write. Inferred content routes to `## Assumptions`.
346
+
347
+ **Shared behavior across both variants:**
348
+
349
+ - **No user prompt; no stage 2; no auto-proceed announcement.** All three are moot.
350
+ - **Route internal-draft content with mode-aware shape** (nested under Product Contract / Planning Contract in a `ce-unified-plan/v1` artifact; top-level `##` headings in a legacy standalone plan):
351
+ - **Stated** content → Product Contract `### Requirements` (user-stated constraints, traced to origin's R-IDs when present)
352
+ - **Out-of-scope** content → Product Contract `### Scope Boundaries`
353
+ - **Inferred** content → Planning Contract `### Assumptions` — explicitly labeled as un-validated agent bets. Do NOT route Inferred items into Key Technical Decisions or Implementation Units; that would make un-validated bets indistinguishable from user-confirmed decisions.
354
+
355
+ The `### Assumptions` section appears in non-interactive plans only. Interactive plans don't need it (Inferred bets either get user-corrected via call-outs and become Key Technical Decisions, are revised away, or were judged not-fork material by the keep test and dissolved into Implementation Units silently).
356
+
357
+ This restores the audit visibility the original design intended (un-validated bets must not propagate as authoritative content), but surfaces them under their own label rather than hiding them. Downstream review (ce-doc-review, ce-work, human PR review) can scrutinize Assumptions specifically.
358
+
359
+ ---
360
+
361
+ ## Self-redirect (shared)
362
+
363
+ If the user response indicates they're in the wrong skill or want a different workflow:
364
+
365
+ - **Solo variant**: common redirects include "this is bigger than I thought — let me brainstorm first" (suggest `/ce-brainstorm`), "this is just a fix, no plan needed" (suggest `/ce-work`), or "I need to investigate first" (suggest `/ce-debug`).
366
+ - **Brainstorm-sourced variant**: less common, but possible — "actually this scope is wrong, take it back to brainstorm" (suggest `/ce-brainstorm` to revise the upstream doc).
367
+
368
+ In either case: stop ce-plan, suggest the alternative skill, offer to load it in-session. Don't push back or argue — the user's redirect signal is the deliberate choice.
369
+
370
+ ---
371
+
372
+ ## Doc shape after confirmation
373
+
374
+ After user confirmation (or after the soft-cut decision proceeds), Phase 5.2 writes the plan doc. The internal draft does NOT carry into the plan as a `## Synthesis` section. Only the stage-2 summary embeds, under the Product Contract's `### Summary`. Internal-draft content dissolves into the unified plan's sections. In a `ce-unified-plan/v1` artifact these destinations are nested — Summary, Problem Frame, Requirements, and Scope Boundaries live under `## Product Contract`; Key Technical Decisions and Assumptions live under `## Planning Contract`; Implementation Units is its own top-level section. (Legacy standalone plans without `artifact_contract` keep these as top-level `##` headings.)
375
+
376
+ | Internal-draft element | Where it goes in the unified plan |
377
+ |---|---|
378
+ | Summary (stage 2) | Product Contract `### Summary` (1-3 lines prose, forward-looking) — rewrite to plan convention if the chat-time summary used bullets. Solo variant: scope being targeted. Brainstorm-sourced: implementation approach |
379
+ | Stated bullets | Product Contract `### Requirements` (R-IDs) and where relevant `### Problem Frame` for narrative context |
380
+ | Inferred bullets | Planning Contract `### Key Technical Decisions` (with rationale) and Implementation Units when the bet drives a structural choice. In non-interactive mode, route to Planning Contract `### Assumptions` instead — see Headless mode above. |
381
+ | Out-of-scope bullets | Product Contract `### Scope Boundaries` — including the `#### Deferred to Follow-Up Work` subsection when relevant |
382
+
383
+ No italic capture-context note (e.g., "Captured at Phase 0.7..."). It would leak engineering process into an artifact whose readers do not need that signal.
384
+
385
+ The Product Contract's `### Summary` and `### Problem Frame` must serve distinct purposes: Summary answers "what is this plan proposing?" (forward-looking, 1-3 lines); Problem Frame answers "why does this proposal exist?" (backward-looking, paragraphs). Don't restate the proposal in Problem Frame; don't pad Summary with situational context.
386
+
387
+ ---
388
+
389
+ ## What does NOT belong in the synthesis
390
+
391
+ - Implementation code (no imports, exact method signatures, framework-specific syntax, JSON shapes, exact error message wording) — in chat output OR in the internal draft
392
+ - Re-statement of the entire brainstorm doc — the synthesis is plan-perspective, not a copy
393
+ - Defensive what-ifs and hedges — if a concern is real, state it as Inferred (internal); if speculation, drop it
394
+ - The internal three-bucket draft pasted into chat as a verbatim user-facing artifact — that was the old shape and the volume problem it produced is why stage 2 exists. Compose internally, derive call-outs, present compressed
395
+ - Open questions surfaced outside the buckets/call-outs — by synthesis time, every scope-shaping question must be in **Stated** (internal — asked and answered earlier), **Inferred** (internal — agent's bet for correction, surfaces as a call-out if it survives the keep test), or **Out** (internal — deliberately excluded). There is no fourth status
396
+ - Floating questions adjacent to stage 2 — if a question genuinely cannot be defaulted, pause synthesis and resolve it before presenting. Pick the question shape that matches: a blocking multiple-choice tool when options are bounded and meaningfully distinct, prose when option sets would bias the answer per Interaction Rule 5(a). Integrate the answer, then present stage 2. Never present stage 2 with adjacent floating questions — that gives the user no clear resolution path
@@ -0,0 +1,168 @@
1
+ # Universal Planning Workflow
2
+
3
+ This file is loaded when ce-plan detects a non-software task (Phase 0.1b). It replaces the software-specific phases (0.2 through 5.1) with a domain-agnostic planning workflow.
4
+
5
+ ## Before starting: verify classification
6
+
7
+ The detection stub in SKILL.md routes here for anything that isn't clearly software. Verify the classification is correct before proceeding:
8
+
9
+ - **Is this actually a software task?** The key distinction is task-type, not topic-domain. A study guide about Rust is non-software (producing educational content). A Rust library refactor is software (modifying code). If this is actually software, return to Phase 0.2 in the main SKILL.md.
10
+ - **Is this a trivial single-fact lookup?** Only a question answerable from one fact with no research, retrieval, or judgment skips planning — answer it directly and stop, in the user's terms. Do not narrate that it "isn't a planning task" or explain the routing; that is process exhaust (see Veil of value below). Examples: "zsh: command not found: brew", "what's the capital of France." A question that needs multiple steps, any retrieval, or synthesis to answer well does **not** qualify: it is an answer-seeking task (see Disposition below), not a quick-help exit. When unsure, do not exit.
11
+ - **Pipeline mode?** If invoked from LFG or any `disable-model-invocation` context: output "This is a non-software task. The LFG pipeline requires ce-work, which only supports software tasks. Use `/ce-plan` directly for non-software planning." and stop.
12
+ - **Unified artifact guard.** Universal-planning outputs are not software implementation plans. Do not label them `artifact_contract: ce-unified-plan/v1` and do not produce a `/goal` launch block unless the deliverable itself is a complete software implementation plan with Product Contract, Planning Contract, Implementation Units, Verification Contract, and Definition of Done.
13
+
14
+ Once past these checks, commit to the task — do not bail because it looks like a "lookup" or "research question." The user invoked the planning tool on purpose. Then choose the disposition below.
15
+
16
+ ---
17
+
18
+ ## Disposition: plan-seeking vs. answer-seeking
19
+
20
+ Two kinds of task land here, with different deliverables:
21
+
22
+ - **Plan-seeking** — the deliverable is a *plan*: a trip itinerary, a study curriculum, an event runbook, a project plan. The plan is the artifact, saved or shared. → Follow Steps 1-3 below.
23
+ - **Answer-seeking** — the deliverable is an *answer*: an investigative or analytical question ("how often does X happen — is it a big deal?", "how does our approach compare to Y?", "should we Z?"). No one wants a saved plan document for this; planning is the means to a good answer, not the output. → Follow the **Answer-seeking flow** below; skip the Step 3 artifact handling.
24
+
25
+ If a request blends both ("research X, then plan Y"), do the answer-seeking research first, then produce the plan artifact.
26
+
27
+ Commit to one disposition before reading further, and follow only that flow: a plan-seeking task still produces its plan document (Steps 1-3) and does not stop at a chat answer; an answer-seeking task does not write a plan file.
28
+
29
+ ---
30
+
31
+ ## Answer-seeking flow
32
+
33
+ The planning instinct still applies — but the plan is *working scaffold*, not an artifact. State it in chat to steer the work and show the human the approach; execute it; discard it. No plan file is written.
34
+
35
+ ### State a brief plan-of-attack, then proceed
36
+
37
+ Say how the question will be answered, right-sized to it: a light question gets a one-line approach; a multi-part analytical question gets a short bulleted plan (a few steps). This is **non-blocking** — announce the approach and continue immediately. Do not ask the user to approve the plan; the stated approach is itself the checkpoint, and the user can interrupt if the framing is wrong. Stop to ask only on a genuine fork the agent cannot resolve (e.g., "his personal account or the org's?").
38
+
39
+ ### Execute the plan
40
+
41
+ Carry out the approach. When the answer depends on facts the model can't reliably supply from memory — current data, recent events, specifics that drift — gather them using the **Research decomposition pattern** under Step 1 below (decompose into focused questions, dispatch in parallel via the platform's subagent/web primitive, collate). Skip research for anything the model already knows well.
42
+
43
+ **Ground answers about the user's own code, repo, or named artifacts in the actual sources — not memory.** When the question references local code, a specific file, a named CLI or service, or "our X", read those sources first (and any resource the user named — see Core Principle 8 in SKILL.md). "The model already knows the topic" covers general knowledge only, never the contents of the user's codebase: a comparison or recommendation about local code that was never read is ungrounded. Inspect, then answer.
44
+
45
+ **Execution here is research and analysis only — never code.** Reading code and artifacts to understand them is in-bounds research; writing or running code to change the system is not — that belongs in `ce-work`. This keeps the planning/execution boundary intact.
46
+
47
+ ### Deliver the answer
48
+
49
+ Answer in chat. Do **not** write a plan file and do **not** run the Step 3 save/share menu by default. If the investigation produced something the user might want to keep (a comparison table, a sourced summary), offer to save it; otherwise just give the answer. In headless or non-interactive runs, skip the offer and deliver the answer.
50
+
51
+ ### Veil of value: what to surface, what to hide
52
+
53
+ The plan-of-attack and the answer are for the caller; the skill's internal machinery is not. Edit for relevance the way an expert consultant does — they tell you their thinking about your problem, not which template their back office applied.
54
+
55
+ - **Surface** (question-domain — reads as value): the approach to the user's actual question, in the user's terms.
56
+ - **Hide** (skill-domain — process exhaust): which skill, mode, or phase is running; whether a plan file was or wasn't written; the routing or disposition decision itself.
57
+ - **Never hide** (audit content — affects trust in the answer): caveats, gaps, and uncertainty. "I could only pull his last ~100 stars, so this is partial" or "this is my read, not a hard signal" is not junk — it is what a good assistant surfaces. The veil hides plumbing, never the limits of the answer.
58
+
59
+ Register example, for "how often does he star things — is this a big deal?":
60
+
61
+ > Wrong: "Quick note first: /ce-plan builds implementation plans, so I ignored the template and just answered the question. Here's what the data says..."
62
+
63
+ Leaks the skill's name, narrates an internal routing decision, apologizes for deviating — the caller sees the seams of the tool.
64
+
65
+ > Right: "Let me size this up — I'll check how active a starrer he is overall, his recent cadence, and the kinds of repos he tends to star, then weigh where this one lands. [gathers data] Yes, this is a real signal: ..."
66
+
67
+ Same underlying process; none of the machinery surfaces. The caller sees thinking about their question.
68
+
69
+ ---
70
+
71
+ ## Step 1: Assess Ambiguity and Research Need
72
+
73
+ Evaluate two things before planning:
74
+
75
+ **Would 1-3 quick questions meaningfully improve this plan?**
76
+
77
+ - **Default: ask 1-3 questions** via Step 1b when the answers would change the plan's structure or content. Always include a final option like "Skip — just make the plan with reasonable assumptions" so the user can opt out instantly.
78
+ - **Skip questions entirely** only when the request already specifies all major variables or the task is simple enough that reasonable assumptions cover it well.
79
+
80
+ **Research need — does this plan depend on facts that change faster than training data?**
81
+
82
+ | Research need | Signals | Action |
83
+ |--------------|---------|--------|
84
+ | **None** | Generic, timeless, or conceptual plan (study curriculum methodology, project management approach, personal goal breakdown) | Skip research. Model knowledge is sufficient. After structuring the plan, offer: "I based this on general knowledge. Want me to search for [specific thing research would improve]?" — e.g., sourced recipes, current product recommendations, expert frameworks. Only if the user accepts. |
85
+ | **Recommended** | Plan references specific locations, venues, dates, prices, schedules, seasonal availability, or current events — anything where stale information would break the plan (closed restaurants, changed prices, cancelled events, wrong seasonal dates). | Research before planning. Decompose into 2-5 focused research questions and dispatch parallel web searches. In Claude Code, use the Agent tool with `model: "haiku"` for each search to reduce cost. Collate findings before structuring the plan. |
86
+
87
+ When research is recommended, do it — don't just offer. Stale recommendations (closed restaurants, rethemed attractions, outdated prices) are worse than no recommendations. The user invoked `/ce-plan` because they want a good plan, not a disclaimer about training data.
88
+
89
+ **Research decomposition pattern:**
90
+ 1. Identify 2-5 independent research questions based on the task. Good questions target facts the model is least confident about: current prices, hours, availability, recent changes, seasonal specifics.
91
+ 2. Dispatch parallel research. Prefer user-named surfaces first per Core Principle 8 in SKILL.md; fall back to web search for questions those surfaces don't cover.
92
+ 3. Collate findings into a brief research summary before proceeding to planning.
93
+
94
+ Example for "plan a date night in Seattle this Saturday":
95
+ - "Best restaurants open late Saturday in Capitol Hill Seattle 2026"
96
+ - "Events happening in Seattle [specific date]"
97
+ - "Seattle waterfront current status and hours"
98
+
99
+ ## Step 1b: Focused Q&A
100
+
101
+ Ask up to 3 questions targeting the unknowns that would most change the plan. Use the platform's blocking question tool: `AskUserQuestion` in Claude Code (call `ToolSearch` with `select:AskUserQuestion` first if its schema isn't loaded), `request_user_input` in Codex, `ask_question` in Antigravity CLI (`agy`), `ask_user` in Pi (requires the `pi-ask-user` extension). Fall back to numbered options in chat only when no blocking tool exists or the call errors (e.g., Codex edit modes) — not because a schema load is required. Never silently skip the question.
102
+
103
+ **How to ask well:**
104
+ - Offer informed options, not open-ended blanks. Instead of "When are you going?", try "Mid-week visits have 30-40% shorter lines — are you flexible on timing?" The question should give the user a frame of reference, not just extract information.
105
+ - Use multi-select when several independent choices can be captured in one question. This is compact and respects the user's time.
106
+ - Always include a final option like **"Skip — just make the plan with reasonable assumptions"** so the user can opt out at any point.
107
+
108
+ Focus on the unknowns specific to this task that would change what the plan recommends or how it's structured. Do not ask more than 3 — after that, proceed with assumptions for anything remaining.
109
+
110
+ ## Step 2: Structure the Plan
111
+
112
+ Create a structured plan guided by these quality principles. Do NOT use the software plan template (implementation units, test scenarios, file paths, etc.).
113
+
114
+ ### Format: when to prescribe vs. present options
115
+
116
+ Not every plan should be a single linear path. Match the format to the task:
117
+
118
+ | Task type | Best format | Why |
119
+ |-----------|------------|-----|
120
+ | **High personal preference** (food, entertainment, activities, gifts) | Curated options per category — present 2-3 choices and let the user compose | Preferences vary; a single pick may miss. Options respect the user's taste. |
121
+ | **Logical sequence** (study plan, project timeline, multi-day trip logistics) | Single prescriptive path with clear ordering | Sequencing matters; options at each step create decision paralysis. |
122
+ | **Hybrid** (event with fixed structure but variable details) | Fixed structure with choice points marked | The skeleton is set but specific vendors/venues/activities are options. |
123
+
124
+ Example: A date night plan should present 2-3 restaurant options, 2-3 activity options, and a suggested flow — not pick one restaurant and build the whole evening around it. A study plan should prescribe a single weekly progression — not present 3 different curricula to choose from.
125
+
126
+ ### Formatting: bullets over prose
127
+
128
+ - Prefer bullets and tables for actionable content (steps, options, logistics, budgets)
129
+ - Use prose only for context, rationale, or explanations that connect the dots
130
+ - Plans are for scanning and executing, not reading cover-to-cover
131
+
132
+ ### Quality principles
133
+
134
+ - **Actionable steps**: Each step is specific enough to execute without further research
135
+ - **Sequenced by dependency**: Steps are in the right order, with dependencies noted
136
+ - **Time-aware**: When relevant, include timing, durations, deadlines, or phases
137
+ - **Resource-identified**: Specify what's needed — tools, materials, people, budget, locations
138
+ - **Contingency-aware**: For important decisions, note alternatives or what to do if plans change
139
+ - **Appropriately detailed**: Match detail to task complexity. A weekend trip needs less structure than a 3-month curriculum. A dinner plan should be concise, not a 200-line document.
140
+ - **Domain-appropriate format**: Choose a structure that fits the domain:
141
+ - Itinerary for travel (day-by-day, with times and locations)
142
+ - Syllabus or curriculum for study plans (topics, resources, milestones)
143
+ - Runbook for events (timeline, responsibilities, logistics)
144
+ - Project plan for business or operational tasks (phases, owners, deliverables)
145
+ - Research plan for investigations (questions, methods, sources)
146
+ - Options menu for preference-driven tasks (curated picks per category)
147
+
148
+ ## Step 3: Save or Share
149
+
150
+ After structuring the plan, ask the user how they want to receive it using the platform's blocking question tool: `AskUserQuestion` in Claude Code (call `ToolSearch` with `select:AskUserQuestion` first if its schema isn't loaded), `request_user_input` in Codex, `ask_question` in Antigravity CLI (`agy`), `ask_user` in Pi (requires the `pi-ask-user` extension). Fall back to numbered options in chat only when no blocking tool exists or the call errors (e.g., Codex edit modes) — not because a schema load is required. Never silently skip the question.
151
+
152
+ **Question:** "Plan ready. How would you like to receive it?"
153
+
154
+ **Options:**
155
+
156
+ 1. **Save to disk** — Write the plan as a markdown file. Ask where:
157
+ - `docs/plans/` (only show if this directory exists)
158
+ - Current working directory
159
+ - `/tmp`
160
+ - A custom path
161
+ - Use filename convention: `YYYY-MM-DD-<descriptive-name>-plan.md`
162
+ - Start the document with a `# Title` heading, followed by `Created: YYYY-MM-DD` on the next line. No YAML frontmatter.
163
+
164
+ 2. **Publish to Proof — shareable link** — Publish the doc to Every's Proof editor and get a shareable link to read, comment on, or share with others. Load the `ce-proof` skill to create the shared document and return the URL. One-way: nothing syncs back to disk.
165
+
166
+ 3. **Save to disk AND publish to Proof** — Do both: write the markdown file to disk and publish a shareable Proof copy for review. The local file stays canonical.
167
+
168
+ Do not offer `/ce-work` (software-only) or issue creation (not applicable to non-software plans).