@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,607 @@
1
+ ---
2
+ name: deck-system
3
+ description: >
4
+ Reference skill for the Slides framework. Loaded by /slides and other commands.
5
+ Contains the full component library, design tokens, theme rules, storytelling routing,
6
+ tone rules, and diversity guidelines. Not a user-facing command on its own.
7
+ ---
8
+
9
+ # Slides: Deck Generation Skill
10
+
11
+ You are generating a slide deck using the Slides framework. This skill gives you everything needed to produce correct, on-brand decks.
12
+
13
+ ## What you produce
14
+
15
+ A single self-contained HTML file (`deck.html`) with inline CSS and JS. No build step, no dependencies beyond Google Fonts (Inter). Navigate with arrow keys, space, swipe. Export to PDF with `P`.
16
+
17
+ ## Step 0. Use what the user already provided
18
+
19
+ The user's message, form responses, and attachments are the brief. Extract every detail: topic, format, length, theme, audience, key points.
20
+
21
+ **Never re-ask for information the user already gave.** If the user filled in a form or wrote a description, that is the brief. Use it. Proceed to Step 1 immediately.
22
+
23
+ If you truly have zero context about what the deck is about, ask once in plain text. One short question. Then move on.
24
+
25
+ ## Step 1. Choose the storytelling format
26
+
27
+ Based on the user's description, select the right storytelling format. Read the corresponding file for full structure and guidance.
28
+
29
+ | Signal in user's description | Format | File (same folder as this skill) |
30
+ |------------------------------|--------|-----------------------------------|
31
+ | "talk", "conference", "keynote", "audience", "stage" | TED Talk (six-beat) | `STORYTELLING.md` |
32
+ | "pitch", "investors", "funding", "raise", "seed", "series" | Sequoia pitch deck | `STORYTELLING-sequoia.md` |
33
+ | "strategy", "board", "quarterly", "exec", "leadership" | McKinsey SCR | `STORYTELLING-mbb.md` |
34
+ | "launch", "product", "release", "announce", "unveil" | Product launch | `STORYTELLING-product-launch.md` |
35
+ | "board update", "status", "review", "KPIs", "OKRs" | Board update | `STORYTELLING-board.md` |
36
+ | "sales", "prospect", "customer", "close", "pipeline" | Sales deck | `STORYTELLING-sales.md` |
37
+ | "claus", "buzzwords", "hype", "bold headlines only" | Claus Mode | `STORYTELLING-claus.md` |
38
+
39
+ These files are in the same directory as this SKILL.md. Read them from here.
40
+
41
+ **Default:** If unclear, use the six-beat TED Talk structure from `STORYTELLING.md`. It adapts to most formats.
42
+
43
+ ## Step 2. Draft the outline
44
+
45
+ Before writing HTML, produce a slide-by-slide outline:
46
+ - Slide number
47
+ - Component type (from the reference below)
48
+ - Headline text
49
+ - Which storytelling beat it belongs to
50
+
51
+ Share the outline with the user. Get approval before writing HTML.
52
+
53
+ ## Step 3. Write the HTML
54
+
55
+ Use the component reference below. Copy the exact HTML structure. Change only the text content. Stay on-token.
56
+
57
+ ---
58
+
59
+ ## Design tokens
60
+
61
+ ### Colors
62
+
63
+ | Token | Hex | Use |
64
+ |-------|-----|-----|
65
+ | Background | `#f5f5f3` | Page/slide background |
66
+ | Surface | `#fafaf8` | Card backgrounds |
67
+ | Surface (white) | `#ffffff` | Cards that need more contrast |
68
+ | Ink / Hero | `#1a1a1a` | Text primary, dark slides |
69
+ | Border soft | `#e0e0db` | Default borders |
70
+ | Border medium | `#d5d5d0` | Emphasized borders |
71
+ | Pill background | `#eeeee9` | Context pills |
72
+ | Text dim | `#a0a09a` | Subtitles, body copy |
73
+ | Text very dim | `#b5b5b0` | Dim spans in headlines, meta |
74
+ | Text faint | `#c5c5c0` | Labels, very low priority text |
75
+ | On-dark text | `#f5f5f3` | Primary text on dark backgrounds |
76
+ | On-dark dim | `#ccc` | Body text on dark backgrounds |
77
+ | On-dark very dim | `#888` | Labels on dark backgrounds |
78
+
79
+ ### Typography
80
+
81
+ - **Font:** Inter (weights 300, 400, 500, 600)
82
+ - **H1 display:** `clamp(2.5rem, 6vw, 5rem)`, weight 500, tracking `-0.035em`
83
+ - **H2 section:** `clamp(1.75rem, 3.5vw, 2.6rem)`, weight 500, tracking `-0.025em`
84
+ - **H3 column:** ~1rem, weight 500
85
+ - **Body/subtitle:** 0.85–1rem, weight 400, line-height 1.5–1.6
86
+ - **Eyebrow:** 0.65–0.75rem, uppercase, weight 500, tracking `0.08–0.1em`, color `#a0a09a`
87
+
88
+ ### Spacing
89
+
90
+ - Slide padding: `6vh 8vw`
91
+ - Max content width: `1100px`
92
+ - Card padding: `1rem–1.5rem`
93
+ - Border radius: `10px` cards, `4px` small elements
94
+ - Section gaps: `2–4rem`
95
+
96
+ ---
97
+
98
+ ## The headline pattern (use everywhere)
99
+
100
+ Bold anchor + dim extension. This is the visual identity of the system.
101
+
102
+ ```html
103
+ <h1>Anchor. <span class="dim">Extension that fades.</span></h1>
104
+ ```
105
+
106
+ - First phrase: weight 500, full color
107
+ - Second phrase: weight 300, color `#b5b5b0` (or `#888` on dark slides)
108
+ - Use on every headline that has the room
109
+
110
+ ---
111
+
112
+ ## Component reference
113
+
114
+ ### 1. Cover slide
115
+
116
+ ```html
117
+ <section class="slide active">
118
+ <div class="slide-inner">
119
+ <div class="eyebrow">Conference · Date</div>
120
+ <h1>Your headline.<br><span class="dim">Continuation.</span></h1>
121
+ <div class="meta">Speaker name · 20 minutes</div>
122
+ </div>
123
+ </section>
124
+ ```
125
+
126
+ ### 2. Quote slide
127
+
128
+ A single bold statement. No subtitle. No supporting text.
129
+
130
+ ```html
131
+ <section class="slide quote-slide">
132
+ <div class="slide-inner">
133
+ <h1>A bold statement <span class="dim">that opens the talk.</span></h1>
134
+ </div>
135
+ </section>
136
+ ```
137
+
138
+ Dark variant: `<section class="slide dark quote-slide">`
139
+
140
+ ### 3. Eyebrow + Headline + Subtitle
141
+
142
+ The default text slide.
143
+
144
+ ```html
145
+ <section class="slide">
146
+ <div class="slide-inner">
147
+ <div class="eyebrow">Section label</div>
148
+ <h1>Headline. <span class="dim">One line that lands.</span></h1>
149
+ <p class="subtitle">One or two sentences of nuance. Keep it short.</p>
150
+ </div>
151
+ </section>
152
+ ```
153
+
154
+ ### 4. Two-column
155
+
156
+ ```html
157
+ <div class="two-col">
158
+ <div>
159
+ <div class="eyebrow">The problem</div>
160
+ <h2>What's broken.</h2>
161
+ <p>Description of the pain.</p>
162
+ </div>
163
+ <div>
164
+ <div class="eyebrow">The fix</div>
165
+ <h2>What we built.</h2>
166
+ <p>Description of the solution.</p>
167
+ </div>
168
+ </div>
169
+ ```
170
+
171
+ ### 4b. Step stack (inside two-column)
172
+
173
+ ```html
174
+ <div class="col-stack">
175
+ <div class="step">First step</div>
176
+ <div class="step dim">Blocked step</div>
177
+ <div class="step kill">Negative outcome</div>
178
+ <div class="step live">Positive outcome</div>
179
+ </div>
180
+ ```
181
+
182
+ ### 5. Three-column
183
+
184
+ ```html
185
+ <div class="three-col" style="margin-top: 2rem;">
186
+ <div><h3>Why</h3><p>The motivation.</p></div>
187
+ <div><h3>How</h3><p>The mechanism.</p></div>
188
+ <div><h3>What</h3><p>The outcome.</p></div>
189
+ </div>
190
+ ```
191
+
192
+ ### 6. Capability list (Q&A rows)
193
+
194
+ ```html
195
+ <div class="cap-list" style="margin-top: 2rem;">
196
+ <div class="cap-row">
197
+ <div class="cap-q">Question?</div>
198
+ <div class="cap-a">Clear, specific answer.</div>
199
+ </div>
200
+ </div>
201
+ ```
202
+
203
+ ### 7. Dark callout (one per deck max)
204
+
205
+ ```html
206
+ <div class="callout">
207
+ <h3>Why now</h3>
208
+ <p>The moment. <strong>Key insight in bold.</strong> Then context.</p>
209
+ </div>
210
+ ```
211
+
212
+ ### 8. Dot flow (process)
213
+
214
+ ```html
215
+ <div class="dot-flow">
216
+ <div class="dot-step"><div class="dot"></div><h4>Step 1</h4><p>Caption</p></div>
217
+ <div class="dot-step"><div class="dot"></div><h4>Step 2</h4><p>Caption</p></div>
218
+ </div>
219
+ ```
220
+
221
+ ### 9. Stack grid
222
+
223
+ ```html
224
+ <div class="stack-grid">
225
+ <div class="stack-card">
226
+ <div class="stack-card-label">Category</div>
227
+ <div class="stack-tool"><span class="mark"></span>Tool name</div>
228
+ </div>
229
+ </div>
230
+ ```
231
+
232
+ ### 10. Spec block + context + outputs
233
+
234
+ ```html
235
+ <div class="spec-flow">
236
+ <div class="spec-block"><h4>The Input</h4><p>What goes in</p></div>
237
+ <div class="ctx-row">
238
+ <span class="ctx-label">draws from</span>
239
+ <span class="ctx-pill">Source 1</span>
240
+ <span class="ctx-pill">Source 2</span>
241
+ </div>
242
+ <div class="ai-divider">
243
+ <div class="line"></div>
244
+ <span class="ai-pill">Process</span>
245
+ <div class="line"></div>
246
+ </div>
247
+ <div class="outputs-row">
248
+ <div class="output-card"><h5>Output A</h5><p>What it produces.</p></div>
249
+ <div class="output-card"><h5>Output B</h5><p>What it produces.</p></div>
250
+ <div class="output-card"><h5>Output C</h5><p>What it produces.</p></div>
251
+ </div>
252
+ </div>
253
+ ```
254
+
255
+ ### 11. Product slide (showcase)
256
+
257
+ ```html
258
+ <div class="product-row">
259
+ <div class="product-meta">
260
+ <div class="product-num">/01</div>
261
+ <div class="product-tag">A short, punchy hook.</div>
262
+ <h3 class="product-headline">One-line description.</h3>
263
+ <p class="product-desc">Two or three sentences. Personal and concrete.</p>
264
+ <div class="product-stat">Build time or metric</div>
265
+ </div>
266
+ <div class="product-name">Name<sup>™</sup></div>
267
+ </div>
268
+ ```
269
+
270
+ ### 12. Collage slide (full media)
271
+
272
+ ```html
273
+ <section class="slide collage-slide">
274
+ <div class="collage">
275
+ <img src="media/your-image.png" alt="">
276
+ </div>
277
+ </section>
278
+ ```
279
+
280
+ ### 13. JEDUF three-column comparison
281
+
282
+ ```html
283
+ <div class="jeduf">
284
+ <div class="jeduf-col">
285
+ <div class="jeduf-label">Too much</div>
286
+ <div class="jeduf-title">Extreme A</div>
287
+ <div class="jeduf-philosophy">"Philosophy quote."</div>
288
+ <div class="jeduf-step">Step 1</div>
289
+ </div>
290
+ <div class="jeduf-col hero">
291
+ <div class="jeduf-label">Just right</div>
292
+ <div class="jeduf-title">The middle path</div>
293
+ <div class="jeduf-philosophy">"Balanced philosophy."</div>
294
+ <div class="jeduf-step">Step 1</div>
295
+ </div>
296
+ <div class="jeduf-col">
297
+ <div class="jeduf-label">Too little</div>
298
+ <div class="jeduf-title">Extreme B</div>
299
+ <div class="jeduf-philosophy">"Other extreme."</div>
300
+ <div class="jeduf-step">Step 1</div>
301
+ </div>
302
+ </div>
303
+ ```
304
+
305
+ ### 14. Dark slide
306
+
307
+ ```html
308
+ <section class="slide dark">
309
+ <div class="slide-inner">
310
+ <div class="eyebrow">Section label</div>
311
+ <h1>The pivot moment. <span class="dim">Lands harder in dark.</span></h1>
312
+ <p class="subtitle">Use sparingly. Two or three per deck max.</p>
313
+ </div>
314
+ </section>
315
+ ```
316
+
317
+ ### 15. Timeline
318
+
319
+ ```html
320
+ <div class="timeline">
321
+ <div class="timeline-row">
322
+ <div class="timeline-year">Year 1</div>
323
+ <div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
324
+ <div class="timeline-content"><h4>Title</h4><p>Description.</p></div>
325
+ </div>
326
+ </div>
327
+ ```
328
+
329
+ ### 16. Stat grid
330
+
331
+ ```html
332
+ <div class="stat-grid">
333
+ <div class="stat-card">
334
+ <div class="stat-label">Metric</div>
335
+ <div class="stat-number">7×</div>
336
+ <div class="stat-desc">What this number means.</div>
337
+ </div>
338
+ <div class="stat-card stat-dark">
339
+ <div class="stat-label">Hero metric</div>
340
+ <div class="stat-number">42</div>
341
+ <div class="stat-desc">The key number, highlighted.</div>
342
+ </div>
343
+ </div>
344
+ ```
345
+
346
+ ### 17. Quote pair
347
+
348
+ ```html
349
+ <div class="quote-pair">
350
+ <div class="quote-card">
351
+ <div class="quote-text">"The first perspective."</div>
352
+ <div class="quote-attr">Speaker or label</div>
353
+ </div>
354
+ <div class="quote-card quote-dark">
355
+ <div class="quote-text">"The counterpoint."</div>
356
+ <div class="quote-attr">Speaker or label</div>
357
+ </div>
358
+ </div>
359
+ ```
360
+
361
+ ### 18. Logo grid
362
+
363
+ ```html
364
+ <div class="logo-grid">
365
+ <div class="logo-cell">
366
+ <div class="logo-mark"></div>
367
+ <div class="logo-name">Partner name</div>
368
+ <div class="logo-role">Role or team</div>
369
+ </div>
370
+ </div>
371
+ ```
372
+
373
+ ### 19. Code slide
374
+
375
+ ```html
376
+ <div class="code-frame">
377
+ <div class="code-frame-header">
378
+ <div class="code-frame-dot"></div>
379
+ <div class="code-frame-dot"></div>
380
+ <div class="code-frame-dot"></div>
381
+ <div class="code-frame-title">filename.ext</div>
382
+ </div>
383
+ <pre><span class="code-comment">// comment</span>
384
+ <span class="code-keyword">function</span> <span class="code-string">example</span>() {}</pre>
385
+ </div>
386
+ ```
387
+
388
+ ### 20. Closing / Thanks
389
+
390
+ ```html
391
+ <section class="slide">
392
+ <div class="slide-inner">
393
+ <h1 style="font-size: clamp(2.5rem, 5vw, 4rem);">Thanks.</h1>
394
+ <p class="subtitle">Questions?</p>
395
+ <div class="meta">Speaker name · Affiliation</div>
396
+ </div>
397
+ </section>
398
+ ```
399
+
400
+ ### 21. Testimonial grid
401
+
402
+ ```html
403
+ <div class="testimonial-grid">
404
+ <div class="testimonial-card">
405
+ <div class="testimonial-quote">"Quote text here."</div>
406
+ <div class="testimonial-author">
407
+ <div class="testimonial-avatar"></div>
408
+ <div>
409
+ <div class="testimonial-name">Name</div>
410
+ <div class="testimonial-title">Role, Company</div>
411
+ </div>
412
+ </div>
413
+ </div>
414
+ </div>
415
+ ```
416
+
417
+ ### 22. Logo bar
418
+
419
+ ```html
420
+ <div class="logo-bar">
421
+ <div class="logo-bar-item">Partner A</div>
422
+ <div class="logo-bar-item">Partner B</div>
423
+ </div>
424
+ ```
425
+
426
+ ### 23. Feature card row
427
+
428
+ ```html
429
+ <div class="feature-cards">
430
+ <div class="feature-card">
431
+ <div>
432
+ <div class="feature-card-title">Feature name</div>
433
+ <div class="feature-card-desc">Short description.</div>
434
+ </div>
435
+ <div class="feature-card-inner"></div>
436
+ </div>
437
+ </div>
438
+ ```
439
+
440
+ ### 24. Update row (changelog)
441
+
442
+ ```html
443
+ <div class="update-row">
444
+ <div class="update-card">
445
+ <div class="update-header">
446
+ <span class="update-badge">3.3</span>
447
+ <span class="update-date">May 7, 2026</span>
448
+ </div>
449
+ <div class="update-title">Feature or fix description</div>
450
+ </div>
451
+ </div>
452
+ ```
453
+
454
+ ### 25. Art overlay
455
+
456
+ ```html
457
+ <div class="art-overlay">
458
+ <div class="art-overlay-bg"></div>
459
+ <div class="art-overlay-ui">
460
+ <div class="art-overlay-titlebar">
461
+ <div class="art-overlay-dot"></div>
462
+ <div class="art-overlay-dot"></div>
463
+ <div class="art-overlay-dot"></div>
464
+ </div>
465
+ <div class="art-overlay-content"></div>
466
+ </div>
467
+ <div class="art-overlay-caption">
468
+ <h3>Caption title</h3>
469
+ <p>Caption description.</p>
470
+ </div>
471
+ </div>
472
+ ```
473
+
474
+ ---
475
+
476
+ ## Themes
477
+
478
+ Four options are available. The first three are predefined templates. The fourth is a custom theme the user describes.
479
+
480
+ | Theme | Template (in this folder) | Character |
481
+ |-------|---------------------------|-----------|
482
+ | Default | `deck.html` | Warm off-white, minimal, editorial |
483
+ | Craft | `deck-craft.html` | Richer textures, art overlays, more visual weight |
484
+ | Solid | `deck-solid.html` | Glass morphism, dark background, frosted surfaces |
485
+ | Custom | User description | User defines the visual identity |
486
+
487
+ ### Predefined themes (Default, Craft, Solid)
488
+
489
+ **CRITICAL: Do not invent your own theme CSS.** When using a predefined theme:
490
+
491
+ 1. **Read the template file from this skill folder** (`deck.html`, `deck-craft.html`, or `deck-solid.html`). They are in the same directory as this SKILL.md.
492
+ 2. **Copy the entire `<style>` block verbatim.** Every CSS variable, every component style, every media query. Do not modify it. Do not improvise colors, gradients, or effects.
493
+ 3. **Copy the entire `<script>` block verbatim.** Navigation, progress bar, PDF export. Do not rewrite it.
494
+ 4. **Only write the slide content.** Replace the `<section class="slide">` elements with the new deck content. Keep the `<head>`, `<style>`, `<script>`, `.progress`, and `.deck` wrapper structure identical to the template.
495
+
496
+ The template files are the source of truth. If you cannot read them, ask the user to provide the template file. Never generate CSS from memory or from the token table above.
497
+
498
+ ### Custom theme
499
+
500
+ A custom theme can come from a text description, an attached image, or both.
501
+
502
+ #### From text
503
+
504
+ When the user describes a style (e.g. "dark blue with orange accents", "brutalist black and white"):
505
+
506
+ 1. **Start from `deck.html` as the structural base.** Read it, copy its `<script>` block verbatim.
507
+ 2. **Rewrite the `<style>` block** to match the description. Follow these rules:
508
+ - Keep every CSS selector and class name identical to the Default theme. Components must still work.
509
+ - Change only visual properties: colors, backgrounds, gradients, shadows, border styles, border-radius, font weights.
510
+ - Preserve all layout properties: padding, margin, grid, flexbox, clamp values, media queries.
511
+ - Define a cohesive palette: background, surface, ink, border, dim text, accent. At minimum 6 tokens.
512
+ - Keep the Inter font unless the user requests a different one.
513
+ 3. **Show the user the palette** before writing HTML. List the key colors and ask for approval.
514
+ 4. **Apply the same headline pattern** (bold + dim) and all component HTML structures.
515
+
516
+ #### From image
517
+
518
+ When the user attaches a screenshot, slide, website capture, or brand guideline image, use it as the design reference. Do not ask questions. Go straight to building.
519
+
520
+ 1. **Analyze the image** and extract these design tokens:
521
+ - **Base mode:** dark or light
522
+ - **Background:** primary background color
523
+ - **Surface:** card or secondary surface color
524
+ - **Ink:** main text color
525
+ - **Accent:** links, buttons, highlights
526
+ - **Dim:** muted or secondary text color
527
+ - **Border:** style (solid, none, subtle) and color
528
+ - **Corner radius:** sharp (0), small (4px), medium (10px), large (16px+)
529
+ - **Shadows:** none, subtle, or elevated
530
+ - **Typography weight:** light, regular, or bold
531
+ - **Font:** identify the typeface if recognizable, otherwise keep Inter
532
+ 2. **Start from `deck.html` as the structural base.** Read it, copy its `<script>` block verbatim.
533
+ 3. **Rewrite the `<style>` block** using the extracted tokens. Same rules as text-based custom themes: keep all selectors, change only visual properties, preserve layout.
534
+ 4. **If the user also wrote text** ("like this but darker", "match this with rounder corners"), apply it as an override on top of what was extracted from the image.
535
+ 5. **Generate immediately.** No palette approval step needed when working from an image. The image is the approval.
536
+
537
+ Default to the Default theme (`deck.html`) unless the user specifies otherwise.
538
+
539
+ ---
540
+
541
+ ## Freestyle: new components
542
+
543
+ You can invent new slide layouts when needed. Rules:
544
+
545
+ 1. **Stay on-token.** Use only the colors, fonts, weights, and spacing from the tokens table.
546
+ 2. **Use the headline pattern.** Bold-then-dim with `<span class="dim">`.
547
+ 3. **Match existing craft.** Border radius 10px cards, 4px small elements. Padding 1–1.5rem.
548
+ 4. **Name the class.** Lowercase, hyphenated: `timeline-row`, `stat-grid`, `quote-pair`.
549
+ 5. **Keep CSS inline** in the `<style>` block, grouped with a comment.
550
+ 6. **One new idea per slide.** Pair novel layouts with familiar elements.
551
+
552
+ ---
553
+
554
+ ## Tone rules (follow strictly)
555
+
556
+ 1. **Bold the keyword. Dim the rest.** Every headline.
557
+ 2. **No em-dashes.** Anywhere. Use periods, commas, or colons instead.
558
+ 3. **No contrast framing. Zero tolerance.** This is the most common mistake. Scan every sentence you write. If it contains any of these patterns, rewrite it:
559
+ - "X, not Y." → Say what X is. Drop the Y.
560
+ - "Not X. Y." → Say what Y is. Drop the negation.
561
+ - "I thought X. Actually Y." → Say what Y is directly.
562
+ - "X is the work, not the leftover." → "X is the work."
563
+ - "That is not a cat skill. That is the whole assignment." → "That is the whole assignment."
564
+ - "I thought I was adopting a cat. Molly was adopting a project." → "Molly adopted a project."
565
+ - Any sentence that defines something by what it is NOT is contrast framing. Delete the negative half. Keep the positive claim.
566
+ 4. **No fluff.** If a sentence does not add information, delete it.
567
+ 5. **Specific numbers.** "7x" beats "huge gains."
568
+ 6. **Headlines are statements.** Exception: Q&A rows.
569
+ 7. **Use names.** Say the product or feature name instead of "it."
570
+ 8. **Pick one term and stick with it.** Do not paraphrase your own product.
571
+ 9. **Self-check before output.** Read every slide. If any sentence uses "not", "instead of", "rather than", or "but" to set up a contrast between what something ISN'T and what it IS, rewrite it. Keep only the positive claim.
572
+
573
+ ---
574
+
575
+ ## Component diversity
576
+
577
+ Use the full component library. Do not default to the same five component types.
578
+
579
+ - For decks over 10 slides: use at least 5 different component types.
580
+ - For decks over 20 slides: use at least 8 different component types.
581
+ - Every deck should have at least one visual-heavy slide (Collage, Art overlay, or Product slide).
582
+ - Before finalizing, check: did you use any of these components? Timeline, Product slide, JEDUF, Quote pair, Spec block, Stack grid, Art overlay, Testimonial grid, Feature card row, Update row, Code slide, Logo bar, Logo grid, Step stack, Collage slide.
583
+ - If a beat would benefit from a component that does not exist yet, suggest it. Describe what it would look like and ask the user: "This slide would work better with a [description]. Want me to build it?" If yes, follow the freestyle rules to create it on-token before continuing.
584
+
585
+ ---
586
+
587
+ ## Images
588
+
589
+ When the user attaches a photo or image:
590
+
591
+ 1. **Embed it as a base64 data URI** directly in the `<img>` tag. This keeps the deck self-contained in a single HTML file.
592
+ 2. Use the format: `<img src="data:image/jpeg;base64,..." alt="description">`
593
+ 3. Do NOT write placeholder text like "save the photo as X.jpg". The user cannot do that from this environment.
594
+ 4. If you cannot access the image data, use a CSS placeholder (a colored `div` with the same dimensions) and tell the user: "I could not embed the photo. Drop the image file next to deck.html and update the `src` attribute."
595
+
596
+ For images the user provides as URLs, use the URL directly in the `src` attribute.
597
+
598
+ ---
599
+
600
+ ## Constraints
601
+
602
+ - **Max 1 dark callout** per deck.
603
+ - **Max 2–3 dark slides** per deck.
604
+ - Quote slides for openings, transitions, and mic-drops only.
605
+ - Every slide wraps content in `<div class="slide-inner">` inside `<section class="slide">`.
606
+ - First slide gets class `active`: `<section class="slide active">`.
607
+ - The JS handles navigation, counter, and progress bar automatically.