@rubytech/create-realagent-code 0.1.254 → 0.1.256

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 (340) hide show
  1. package/dist/__tests__/plugin-install.test.js +58 -40
  2. package/dist/index.js +77 -26
  3. package/dist/lib/plugin-install.js +31 -29
  4. package/package.json +1 -1
  5. package/payload/platform/.docs/search-surface-contract.md +58 -0
  6. package/payload/platform/config/brand-registry.json +8 -0
  7. package/payload/platform/config/brand.json +2 -2
  8. package/payload/platform/lib/embed-client/dist/index.d.ts +4 -0
  9. package/payload/platform/lib/embed-client/dist/index.d.ts.map +1 -0
  10. package/payload/platform/lib/embed-client/dist/index.js +53 -0
  11. package/payload/platform/lib/embed-client/dist/index.js.map +1 -0
  12. package/payload/platform/lib/embed-client/src/index.ts +53 -0
  13. package/payload/platform/lib/embed-client/tsconfig.json +8 -0
  14. package/payload/platform/lib/graph-search/dist/index.d.ts +27 -6
  15. package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -1
  16. package/payload/platform/lib/graph-search/dist/index.js +19 -1
  17. package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
  18. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +12 -0
  19. package/payload/platform/lib/graph-search/src/index.ts +28 -6
  20. package/payload/platform/lib/graph-write/dist/index.d.ts +25 -0
  21. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  22. package/payload/platform/lib/graph-write/dist/index.js +80 -2
  23. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  24. package/payload/platform/lib/graph-write/src/index.ts +98 -1
  25. package/payload/platform/neo4j/schema.cypher +126 -0
  26. package/payload/platform/package.json +2 -2
  27. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  28. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  29. package/payload/platform/plugins/admin/PLUGIN.md +3 -6
  30. package/payload/platform/plugins/admin/mcp/dist/index.js +14 -60
  31. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  32. package/payload/platform/plugins/admin/skills/insight/SKILL.md +24 -0
  33. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +84 -31
  34. package/payload/platform/plugins/docs/PLUGIN.md +1 -0
  35. package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
  36. package/payload/platform/plugins/docs/references/deployment.md +18 -5
  37. package/payload/platform/plugins/docs/references/graph.md +2 -0
  38. package/payload/platform/plugins/docs/references/internals.md +12 -1
  39. package/payload/platform/plugins/docs/references/memory-guide.md +4 -0
  40. package/payload/platform/plugins/docs/references/neo4j.md +2 -2
  41. package/payload/platform/plugins/docs/references/platform.md +1 -1
  42. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  43. package/payload/platform/plugins/docs/references/session-retrospective.md +5 -18
  44. package/payload/platform/plugins/docs/references/slides.md +31 -0
  45. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +1 -1
  46. package/payload/platform/plugins/email/PLUGIN.md +2 -2
  47. package/payload/platform/plugins/email/mcp/dist/index.js +8 -0
  48. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  49. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts +19 -0
  50. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts.map +1 -0
  51. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js +64 -0
  52. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js.map +1 -0
  53. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +4 -0
  54. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -1
  55. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +1 -0
  56. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -1
  57. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +1 -0
  58. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
  59. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +6 -1
  60. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
  61. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +1 -0
  62. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -1
  63. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +7 -1
  64. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -1
  65. package/payload/platform/plugins/email/references/email-reference.md +4 -0
  66. package/payload/platform/plugins/memory/PLUGIN.md +1 -2
  67. package/payload/platform/plugins/memory/mcp/dist/index.js +6 -44
  68. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  69. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts +2 -0
  70. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts.map +1 -0
  71. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js +41 -0
  72. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js.map +1 -0
  73. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts +2 -0
  74. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts.map +1 -0
  75. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js +90 -0
  76. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js.map +1 -0
  77. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts +2 -0
  78. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts.map +1 -0
  79. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js +27 -0
  80. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js.map +1 -0
  81. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts +10 -0
  82. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts.map +1 -0
  83. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js +47 -0
  84. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js.map +1 -0
  85. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts +1 -2
  86. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts.map +1 -1
  87. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js +5 -28
  88. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts +2 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts.map +1 -0
  91. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js +20 -0
  92. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js.map +1 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts +2 -0
  94. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts.map +1 -0
  95. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js +67 -0
  96. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js.map +1 -0
  97. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts +2 -0
  98. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts.map +1 -0
  99. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js +34 -0
  100. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js.map +1 -0
  101. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts +2 -0
  102. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts.map +1 -0
  103. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js +61 -0
  104. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js.map +1 -0
  105. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +23 -1
  106. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -1
  107. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts +2 -0
  108. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts.map +1 -0
  109. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js +87 -0
  110. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js.map +1 -0
  111. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js +3 -0
  112. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map +1 -1
  113. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts +2 -0
  114. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts.map +1 -0
  115. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js +34 -0
  116. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js.map +1 -0
  117. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  118. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +19 -4
  119. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  120. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +33 -6
  121. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  122. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +280 -10
  123. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  124. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -1
  125. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +76 -37
  126. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -1
  127. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -1
  128. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +11 -2
  129. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -1
  130. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +4 -4
  131. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +3 -3
  132. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  133. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +20 -2
  134. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  135. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +6 -3
  136. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  137. package/payload/platform/plugins/memory/mcp/vitest.config.ts +5 -0
  138. package/payload/platform/plugins/memory/references/schema-base.md +1 -1
  139. package/payload/platform/plugins/memory/references/schema-construction.md +72 -0
  140. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts.map +1 -1
  141. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js +15 -0
  142. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js.map +1 -1
  143. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  144. package/payload/platform/plugins/slides/LICENSE +21 -0
  145. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  146. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  147. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  148. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  149. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  150. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  151. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  152. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  153. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  154. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  155. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +607 -0
  156. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  157. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  158. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  159. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  160. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  161. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  162. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  163. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  164. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  165. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  166. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +1 -1
  167. package/payload/platform/plugins/url-get/PLUGIN.md +26 -21
  168. package/payload/platform/plugins/url-get/mcp/dist/index.js +3 -3
  169. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -1
  170. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +1 -2
  171. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -1
  172. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +20 -40
  173. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -1
  174. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +4 -0
  175. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
  176. package/payload/platform/scripts/identity-forbidden-token-check.mjs +0 -1
  177. package/payload/platform/scripts/setup-account.sh +0 -15
  178. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts +23 -0
  179. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts.map +1 -0
  180. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js +29 -0
  181. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js.map +1 -0
  182. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  183. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +0 -2
  184. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  185. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +5 -0
  186. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  187. package/payload/platform/services/claude-session-manager/dist/http-server.js +32 -2
  188. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  189. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  190. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +8 -1
  191. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  192. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +13 -1
  193. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -1
  194. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +26 -2
  195. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -1
  196. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +2 -2
  197. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  198. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +12 -3
  199. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  200. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +3 -2
  201. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  202. package/payload/platform/templates/agents/admin/IDENTITY.md +2 -2
  203. package/payload/platform/templates/specialists/agents/database-operator.md +3 -7
  204. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +1 -1
  205. package/payload/server/{chunk-M6A6EZD4.js → chunk-76HRO7NX.js} +16 -2
  206. package/payload/server/maxy-edge.js +1 -1
  207. package/payload/server/public/assets/AdminShell-T-YknnBn.js +1 -0
  208. package/payload/server/public/assets/Checkbox-DmDxpqVv.js +1 -0
  209. package/payload/server/public/assets/admin-COUV-jgt.js +1 -0
  210. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-B2CweJq3.js} +1 -1
  211. package/payload/server/public/assets/architecture-YZFGNWBL-Dnn6Hc65.js +1 -0
  212. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-c09loTER.js → architectureDiagram-Q4EWVU46-DP2o-MFV.js} +1 -1
  213. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Cjdeyoq1.js → blockDiagram-DXYQGD6D-DO4mcYDJ.js} +1 -1
  214. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-NY6Wlzo2.js → c4Diagram-AHTNJAMY-Sy1giHbj.js} +1 -1
  215. package/payload/server/public/assets/channel-CEpR_0rE.js +1 -0
  216. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-CKsCYCsN.js} +1 -1
  217. package/payload/server/public/assets/chunk-336JU56O-C0-P-aUF.js +2 -0
  218. package/payload/server/public/assets/chunk-426QAEUC-DFjEt3Zb.js +1 -0
  219. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-B8bqAmBa.js} +1 -1
  220. package/payload/server/public/assets/{chunk-4TB4RGXK-BXpto3yW.js → chunk-4TB4RGXK-D1k0VSlW.js} +1 -1
  221. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-B-p_QNqz.js} +1 -1
  222. package/payload/server/public/assets/{chunk-5FUZZQ4R-C403gCUk.js → chunk-5FUZZQ4R-D6U6tV_j.js} +1 -1
  223. package/payload/server/public/assets/{chunk-5PVQY5BW-CjVzXQEp.js → chunk-5PVQY5BW-CYK76xfs.js} +1 -1
  224. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BC9js-lf.js} +1 -1
  225. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-4j2OqKkv.js} +1 -1
  226. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-Coen-fXN.js} +1 -1
  227. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-CAiOBvec.js} +1 -1
  228. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-AJzzpZVb.js} +1 -1
  229. package/payload/server/public/assets/{chunk-EDXVE4YY-DJcJAsAg.js → chunk-EDXVE4YY-BL4BKozX.js} +1 -1
  230. package/payload/server/public/assets/{chunk-ENJZ2VHE-CFDNvYu1.js → chunk-ENJZ2VHE-mhAFG8UD.js} +1 -1
  231. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-H231gZA_.js} +1 -1
  232. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-Cl3ZZjYG.js} +1 -1
  233. package/payload/server/public/assets/{chunk-ICPOFSXX-ecLOxGhL.js → chunk-ICPOFSXX-DOEzvzJa.js} +2 -2
  234. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-C_ipbUDD.js} +1 -1
  235. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CTsDNSCU.js} +1 -1
  236. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-DvSXhkGf.js} +1 -1
  237. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-p574NOI7.js} +1 -1
  238. package/payload/server/public/assets/{chunk-OYMX7WX6-B7MW66KB.js → chunk-OYMX7WX6-BlEgFM6U.js} +1 -1
  239. package/payload/server/public/assets/chunk-QZHKN3VN-DpF06ZZQ.js +1 -0
  240. package/payload/server/public/assets/{chunk-U2HBQHQK-BMawmsyk.js → chunk-U2HBQHQK-B2bDK0jv.js} +1 -1
  241. package/payload/server/public/assets/{chunk-X2U36JSP-CT6g7pno.js → chunk-X2U36JSP-D69BxKFw.js} +1 -1
  242. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-Dm-PcyUi.js} +1 -1
  243. package/payload/server/public/assets/{chunk-YZCP3GAM-xeAluiAH.js → chunk-YZCP3GAM-Be8RnXgx.js} +1 -1
  244. package/payload/server/public/assets/{chunk-ZZ45TVLE-BRN9qUC5.js → chunk-ZZ45TVLE-Ck8PCTa4.js} +1 -1
  245. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CYbXvKLI.js +1 -0
  246. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DEyHzRhq.js +1 -0
  247. package/payload/server/public/assets/clone-y8gexbBy.js +1 -0
  248. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-CmkW2Eaj.js} +1 -1
  249. package/payload/server/public/assets/{dagre-DTjePoco.js → dagre-Dqp-ns8F.js} +1 -1
  250. package/payload/server/public/assets/{dagre-KV5264BT-DHBkRke4.js → dagre-KV5264BT-ZgWWXPLc.js} +1 -1
  251. package/payload/server/public/assets/data-gy6QH9c1.js +1 -0
  252. package/payload/server/public/assets/{diagram-5BDNPKRD-BIq1-idL.js → diagram-5BDNPKRD-CTX5-ScM.js} +1 -1
  253. package/payload/server/public/assets/{diagram-G4DWMVQ6-BsIUDzV6.js → diagram-G4DWMVQ6-BovIsO6H.js} +1 -1
  254. package/payload/server/public/assets/{diagram-MMDJMWI5-CgHSri2i.js → diagram-MMDJMWI5-DcETsQy-.js} +1 -1
  255. package/payload/server/public/assets/{diagram-TYMM5635-Ce2Wh9ZX.js → diagram-TYMM5635-yyq6peoZ.js} +1 -1
  256. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BU0Kh6OQ.js → erDiagram-SMLLAGMA-CiNToftB.js} +1 -1
  257. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BtFI066E.js} +1 -1
  258. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-B0N06MF7.js → flowDiagram-DWJPFMVM-Xnl3SpIM.js} +1 -1
  259. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BVbx4ARZ.js → ganttDiagram-T4ZO3ILL-C1iyWe0f.js} +1 -1
  260. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CNs-LD5i.js +1 -0
  261. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C-xRJ94t.js → gitGraphDiagram-UUTBAWPF-D97pbMQb.js} +1 -1
  262. package/payload/server/public/assets/graph-labels-cZu4pK16.js +1 -0
  263. package/payload/server/public/assets/{graph-g48ZcA5M.js → graph-qz5tFKqU.js} +3 -3
  264. package/payload/server/public/assets/{graphlib-YmNcoMjY.js → graphlib-Lq8ijgON.js} +1 -1
  265. package/payload/server/public/assets/info-OMHHGYJF-DsTNigSS.js +1 -0
  266. package/payload/server/public/assets/infoDiagram-42DDH7IO-C_OarRTA.js +2 -0
  267. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-D6QovjYR.js} +1 -1
  268. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DTrq54yC.js → ishikawaDiagram-UXIWVN3A-B8XBdjJn.js} +1 -1
  269. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-OZZZMrFX.js → journeyDiagram-VCZTEJTY-CZYbiOaQ.js} +1 -1
  270. package/payload/server/public/assets/{kanban-definition-6JOO6SKY--w-IP9pN.js → kanban-definition-6JOO6SKY-B1PybFoh.js} +1 -1
  271. package/payload/server/public/assets/{line-Ckeulv5T.js → line-D-tw3hHp.js} +1 -1
  272. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-BHhXD3cd.js} +1 -1
  273. package/payload/server/public/assets/{mermaid-parser.core-CVRAxYRD.js → mermaid-parser.core-C9RAnysF.js} +2 -2
  274. package/payload/server/public/assets/{mermaid.core-B-mE18I1.js → mermaid.core-B532LT1r.js} +3 -3
  275. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Bm8mDicL.js → mindmap-definition-QFDTVHPH-DGlgeeTV.js} +1 -1
  276. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-Bl-aM5b9.js} +1 -1
  277. package/payload/server/public/assets/packet-4T2RLAQJ-DGES22b-.js +1 -0
  278. package/payload/server/public/assets/pie-ZZUOXDRM-ChKeDbzt.js +1 -0
  279. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BCmRLgGO.js → pieDiagram-DEJITSTG-DV9FIWko.js} +1 -1
  280. package/payload/server/public/assets/{public-DknO-g9S.js → public-Bu2_Xi0a.js} +5 -5
  281. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CniTIUTm.js → quadrantDiagram-34T5L4WZ-Betwya4l.js} +1 -1
  282. package/payload/server/public/assets/radar-PYXPWWZC-FGG5Fs7N.js +1 -0
  283. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-BD4xUd2c.js} +1 -1
  284. package/payload/server/public/assets/{requirementDiagram-MS252O5E-CoxBSj9M.js → requirementDiagram-MS252O5E-Cq3vODdg.js} +1 -1
  285. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BjS-4jzq.js → sankeyDiagram-XADWPNL6-x8krXWcS.js} +1 -1
  286. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B9jVOnPR.js → sequenceDiagram-FGHM5R23-i-_uH-Yl.js} +1 -1
  287. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BvOQPzP8.js → stateDiagram-FHFEXIEX-il4KqSgI.js} +1 -1
  288. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B6zNJ6Tv.js +1 -0
  289. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CdfgWLo1.js → timeline-definition-GMOUNBTQ-DATdZkA5.js} +1 -1
  290. package/payload/server/public/assets/treeView-SZITEDCU-VAQQdbtf.js +1 -0
  291. package/payload/server/public/assets/treemap-W4RFUUIX-DKchO3zI.js +1 -0
  292. package/payload/server/public/assets/useSelectionMode-A5KItZ2T.js +13 -0
  293. package/payload/server/public/assets/{brand-D0gNihp7.css → useSelectionMode-C-Ojh7W9.css} +1 -1
  294. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-JCgpIbj-.js → vennDiagram-DHZGUBPP-BJh9tJTt.js} +1 -1
  295. package/payload/server/public/assets/wardley-RL74JXVD-CBGtx0bS.js +1 -0
  296. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Dei3VqHo.js → wardleyDiagram-NUSXRM2D-EMN1Hdfg.js} +1 -1
  297. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DUtIyoIb.js → xychartDiagram-5P7HB3ND-DbUWXa7T.js} +1 -1
  298. package/payload/server/public/data.html +5 -5
  299. package/payload/server/public/graph.html +6 -6
  300. package/payload/server/public/index.html +5 -6
  301. package/payload/server/public/public.html +4 -5
  302. package/payload/server/server.js +525 -39
  303. package/payload/platform/plugins/admin/hooks/__tests__/session-end-retrospective.test.sh +0 -396
  304. package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +0 -239
  305. package/payload/platform/plugins/admin/hooks/session-end-retrospective.sh +0 -214
  306. package/payload/server/public/assets/AdminShell-892Jy_rs.js +0 -1
  307. package/payload/server/public/assets/Checkbox-Bc2QzX9b.js +0 -1
  308. package/payload/server/public/assets/admin-D3K13ndi.js +0 -1
  309. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  310. package/payload/server/public/assets/brand-CcN3dELF.js +0 -9
  311. package/payload/server/public/assets/channel-B1IT7to2.js +0 -1
  312. package/payload/server/public/assets/chunk-336JU56O-CdKRCIeE.js +0 -2
  313. package/payload/server/public/assets/chunk-426QAEUC-BybuQ3Ve.js +0 -1
  314. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  315. package/payload/server/public/assets/classDiagram-6PBFFD2Q-rjCize6i.js +0 -1
  316. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BORWOUt0.js +0 -1
  317. package/payload/server/public/assets/clone-Csqv5U6T.js +0 -1
  318. package/payload/server/public/assets/data-Br-pdljK.js +0 -1
  319. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  320. package/payload/server/public/assets/graph-labels-BYH-IPCb.js +0 -1
  321. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  322. package/payload/server/public/assets/infoDiagram-42DDH7IO-Di6oPQ_-.js +0 -2
  323. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  324. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  325. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  326. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-v4ND10uR.js +0 -1
  327. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  328. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  329. package/payload/server/public/assets/useSelectionMode-DwsyptOw.js +0 -5
  330. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  331. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-Cs8Y-rGh.js} +0 -0
  332. /package/payload/server/public/assets/{array-DYRGGQae.js → array-iHZP4KWJ.js} +0 -0
  333. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-BR2GOQ8_.js} +0 -0
  334. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-B9aLeOTg.js} +0 -0
  335. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-DB-VPj_8.js} +0 -0
  336. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-BNFRgqHM.js} +0 -0
  337. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-B-EfS3nw.js} +0 -0
  338. /package/payload/server/public/assets/{path-CNO468J-.js → path-DmWWdwp7.js} +0 -0
  339. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-Ci7Kjt46.js} +0 -0
  340. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-C1jfwBq0.js} +0 -0
@@ -0,0 +1,579 @@
1
+ # Storytelling: Product Launch
2
+
3
+ How to build a product launch deck that makes people want what you've made.
4
+
5
+ Product launches are performances. The deck is the pacing mechanism. Every section is a reveal. The audience should feel like they're unwrapping something, layer by layer, each one more exciting than the last. The moment you show the product before you've built anticipation, you've lost the plot.
6
+
7
+ This guide is the narrative framework for launch decks. It works for keynotes, press events, internal product reviews, customer webinars, and "here's what we built" moments. The Slides template was built to support this arc.
8
+
9
+ ---
10
+
11
+ ## The nine-beat structure
12
+
13
+ Every product launch has a shape. This is ours:
14
+
15
+ ```
16
+ Start ──────────────────────────────────────────────────────── End
17
+ │ Setup │ Problem │ Reveal │ Demo │ Specs │ Proof │ OMT │ CTA │ Close │
18
+ ```
19
+
20
+ Nine beats. Some launches skip one or two. The "one more thing" is optional. The rest are load-bearing.
21
+
22
+ | Beat | ~Share | Purpose |
23
+ |------|--------|---------|
24
+ | The Setup | 10% | Build the world |
25
+ | The Problem | 10% | Name the friction |
26
+ | The Reveal | 15% | Drop the product |
27
+ | The Demo | 25% | Show it working |
28
+ | The Specs | 10% | Give the details |
29
+ | Social Proof | 10% | Show who's in |
30
+ | One More Thing | 5% | Surprise (optional) |
31
+ | Availability & CTA | 10% | Tell them how to get it |
32
+ | Close | 5% | Land the line |
33
+
34
+ ---
35
+
36
+ ## Beat 1: The Setup
37
+
38
+ ### Purpose
39
+
40
+ Why are we here today? What's the context? You're setting the stage for the world the product enters. You're orienting the audience before opening the curtain.
41
+
42
+ The audience should feel oriented. They should understand the landscape, the momentum, the stakes. By the end of this beat, they should be leaning forward, anticipating something.
43
+
44
+ ### Pacing
45
+
46
+ Slow. Deliberate. You're building a room before you turn on the lights. Let the context breathe so it earns the reveal.
47
+
48
+ ### Example headlines
49
+
50
+ > **The way we work** <span class="dim">changed forever.</span>
51
+ > **$4.2 trillion market.** <span class="dim">Still running on spreadsheets.</span>
52
+ > **Every team ships faster now.** <span class="dim">Except for one bottleneck.</span>
53
+ > **Three years ago** <span class="dim">we made a bet.</span>
54
+
55
+ ### Best components
56
+
57
+ - **Quote slide:** A single provocative statement to open. No subtitle.
58
+ - **Eyebrow + headline + subtitle:** Context with a category tag ("THE MARKET", "THE SHIFT", "2024 → 2025").
59
+ - **Two-column:** Then vs now. Old paradigm vs new forces.
60
+
61
+ ### Common mistakes
62
+
63
+ - Starting with your company history. Nobody cares yet.
64
+ - Showing the product logo on slide 2. You've killed the anticipation.
65
+ - Making the setup too long. Ten percent means 2–3 slides.
66
+ - Being vague. "The world is changing" says nothing. Be specific about *what* changed.
67
+
68
+ ---
69
+
70
+ ## Beat 2: The Problem
71
+
72
+ ### Purpose
73
+
74
+ What's broken, missing, or hard? The gap in the market. The friction everyone lives with. Make the audience *feel* the problem before you show the fix.
75
+
76
+ This is empathy work. If you skip it, the product reveal lands flat because the audience hasn't felt the pain you're solving.
77
+
78
+ ### Pacing
79
+
80
+ Build tension. Each sub-point should make the problem feel worse. Stack frustrations. End with a line that closes the chapter, the "surely there's a better way" moment.
81
+
82
+ ### Example headlines
83
+
84
+ > **The old workflow** <span class="dim">has 14 steps.</span>
85
+ > **Teams wait 3 days** <span class="dim">for what should take 3 minutes.</span>
86
+ > **Everyone hates it.** <span class="dim">Nobody fixes it.</span>
87
+ > **Good enough** <span class="dim">stopped being good enough.</span>
88
+
89
+ ### Best components
90
+
91
+ - **Step stack** (in two-column): Show the painful old workflow with its blockers and friction points.
92
+ - **Capability list:** Rows of problems. Left: the task. Right: what's wrong with the current state.
93
+ - **Dark slide:** One gut-punch line that captures the whole problem. "Your team spends 40% of their time on work about work."
94
+
95
+ ### Common mistakes
96
+
97
+ - Describing problems the audience doesn't recognize. If they don't feel it, they won't care about the fix.
98
+ - Straw-manning competitors. Describe the *category* problem, the systemic friction.
99
+ - Making it too abstract. Use numbers, timelines, real scenarios.
100
+ - Spending too long here. You need enough pain to motivate the reveal, and enough restraint that the mood stays productive.
101
+
102
+ ---
103
+
104
+ ## Beat 3: The Reveal
105
+
106
+ ### Purpose
107
+
108
+ The product. Name, positioning, one headline. This is the "one more thing" moment, the *main* thing. Let it land. Pause.
109
+
110
+ The reveal is a name and a promise. One sentence that captures what this thing *is*. The details come later. Right now, the audience just needs to understand the shape of what you've built.
111
+
112
+ ### Pacing
113
+
114
+ **Slow down.** This is the most important transition in the deck. The slide before should end on a question or a tension. Then: click. The product appears. Give it a full beat of silence. Let the name sit on screen for two seconds before you say anything else.
115
+
116
+ ### Example headlines
117
+
118
+ > **Introducing Arc.** <span class="dim">Design at the speed of thought.</span>
119
+ > **Meet Relay.** <span class="dim">One inbox for every team.</span>
120
+ > **This is Prism.** <span class="dim">Your entire pipeline, one command.</span>
121
+ > **We call it Drift.** <span class="dim">And it changes everything.</span>
122
+
123
+ ### Best components
124
+
125
+ - **Product slide** (showcase style): Big product name on the right. Tagline and one-line description on the left.
126
+ - **Dark slide:** Product name, large type, nothing else. Maximum dramatic weight.
127
+ - **Collage slide:** Full-bleed product image or hero screenshot immediately after the name slide. The one-two punch: name then visual.
128
+ - **Art overlay:** The product rendered against a beautiful full-bleed background. Creates an aspirational, premium feeling that pure screenshots lack.
129
+
130
+ ### Common mistakes
131
+
132
+ - Burying the reveal in a list of features. The reveal is *one* slide. One name. One line.
133
+ - Clicking past the reveal without letting it breathe. Give it a full pause.
134
+ - Weak naming. "Introducing our new analytics dashboard" is forgettable. Give it a proper name.
135
+ - Showing the reveal too early. If you haven't earned the tension, the drop doesn't hit.
136
+
137
+ ---
138
+
139
+ ## Beat 4: The Demo / Walkthrough
140
+
141
+ ### Purpose
142
+
143
+ Show it working. This is the longest section, and the most important. The reveal promised something. The demo proves it. Feature by feature, each with its own mini-narrative.
144
+
145
+ ### Pacing
146
+
147
+ Each feature follows the **setup-show-impact** pattern:
148
+
149
+ 1. **Setup** (text slide): What was hard before. One sentence of context.
150
+ 2. **Show** (collage slide): Screenshot, video, live demo. The product doing the thing.
151
+ 3. **Impact** (text slide or stat): What this means. The result. The number.
152
+
153
+ Alternate between text slides and full-bleed visuals. This creates rhythm: read, see, feel, read, see, feel. Three to five features is the sweet spot. More than that and you lose momentum.
154
+
155
+ ### Example headlines
156
+
157
+ > **Search that actually works.** <span class="dim">Across every source, in milliseconds.</span>
158
+ > **One click to deploy.** <span class="dim">No config. No waiting.</span>
159
+ > **Real-time collaboration.** <span class="dim">See changes as they happen.</span>
160
+ > **From 14 steps** <span class="dim">to one.</span>
161
+
162
+ ### Best components
163
+
164
+ - **Eyebrow + headline + subtitle:** Setup slide for each feature. Eyebrow tags the category ("SEARCH", "DEPLOY", "COLLABORATION").
165
+ - **Collage slide:** Full-bleed screenshot or video after each setup. This is the "show" beat.
166
+ - **Two-column:** Old way vs new way, side by side.
167
+ - **Product slide:** For hero features that deserve the showcase treatment.
168
+ - **Dark slide:** One mid-demo moment where you step back and say something big. "This is what three years of R&D looks like."
169
+ - **Feature card row:** Break down a complex capability into three or four cards, each with an icon, title, and one-line benefit. Ideal for showing feature breadth at a glance.
170
+ - **Code slide:** For developer-facing products, show a real snippet of the API or CLI in action. Nothing builds trust faster than seeing the actual interface.
171
+ - **Spec block:** Input/process/output layout. Show what goes in, what the product does, and what comes out. Effective for AI, data, or automation features.
172
+
173
+ ### The setup-show-impact pattern
174
+
175
+ For each feature:
176
+
177
+ ```
178
+ Slide A: "Teams used to wait 3 days for deploy previews." [text: setup]
179
+ Slide B: [full-bleed screenshot of instant preview] [collage: show]
180
+ Slide C: "Deploy time: 3 days → 12 seconds." [stat: impact]
181
+ ```
182
+
183
+ Vary the pattern across features:
184
+ - Feature 1: setup → collage → stat
185
+ - Feature 2: dark slide (big claim) → collage → two-column comparison
186
+ - Feature 3: eyebrow setup → video → quote from a beta user
187
+
188
+ Variation keeps the audience alert.
189
+
190
+ ### Common mistakes
191
+
192
+ - Too many features. Pick three to five. The rest go in a blog post.
193
+ - Describing features in text without showing the product. Use screenshots, videos, anything visual.
194
+ - Showing features without context. "Here's feature X" means nothing. "You used to do Y, now you do X" means everything.
195
+ - Same layout for every feature. Monotony kills attention. Vary your components.
196
+ - Rushing. Give each feature its own breathing room. The demo section should feel generous.
197
+
198
+ ---
199
+
200
+ ## Beat 5: The Specs
201
+
202
+ ### Purpose
203
+
204
+ The details. Performance benchmarks, pricing, availability dates, compatibility, technical requirements. The audience has seen what it does. Now they need to know the specifics.
205
+
206
+ This beat serves the analytical buyers. The people who were nodding during the demo but need numbers before they commit.
207
+
208
+ ### Pacing
209
+
210
+ Faster. This is information delivery. Be crisp. Use grids and lists. Get in, give the facts, get out.
211
+
212
+ ### Example headlines
213
+
214
+ > **The numbers.** <span class="dim">Under the hood.</span>
215
+ > **Built for scale.** <span class="dim">Here's the proof.</span>
216
+ > **Pricing that makes sense.** <span class="dim">No surprises.</span>
217
+ > **What's included.** <span class="dim">Everything you need.</span>
218
+
219
+ ### Best components
220
+
221
+ - **Capability list:** Rows of specs. Left: the metric. Right: the value. Clean, scannable.
222
+ - **Three-column:** Pricing tiers or plan comparison.
223
+ - **Stack grid:** Categories of capabilities with checkmarks or feature lists. Also works well for grouping features into thematic columns.
224
+ - **Two-column:** Technical details on one side, what it means for the user on the other.
225
+ - **Update row:** Release timeline showing what shipped, what's in beta, and what's next. Gives analytical buyers a sense of velocity and roadmap confidence.
226
+
227
+ ### Common mistakes
228
+
229
+ - Burying the price. If there's a price, say it clearly.
230
+ - Too many specs. Pick the 5–8 that matter. The spec sheet lives on your website.
231
+ - No context for numbers. "99.99% uptime" means more when you say "That's 52 seconds of downtime per year."
232
+ - Making this section too long. It's 10% of the deck. Two to three slides.
233
+
234
+ ---
235
+
236
+ ## Beat 6: Social Proof
237
+
238
+ ### Purpose
239
+
240
+ Who's already using it? Who believes in it? Testimonials, logos, case studies, beta results. This answers the unspoken question: "Am I the first idiot to try this, or is it safe?"
241
+
242
+ ### Pacing
243
+
244
+ Confident but measured. Let the names do the talking. A wall of logos says more than a paragraph of self-congratulation.
245
+
246
+ ### Example headlines
247
+
248
+ > **Teams already shipping with it.** <span class="dim">Thousands of them.</span>
249
+ > **Hear it from them.** <span class="dim">Real teams, real results.</span>
250
+ > **In production** <span class="dim">since day one.</span>
251
+ > **Trusted by the teams** <span class="dim">that move fastest.</span>
252
+
253
+ ### Best components
254
+
255
+ - **Logo bar:** A clean horizontal row of recognizable customer logos. High density, zero friction. The fastest way to establish credibility.
256
+ - **Testimonial grid:** Multiple quotes arranged in a grid layout. Each cell: photo, name, role, and a one-line quote. Conveys breadth of adoption at a glance.
257
+ - **Stack grid:** Logo grid. Four columns of customer logos. No captions needed.
258
+ - **Capability list:** Testimonial rows. Left: company name. Right: quote.
259
+ - **Quote slide:** One powerful testimonial, large type. Attribution below.
260
+ - **Two-column:** Case study format. Left: the challenge. Right: the result with the product.
261
+
262
+ ### Common mistakes
263
+
264
+ - Fake-sounding testimonials. "This product is amazing!" means nothing. Specific results beat generic praise.
265
+ - Too many logos with no context. One case study beats twenty anonymous logos.
266
+ - Putting social proof before the demo. The audience needs to understand the product before they care who else uses it.
267
+ - Skipping this entirely. Even in an internal launch, showing who's been piloting it builds credibility.
268
+
269
+ ---
270
+
271
+ ## Beat 7: One More Thing
272
+
273
+ ### Purpose
274
+
275
+ A surprise. An unexpected feature, an unlikely partnership, an aggressive price point, an early-access announcement. The thing that elevates the launch from "solid" to "memorable."
276
+
277
+ This beat is **optional.** Only use it if you genuinely have something surprising. A forced "one more thing" is worse than no surprise at all.
278
+
279
+ ### The "one more thing" test
280
+
281
+ Ask yourself:
282
+ 1. Would this get a genuine reaction if the audience didn't know it was coming?
283
+ 2. Is it actually separate from the main product, a true addition rather than feature #6?
284
+ 3. Does it change the audience's mental model of what you're offering?
285
+
286
+ If you can't answer yes to at least two of these, fold it into the demo or cut it.
287
+
288
+ ### Pacing
289
+
290
+ Slow. Dramatic pause before. The preceding slide should feel like a natural ending. The audience should think you're wrapping up. Then: "One more thing." Beat. Click.
291
+
292
+ ### Example headlines
293
+
294
+ > **Oh, and one more thing.** <span class="dim"></span>
295
+ > **We weren't going to show this yet.** <span class="dim">But here we are.</span>
296
+ > **Free.** <span class="dim">For everyone. Starting today.</span>
297
+ > **And it works with** <span class="dim">everything you already use.</span>
298
+
299
+ ### Best components
300
+
301
+ - **Dark slide:** "One more thing." Nothing else. Then the next slide reveals it.
302
+ - **Product slide:** If the surprise is a second product or major feature.
303
+ - **Collage slide:** Full-bleed visual of the surprise in action.
304
+ - **Quote slide:** If the surprise is a partnership, let the partner's words carry it.
305
+
306
+ ### Common mistakes
307
+
308
+ - Using this for something that isn't surprising. "And one more thing: we also have an API" is a feature, and belongs in the demo.
309
+ - Multiple "one more things." You get one. That's why it works.
310
+ - Telegraphing the surprise. Keep it out of earlier slides. The whole point is that it's unexpected.
311
+
312
+ ---
313
+
314
+ ## Beat 8: Availability & CTA
315
+
316
+ ### Purpose
317
+
318
+ When can they get it? How? What do they do right now? This is the operational close. Clear, specific, actionable.
319
+
320
+ The audience is excited. Tell them exactly what happens next.
321
+
322
+ ### Pacing
323
+
324
+ Direct. No buildup needed. You've earned the ask. State the facts: date, URL, pricing, next step. Then move to the close.
325
+
326
+ ### Example headlines
327
+
328
+ > **Available today.** <span class="dim">Start free at arc.dev.</span>
329
+ > **Open beta** <span class="dim">starts next Tuesday.</span>
330
+ > **Sign up now.** <span class="dim">First 1,000 teams get early access.</span>
331
+ > **Ship it this week.** <span class="dim">No credit card. No setup call.</span>
332
+
333
+ ### Best components
334
+
335
+ - **Eyebrow + headline + subtitle:** The primary CTA. Eyebrow: "AVAILABILITY". Headline: the date or action. Subtitle: the URL or next step.
336
+ - **Three-column:** If there are multiple paths (try free / talk to sales / join waitlist).
337
+ - **Capability list:** What's available now, what's coming in Q2, what's on the roadmap.
338
+ - **Timeline:** A visual rollout schedule showing launch phases. Use for staged rollouts: "Today: early access. July: public beta. September: GA." Gives urgency and clarity in one slide.
339
+ - **Dark slide:** For maximum urgency. White text, single CTA.
340
+
341
+ ### Common mistakes
342
+
343
+ - No clear CTA. "Learn more at our website" is vague. "Start your free trial at relay.app" is actionable.
344
+ - Burying availability in a paragraph. It should be the headline.
345
+ - Too many options. One primary CTA. Maybe one secondary.
346
+ - Forgetting the URL. They need to know where to go. Put it on screen.
347
+
348
+ ---
349
+
350
+ ## Beat 9: Close
351
+
352
+ ### Purpose
353
+
354
+ One memorable line. The tagline. The thing they'll repeat to a colleague. The thing they'll tweet.
355
+
356
+ This is a punctuation mark, a final beat of energy.
357
+
358
+ ### Pacing
359
+
360
+ Slow down. Say it once. Stop. Let the line do its work.
361
+
362
+ ### Example headlines
363
+
364
+ > **The future of work** <span class="dim">ships today.</span>
365
+ > **Build faster.** <span class="dim">Ship with confidence.</span>
366
+ > **One tool.** <span class="dim">Every team. No compromises.</span>
367
+ > **This is day one.** <span class="dim">Imagine day 1,000.</span>
368
+
369
+ ### Best components
370
+
371
+ - **Dark slide:** The closing line, nothing else. Maximum weight.
372
+ - **Quote slide:** Large type, centered. The final word.
373
+
374
+ ### Common mistakes
375
+
376
+ - A summary slide. "In conclusion, we showed you…" kills the energy. End on a high.
377
+ - Thanking the audience before the line lands. Say the line first. Then thank them if you must.
378
+ - A weak tagline. Spend more time on this line than any other in the deck. Test it out loud.
379
+ - Adding slides after the close. The close is the last slide. Nothing follows it except applause or a Q&A card.
380
+
381
+ ---
382
+
383
+ ## Demo pacing: the setup-show-impact pattern
384
+
385
+ The demo section is where most product launches fail. They either show too much (death by feature tour) or too little (all talk, no proof). The fix is the **setup-show-impact** loop.
386
+
387
+ For every feature you show:
388
+
389
+ ### Setup (10 seconds)
390
+
391
+ One sentence. What was the old way? What was frustrating? This primes the audience to appreciate what they're about to see.
392
+
393
+ > "Right now, deploying a change means opening a ticket, waiting for DevOps, and hoping nothing breaks."
394
+
395
+ ### Show (20–30 seconds)
396
+
397
+ The product doing the thing. A screenshot, a video clip, a live demo. No narration during the visual. Let the audience absorb it. If it's a video, keep it under 15 seconds.
398
+
399
+ ### Impact (5 seconds)
400
+
401
+ One line. The result. The number. The "so what."
402
+
403
+ > "Deploy time went from three days to twelve seconds."
404
+
405
+ Then move to the next feature. The rhythm is: tension → proof → relief → tension → proof → relief.
406
+
407
+ ---
408
+
409
+ ## Visual rhythm
410
+
411
+ A product launch deck should alternate between text and visuals like breathing in and out.
412
+
413
+ ```
414
+ Text → Visual → Text → Visual → Text → Visual
415
+ ```
416
+
417
+ Specifically:
418
+ - **Setup slides** (eyebrow + headline + subtitle) give context
419
+ - **Collage slides** (full-bleed images/video) give proof
420
+ - **Product slides** introduce features
421
+ - **Dark slides** mark transitions
422
+ - **Quote slides** provide breathing room
423
+
424
+ Never put three text slides in a row. Never put three visuals in a row. The alternation is what creates momentum.
425
+
426
+ If you don't have visuals, you don't have a product launch. Get screenshots. Record a screen capture. Render mockups. A launch without visuals is just a memo.
427
+
428
+ ---
429
+
430
+ ## Adapting for audience
431
+
432
+ ### Press event / keynote
433
+
434
+ Full theatrical treatment. Long pauses. One more thing. Big collage slides. The audience is there to be impressed. Give them a show.
435
+
436
+ - Lean into dark slides for drama
437
+ - Use video over screenshots where possible
438
+ - Keep specs minimal. Journalists care about the story and the human impact.
439
+ - End with a quotable line they can use as a headline
440
+
441
+ ### Internal launch (all-hands, team demo)
442
+
443
+ Drop the theater. Keep the structure. The audience already trusts you, so they want clarity and directness.
444
+
445
+ - Save the "one more thing" for external audiences
446
+ - Expand the specs section. Internal teams need detail.
447
+ - Add a "what this means for us" slide (staffing, timeline, dependencies)
448
+ - Be honest about what's ready and what's still in progress
449
+
450
+ ### Customer webinar
451
+
452
+ The audience is evaluating. They need to see themselves in the product.
453
+
454
+ - Expand social proof. They want to know who else is using it.
455
+ - Tailor the problem section to *their* specific pain
456
+ - Demo the workflow they'd actually use, the one closest to their day-to-day
457
+ - CTA should be "talk to us" or "start a trial," a low-commitment next step
458
+
459
+ ### Recorded / async (product video, launch page)
460
+
461
+ No live energy to lean on. The deck must carry itself.
462
+
463
+ - Tighter pacing, about 20% less time per beat than live
464
+ - More collage slides. Visuals hold attention without a speaker.
465
+ - Subtitles on every slide. The body copy does the speaker's job.
466
+ - Keep it under 5 minutes total if it's a video
467
+
468
+ ---
469
+
470
+ ## Adapting for format
471
+
472
+ ### Live keynote (you're presenting)
473
+
474
+ You are the setup. The slide is the punchline. Talk to the audience, then click to reveal. The audience can read faster than you can talk, so let the slides land visually while you provide the narrative frame.
475
+
476
+ ### Pre-recorded video
477
+
478
+ Every second counts. Cut 30% of what you'd say live. Let visuals linger longer. Add music or ambient sound during collage slides.
479
+
480
+ ### Read-only deck (shared via link, no presenter)
481
+
482
+ The headlines carry the narrative arc. The subtitles carry the detail. Every slide should make sense without hearing someone talk over it. Add more body copy. Use the capability list component for information density.
483
+
484
+ ---
485
+
486
+ ## Common mistakes
487
+
488
+ ### 1. Too many features
489
+
490
+ You have twelve things to show. Pick five. The audience can absorb that many in one sitting. The rest go in a follow-up blog post, a documentation page, or version 2 of the launch.
491
+
492
+ ### 2. No demo
493
+
494
+ If you announce a product without showing it working, the audience fills the gap with skepticism. Even a single screenshot is better than nothing. A 10-second video is better than a screenshot. A live demo is best of all.
495
+
496
+ ### 3. Burying the price
497
+
498
+ If you have pricing, say it clearly and say it once. Give the audience the number directly. If the price is good, it's a feature: put it in a headline.
499
+
500
+ ### 4. Anticlimactic reveals
501
+
502
+ The reveal should feel like a curtain drop. If it feels like "oh, here's another slide," you haven't earned it. The problem section must create enough tension that the reveal feels like relief.
503
+
504
+ ### 5. Feature parity as a selling point
505
+
506
+ "We do everything they do, plus one more thing" is a comparison chart, and audiences don't rally behind comparison charts. Lead with what's *new* and uniquely yours.
507
+
508
+ ### 6. No visual proof
509
+
510
+ Words describe. Images prove. If your demo section is all text slides, you're telling the audience to trust you. Show them instead.
511
+
512
+ ### 7. The fake "one more thing"
513
+
514
+ If your surprise is just the last feature on your roadmap, it doesn't qualify. Skip the "one more thing" beat entirely. A clean CTA is more powerful than a forced reveal.
515
+
516
+ ### 8. Ending with a whimper
517
+
518
+ "Thanks, that's all we have today" is a flat ending. Your last slide should be the most polished, most rehearsed, most memorable moment in the deck. Spend time on it.
519
+
520
+ ---
521
+
522
+ ## A formula that works
523
+
524
+ If you don't know where to start:
525
+
526
+ ```
527
+ 1. Set the scene. Why does this matter now?
528
+ 2. Name the pain. What's broken?
529
+ 3. Reveal the product. One name, one line.
530
+ 4. Show it working. Three to five features, setup-show-impact for each.
531
+ 5. Give the specs. Numbers, pricing, compatibility.
532
+ 6. Show who's in. Logos, quotes, results.
533
+ 7. Surprise them (only if you can).
534
+ 8. Tell them how to get it.
535
+ 9. Close with one line you've rehearsed.
536
+ ```
537
+
538
+ Nine beats. Use them. Skip the optional one. Reorder if your product demands it. They're a scaffold, a flexible framework you adapt to the story.
539
+
540
+ ---
541
+
542
+ ## On the reveal line
543
+
544
+ Spend more time on your reveal line than any other line in the deck except the close.
545
+
546
+ It should be:
547
+ - **Named.** Give the product a proper name. A real, memorable name.
548
+ - **Positioned.** One line that says what it is and who it's for.
549
+ - **Clean.** Zero jargon, zero feature lists, zero qualifiers. Just the essence.
550
+
551
+ Test it by imagining someone texting it to a friend: "They just announced [X]. It's [one-line description]." If that text doesn't make sense or doesn't sound exciting, rewrite the line.
552
+
553
+ ---
554
+
555
+ ## The visual hierarchy of a launch
556
+
557
+ Each slide carries different weight. Here's the energy curve:
558
+
559
+ ```
560
+ Energy
561
+
562
+ │ ★ Reveal
563
+ │ / \ ★ One More Thing
564
+ │ / \ / \
565
+ │ / Demo\ / \
566
+ │ / section \ / \
567
+ │ / \/ \ ★ Close
568
+ │ / Problem Specs/ \
569
+ │ / section Proof \
570
+ │ / \
571
+ │/ Setup \
572
+ └──────────────────────────────→ Time
573
+ ```
574
+
575
+ Design your slides to match this curve:
576
+ - **Low energy** = text-heavy slides, subtle backgrounds, smaller type
577
+ - **High energy** = dark slides, full-bleed collages, large type, product showcases
578
+
579
+ The reveal and the close should be the loudest slides in the deck. If your spec section is louder than your reveal, something's wrong.