@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,159 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ if [ $# -lt 1 ]; then
6
+ echo "Usage: get-pr-comments PR_NUMBER [OWNER/REPO]"
7
+ echo "Example: get-pr-comments 123"
8
+ echo "Example: get-pr-comments 123 EveryInc/cora"
9
+ exit 1
10
+ fi
11
+
12
+ PR_NUMBER=$1
13
+
14
+ if [ -n "$2" ]; then
15
+ OWNER=$(echo "$2" | cut -d/ -f1)
16
+ REPO=$(echo "$2" | cut -d/ -f2)
17
+ else
18
+ # `|| true` is load-bearing: under `set -e`, a failed command substitution
19
+ # in an assignment aborts the script immediately. Run outside a git repo,
20
+ # `gh repo view` exits 1, its stderr is swallowed by `2>/dev/null`, and the
21
+ # script would die here with rc=1 and no output -- making the friendly error
22
+ # below unreachable. Keep `|| true` so detection failure falls through to it.
23
+ OWNER=$(gh repo view --json owner -q .owner.login 2>/dev/null || true)
24
+ REPO=$(gh repo view --json name -q .name 2>/dev/null || true)
25
+ fi
26
+
27
+ if [ -z "$OWNER" ] || [ -z "$REPO" ]; then
28
+ echo "Error: could not resolve owner/repo. Run get-pr-comments from inside the target git repository, or pass OWNER/REPO as the second argument (e.g., get-pr-comments $PR_NUMBER EveryInc/cora)." >&2
29
+ exit 1
30
+ fi
31
+
32
+ # Output is a JSON object with three keys:
33
+ # review_threads - unresolved inline review threads, edge-wrapped as
34
+ # [{ node: { id, isResolved, isOutdated, path, line, ...,
35
+ # comments: { nodes: [...] } } }]
36
+ # pr_comments - top-level PR conversation comments (excludes PR author
37
+ # and known CI/status bots)
38
+ # review_bodies - review submissions with non-empty body text (same
39
+ # filtering as pr_comments)
40
+ #
41
+ # Pagination (issue #798): each top-level connection -- reviewThreads,
42
+ # comments, reviews -- is fetched in its own paginated query because
43
+ # `gh api graphql --paginate` only follows the outermost pageInfo per
44
+ # response. Combining them into one query (as this script previously did)
45
+ # silently dropped everything past page 1 on long-lived PRs and made the
46
+ # skill report "0 of 0 resolved" while real findings sat unanswered.
47
+ # Per-thread inline `comments` are fetched up to 100 per thread without
48
+ # follow-up pagination; threads that exceed 100 comments are rare and out of
49
+ # scope for this fix.
50
+ #
51
+ # Bot filtering: only CI/status bots (codecov, etc.) are filtered at the source.
52
+ # Their output is structurally never actionable -- coverage numbers, build
53
+ # summaries, deploy status -- and that holds regardless of format changes.
54
+ # AI review bots (coderabbitai, codex, gemini, copilot) are NOT filtered here.
55
+ # Historically their top-level comments were assumed to always be wrappers, but
56
+ # that turned out to be wrong: Codex sometimes posts actionable findings as
57
+ # top-level PR comments with no inline thread counterpart. Any source-level
58
+ # heuristic to separate wrapper from actionable for these bots is brittle (one
59
+ # bot format change away from silently dropping feedback). SKILL.md step 2
60
+ # has a content-aware actionability check and Silent Drop rule that handles
61
+ # wrappers correctly, so we trust that layer instead. Add new logins to the CI
62
+ # list only if their output is structurally non-actionable like codecov's.
63
+
64
+ threads_pages=$(gh api graphql --paginate --slurp \
65
+ -f owner="$OWNER" -f repo="$REPO" -F pr="$PR_NUMBER" \
66
+ -f query='
67
+ query Threads($owner: String!, $repo: String!, $pr: Int!, $endCursor: String) {
68
+ repository(owner: $owner, name: $repo) {
69
+ pullRequest(number: $pr) {
70
+ author { login }
71
+ reviewThreads(first: 100, after: $endCursor) {
72
+ nodes {
73
+ id
74
+ isResolved
75
+ isOutdated
76
+ path
77
+ line
78
+ originalLine
79
+ startLine
80
+ originalStartLine
81
+ comments(first: 100) {
82
+ nodes {
83
+ id
84
+ author { login }
85
+ body
86
+ createdAt
87
+ url
88
+ }
89
+ }
90
+ }
91
+ pageInfo { hasNextPage endCursor }
92
+ }
93
+ }
94
+ }
95
+ }')
96
+
97
+ comments_pages=$(gh api graphql --paginate --slurp \
98
+ -f owner="$OWNER" -f repo="$REPO" -F pr="$PR_NUMBER" \
99
+ -f query='
100
+ query Comments($owner: String!, $repo: String!, $pr: Int!, $endCursor: String) {
101
+ repository(owner: $owner, name: $repo) {
102
+ pullRequest(number: $pr) {
103
+ comments(first: 100, after: $endCursor) {
104
+ nodes {
105
+ id
106
+ author { login }
107
+ body
108
+ }
109
+ pageInfo { hasNextPage endCursor }
110
+ }
111
+ }
112
+ }
113
+ }')
114
+
115
+ reviews_pages=$(gh api graphql --paginate --slurp \
116
+ -f owner="$OWNER" -f repo="$REPO" -F pr="$PR_NUMBER" \
117
+ -f query='
118
+ query Reviews($owner: String!, $repo: String!, $pr: Int!, $endCursor: String) {
119
+ repository(owner: $owner, name: $repo) {
120
+ pullRequest(number: $pr) {
121
+ reviews(first: 100, after: $endCursor) {
122
+ nodes {
123
+ id
124
+ author { login }
125
+ body
126
+ state
127
+ }
128
+ pageInfo { hasNextPage endCursor }
129
+ }
130
+ }
131
+ }
132
+ }')
133
+
134
+ # Resolution semantics: `isOutdated` means the diff hunk around the comment
135
+ # has shifted since the thread was opened -- not that the reviewer concern
136
+ # was addressed. Resolution state is the only authoritative signal; outdated
137
+ # threads are still surfaced (with their isOutdated flag intact) so the
138
+ # resolver can factor in that the referenced line may have moved.
139
+ jq -n \
140
+ --argjson threads "$threads_pages" \
141
+ --argjson comments "$comments_pages" \
142
+ --argjson reviews "$reviews_pages" '
143
+ ($threads[0].data.repository.pullRequest.author) as $author |
144
+ [$threads[].data.repository.pullRequest.reviewThreads.nodes[]] as $all_threads |
145
+ [$comments[].data.repository.pullRequest.comments.nodes[]] as $all_comments |
146
+ [$reviews[].data.repository.pullRequest.reviews.nodes[]] as $all_reviews |
147
+ ["codecov"] as $ci_bot_logins |
148
+ [$all_threads[] | select(.isResolved == false)] as $unresolved |
149
+ {
150
+ review_threads: [$unresolved[] | { node: . }],
151
+ pr_comments: [$all_comments[]
152
+ | select(.author.login != $author.login)
153
+ | select(.author.login as $l | $ci_bot_logins | index($l) | not)
154
+ | select(.body | test("^\\s*$") | not)],
155
+ review_bodies: [$all_reviews[]
156
+ | select(.body != null and .body != "")
157
+ | select(.author.login != $author.login)
158
+ | select(.author.login as $l | $ci_bot_logins | index($l) | not)]
159
+ }'
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Maps a PR review comment node ID to its parent thread.
4
+ # Fetches all review threads (paginated) and their comments, then returns the
5
+ # thread whose comments contain the target ID.
6
+
7
+ set -e
8
+
9
+ if [ $# -lt 2 ]; then
10
+ echo "Usage: get-thread-for-comment PR_NUMBER COMMENT_NODE_ID [OWNER/REPO]"
11
+ echo "Example: get-thread-for-comment 378 PRRC_kwDOP_gZVc6ySv89"
12
+ exit 1
13
+ fi
14
+
15
+ PR_NUMBER=$1
16
+ COMMENT_NODE_ID=$2
17
+
18
+ if [ -n "$3" ]; then
19
+ OWNER=$(echo "$3" | cut -d/ -f1)
20
+ REPO=$(echo "$3" | cut -d/ -f2)
21
+ else
22
+ # `|| true` is load-bearing: under `set -e`, a failed command substitution
23
+ # in an assignment aborts the script immediately. Run outside a git repo,
24
+ # `gh repo view` exits 1, its stderr is swallowed by `2>/dev/null`, and the
25
+ # script would die here with rc=1 and no output -- making the friendly error
26
+ # below unreachable. Keep `|| true` so detection failure falls through to it.
27
+ OWNER=$(gh repo view --json owner -q .owner.login 2>/dev/null || true)
28
+ REPO=$(gh repo view --json name -q .name 2>/dev/null || true)
29
+ fi
30
+
31
+ if [ -z "$OWNER" ] || [ -z "$REPO" ]; then
32
+ echo "Error: could not resolve owner/repo. Run get-thread-for-comment from inside the target git repository, or pass OWNER/REPO as the third argument (e.g., get-thread-for-comment $PR_NUMBER $COMMENT_NODE_ID EveryInc/cora)." >&2
33
+ exit 1
34
+ fi
35
+
36
+ # Pagination (issue #798): paginate the reviewThreads connection so PRs with
37
+ # more than one page of threads can still resolve a comment to its parent
38
+ # thread. Per-thread comments are still capped at 100 -- threads exceeding
39
+ # that depth are not paginated here.
40
+ threads_pages=$(gh api graphql --paginate --slurp \
41
+ -f owner="$OWNER" -f repo="$REPO" -F pr="$PR_NUMBER" \
42
+ -f query='
43
+ query Threads($owner: String!, $repo: String!, $pr: Int!, $endCursor: String) {
44
+ repository(owner: $owner, name: $repo) {
45
+ pullRequest(number: $pr) {
46
+ reviewThreads(first: 100, after: $endCursor) {
47
+ nodes {
48
+ id
49
+ isResolved
50
+ isOutdated
51
+ path
52
+ line
53
+ originalLine
54
+ startLine
55
+ originalStartLine
56
+ comments(first: 100) {
57
+ nodes {
58
+ id
59
+ author { login }
60
+ body
61
+ createdAt
62
+ url
63
+ }
64
+ }
65
+ }
66
+ pageInfo { hasNextPage endCursor }
67
+ }
68
+ }
69
+ }
70
+ }')
71
+
72
+ echo "$threads_pages" | jq -e --arg cid "$COMMENT_NODE_ID" '
73
+ [.[].data.repository.pullRequest.reviewThreads.nodes[]
74
+ | select(.comments.nodes | map(.id) | index($cid))]
75
+ | if length == 0 then error("No thread found for comment \($cid)") else .[0] end
76
+ '
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Replies to a PR review thread. Body is read from stdin to avoid
4
+ # shell escaping issues with markdown (quotes, newlines, etc.).
5
+
6
+ set -e
7
+
8
+ if [ $# -lt 1 ]; then
9
+ echo "Usage: echo 'reply body' | reply-to-pr-thread THREAD_ID"
10
+ echo "Example: echo 'Addressed: added null check' | reply-to-pr-thread PRRT_kwDOABC123"
11
+ exit 1
12
+ fi
13
+
14
+ THREAD_ID=$1
15
+ BODY=$(cat)
16
+
17
+ if [ -z "$BODY" ]; then
18
+ echo "Error: No body provided on stdin."
19
+ exit 1
20
+ fi
21
+
22
+ gh api graphql -f threadId="$THREAD_ID" -f body="$BODY" -f query='
23
+ mutation ReplyToReviewThread($threadId: ID!, $body: String!) {
24
+ addPullRequestReviewThreadReply(input: {
25
+ pullRequestReviewThreadId: $threadId
26
+ body: $body
27
+ }) {
28
+ comment {
29
+ id
30
+ url
31
+ }
32
+ }
33
+ }'
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ if [ $# -eq 0 ]; then
6
+ echo "Usage: resolve-pr-thread THREAD_ID"
7
+ echo "Example: resolve-pr-thread PRRT_kwDOABC123"
8
+ exit 1
9
+ fi
10
+
11
+ THREAD_ID=$1
12
+
13
+ gh api graphql -f threadId="$THREAD_ID" -f query='
14
+ mutation ResolveReviewThread($threadId: ID!) {
15
+ resolveReviewThread(input: {threadId: $threadId}) {
16
+ thread {
17
+ id
18
+ isResolved
19
+ path
20
+ line
21
+ }
22
+ }
23
+ }'
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: ce-strategy
3
+ description: "Create or update STRATEGY.md. Use when starting a product, changing direction or roadmap, or when ce-ideate, ce-brainstorm, or ce-plan need upstream product grounding."
4
+ argument-hint: "[optional: section to revisit, e.g. 'metrics' or 'approach']"
5
+ ---
6
+
7
+ # Product Strategy
8
+
9
+ **Note: The current year is 2026.** Use this when dating the strategy document.
10
+
11
+ `ce-strategy` produces and maintains `STRATEGY.md` - a short, durable anchor document that captures what the product is, who it serves, how it succeeds, and where the team is investing. It lives at the repo root as a canonical, well-known file (peer of `README.md`). Downstream skills (`ce-ideate`, `ce-brainstorm`, `ce-plan`) read it as grounding when it exists.
12
+
13
+ The document is short and structured on purpose. Good answers to a handful of sharp questions produce a better strategy than any amount of prose. This skill asks those questions, pushes back on weak answers, and writes the doc.
14
+
15
+ ## Interaction Method
16
+
17
+ Default to 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 in the harness or the call errors (e.g., Codex edit modes) — not because a schema load is required. Never silently skip the question.
18
+
19
+ Ask one question at a time. Prefer free-form responses for the substantive sections (problem, approach, persona); reserve single-select for routing decisions (which section to revisit). Each option label must be self-contained.
20
+
21
+ ## Focus Hint
22
+
23
+ <focus_hint> #$ARGUMENTS </focus_hint>
24
+
25
+ Interpret any argument as an optional focus: a section name to revisit (`metrics`, `approach`, `tracks`) or a scope hint. With no argument, proceed open-ended and let the file state decide the path.
26
+
27
+ ## Core Principles
28
+
29
+ 1. **Anchor, not plan.** Strategy is what the product is and why. Features belong in `ce-brainstorm`; schedules belong in the issue tracker. Do not let either creep into the doc.
30
+ 2. **Rigor in the questions, not the headings.** The section headers are plain English. The interview questions enforce strategy discipline.
31
+ 3. **Short is a feature.** The template is constrained. Adding sections costs more than it looks like. Push back on expansion.
32
+ 4. **Durable across runs.** This skill is rerunnable. On a second run it updates in place, preserves what is working, and only challenges sections that look stale or weak.
33
+
34
+ ## Execution Flow
35
+
36
+ ### Phase 0: Route by File State
37
+
38
+ Read `STRATEGY.md` using the native file-read tool.
39
+
40
+ - **File does not exist** -> First run. Go to Phase 1.
41
+ - **File exists and argument names a specific section** -> Targeted update. Go to Phase 2.
42
+ - **File exists, no argument** -> Ask which section(s) to revisit, then Phase 2.
43
+
44
+ Announce the path in one line: "Strategy doc not found - let's write it." or "Found existing strategy - let's review and update."
45
+
46
+ ### Phase 1: First-Run Interview
47
+
48
+ Read `references/interview.md`. This load is non-optional - the pushback rules, anti-pattern examples, and quality bar for each section live there. Improvising from memory produces a passive transcription instead of a strategy doc.
49
+
50
+ Run the interview in the section order of the final document:
51
+
52
+ 1. Target problem
53
+ 2. Our approach
54
+ 3. Who it's for
55
+ 4. Key metrics
56
+ 5. Tracks
57
+ 6. Milestones (optional)
58
+ 7. Not working on (optional)
59
+ 8. Marketing (optional)
60
+
61
+ For each section, ask the opening question, apply the pushback rules, and capture the final answer in the user's own language. Do not skip the pushback step - it is the core of the skill. Two rounds of pushback per section maximum; capture what the user has given after that and note the section is worth revisiting on the next run.
62
+
63
+ When all required sections (1-5) are captured, read `references/strategy-template.md`, fill it in, and present the full draft in chat before writing. Offer one round of edits. Then write to `STRATEGY.md`.
64
+
65
+ ### Phase 2: Update Run
66
+
67
+ Read the existing `STRATEGY.md` thoroughly. Summarize current state in 3-5 lines so the user sees what is on file.
68
+
69
+ If the argument named a specific section, jump to that section in `references/interview.md`. Preserve all other sections exactly. Apply pushback as if this were a first run - do not rubber-stamp existing weak content just because it is already written.
70
+
71
+ If no specific target, ask the user which section to revisit using the blocking question tool. Options:
72
+
73
+ - "Target problem"
74
+ - "Our approach"
75
+ - "Who it's for"
76
+ - "Metrics, tracks, or other"
77
+
78
+ For each revisited section, re-interview with full pushback. For sections the user confirms are still accurate, leave them untouched. Update the `last_updated` value in the YAML frontmatter to today's ISO date.
79
+
80
+ Write the updated doc back to `STRATEGY.md`.
81
+
82
+ ### Phase 3: Downstream Handoff
83
+
84
+ After writing, note in one line where the file lives and that `ce-ideate`, `ce-brainstorm`, and `ce-plan` will pick it up as grounding on their next run.
85
+
86
+ If no downstream skill has run yet on this repo, suggest `ce-ideate` or `ce-brainstorm` skills as a next step.
87
+
88
+ ## What This Skill Does Not Do
89
+
90
+ - Does not update the issue tracker or reconcile in-flight work. Strategy is the doc; execution lives elsewhere.
91
+ - Does not prioritize the backlog. Prioritization is a separate workflow.
92
+ - Does not write product requirements or implementation plans - those are `ce-brainstorm` and `ce-plan`.
93
+ - Does not compute metric values. It records which metrics matter and where they live, not what they read today.
94
+
95
+ ## Learn More
96
+
97
+ The "Target problem / Our approach / Tracks" structure is informed by Richard Rumelt's *Good Strategy Bad Strategy* - specifically his kernel of diagnosis, guiding policy, and coherent action. The interview questions in `references/interview.md` are designed to push past the patterns he calls "bad strategy": fluff, goals dressed up as strategy, and feature lists in place of a guiding choice. The book is the recommended follow-up reading if the distinction between a slogan and a strategy is not yet sharp.
@@ -0,0 +1,143 @@
1
+ # Strategy Interview
2
+
3
+ Loaded by `SKILL.md` at the start of Phase 1 and revisited per-section in Phase 2. Every section below maps one-to-one to a section in `strategy-template.md`.
4
+
5
+ For each section: ask the opening question, evaluate the answer against the quality bar, push back when it falls into a named anti-pattern, and capture the final answer in the user's own language.
6
+
7
+ ## Overall Rules
8
+
9
+ 1. **Ask, don't prescribe.** Do not offer menu options for open answers (problem, approach, persona). Use free-form responses. Reserve multi-select for routing decisions.
10
+ 2. **Push back once, maybe twice.** If the first answer is weak, name the specific issue and ask a sharper question. If the second answer is still weak, capture what the user has given and note in the draft that the section is worth revisiting. Do not let the interview spiral.
11
+ 3. **Quote the user back at them.** When challenging an answer, use the user's own words verbatim. Paraphrasing softens the challenge and is easier to dismiss.
12
+ 4. **Keep each answer to 1-3 sentences.** Longer answers are usually hiding something vague. If the user writes a paragraph, ask them to pick the sentence that matters most.
13
+ 5. **Don't leak the anti-pattern names.** The user does not need to hear "that's a vanity metric" - just ask the sharper question that follows.
14
+
15
+ ---
16
+
17
+ ## 1. Target Problem
18
+
19
+ **Opening question:** "What's the core problem this product solves - and what makes that problem hard?"
20
+
21
+ Strong answers name a specific situation the target user is in, identify what makes the situation hard *right now* (a crux, a constraint, something that isn't easy to route around), and are falsifiable - you could imagine the problem being absent and know the difference.
22
+
23
+ **Anti-patterns and pushback:**
24
+
25
+ - **Goal stated as problem** ("the problem is we need to grow revenue") -> "That's a goal, not a problem. What's in the world that's making that goal hard to achieve? Whose situation are you changing?"
26
+ - **Vague wish** ("people need better tools for X") -> "Whose situation specifically? Doing what? What do they try today, and why doesn't it work?"
27
+ - **Symptom, not cause** ("users churn after 30 days") -> "That's a symptom. What's happening in their world that makes them stop caring? What's the underlying condition?"
28
+ - **Too broad** ("communication at work is broken") -> "That's a civilization-scale problem. Narrow it to a situation you can actually affect - which users, doing what, when does it hurt most?"
29
+ - **Feature-shaped** ("there's no good way to do [specific workflow] with AI") -> "That's a missing feature, not the underlying problem. What outcome do users want that the feature would give them?"
30
+
31
+ **Capture:** One or two sentences naming the user's situation and the crux. No solution language.
32
+
33
+ ---
34
+
35
+ ## 2. Our Approach
36
+
37
+ **Opening question:** "Given that problem, what's your approach - the commitment or principle that makes it tractable?"
38
+
39
+ This is the guiding choice: how the product competes or operates, so that many downstream decisions become easier. It is not the product and it is not a feature list.
40
+
41
+ Strong answers are a choice (implying alternatives explicitly *not* pursued), are general enough to direct many decisions but specific enough to rule things out, and sound more like "we win by [doing X differently]" than "we do [a list of things]".
42
+
43
+ **Anti-patterns and pushback:**
44
+
45
+ - **Fluff / values** ("we're customer-obsessed and move fast") -> "Those are values, not an approach. What are you doing *differently* from the other products users could pick? If the answer applies to any company, it's not your approach."
46
+ - **Feature list** ("we're building AI-powered X, Y, and Z") -> "That's a feature list. What's the underlying bet that makes you pick those features over others? What principle is guiding what you ship?"
47
+ - **Product description as approach** ("we use AI to draft replies") -> "That's what the product does, but what's the *choice* inside it? Every competitor will say the same thing. Your approach should name what you're doing that the obvious alternative isn't - is it a grounding choice, a trust-building commitment, a workflow bet? What are you betting on that they're not?"
48
+ - **Goal restated** ("our approach is to be the market leader") -> "That's still the goal. How does the product win? What choice are you making that competitors aren't?"
49
+ - **Multiple approaches at once** ("we're going deep on enterprise, self-serve, and a consumer app") -> "Pick one as the guiding approach. The others may still get work, but one of them organizes the rest. Which is it?"
50
+ - **Doesn't connect to the problem** (problem: "users can't trust AI output"; approach: "build a fast, beautiful UI") -> "How does that approach solve the problem you named? If there's no line between them, one of the two is wrong."
51
+
52
+ **Capture:** One or two sentences. Ideally ends with or implies "...so that [outcome tied to the problem]".
53
+
54
+ ---
55
+
56
+ ## 3. Who It's For
57
+
58
+ **Opening question:** "Who is the primary user, and what job are they hiring this product to do?"
59
+
60
+ Jobs-to-be-done framing - the user isn't a demographic, they're someone in a situation trying to make progress.
61
+
62
+ Strong answers name one primary persona (additional personas allowed but secondary), identify them by role or situation rather than demographic, and state a concrete job as a verb phrase.
63
+
64
+ **Anti-patterns and pushback:**
65
+
66
+ - **Too many primary personas** ("it's for founders, PMs, engineers, and designers") -> "If it's for everyone, it's for no one. Who matters most? The others can still benefit, but one of them drives the product decisions."
67
+ - **Demographic framing** ("25-45 year old professionals") -> "That's a demographic, not a user. What are they trying to do that makes them pick up this product?"
68
+ - **Role without situation** ("PMs") -> "PMs doing what? Running a roadmap review? Writing a spec at midnight? Convincing a skeptical eng lead? The situation is where the product matters."
69
+ - **Generic job** ("they want to be more productive") -> "Productive at what specifically? They're hiring this product to do *what*? The more specific, the better the product decisions downstream."
70
+
71
+ **Capture:** Persona name plus JTBD sentence. Example: "Solo founders running their own roadmap. They're hiring the product to keep strategy and execution aligned without a PM on staff."
72
+
73
+ ---
74
+
75
+ ## 4. Key Metrics
76
+
77
+ **Opening question:** "What 3-5 metrics will tell you whether the approach is working?"
78
+
79
+ Metrics are the feedback loop. Bad metrics create the illusion of progress while the product gets worse.
80
+
81
+ Strong answers stay at 3-5 (not 10), mix leading and lagging (something that moves weekly and something that moves quarterly), and could plausibly regress if the product got worse.
82
+
83
+ **Anti-patterns and pushback:**
84
+
85
+ - **Vanity metrics** ("total signups, total pageviews, cumulative users") -> "Those can all go up while the product gets worse. What moves when users actually get value?"
86
+ - **Too many** ("here are 12 metrics we watch") -> "A dashboard isn't a strategy. Pick the 3-5 you'd stake the quarter on. What are the others telling you that those don't?"
87
+ - **Outputs, not outcomes** ("ship velocity, deploys per week") -> "Those measure the team, not the product. If the team doubled velocity but users didn't care, would you call it a win?"
88
+ - **Can only go up** ("cumulative hours saved") -> "A metric that can only go up doesn't tell you much. What's the rate, the ratio, or the thing that can regress?"
89
+ - **Unmeasurable** ("user delight") -> "How specifically? If you can't define how you'd check it on a Tuesday, it's aspirational, not a metric."
90
+
91
+ **Capture:** A list of 3-5. Each with a one-line definition. Note where each is measured (analytics, DB, qualitative, etc.) if known. If measurement is undefined, ask: "Where does this metric live today? If nowhere, is this something you can start measuring?"
92
+
93
+ ---
94
+
95
+ ## 5. Tracks
96
+
97
+ **Opening question:** "What are the 2-4 tracks of work you're investing in to execute the approach?"
98
+
99
+ Tracks are the coherent-actions half of the strategy kernel - concrete areas of investment that flow from the approach. They are not feature lists and not personal todo items. Each track is a named *domain of work*.
100
+
101
+ Strong answers stay at 2-4 (not 8, not 1), connect clearly back to the approach, and are broad enough that multiple features live inside each one.
102
+
103
+ **Anti-patterns and pushback:**
104
+
105
+ - **Feature list in disguise** ("track 1: Slack integration; track 2: mobile app; track 3: dark mode") -> "Those are features. What's the *investment area* each one lives inside? 'Integrations' might be one track, with Slack, Teams, and Discord as candidates inside it."
106
+ - **Too many tracks** ("we have 7 tracks this quarter") -> "With 7 tracks, every track is starved for attention. Which 3 are load-bearing? The others either fold in or drop."
107
+ - **Doesn't connect to approach** (approach: "win by being the easiest to onboard"; track: "enterprise SSO") -> "How does that track serve the approach? If it's a separate bet, name it as one. If it's load-bearing for onboarding, explain the link."
108
+ - **Too vague** ("improve the product") -> "Every track is 'improve the product.' What's the specific investment area that's different from the others?"
109
+ - **One track only** -> "With one track, there's no real choice being made. What are the 2-3 things the product needs to be good at, and how are they different?"
110
+
111
+ **Capture:** 2-4 tracks. For each: a name, a one-line purpose, and a short note on why this serves the approach.
112
+
113
+ ---
114
+
115
+ ## 6. Milestones (optional)
116
+
117
+ **Opening question:** "Are there any dated milestones worth anchoring - a launch, a fundraise, a conference, a renewal? Skip if none apply."
118
+
119
+ Only capture externally visible, real milestones. Avoid turning this into an internal schedule.
120
+
121
+ Default is to skip. Do not push the user to invent milestones. If they name some, capture them verbatim with dates.
122
+
123
+ ---
124
+
125
+ ## 7. Not Working On (optional)
126
+
127
+ **Opening question:** "Is there anything you've explicitly decided *not* to do right now that's worth naming? This is for things the team keeps being tempted by."
128
+
129
+ Clarity tool, not a blocker list. Skip by default. If the user names items, one sentence each. Do not encourage a long list.
130
+
131
+ ---
132
+
133
+ ## 8. Marketing (optional)
134
+
135
+ **Opening question:** "Any positioning or narrative language you want the doc to carry - a one-liner, a tagline, a key message? Skip if not yet."
136
+
137
+ Skip by default. Keep to 2-3 lines if present.
138
+
139
+ ---
140
+
141
+ ## After the Interview
142
+
143
+ Once sections 1-5 are captured (and any optional sections the user engaged with), read `strategy-template.md` and fill it in. Present the full draft in chat before writing. Offer one edit round. Then write to `STRATEGY.md`.
@@ -0,0 +1,89 @@
1
+ # Strategy Template
2
+
3
+ Loaded by `SKILL.md` after the interview is complete. Fill it in using the captured answers and write to `STRATEGY.md`.
4
+
5
+ ## Rules for filling in
6
+
7
+ - Use the user's own language where possible. Do not paraphrase into generic PM-speak.
8
+ - Each section stays compact. The whole doc should read in under 5 minutes.
9
+ - Section order is locked. Do not add new top-level sections.
10
+ - Optional sections: delete entirely if unused. Do not leave empty headers.
11
+ - Set `last_updated` in the YAML frontmatter to today's ISO date (YYYY-MM-DD). Do not duplicate the date in prose.
12
+ - Set `name` in the frontmatter to the product or initiative name (the same value used in the H1 title).
13
+
14
+ ## Template
15
+
16
+ The block below is the literal file to write (minus this line and the fences). Replace every `{{placeholder}}` with the captured answer. Delete any optional section whose placeholder wasn't answered.
17
+
18
+ ~~~markdown
19
+ ---
20
+ name: {{product_name}}
21
+ last_updated: {{YYYY-MM-DD}}
22
+ ---
23
+
24
+ # {{product_name}} Strategy
25
+
26
+ ## Target problem
27
+
28
+ {{1-2 sentence diagnosis. Names the user situation and the crux that makes it hard. No solution language.}}
29
+
30
+ ## Our approach
31
+
32
+ {{1-2 sentence guiding policy. What this product commits to, so that the target problem becomes tractable.}}
33
+
34
+ ## Who it's for
35
+
36
+ **Primary:** {{Persona name}} - {{one-sentence JTBD, e.g. "They're hiring {{product_name}} to..."}}
37
+
38
+ <!-- Duplicate the block above for additional personas only if truly necessary. Fewer is better. -->
39
+
40
+ ## Key metrics
41
+
42
+ - **{{metric 1 name}}** - {{one-line definition; where it's measured}}
43
+ - **{{metric 2 name}}** - {{...}}
44
+ - **{{metric 3 name}}** - {{...}}
45
+
46
+ <!-- 3-5 total. Stop at 5. -->
47
+
48
+ ## Tracks
49
+
50
+ ### {{Track 1 name}}
51
+
52
+ {{One line: what this track is - the investment area, not a feature list.}}
53
+
54
+ _Why it serves the approach:_ {{one line}}
55
+
56
+ <!-- Duplicate the block above for 2-4 tracks total. If you can't keep it to 4, something is wrong - fold related tracks together. -->
57
+
58
+ ## Milestones
59
+
60
+ - **{{YYYY-MM-DD}}** - {{milestone}}
61
+
62
+ <!-- Optional. Delete the section if unused. Only externally visible milestones: launches, fundraises, conferences, renewals. -->
63
+
64
+ ## Not working on
65
+
66
+ - {{one line per item}}
67
+
68
+ <!-- Optional. Delete the section if unused. Use only for things the team keeps being tempted by. -->
69
+
70
+ ## Marketing
71
+
72
+ **One-liner:** {{single-sentence pitch}}
73
+
74
+ **Key message:** {{2-3 lines if useful}}
75
+
76
+ <!-- Optional. Delete the section if unused. -->
77
+ ~~~
78
+
79
+ ## Post-write checklist
80
+
81
+ Before confirming the write, scan the draft for:
82
+
83
+ - [ ] Frontmatter present at the top with `name` and `last_updated` keys.
84
+ - [ ] `last_updated` carries today's date in ISO format (YYYY-MM-DD).
85
+ - [ ] No section has more than 4 sentences except Tracks (where each track has its own short block).
86
+ - [ ] No placeholders remain (`{{...}}`).
87
+ - [ ] Optional sections with no content have been deleted, not left empty.
88
+ - [ ] Metric count is between 3 and 5. Track count is between 2 and 4.
89
+ - [ ] Target problem and Our approach are connected - one clearly responds to the other.