@hiai-gg/hiai-opencode 0.2.1 → 0.2.2

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 (477) hide show
  1. package/.env.example +4 -0
  2. package/AGENTS.md +34 -38
  3. package/ARCHITECTURE.md +4 -3
  4. package/LICENSE.md +14 -0
  5. package/README.md +52 -21
  6. package/config/hiai-opencode.schema.json +11 -13
  7. package/dist/agents/{bob.d.ts → bob/claude.d.ts} +6 -2
  8. package/dist/agents/bob/core.d.ts +6 -0
  9. package/dist/agents/bob/gpt.d.ts +11 -0
  10. package/dist/agents/bob/index.d.ts +3 -0
  11. package/dist/agents/coder/core.d.ts +4 -0
  12. package/dist/agents/coder/gpt.d.ts +1 -4
  13. package/dist/agents/coder/index.d.ts +1 -0
  14. package/dist/agents/manager/agent.d.ts +1 -1
  15. package/dist/agents/manager/default-prompt-sections.d.ts +3 -3
  16. package/dist/agents/manager/guard-integration.d.ts +1 -0
  17. package/dist/agents/prompt-library/index.d.ts +0 -1
  18. package/dist/agents/prompt-library/shared-execution.d.ts +9 -0
  19. package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
  20. package/dist/agents/strategist/identity-constraints.d.ts +1 -1
  21. package/dist/agents/strategist/plan-generation.d.ts +1 -1
  22. package/dist/agents/types.d.ts +2 -1
  23. package/dist/config/defaults.d.ts +1 -0
  24. package/dist/config/platform-schema.d.ts +26 -26
  25. package/dist/config/schema/agent-names.d.ts +6 -6
  26. package/dist/config/schema/agent-overrides.d.ts +0 -128
  27. package/dist/config/schema/hiai-opencode-config.d.ts +0 -128
  28. package/dist/config/types.d.ts +2 -2
  29. package/dist/features/background-agent/manager-notifier.d.ts +46 -0
  30. package/dist/features/background-agent/manager-types.d.ts +40 -0
  31. package/dist/features/background-agent/manager.d.ts +3 -19
  32. package/dist/features/background-agent/polling-manager.d.ts +51 -0
  33. package/dist/features/boulder-state/storage.d.ts +1 -0
  34. package/dist/features/builtin-commands/templates/loop.d.ts +2 -0
  35. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  36. package/dist/features/builtin-skills/skills/interview-me.d.ts +2 -0
  37. package/dist/features/builtin-skills/skills/planning-and-task-breakdown.d.ts +2 -0
  38. package/dist/hooks/reasoning-content-cache/hook.d.ts +11 -0
  39. package/dist/hooks/reasoning-content-cache/index.d.ts +1 -0
  40. package/dist/hooks/session-recovery/checkpoint.d.ts +48 -0
  41. package/dist/hooks/session-recovery/enhanced-hook.d.ts +30 -0
  42. package/dist/hooks/session-recovery/state-backup.d.ts +76 -0
  43. package/dist/hooks/shared/compaction-in-progress.d.ts +4 -0
  44. package/dist/hooks/start-work/git-operations.d.ts +47 -0
  45. package/dist/hooks/token-budget.d.ts +30 -0
  46. package/dist/index.js +1185 -1078
  47. package/dist/mcp/rate-limiter.d.ts +68 -0
  48. package/dist/plugin/chat-message.d.ts +8 -0
  49. package/dist/plugin/command-execute-before.d.ts +1 -1
  50. package/dist/plugin/event-handlers/message-updated.d.ts +2 -0
  51. package/dist/plugin/event-handlers/session-error.d.ts +2 -0
  52. package/dist/plugin/event-handlers/session-status.d.ts +2 -0
  53. package/dist/plugin/event-handlers/types.d.ts +62 -0
  54. package/dist/plugin/event-handlers/utils.d.ts +11 -0
  55. package/dist/plugin/event.d.ts +1 -1
  56. package/dist/shared/data-path.d.ts +1 -1
  57. package/dist/shared/errors.d.ts +70 -0
  58. package/dist/shared/extract-session-id.d.ts +8 -0
  59. package/dist/shared/git-worktree/get-git-state-summary.d.ts +14 -0
  60. package/dist/shared/index.d.ts +67 -68
  61. package/dist/shared/internal-initiator-marker.d.ts +1 -1
  62. package/dist/shared/logger.d.ts +5 -1
  63. package/dist/shared/reasoning-content-cache.d.ts +68 -0
  64. package/dist/shared/safe-create-hook.d.ts +4 -4
  65. package/dist/tools/call-hiai-agent/constants.d.ts +2 -2
  66. package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
  67. package/dist/tools/look-at/constants.d.ts +1 -1
  68. package/docs/architecture/bob-manager-architecture.md +244 -0
  69. package/docs/hiai-opencode/adr/ADR-001-agent-identity-section-injection.md +66 -0
  70. package/docs/hiai-opencode/adr/ADR-002-anti-loop-guard-priority.md +63 -0
  71. package/docs/hiai-opencode/adr/ADR-003-compaction-mechanism.md +71 -0
  72. package/docs/hiai-opencode/adr/ADR-004-session-recovery.md +76 -0
  73. package/docs/hiai-opencode/api.md +305 -0
  74. package/docs/hiai-opencode/hooks-architecture.md +225 -0
  75. package/docs/hiai-opencode/migration.md +209 -0
  76. package/docs/skill-discovery.md +288 -0
  77. package/package.json +1 -1
  78. package/skills/agent-browser/SKILL.md +193 -0
  79. package/skills/apple-hig/SKILL.md +43 -0
  80. package/skills/article-magazine/SKILL.md +46 -0
  81. package/skills/article-magazine/example.html +81 -0
  82. package/skills/article-magazine/example.md +38 -0
  83. package/skills/canvas-design/SKILL.md +45 -0
  84. package/skills/design-templates/audio-jingle/SKILL.md +132 -0
  85. package/skills/design-templates/audio-jingle/example.html +128 -0
  86. package/skills/design-templates/blog-post/SKILL.md +80 -0
  87. package/skills/design-templates/blog-post/example.html +80 -0
  88. package/skills/design-templates/clinical-case-report/SKILL.md +209 -0
  89. package/skills/design-templates/clinical-case-report/example.html +698 -0
  90. package/skills/design-templates/clinical-case-report/examples/example-stemi.html +698 -0
  91. package/skills/design-templates/clinical-case-report/references/case-formats.md +94 -0
  92. package/skills/design-templates/clinical-case-report/references/checklist.md +41 -0
  93. package/skills/design-templates/critique/SKILL.md +258 -0
  94. package/skills/design-templates/critique/example.html +671 -0
  95. package/skills/design-templates/dashboard/SKILL.md +76 -0
  96. package/skills/design-templates/dashboard/example.html +118 -0
  97. package/skills/design-templates/dating-web/SKILL.md +92 -0
  98. package/skills/design-templates/dating-web/example.html +265 -0
  99. package/skills/design-templates/dcf-valuation/SKILL.md +140 -0
  100. package/skills/design-templates/dcf-valuation/references/sector-wacc.md +42 -0
  101. package/skills/design-templates/digital-eguide/SKILL.md +94 -0
  102. package/skills/design-templates/digital-eguide/example.html +204 -0
  103. package/skills/design-templates/docs-page/SKILL.md +80 -0
  104. package/skills/design-templates/docs-page/example.html +122 -0
  105. package/skills/design-templates/email-marketing/SKILL.md +84 -0
  106. package/skills/design-templates/email-marketing/example.html +159 -0
  107. package/skills/design-templates/eng-runbook/SKILL.md +51 -0
  108. package/skills/design-templates/eng-runbook/example.html +250 -0
  109. package/skills/design-templates/finance-report/SKILL.md +61 -0
  110. package/skills/design-templates/finance-report/example.html +242 -0
  111. package/skills/design-templates/flowai-live-dashboard-template/SKILL.md +87 -0
  112. package/skills/design-templates/flowai-live-dashboard-template/assets/template.html +387 -0
  113. package/skills/design-templates/flowai-live-dashboard-template/example.html +13 -0
  114. package/skills/design-templates/flowai-live-dashboard-template/references/checklist.md +35 -0
  115. package/skills/design-templates/gamified-app/SKILL.md +108 -0
  116. package/skills/design-templates/gamified-app/example.html +292 -0
  117. package/skills/design-templates/github-dashboard/SKILL.md +130 -0
  118. package/skills/design-templates/github-dashboard/example.html +473 -0
  119. package/skills/design-templates/github-dashboard/references/README.md +10 -0
  120. package/skills/design-templates/github-dashboard/references/artifact-example.json +15 -0
  121. package/skills/design-templates/github-dashboard/references/example-data.json +138 -0
  122. package/skills/design-templates/github-dashboard/references/provenance-example.json +92 -0
  123. package/skills/design-templates/github-dashboard/references/template.html +473 -0
  124. package/skills/design-templates/guizang-ppt/LICENSE +21 -0
  125. package/skills/design-templates/guizang-ppt/README.en.md +119 -0
  126. package/skills/design-templates/guizang-ppt/README.md +120 -0
  127. package/skills/design-templates/guizang-ppt/README.pt-BR.md +121 -0
  128. package/skills/design-templates/guizang-ppt/SKILL.md +313 -0
  129. package/skills/design-templates/guizang-ppt/assets/example-slides.html +318 -0
  130. package/skills/design-templates/guizang-ppt/assets/template.html +647 -0
  131. package/skills/design-templates/guizang-ppt/references/checklist.md +265 -0
  132. package/skills/design-templates/guizang-ppt/references/components.md +363 -0
  133. package/skills/design-templates/guizang-ppt/references/layouts.md +630 -0
  134. package/skills/design-templates/guizang-ppt/references/styles.md +195 -0
  135. package/skills/design-templates/guizang-ppt/references/themes.md +122 -0
  136. package/skills/design-templates/hr-onboarding/SKILL.md +52 -0
  137. package/skills/design-templates/hr-onboarding/example.html +219 -0
  138. package/skills/design-templates/html-ppt/.clawscan-allow +12 -0
  139. package/skills/design-templates/html-ppt/LICENSE +21 -0
  140. package/skills/design-templates/html-ppt/README.md +234 -0
  141. package/skills/design-templates/html-ppt/README.pt-BR.md +239 -0
  142. package/skills/design-templates/html-ppt/README.zh-CN.md +238 -0
  143. package/skills/design-templates/html-ppt/SKILL.md +250 -0
  144. package/skills/design-templates/html-ppt/assets/animations/animations.css +138 -0
  145. package/skills/design-templates/html-ppt/assets/animations/fx/_util.js +63 -0
  146. package/skills/design-templates/html-ppt/assets/animations/fx/chain-react.js +41 -0
  147. package/skills/design-templates/html-ppt/assets/animations/fx/confetti-cannon.js +49 -0
  148. package/skills/design-templates/html-ppt/assets/animations/fx/constellation.js +44 -0
  149. package/skills/design-templates/html-ppt/assets/animations/fx/counter-explosion.js +58 -0
  150. package/skills/design-templates/html-ppt/assets/animations/fx/data-stream.js +45 -0
  151. package/skills/design-templates/html-ppt/assets/animations/fx/firework.js +51 -0
  152. package/skills/design-templates/html-ppt/assets/animations/fx/galaxy-swirl.js +33 -0
  153. package/skills/design-templates/html-ppt/assets/animations/fx/gradient-blob.js +39 -0
  154. package/skills/design-templates/html-ppt/assets/animations/fx/knowledge-graph.js +69 -0
  155. package/skills/design-templates/html-ppt/assets/animations/fx/letter-explode.js +50 -0
  156. package/skills/design-templates/html-ppt/assets/animations/fx/magnetic-field.js +40 -0
  157. package/skills/design-templates/html-ppt/assets/animations/fx/matrix-rain.js +33 -0
  158. package/skills/design-templates/html-ppt/assets/animations/fx/neural-net.js +75 -0
  159. package/skills/design-templates/html-ppt/assets/animations/fx/orbit-ring.js +38 -0
  160. package/skills/design-templates/html-ppt/assets/animations/fx/particle-burst.js +42 -0
  161. package/skills/design-templates/html-ppt/assets/animations/fx/shockwave.js +39 -0
  162. package/skills/design-templates/html-ppt/assets/animations/fx/sparkle-trail.js +62 -0
  163. package/skills/design-templates/html-ppt/assets/animations/fx/starfield.js +30 -0
  164. package/skills/design-templates/html-ppt/assets/animations/fx/typewriter-multi.js +51 -0
  165. package/skills/design-templates/html-ppt/assets/animations/fx/word-cascade.js +47 -0
  166. package/skills/design-templates/html-ppt/assets/animations/fx-runtime.js +99 -0
  167. package/skills/design-templates/html-ppt/assets/base.css +150 -0
  168. package/skills/design-templates/html-ppt/assets/fonts.css +9 -0
  169. package/skills/design-templates/html-ppt/assets/runtime.js +960 -0
  170. package/skills/design-templates/html-ppt/assets/themes/academic-paper.css +23 -0
  171. package/skills/design-templates/html-ppt/assets/themes/arctic-cool.css +14 -0
  172. package/skills/design-templates/html-ppt/assets/themes/aurora.css +20 -0
  173. package/skills/design-templates/html-ppt/assets/themes/bauhaus.css +16 -0
  174. package/skills/design-templates/html-ppt/assets/themes/blueprint.css +19 -0
  175. package/skills/design-templates/html-ppt/assets/themes/catppuccin-latte.css +14 -0
  176. package/skills/design-templates/html-ppt/assets/themes/catppuccin-mocha.css +14 -0
  177. package/skills/design-templates/html-ppt/assets/themes/corporate-clean.css +19 -0
  178. package/skills/design-templates/html-ppt/assets/themes/cyberpunk-neon.css +23 -0
  179. package/skills/design-templates/html-ppt/assets/themes/dracula.css +14 -0
  180. package/skills/design-templates/html-ppt/assets/themes/editorial-serif.css +18 -0
  181. package/skills/design-templates/html-ppt/assets/themes/engineering-whiteprint.css +26 -0
  182. package/skills/design-templates/html-ppt/assets/themes/glassmorphism.css +21 -0
  183. package/skills/design-templates/html-ppt/assets/themes/gruvbox-dark.css +14 -0
  184. package/skills/design-templates/html-ppt/assets/themes/japanese-minimal.css +21 -0
  185. package/skills/design-templates/html-ppt/assets/themes/magazine-bold.css +21 -0
  186. package/skills/design-templates/html-ppt/assets/themes/memphis-pop.css +20 -0
  187. package/skills/design-templates/html-ppt/assets/themes/midcentury.css +19 -0
  188. package/skills/design-templates/html-ppt/assets/themes/minimal-white.css +16 -0
  189. package/skills/design-templates/html-ppt/assets/themes/neo-brutalism.css +17 -0
  190. package/skills/design-templates/html-ppt/assets/themes/news-broadcast.css +20 -0
  191. package/skills/design-templates/html-ppt/assets/themes/nord.css +14 -0
  192. package/skills/design-templates/html-ppt/assets/themes/pitch-deck-vc.css +21 -0
  193. package/skills/design-templates/html-ppt/assets/themes/rainbow-gradient.css +16 -0
  194. package/skills/design-templates/html-ppt/assets/themes/retro-tv.css +22 -0
  195. package/skills/design-templates/html-ppt/assets/themes/rose-pine.css +14 -0
  196. package/skills/design-templates/html-ppt/assets/themes/sharp-mono.css +17 -0
  197. package/skills/design-templates/html-ppt/assets/themes/soft-pastel.css +14 -0
  198. package/skills/design-templates/html-ppt/assets/themes/solarized-light.css +14 -0
  199. package/skills/design-templates/html-ppt/assets/themes/sunset-warm.css +14 -0
  200. package/skills/design-templates/html-ppt/assets/themes/swiss-grid.css +17 -0
  201. package/skills/design-templates/html-ppt/assets/themes/terminal-green.css +18 -0
  202. package/skills/design-templates/html-ppt/assets/themes/tokyo-night.css +14 -0
  203. package/skills/design-templates/html-ppt/assets/themes/vaporwave.css +21 -0
  204. package/skills/design-templates/html-ppt/assets/themes/xiaohongshu-white.css +16 -0
  205. package/skills/design-templates/html-ppt/assets/themes/y2k-chrome.css +20 -0
  206. package/skills/design-templates/html-ppt/docs/readme/_theme-cell.html +56 -0
  207. package/skills/design-templates/html-ppt/docs/readme/animations.png +0 -0
  208. package/skills/design-templates/html-ppt/docs/readme/hero.gif +0 -0
  209. package/skills/design-templates/html-ppt/docs/readme/layouts-live.gif +0 -0
  210. package/skills/design-templates/html-ppt/docs/readme/layouts.png +0 -0
  211. package/skills/design-templates/html-ppt/docs/readme/montage-animations.html +61 -0
  212. package/skills/design-templates/html-ppt/docs/readme/montage-layouts.html +72 -0
  213. package/skills/design-templates/html-ppt/docs/readme/montage-templates.html +72 -0
  214. package/skills/design-templates/html-ppt/docs/readme/montage-themes.html +38 -0
  215. package/skills/design-templates/html-ppt/docs/readme/presenter-mode.png +0 -0
  216. package/skills/design-templates/html-ppt/docs/readme/templates.png +0 -0
  217. package/skills/design-templates/html-ppt/docs/readme/themes.png +0 -0
  218. package/skills/design-templates/html-ppt/examples/demo-deck/index.html +161 -0
  219. package/skills/design-templates/html-ppt/references/animations.md +147 -0
  220. package/skills/design-templates/html-ppt/references/authoring-guide.md +141 -0
  221. package/skills/design-templates/html-ppt/references/full-decks.md +98 -0
  222. package/skills/design-templates/html-ppt/references/layouts.md +103 -0
  223. package/skills/design-templates/html-ppt/references/presenter-mode.md +240 -0
  224. package/skills/design-templates/html-ppt/references/themes.md +107 -0
  225. package/skills/design-templates/html-ppt/scripts/new-deck.sh +46 -0
  226. package/skills/design-templates/html-ppt/scripts/render.sh +71 -0
  227. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_01.png +0 -0
  228. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_02.png +0 -0
  229. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_03.png +0 -0
  230. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_04.png +0 -0
  231. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_05.png +0 -0
  232. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_06.png +0 -0
  233. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_07.png +0 -0
  234. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_08.png +0 -0
  235. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_09.png +0 -0
  236. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_10.png +0 -0
  237. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_11.png +0 -0
  238. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_12.png +0 -0
  239. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_13.png +0 -0
  240. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_14.png +0 -0
  241. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_15.png +0 -0
  242. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_16.png +0 -0
  243. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_17.png +0 -0
  244. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_18.png +0 -0
  245. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_19.png +0 -0
  246. package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_20.png +0 -0
  247. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_01.png +0 -0
  248. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_02.png +0 -0
  249. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_03.png +0 -0
  250. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_04.png +0 -0
  251. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_05.png +0 -0
  252. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_06.png +0 -0
  253. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_07.png +0 -0
  254. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_08.png +0 -0
  255. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_09.png +0 -0
  256. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_10.png +0 -0
  257. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_11.png +0 -0
  258. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_12.png +0 -0
  259. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_13.png +0 -0
  260. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_14.png +0 -0
  261. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_15.png +0 -0
  262. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_16.png +0 -0
  263. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_17.png +0 -0
  264. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_18.png +0 -0
  265. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_19.png +0 -0
  266. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_20.png +0 -0
  267. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_21.png +0 -0
  268. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_22.png +0 -0
  269. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_23.png +0 -0
  270. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_24.png +0 -0
  271. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_25.png +0 -0
  272. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_26.png +0 -0
  273. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_27.png +0 -0
  274. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_28.png +0 -0
  275. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_29.png +0 -0
  276. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_30.png +0 -0
  277. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_31.png +0 -0
  278. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_32.png +0 -0
  279. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_33.png +0 -0
  280. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_34.png +0 -0
  281. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_35.png +0 -0
  282. package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_36.png +0 -0
  283. package/skills/design-templates/html-ppt/templates/animation-showcase.html +172 -0
  284. package/skills/design-templates/html-ppt/templates/deck.html +69 -0
  285. package/skills/design-templates/html-ppt/templates/full-decks/course-module/README.md +8 -0
  286. package/skills/design-templates/html-ppt/templates/full-decks/course-module/index.html +189 -0
  287. package/skills/design-templates/html-ppt/templates/full-decks/course-module/style.css +46 -0
  288. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/README.md +11 -0
  289. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/index.html +138 -0
  290. package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/style.css +60 -0
  291. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/README.md +11 -0
  292. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/index.html +180 -0
  293. package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/style.css +54 -0
  294. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/README.md +11 -0
  295. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/index.html +199 -0
  296. package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/style.css +55 -0
  297. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/README.md +11 -0
  298. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/index.html +190 -0
  299. package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/style.css +49 -0
  300. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/README.md +11 -0
  301. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/index.html +144 -0
  302. package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/style.css +59 -0
  303. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/README.md +9 -0
  304. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/index.html +148 -0
  305. package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/style.css +40 -0
  306. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/README.md +102 -0
  307. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/index.html +187 -0
  308. package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/style.css +216 -0
  309. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/README.md +8 -0
  310. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/index.html +121 -0
  311. package/skills/design-templates/html-ppt/templates/full-decks/product-launch/style.css +39 -0
  312. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/README.md +8 -0
  313. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/index.html +156 -0
  314. package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/style.css +49 -0
  315. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/README.md +11 -0
  316. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/index.html +183 -0
  317. package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/style.css +62 -0
  318. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/README.md +8 -0
  319. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/index.html +127 -0
  320. package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/style.css +55 -0
  321. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/README.md +11 -0
  322. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/index.html +147 -0
  323. package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/style.css +66 -0
  324. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/README.md +9 -0
  325. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/index.html +133 -0
  326. package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/style.css +47 -0
  327. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/README.md +11 -0
  328. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/index.html +187 -0
  329. package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/style.css +63 -0
  330. package/skills/design-templates/html-ppt/templates/full-decks-index.html +82 -0
  331. package/skills/design-templates/html-ppt/templates/layout-showcase.html +47 -0
  332. package/skills/design-templates/html-ppt/templates/single-page/arch-diagram.html +46 -0
  333. package/skills/design-templates/html-ppt/templates/single-page/big-quote.html +18 -0
  334. package/skills/design-templates/html-ppt/templates/single-page/bullets.html +19 -0
  335. package/skills/design-templates/html-ppt/templates/single-page/chart-bar.html +30 -0
  336. package/skills/design-templates/html-ppt/templates/single-page/chart-line.html +35 -0
  337. package/skills/design-templates/html-ppt/templates/single-page/chart-pie.html +36 -0
  338. package/skills/design-templates/html-ppt/templates/single-page/chart-radar.html +31 -0
  339. package/skills/design-templates/html-ppt/templates/single-page/code.html +33 -0
  340. package/skills/design-templates/html-ppt/templates/single-page/comparison.html +47 -0
  341. package/skills/design-templates/html-ppt/templates/single-page/cover.html +32 -0
  342. package/skills/design-templates/html-ppt/templates/single-page/cta.html +27 -0
  343. package/skills/design-templates/html-ppt/templates/single-page/diff.html +35 -0
  344. package/skills/design-templates/html-ppt/templates/single-page/flow-diagram.html +33 -0
  345. package/skills/design-templates/html-ppt/templates/single-page/gantt.html +29 -0
  346. package/skills/design-templates/html-ppt/templates/single-page/image-grid.html +34 -0
  347. package/skills/design-templates/html-ppt/templates/single-page/image-hero.html +33 -0
  348. package/skills/design-templates/html-ppt/templates/single-page/kpi-grid.html +19 -0
  349. package/skills/design-templates/html-ppt/templates/single-page/mindmap.html +38 -0
  350. package/skills/design-templates/html-ppt/templates/single-page/process-steps.html +27 -0
  351. package/skills/design-templates/html-ppt/templates/single-page/pros-cons.html +31 -0
  352. package/skills/design-templates/html-ppt/templates/single-page/roadmap.html +46 -0
  353. package/skills/design-templates/html-ppt/templates/single-page/section-divider.html +17 -0
  354. package/skills/design-templates/html-ppt/templates/single-page/stat-highlight.html +17 -0
  355. package/skills/design-templates/html-ppt/templates/single-page/table.html +33 -0
  356. package/skills/design-templates/html-ppt/templates/single-page/terminal.html +35 -0
  357. package/skills/design-templates/html-ppt/templates/single-page/thanks.html +21 -0
  358. package/skills/design-templates/html-ppt/templates/single-page/three-column.html +18 -0
  359. package/skills/design-templates/html-ppt/templates/single-page/timeline.html +32 -0
  360. package/skills/design-templates/html-ppt/templates/single-page/toc.html +26 -0
  361. package/skills/design-templates/html-ppt/templates/single-page/todo-checklist.html +33 -0
  362. package/skills/design-templates/html-ppt/templates/single-page/two-column.html +39 -0
  363. package/skills/design-templates/html-ppt/templates/theme-showcase.html +151 -0
  364. package/skills/design-templates/html-ppt-course-module/SKILL.md +78 -0
  365. package/skills/design-templates/html-ppt-course-module/example.html +542 -0
  366. package/skills/design-templates/html-ppt-dir-key-nav-minimal/SKILL.md +77 -0
  367. package/skills/design-templates/html-ppt-dir-key-nav-minimal/example.html +366 -0
  368. package/skills/design-templates/html-ppt-graphify-dark-graph/SKILL.md +77 -0
  369. package/skills/design-templates/html-ppt-graphify-dark-graph/example.html +402 -0
  370. package/skills/design-templates/html-ppt-hermes-cyber-terminal/SKILL.md +77 -0
  371. package/skills/design-templates/html-ppt-hermes-cyber-terminal/example.html +422 -0
  372. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/SKILL.md +77 -0
  373. package/skills/design-templates/html-ppt-knowledge-arch-blueprint/example.html +407 -0
  374. package/skills/design-templates/html-ppt-obsidian-claude-gradient/SKILL.md +77 -0
  375. package/skills/design-templates/html-ppt-obsidian-claude-gradient/example.html +371 -0
  376. package/skills/design-templates/html-ppt-pitch-deck/SKILL.md +78 -0
  377. package/skills/design-templates/html-ppt-pitch-deck/example.html +495 -0
  378. package/skills/design-templates/html-ppt-presenter-mode-reveal/SKILL.md +78 -0
  379. package/skills/design-templates/html-ppt-presenter-mode-reveal/example.html +725 -0
  380. package/skills/design-templates/html-ppt-product-launch/SKILL.md +77 -0
  381. package/skills/design-templates/html-ppt-product-launch/example.html +467 -0
  382. package/skills/design-templates/html-ppt-taste-brutalist/SKILL.md +70 -0
  383. package/skills/design-templates/html-ppt-taste-brutalist/example.html +774 -0
  384. package/skills/design-templates/html-ppt-taste-editorial/SKILL.md +62 -0
  385. package/skills/design-templates/html-ppt-taste-editorial/example.html +689 -0
  386. package/skills/design-templates/html-ppt-tech-sharing/SKILL.md +77 -0
  387. package/skills/design-templates/html-ppt-tech-sharing/example.html +512 -0
  388. package/skills/design-templates/html-ppt-testing-safety-alert/SKILL.md +78 -0
  389. package/skills/design-templates/html-ppt-testing-safety-alert/example.html +413 -0
  390. package/skills/design-templates/html-ppt-weekly-report/SKILL.md +77 -0
  391. package/skills/design-templates/html-ppt-weekly-report/example.html +489 -0
  392. package/skills/design-templates/html-ppt-xhs-pastel-card/SKILL.md +78 -0
  393. package/skills/design-templates/html-ppt-xhs-pastel-card/example.html +381 -0
  394. package/skills/design-templates/html-ppt-xhs-post/SKILL.md +78 -0
  395. package/skills/design-templates/html-ppt-xhs-post/example.html +487 -0
  396. package/skills/design-templates/html-ppt-xhs-white-editorial/SKILL.md +77 -0
  397. package/skills/design-templates/html-ppt-xhs-white-editorial/example.html +418 -0
  398. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/LICENSE +21 -0
  399. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/SKILL.md +93 -0
  400. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/example.html +1640 -0
  401. package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/template.json +48 -0
  402. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/LICENSE +21 -0
  403. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/SKILL.md +93 -0
  404. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/example.html +833 -0
  405. package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/template.json +49 -0
  406. package/skills/design-templates/html-ppt-zhangzara-block-frame/LICENSE +21 -0
  407. package/skills/design-templates/html-ppt-zhangzara-block-frame/SKILL.md +93 -0
  408. package/skills/design-templates/html-ppt-zhangzara-block-frame/example.html +1453 -0
  409. package/skills/design-templates/html-ppt-zhangzara-block-frame/template.json +47 -0
  410. package/skills/design-templates/html-ppt-zhangzara-blue-professional/LICENSE +21 -0
  411. package/skills/design-templates/html-ppt-zhangzara-blue-professional/SKILL.md +93 -0
  412. package/skills/design-templates/html-ppt-zhangzara-blue-professional/example.html +1423 -0
  413. package/skills/design-templates/html-ppt-zhangzara-blue-professional/template.json +44 -0
  414. package/skills/design-templates/html-ppt-zhangzara-bold-poster/LICENSE +21 -0
  415. package/skills/design-templates/html-ppt-zhangzara-bold-poster/SKILL.md +93 -0
  416. package/skills/design-templates/html-ppt-zhangzara-bold-poster/example.html +876 -0
  417. package/skills/design-templates/html-ppt-zhangzara-bold-poster/template.json +45 -0
  418. package/skills/design-templates/html-ppt-zhangzara-broadside/LICENSE +21 -0
  419. package/skills/design-templates/html-ppt-zhangzara-broadside/SKILL.md +92 -0
  420. package/skills/design-templates/html-ppt-zhangzara-broadside/example.html +2144 -0
  421. package/skills/design-templates/html-ppt-zhangzara-broadside/template.json +49 -0
  422. package/skills/design-templates/html-ppt-zhangzara-capsule/LICENSE +21 -0
  423. package/skills/design-templates/html-ppt-zhangzara-capsule/SKILL.md +92 -0
  424. package/skills/design-templates/html-ppt-zhangzara-capsule/example.html +1413 -0
  425. package/skills/design-templates/html-ppt-zhangzara-capsule/template.json +51 -0
  426. package/skills/design-templates/html-ppt-zhangzara-cartesian/LICENSE +21 -0
  427. package/skills/design-templates/html-ppt-zhangzara-cartesian/SKILL.md +92 -0
  428. package/skills/design-templates/html-ppt-zhangzara-cartesian/example.html +1136 -0
  429. package/skills/design-templates/html-ppt-zhangzara-cartesian/template.json +47 -0
  430. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/LICENSE +21 -0
  431. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/SKILL.md +93 -0
  432. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/example.html +1205 -0
  433. package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/template.json +49 -0
  434. package/skills/design-templates/html-ppt-zhangzara-coral/LICENSE +21 -0
  435. package/skills/design-templates/html-ppt-zhangzara-coral/SKILL.md +92 -0
  436. package/skills/design-templates/html-ppt-zhangzara-coral/example.html +1487 -0
  437. package/skills/design-templates/html-ppt-zhangzara-coral/template.json +45 -0
  438. package/skills/design-templates/html-ppt-zhangzara-creative-mode/LICENSE +21 -0
  439. package/skills/design-templates/html-ppt-zhangzara-creative-mode/SKILL.md +99 -0
  440. package/skills/design-templates/html-ppt-zhangzara-creative-mode/assets/deck-stage.js +619 -0
  441. package/skills/design-templates/html-ppt-zhangzara-creative-mode/example.html +636 -0
  442. package/skills/design-templates/html-ppt-zhangzara-creative-mode/template.json +47 -0
  443. package/skills/design-templates/html-ppt-zhangzara-daisy-days/LICENSE +21 -0
  444. package/skills/design-templates/html-ppt-zhangzara-daisy-days/SKILL.md +93 -0
  445. package/skills/design-templates/html-ppt-zhangzara-daisy-days/example.html +469 -0
  446. package/skills/design-templates/html-ppt-zhangzara-daisy-days/template.json +54 -0
  447. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/LICENSE +21 -0
  448. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/SKILL.md +98 -0
  449. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/assets/deck-stage.js +619 -0
  450. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/example.html +737 -0
  451. package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/template.json +44 -0
  452. package/skills/design-templates/html-ppt-zhangzara-grove/LICENSE +21 -0
  453. package/skills/design-templates/html-ppt-zhangzara-grove/SKILL.md +92 -0
  454. package/skills/design-templates/html-ppt-zhangzara-grove/example.html +1676 -0
  455. package/skills/design-templates/html-ppt-zhangzara-grove/template.json +51 -0
  456. package/skills/figma-code-connect-components/SKILL.md +42 -0
  457. package/skills/figma-create-design-system-rules/SKILL.md +42 -0
  458. package/skills/figma-create-new-file/SKILL.md +41 -0
  459. package/skills/figma-generate-design/SKILL.md +42 -0
  460. package/skills/figma-generate-library/SKILL.md +42 -0
  461. package/skills/figma-implement-design/SKILL.md +42 -0
  462. package/skills/figma-use/SKILL.md +42 -0
  463. package/skills/full-page-screenshot/SKILL.md +42 -0
  464. package/skills/interview-me/SKILL.md +64 -0
  465. package/skills/planning-and-task-breakdown/SKILL.md +52 -0
  466. package/skills/sora/SKILL.md +43 -0
  467. package/skills/theme-factory/SKILL.md +43 -0
  468. package/skills/web-design-guidelines/SKILL.md +42 -0
  469. package/dist/agents/prompt-library/orchestration.d.ts +0 -4
  470. package/skills/brainstorming/SKILL.md +0 -164
  471. package/skills/brainstorming/scripts/frame-template.html +0 -214
  472. package/skills/brainstorming/scripts/helper.js +0 -88
  473. package/skills/brainstorming/scripts/server.cjs +0 -354
  474. package/skills/brainstorming/scripts/start-server.sh +0 -148
  475. package/skills/brainstorming/scripts/stop-server.sh +0 -56
  476. package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  477. package/skills/brainstorming/visual-companion.md +0 -287
@@ -0,0 +1,216 @@
1
+ /* tpl-presenter-mode-reveal · scoped styles
2
+ * Presenter-mode demo deck. Inherits tokens from active theme.
3
+ * Minimal overrides — focus is on content + notes structure.
4
+ */
5
+
6
+ .tpl-presenter-mode-reveal .slide {
7
+ padding: 72px 96px;
8
+ }
9
+
10
+ .tpl-presenter-mode-reveal .kicker {
11
+ font-family: var(--font-mono, monospace);
12
+ font-size: 13px;
13
+ color: var(--text-3);
14
+ letter-spacing: 0.14em;
15
+ text-transform: uppercase;
16
+ margin: 0 0 18px 0;
17
+ }
18
+
19
+ .tpl-presenter-mode-reveal .h1 {
20
+ font-size: clamp(44px, 5.6vw, 76px);
21
+ line-height: 1.12;
22
+ letter-spacing: -0.02em;
23
+ margin: 0 0 24px 0;
24
+ }
25
+
26
+ .tpl-presenter-mode-reveal .h2 {
27
+ font-size: clamp(32px, 3.6vw, 48px);
28
+ line-height: 1.22;
29
+ letter-spacing: -0.01em;
30
+ margin: 0 0 28px 0;
31
+ }
32
+
33
+ .tpl-presenter-mode-reveal .lede {
34
+ font-size: 20px;
35
+ line-height: 1.55;
36
+ color: var(--text-2);
37
+ }
38
+
39
+ .tpl-presenter-mode-reveal .mono {
40
+ font-family: var(--font-mono, monospace);
41
+ font-size: 0.9em;
42
+ padding: 2px 8px;
43
+ border-radius: 6px;
44
+ background: rgba(255,255,255,0.08);
45
+ color: var(--accent, #58a6ff);
46
+ }
47
+
48
+ .tpl-presenter-mode-reveal .accent {
49
+ color: var(--accent, #f0883e);
50
+ font-weight: 700;
51
+ }
52
+
53
+ .tpl-presenter-mode-reveal .speaker {
54
+ display: flex;
55
+ align-items: center;
56
+ gap: 12px;
57
+ margin-top: 32px;
58
+ }
59
+ .tpl-presenter-mode-reveal .speaker .av {
60
+ width: 42px;
61
+ height: 42px;
62
+ border-radius: 50%;
63
+ background: linear-gradient(135deg, var(--accent, #58a6ff), #bc8cff);
64
+ }
65
+ .tpl-presenter-mode-reveal .speaker b {
66
+ display: block;
67
+ font-size: 16px;
68
+ }
69
+ .tpl-presenter-mode-reveal .speaker span {
70
+ font-size: 13px;
71
+ color: var(--text-3);
72
+ }
73
+
74
+ /* Agenda rows */
75
+ .tpl-presenter-mode-reveal .agenda-row {
76
+ display: grid;
77
+ grid-template-columns: 48px 1fr auto;
78
+ gap: 16px;
79
+ align-items: center;
80
+ padding: 14px 18px;
81
+ border: 1px solid var(--border, rgba(255,255,255,0.1));
82
+ border-radius: 10px;
83
+ margin-bottom: 10px;
84
+ background: var(--surface, rgba(255,255,255,0.03));
85
+ }
86
+ .tpl-presenter-mode-reveal .agenda-row .num {
87
+ font-family: var(--font-mono, monospace);
88
+ font-size: 14px;
89
+ color: var(--accent, #58a6ff);
90
+ font-weight: 700;
91
+ }
92
+ .tpl-presenter-mode-reveal .agenda-row .t {
93
+ font-size: 17px;
94
+ font-weight: 500;
95
+ color: var(--text-1);
96
+ }
97
+ .tpl-presenter-mode-reveal .agenda-row .d {
98
+ font-family: var(--font-mono, monospace);
99
+ font-size: 12px;
100
+ color: var(--text-3);
101
+ }
102
+
103
+ /* Cards */
104
+ .tpl-presenter-mode-reveal .card {
105
+ background: var(--surface, rgba(255,255,255,0.03));
106
+ border: 1px solid var(--border, rgba(255,255,255,0.1));
107
+ border-radius: 12px;
108
+ padding: 22px 24px;
109
+ }
110
+ .tpl-presenter-mode-reveal .card-accent {
111
+ border-top: 3px solid var(--accent, #58a6ff);
112
+ }
113
+ .tpl-presenter-mode-reveal .card h4 {
114
+ margin: 0 0 10px 0;
115
+ font-size: 18px;
116
+ color: var(--text-1);
117
+ }
118
+ .tpl-presenter-mode-reveal .card .dim {
119
+ color: var(--text-2);
120
+ font-size: 14px;
121
+ line-height: 1.6;
122
+ margin: 0;
123
+ }
124
+
125
+ /* Feature rows (presenter view features) */
126
+ .tpl-presenter-mode-reveal .feature-row {
127
+ display: flex;
128
+ gap: 14px;
129
+ padding: 14px 0;
130
+ border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));
131
+ }
132
+ .tpl-presenter-mode-reveal .feature-row:last-child { border-bottom: none; }
133
+ .tpl-presenter-mode-reveal .feature-row .num {
134
+ font-size: 24px;
135
+ font-weight: 700;
136
+ line-height: 1;
137
+ flex-shrink: 0;
138
+ }
139
+ .tpl-presenter-mode-reveal .feature-row b {
140
+ display: block;
141
+ font-size: 17px;
142
+ margin-bottom: 4px;
143
+ color: var(--text-1);
144
+ }
145
+ .tpl-presenter-mode-reveal .feature-row .dim {
146
+ font-size: 14px;
147
+ color: var(--text-2);
148
+ line-height: 1.55;
149
+ margin: 0;
150
+ }
151
+ .tpl-presenter-mode-reveal .blue { color: #58a6ff; }
152
+ .tpl-presenter-mode-reveal .green { color: #3fb950; }
153
+ .tpl-presenter-mode-reveal .orange { color: #f0883e; }
154
+ .tpl-presenter-mode-reveal .purple { color: #bc8cff; }
155
+ .tpl-presenter-mode-reveal .red { color: #f85149; }
156
+
157
+ /* Rule rows (3 铁律) */
158
+ .tpl-presenter-mode-reveal .rule-row {
159
+ display: grid;
160
+ grid-template-columns: 56px 1fr;
161
+ gap: 20px;
162
+ align-items: start;
163
+ padding: 18px 22px;
164
+ border: 1px solid var(--border, rgba(255,255,255,0.1));
165
+ border-radius: 12px;
166
+ margin-bottom: 14px;
167
+ background: var(--surface, rgba(255,255,255,0.03));
168
+ }
169
+ .tpl-presenter-mode-reveal .rule-row .num {
170
+ font-size: 28px;
171
+ font-weight: 800;
172
+ font-family: var(--font-mono, monospace);
173
+ line-height: 1;
174
+ }
175
+ .tpl-presenter-mode-reveal .rule-row b {
176
+ display: block;
177
+ font-size: 18px;
178
+ margin-bottom: 6px;
179
+ color: var(--text-1);
180
+ }
181
+ .tpl-presenter-mode-reveal .rule-row .dim {
182
+ font-size: 15px;
183
+ color: var(--text-2);
184
+ line-height: 1.6;
185
+ margin: 0;
186
+ }
187
+
188
+ /* Code block */
189
+ .tpl-presenter-mode-reveal .code-block {
190
+ background: #0d1117;
191
+ border: 1px solid rgba(255,255,255,0.1);
192
+ border-radius: 12px;
193
+ padding: 20px 26px;
194
+ font-family: var(--font-mono, "SF Mono", monospace);
195
+ font-size: 15px;
196
+ line-height: 1.8;
197
+ color: #e6edf3;
198
+ white-space: pre-wrap;
199
+ text-align: left;
200
+ }
201
+ .tpl-presenter-mode-reveal .code-block .comment { color: #8b949e; }
202
+ .tpl-presenter-mode-reveal .code-block .cmd { color: #3fb950; font-weight: 600; }
203
+ .tpl-presenter-mode-reveal .code-block .flag { color: #f0883e; }
204
+
205
+ /* Stack helper */
206
+ .tpl-presenter-mode-reveal .stack > * + * { margin-top: 0; }
207
+
208
+ /* Grid helpers */
209
+ .tpl-presenter-mode-reveal .grid { display: grid; gap: 20px; }
210
+ .tpl-presenter-mode-reveal .grid.g2 { grid-template-columns: 1fr 1fr; }
211
+ .tpl-presenter-mode-reveal .grid.g3 { grid-template-columns: repeat(3, 1fr); }
212
+
213
+ .tpl-presenter-mode-reveal .mt-m { margin-top: 20px; }
214
+ .tpl-presenter-mode-reveal .mt-l { margin-top: 32px; }
215
+ .tpl-presenter-mode-reveal .mt-s { margin-top: 10px; }
216
+ .tpl-presenter-mode-reveal .tc { text-align: center; }
@@ -0,0 +1,8 @@
1
+ # product-launch
2
+
3
+ 8-slide consumer product announcement deck: hero cover, "introducing" moment, three feature slides, how-it-works, pricing tiers, and a closing testimonial + pre-order CTA.
4
+
5
+ Mixes dark hero slides (for show-off moments) with light slides (for details and pricing). Warm orange→peach gradient accent feels confident and human; easy to re-skin for any brand.
6
+
7
+ **Use when:** launching a product, announcing a v2, internal all-hands reveals, press kit decks.
8
+ **Feel:** Apple-event-on-a-budget — confident, tactile, uncluttered.
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <title>Halo v2 · Launch</title>
6
+ <link rel="stylesheet" href="../../../assets/fonts.css">
7
+ <link rel="stylesheet" href="../../../assets/base.css">
8
+ <link rel="stylesheet" href="../../../assets/animations/animations.css">
9
+ <link rel="stylesheet" href="style.css">
10
+ </head>
11
+ <body class="tpl-product-launch">
12
+ <div class="deck">
13
+
14
+ <!-- 1. Cover / hero -->
15
+ <section class="slide dark" data-title="Cover">
16
+ <div class="hero-shot"></div>
17
+ <div style="position:absolute;top:56px;left:112px" class="brand">◎ Halo</div>
18
+ <p class="kicker">Launch · April 2026</p>
19
+ <h1 class="h1 anim-fade-up" data-anim="fade-up">Meet Halo v2.<br>Your ears,<br><span style="background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent">rewritten.</span></h1>
20
+ <p class="lede mt-m" style="max-width:42ch">Studio-grade spatial audio in the lightest open-ear earbuds ever made.</p>
21
+ <div class="deck-footer"><span>halo.audio</span><span class="slide-number" data-current="1" data-total="8"></span></div>
22
+ </section>
23
+
24
+ <!-- 2. Introducing -->
25
+ <section class="slide center tc" data-title="Introducing">
26
+ <div>
27
+ <p class="kicker">Introducing</p>
28
+ <h1 class="h1" style="font-size:140px">Halo v2</h1>
29
+ <p class="lede" style="margin:24px auto;max-width:56ch">Four years of research. Three generations of silicon. One product you'll forget you're wearing.</p>
30
+ </div>
31
+ </section>
32
+
33
+ <!-- 3. Feature 1 -->
34
+ <section class="slide" data-title="Sound">
35
+ <p class="kicker">01 · The sound</p>
36
+ <h2 class="h2">Hear the room<br>around the music.</h2>
37
+ <div class="grid g3 mt-l">
38
+ <div class="feature-card"><div class="icon">♪</div><h4>Open-ear spatial</h4><p class="dim">16mm titanium drivers angled into the ear canal. You hear the song and the world at once.</p></div>
39
+ <div class="feature-card"><div class="icon">◈</div><h4>Lossless 24-bit</h4><p class="dim">aptX Lossless and Hi-Res LDAC over Bluetooth 5.4. No dongles, no compromises.</p></div>
40
+ <div class="feature-card"><div class="icon">◐</div><h4>Adaptive EQ</h4><p class="dim">Tunes itself to the shape of your ear every 120 seconds.</p></div>
41
+ </div>
42
+ </section>
43
+
44
+ <!-- 4. Feature 2 -->
45
+ <section class="slide dark" data-title="Fit">
46
+ <p class="kicker">02 · The fit</p>
47
+ <h2 class="h2">4.9 grams.<br>All-day forgettable.</h2>
48
+ <div class="grid g3 mt-l">
49
+ <div class="card"><h4>Liquid-silicone hook</h4><p>Wraps behind the ear like a glasses arm. Never falls out on a run.</p></div>
50
+ <div class="card"><h4>IP57 sweat + rain</h4><p>Take them in the ocean. Rinse them under the tap. We dare you.</p></div>
51
+ <div class="card"><h4>14h + 42h case</h4><p>A full workweek of commutes on one charge of the case.</p></div>
52
+ </div>
53
+ </section>
54
+
55
+ <!-- 5. Feature 3 -->
56
+ <section class="slide" data-title="Intelligence">
57
+ <p class="kicker">03 · The intelligence</p>
58
+ <h2 class="h2">An AI that listens<br>so you don't have to.</h2>
59
+ <div class="grid g2 mt-l">
60
+ <div class="feature-card"><div class="icon">✦</div><h4>Live translate</h4><p class="dim">Real-time translation in 41 languages. Whispered directly into your ear, with a 380ms lag.</p></div>
61
+ <div class="feature-card"><div class="icon">✧</div><h4>Meeting recap</h4><p class="dim">Double-tap to record. Walk away with a summary, action items, and a searchable transcript.</p></div>
62
+ </div>
63
+ </section>
64
+
65
+ <!-- 6. How it works -->
66
+ <section class="slide" data-title="How it works">
67
+ <p class="kicker">How it works</p>
68
+ <h2 class="h2">Three taps. You're in.</h2>
69
+ <div class="stack mt-l" style="max-width:900px">
70
+ <div class="step"><div class="n">1</div><div><h4>Open the case near your phone</h4><p class="dim">iOS and Android pair automatically over Bluetooth LE. No app downloads required.</p></div></div>
71
+ <div class="step"><div class="n">2</div><div><h4>Pick your profile</h4><p class="dim">Commute, Focus, Workout, Cinema. Each is a complete audio + transparency recipe.</p></div></div>
72
+ <div class="step"><div class="n">3</div><div><h4>Just listen</h4><p class="dim">Halo adapts to your ear shape, your environment, and your hearing profile — continuously.</p></div></div>
73
+ </div>
74
+ </section>
75
+
76
+ <!-- 7. Pricing -->
77
+ <section class="slide" data-title="Pricing">
78
+ <p class="kicker">Pricing</p>
79
+ <h2 class="h2">Pick your Halo.</h2>
80
+ <div class="grid g3 mt-l" style="align-items:start">
81
+ <div class="price-card">
82
+ <h4>Halo Lite</h4>
83
+ <div class="amount">$179</div>
84
+ <p class="dim">Open-ear audio, IP57, 12h battery.</p>
85
+ <ul><li>AAC + SBC</li><li>Single-tap controls</li><li>USB-C charging</li></ul>
86
+ </div>
87
+ <div class="price-card pro">
88
+ <h4>Halo v2 · Pro</h4>
89
+ <div class="amount">$279</div>
90
+ <p class="dim">Everything, in its best form.</p>
91
+ <ul><li>Hi-Res Lossless</li><li>Live translate · 41 lang</li><li>Wireless + MagSafe charging</li><li>Adaptive EQ</li></ul>
92
+ </div>
93
+ <div class="price-card">
94
+ <h4>Halo Studio</h4>
95
+ <div class="amount">$399</div>
96
+ <p class="dim">For creators and field recorders.</p>
97
+ <ul><li>32-bit binaural capture</li><li>XLR dongle included</li><li>Lifetime firmware</li></ul>
98
+ </div>
99
+ </div>
100
+ </section>
101
+
102
+ <!-- 8. Testimonial + CTA combined? Task says 8 slides w/ testimonial + CTA as separate. Keep 8: testimonial on 7, but we've used 7 already. Re-plan: cover(1) intro(2) f1(3) f2(4) f3(5) how(6) pricing(7) testimonial+CTA(8) -->
103
+ <section class="slide dark" data-title="Ship">
104
+ <p class="kicker">One more thing</p>
105
+ <div class="row" style="gap:80px;align-items:center">
106
+ <div style="flex:1">
107
+ <p class="testimonial">"I forgot I was wearing them. Then I remembered, and I didn't want to take them off."</p>
108
+ <p class="dim mt-m">— Marques Lin, The Verge · early review</p>
109
+ </div>
110
+ <div style="flex:0 0 auto;text-align:center">
111
+ <p class="dim mb-m">Ships May 14 · from</p>
112
+ <div style="font-size:96px;font-weight:900;letter-spacing:-.04em">$279</div>
113
+ <a class="cta-btn mt-l" href="#">Pre-order Halo v2 →</a>
114
+ <p class="dim mt-m" style="font-size:13px">Free shipping · 45-day return · 2-year warranty</p>
115
+ </div>
116
+ </div>
117
+ </section>
118
+
119
+ </div>
120
+ <script src="../../../assets/runtime.js"></script>
121
+ </body></html>
@@ -0,0 +1,39 @@
1
+ /* product-launch — modern announcement deck */
2
+ .tpl-product-launch{
3
+ --bg:#ffffff;--bg-soft:#f5f5f7;--surface:#ffffff;--surface-2:#f2f2f6;
4
+ --ink:#0a0a12;--ink-2:#3a3a44;
5
+ --border:rgba(10,10,18,.08);--border-strong:rgba(10,10,18,.18);
6
+ --text-1:#0a0a12;--text-2:#4a4a58;--text-3:#8a8a96;
7
+ --accent:#ff5a36;--accent-2:#ff8c5a;--accent-3:#ffb36b;
8
+ --grad:linear-gradient(120deg,#ff5a36 0%,#ff8c5a 60%,#ffb36b 100%);
9
+ --radius:22px;--radius-lg:32px;
10
+ --shadow:0 20px 60px rgba(10,10,18,.1);
11
+ font-family:'Inter','Noto Sans SC',sans-serif;
12
+ }
13
+ .tpl-product-launch .slide{padding:80px 112px}
14
+ .tpl-product-launch .slide.dark{background:#0a0a12;color:#f5f5f7}
15
+ .tpl-product-launch .slide.dark .h1,.tpl-product-launch .slide.dark .h2,.tpl-product-launch .slide.dark h3,.tpl-product-launch .slide.dark h4{color:#fff}
16
+ .tpl-product-launch .slide.dark .lede,.tpl-product-launch .slide.dark .dim{color:rgba(245,245,247,.72)}
17
+ .tpl-product-launch .slide.dark .card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);box-shadow:none;backdrop-filter:blur(20px)}
18
+ .tpl-product-launch .slide.dark .kicker{color:var(--accent-2)}
19
+ .tpl-product-launch .h1{font-size:96px;line-height:.98;font-weight:900;letter-spacing:-.045em}
20
+ .tpl-product-launch .h2{font-size:64px;font-weight:800;letter-spacing:-.035em}
21
+ .tpl-product-launch .hero-shot{position:absolute;right:-60px;top:50%;transform:translateY(-50%);width:640px;height:640px;border-radius:50%;background:var(--grad);filter:blur(2px);opacity:.85}
22
+ .tpl-product-launch .hero-shot::after{content:"";position:absolute;inset:80px;border-radius:40px;background:linear-gradient(160deg,rgba(255,255,255,.3),transparent 60%),#1a1a28;box-shadow:inset 0 2px 0 rgba(255,255,255,.2)}
23
+ .tpl-product-launch .hero-shot::before{content:"Halo v2";position:absolute;inset:80px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:44px;font-weight:900;letter-spacing:-.02em;z-index:2;border-radius:40px}
24
+ .tpl-product-launch .brand{font-size:18px;font-weight:800;letter-spacing:-.02em}
25
+ .tpl-product-launch .feature-card{padding:40px 36px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);position:relative;overflow:hidden}
26
+ .tpl-product-launch .feature-card .icon{width:60px;height:60px;border-radius:18px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;font-weight:900;margin-bottom:20px}
27
+ .tpl-product-launch .step{display:flex;gap:24px;align-items:flex-start}
28
+ .tpl-product-launch .step .n{flex:none;width:56px;height:56px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:22px}
29
+ .tpl-product-launch .price-card{padding:40px 32px;border-radius:var(--radius-lg);border:1.5px solid var(--border);background:var(--surface);text-align:left}
30
+ .tpl-product-launch .price-card.pro{background:#0a0a12;color:#fff;border-color:#0a0a12;transform:scale(1.04);box-shadow:0 30px 80px rgba(255,90,54,.25)}
31
+ .tpl-product-launch .price-card.pro .dim{color:rgba(255,255,255,.7)}
32
+ .tpl-product-launch .price-card h4{font-size:16px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}
33
+ .tpl-product-launch .price-card.pro h4{color:var(--accent-2)}
34
+ .tpl-product-launch .price-card .amount{font-size:64px;font-weight:900;letter-spacing:-.035em;margin:14px 0}
35
+ .tpl-product-launch .price-card ul{list-style:none;padding:0;margin:20px 0 0}
36
+ .tpl-product-launch .price-card li{padding:8px 0;font-size:15px;color:var(--text-2);border-top:1px solid var(--border)}
37
+ .tpl-product-launch .price-card.pro li{color:rgba(255,255,255,.8);border-color:rgba(255,255,255,.12)}
38
+ .tpl-product-launch .cta-btn{display:inline-block;padding:20px 40px;border-radius:999px;background:var(--grad);color:#fff;font-weight:700;font-size:20px;box-shadow:0 20px 50px rgba(255,90,54,.4)}
39
+ .tpl-product-launch .testimonial{max-width:44ch;font-family:'Playfair Display',serif;font-size:44px;line-height:1.25;font-weight:500;letter-spacing:-.01em}
@@ -0,0 +1,8 @@
1
+ # tech-sharing · 技术分享
2
+
3
+ 8-slide engineering talk deck: cover (topic + speaker), agenda, context, two deep-dive slides, a code example, takeaways, Q&A.
4
+
5
+ Dark GitHub-ish palette (`#0d1117`) with JetBrains Mono accents and syntax-highlighted terminal blocks. Built to be screenshotted and shared on an internal wiki or Twitter.
6
+
7
+ **Use when:** tech-sharing Fridays, brown-bag talks, lunch & learns, conference submissions.
8
+ **Feel:** GitHub README meets a good conference talk — dark, monospaced, dense but readable.
@@ -0,0 +1,156 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <title>Rust 异步运行时内部机制 · Tech Sharing</title>
6
+ <link rel="stylesheet" href="../../../assets/fonts.css">
7
+ <link rel="stylesheet" href="../../../assets/base.css">
8
+ <link rel="stylesheet" href="../../../assets/animations/animations.css">
9
+ <link rel="stylesheet" href="style.css">
10
+ </head>
11
+ <body class="tpl-tech-sharing">
12
+ <div class="deck">
13
+
14
+ <!-- 1. Cover -->
15
+ <section class="slide" data-title="Cover">
16
+ <p class="kicker">tech-sharing / 2026-04-15</p>
17
+ <h1 class="h1 anim-fade-up" data-anim="fade-up">Rust 异步运行时<br>到底在<span style="background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent">调度什么</span>?</h1>
18
+ <p class="lede mt-m">从 <span class="mono">Future::poll</span> 到 tokio 的 work-stealing,一次讲清楚。</p>
19
+ <div class="speaker"><div class="av"></div><div><b>@lewis</b><span>platform infra · 45 min + Q&amp;A</span></div></div>
20
+ <div class="deck-footer"><span class="mono">#async #rust #tokio</span><span class="slide-number" data-current="1" data-total="8"></span></div>
21
+ </section>
22
+
23
+ <!-- 2. Agenda -->
24
+ <section class="slide" data-title="Agenda">
25
+ <p class="kicker">agenda.toml</p>
26
+ <h2 class="h2">今天的路线图</h2>
27
+ <div class="stack mt-l">
28
+ <div class="agenda-row"><span class="num">01</span><span class="t">Context: 为什么需要 async</span><span class="d">~5min</span></div>
29
+ <div class="agenda-row"><span class="num">02</span><span class="t">Deep dive 1: Future &amp; Waker</span><span class="d">~12min</span></div>
30
+ <div class="agenda-row"><span class="num">03</span><span class="t">Deep dive 2: Tokio scheduler</span><span class="d">~15min</span></div>
31
+ <div class="agenda-row"><span class="num">04</span><span class="t">Code: 手写一个 mini-runtime</span><span class="d">~8min</span></div>
32
+ <div class="agenda-row"><span class="num">05</span><span class="t">Takeaways + Q&amp;A</span><span class="d">~5min</span></div>
33
+ </div>
34
+ </section>
35
+
36
+ <!-- 3. Context -->
37
+ <section class="slide" data-title="Context">
38
+ <p class="kicker">// context</p>
39
+ <h2 class="h2">问题:一个线程一个连接,<br>撑不住 10 万并发。</h2>
40
+ <div class="grid g3 mt-l">
41
+ <div class="card card-accent"><h4>Thread-per-conn</h4><p class="dim">每条连接一根 OS 线程,栈 2–8MB。10 万连接 = 几百 GB RAM。</p><span class="tag mt-s">❌ 不现实</span></div>
42
+ <div class="card card-accent"><h4>Event loop (C)</h4><p class="dim">epoll/kqueue + 回调地狱。快,但写起来痛苦且容易出 bug。</p><span class="tag mt-s">😩 callback hell</span></div>
43
+ <div class="card card-accent"><h4>Async / await</h4><p class="dim">看起来像同步代码,编译成状态机。一根线程跑几千任务。</p><span class="tag mt-s">✅ Rust 选这个</span></div>
44
+ </div>
45
+ </section>
46
+
47
+ <!-- 4. Deep dive 1 -->
48
+ <section class="slide" data-title="Deep Dive 1">
49
+ <p class="kicker">deep-dive · 1 / 2</p>
50
+ <h2 class="h2">Future 其实只有一个方法。</h2>
51
+ <div class="grid g2 mt-l" style="align-items:start">
52
+ <div>
53
+ <p class="lede">编译器把 <span class="mono">async fn</span> 变成一个实现了 <span class="mono">Future</span> trait 的匿名状态机。运行时只做一件事:反复 <span class="mono">poll</span> 它,直到返回 <span class="mono">Ready</span>。</p>
54
+ <div class="mt-l">
55
+ <span class="tag">Pending</span> <span class="tag">Ready(T)</span> <span class="tag">Waker.wake()</span>
56
+ </div>
57
+ </div>
58
+ <div class="terminal">
59
+ <div class="bar"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span>future.rs</span></div>
60
+ <pre><span class="kw">pub trait</span> <span class="fn">Future</span> {
61
+ <span class="kw">type</span> Output;
62
+ <span class="kw">fn</span> <span class="fn">poll</span>(
63
+ <span class="kw">self</span>: Pin&lt;&amp;<span class="kw">mut Self</span>&gt;,
64
+ cx: &amp;<span class="kw">mut</span> Context&lt;<span class="str">'_</span>&gt;,
65
+ ) -&gt; Poll&lt;<span class="kw">Self</span>::Output&gt;;
66
+ }
67
+
68
+ <span class="cmt">// Poll::Pending → 挂起,等 waker 唤醒</span>
69
+ <span class="cmt">// Poll::Ready(v) → 完成,产出 v</span></pre>
70
+ </div>
71
+ </div>
72
+ </section>
73
+
74
+ <!-- 5. Deep dive 2 -->
75
+ <section class="slide" data-title="Deep Dive 2">
76
+ <p class="kicker">deep-dive · 2 / 2</p>
77
+ <h2 class="h2">Tokio 是一个偷任务的小工。</h2>
78
+ <div class="grid g2 mt-l" style="align-items:start">
79
+ <div>
80
+ <p class="lede">Multi-thread runtime = N 个 worker,每个 worker 有自己的本地队列。空闲的 worker 会去别人队列里"偷"任务。</p>
81
+ <div class="stack mt-m">
82
+ <div class="tag">✦ local queue · 256 slots</div>
83
+ <div class="tag">✦ global injection queue</div>
84
+ <div class="tag">✦ work-stealing @ 50% steal ratio</div>
85
+ <div class="tag">✦ LIFO slot for cache locality</div>
86
+ </div>
87
+ </div>
88
+ <div class="card" style="padding:32px">
89
+ <h4 class="mono" style="color:var(--accent-2)">scheduler tick loop</h4>
90
+ <div class="stack mt-m" style="font-family:'JetBrains Mono',monospace;font-size:14px;line-height:1.9;color:var(--text-2)">
91
+ <div><span style="color:var(--accent)">1.</span> pop from LIFO slot</div>
92
+ <div><span style="color:var(--accent)">2.</span> else pop from local queue</div>
93
+ <div><span style="color:var(--accent)">3.</span> else drain global queue (every 61 ticks)</div>
94
+ <div><span style="color:var(--accent)">4.</span> else steal from random victim</div>
95
+ <div><span style="color:var(--accent)">5.</span> else park the thread</div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ </section>
100
+
101
+ <!-- 6. Code example -->
102
+ <section class="slide" data-title="Code">
103
+ <p class="kicker">mini-runtime.rs · ~40 LOC</p>
104
+ <h2 class="h2">手写一个最小 runtime。</h2>
105
+ <div class="terminal mt-m">
106
+ <div class="bar"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span>src/main.rs</span></div>
107
+ <pre><span class="kw">use</span> std::collections::VecDeque;
108
+ <span class="kw">use</span> std::sync::{Arc, Mutex};
109
+ <span class="kw">use</span> std::task::{Context, Poll, Wake, Waker};
110
+
111
+ <span class="kw">struct</span> Task(Mutex&lt;Pin&lt;Box&lt;<span class="kw">dyn</span> Future&lt;Output = ()&gt; + Send&gt;&gt;&gt;);
112
+
113
+ <span class="kw">impl</span> Wake <span class="kw">for</span> Task {
114
+ <span class="kw">fn</span> <span class="fn">wake</span>(<span class="kw">self</span>: Arc&lt;<span class="kw">Self</span>&gt;) { QUEUE.lock().unwrap().push_back(<span class="kw">self</span>); }
115
+ }
116
+
117
+ <span class="kw">fn</span> <span class="fn">block_on</span>&lt;F: Future&lt;Output = ()&gt; + Send + <span class="str">'static</span>&gt;(fut: F) {
118
+ <span class="fn">spawn</span>(fut);
119
+ <span class="kw">while let Some</span>(task) = QUEUE.lock().unwrap().pop_front() {
120
+ <span class="kw">let</span> waker = Waker::from(task.clone());
121
+ <span class="kw">let mut</span> cx = Context::from_waker(&amp;waker);
122
+ <span class="kw">let mut</span> fut = task.<span class="num">0</span>.lock().unwrap();
123
+ <span class="kw">let</span> _ = fut.as_mut().<span class="fn">poll</span>(&amp;<span class="kw">mut</span> cx); <span class="cmt">// 就是这一行</span>
124
+ }
125
+ }</pre>
126
+ </div>
127
+ </section>
128
+
129
+ <!-- 7. Takeaways -->
130
+ <section class="slide" data-title="Takeaways">
131
+ <p class="kicker">// takeaways</p>
132
+ <h2 class="h2">三件事带回去。</h2>
133
+ <div class="grid g3 mt-l">
134
+ <div class="card card-accent"><h4>1 · async 是零成本抽象</h4><p class="dim">编译成状态机,没有运行时虚表,没有 GC。</p></div>
135
+ <div class="card card-accent"><h4>2 · Waker 是脉搏</h4><p class="dim">Future 不主动做事,运行时靠 waker 决定"什么时候再 poll"。</p></div>
136
+ <div class="card card-accent"><h4>3 · 别在 async 里阻塞</h4><p class="dim">一行 <span class="mono">std::fs::read</span> 能让整个 worker 停摆。用 <span class="mono">spawn_blocking</span>。</p></div>
137
+ </div>
138
+ <p class="lede mt-l">延伸阅读:<span class="mono">tokio.rs/blog/2019-10-scheduler</span> · <span class="mono">rust-lang.github.io/async-book</span></p>
139
+ </section>
140
+
141
+ <!-- 8. Q&A -->
142
+ <section class="slide center tc" data-title="Q and A">
143
+ <div>
144
+ <div class="mono" style="font-size:120px;color:var(--accent);font-weight:800;letter-spacing:-.04em">?</div>
145
+ <h2 class="h2">Questions?</h2>
146
+ <p class="lede" style="margin:14px auto">github.com/lewis · @lewis on slack</p>
147
+ <div class="row mt-l" style="justify-content:center">
148
+ <span class="tag">slides: git.co/rt-deck</span>
149
+ <span class="tag">code: git.co/mini-rt</span>
150
+ </div>
151
+ </div>
152
+ </section>
153
+
154
+ </div>
155
+ <script src="../../../assets/runtime.js"></script>
156
+ </body></html>
@@ -0,0 +1,49 @@
1
+ /* tech-sharing — 技术分享 dark, code-forward */
2
+ .tpl-tech-sharing{
3
+ --bg:#0d1117;--bg-soft:#161b22;--surface:#161b22;--surface-2:#1c2230;
4
+ --border:rgba(139,148,158,.22);--border-strong:rgba(139,148,158,.4);
5
+ --text-1:#e6edf3;--text-2:#8b949e;--text-3:#6e7681;
6
+ --accent:#7ee787;--accent-2:#79c0ff;--accent-3:#ff7b72;
7
+ --grad:linear-gradient(120deg,#7ee787 0%,#79c0ff 60%,#d2a8ff 100%);
8
+ --radius:14px;--radius-lg:20px;
9
+ --shadow:0 20px 60px rgba(0,0,0,.5);
10
+ font-family:'Inter','Noto Sans SC',sans-serif;
11
+ }
12
+ .tpl-tech-sharing{background:#0d1117;color:var(--text-1)}
13
+ .tpl-tech-sharing .slide{padding:72px 96px;background:#0d1117;color:var(--text-1)}
14
+ .tpl-tech-sharing .slide::before{content:"";position:absolute;inset:0;background:
15
+ radial-gradient(60% 50% at 90% 10%,rgba(121,192,255,.12),transparent 60%),
16
+ radial-gradient(50% 50% at 10% 90%,rgba(126,231,135,.08),transparent 60%);
17
+ pointer-events:none;z-index:0}
18
+ .tpl-tech-sharing .slide>*{position:relative;z-index:1}
19
+ .tpl-tech-sharing .h1{font-size:78px;line-height:1.03;font-weight:800;letter-spacing:-.03em;color:#fff}
20
+ .tpl-tech-sharing .h2{font-size:54px;font-weight:700;letter-spacing:-.025em;color:#fff}
21
+ .tpl-tech-sharing h3,.tpl-tech-sharing h4{color:#fff}
22
+ .tpl-tech-sharing .kicker{color:var(--accent);font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:600;text-transform:none;letter-spacing:.02em}
23
+ .tpl-tech-sharing .kicker::before{content:"> "}
24
+ .tpl-tech-sharing .mono{font-family:'JetBrains Mono','IBM Plex Mono',monospace}
25
+ .tpl-tech-sharing .terminal{background:#010409;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.6);font-family:'JetBrains Mono',monospace;font-size:15px;line-height:1.65}
26
+ .tpl-tech-sharing .terminal .bar{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#161b22;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-3)}
27
+ .tpl-tech-sharing .terminal .dot{width:12px;height:12px;border-radius:50%;background:#ff5f56}
28
+ .tpl-tech-sharing .terminal .dot:nth-child(2){background:#ffbd2e}
29
+ .tpl-tech-sharing .terminal .dot:nth-child(3){background:#27c93f}
30
+ .tpl-tech-sharing .terminal pre{margin:0;padding:24px 28px;color:#e6edf3;overflow:auto;max-height:440px}
31
+ .tpl-tech-sharing .kw{color:#ff7b72}
32
+ .tpl-tech-sharing .fn{color:#d2a8ff}
33
+ .tpl-tech-sharing .str{color:#a5d6ff}
34
+ .tpl-tech-sharing .cmt{color:#8b949e;font-style:italic}
35
+ .tpl-tech-sharing .num{color:#79c0ff}
36
+ .tpl-tech-sharing .card{background:var(--surface);border:1px solid var(--border);box-shadow:none}
37
+ .tpl-tech-sharing .card-accent{border-top:3px solid var(--accent)}
38
+ .tpl-tech-sharing .pill{background:var(--surface-2);color:var(--text-2);border-color:var(--border)}
39
+ .tpl-tech-sharing .pill-accent{background:rgba(126,231,135,.12);color:var(--accent);border-color:rgba(126,231,135,.35)}
40
+ .tpl-tech-sharing .tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;font-family:'JetBrains Mono',monospace;font-size:12px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-2)}
41
+ .tpl-tech-sharing .agenda-row{display:flex;align-items:baseline;gap:24px;padding:18px 0;border-bottom:1px dashed var(--border);font-family:'JetBrains Mono',monospace}
42
+ .tpl-tech-sharing .agenda-row .num{color:var(--accent);flex:none;width:48px}
43
+ .tpl-tech-sharing .agenda-row .t{color:#fff;font-size:24px;flex:1;font-family:'Inter',sans-serif;font-weight:600}
44
+ .tpl-tech-sharing .agenda-row .d{color:var(--text-3);font-size:13px}
45
+ .tpl-tech-sharing .speaker{display:flex;align-items:center;gap:14px;margin-top:28px}
46
+ .tpl-tech-sharing .speaker .av{width:56px;height:56px;border-radius:50%;background:var(--grad)}
47
+ .tpl-tech-sharing .speaker b{display:block;color:#fff;font-size:18px}
48
+ .tpl-tech-sharing .speaker span{color:var(--text-3);font-size:13px;font-family:'JetBrains Mono',monospace}
49
+ .tpl-tech-sharing .lede{color:var(--text-2)}
@@ -0,0 +1,11 @@
1
+ # testing-safety-alert
2
+
3
+ 白底 + 红琥珀警示色 + 条纹危险边 + 大红 strike 和 pill。灵感来自 `20260412-AI测试与安全/xhs-ai-testing-safety-v2.html` 的 `.focus` 黑底白字块、hero quote box 和高对比 black-on-white 气质 —— 但把语气推到「警示 / 风控 / 事故报告」层级。
4
+
5
+ **Visual traits:** 顶部 45° 红黑斜条纹警示带、底部副条纹、`strike-through` 红色斜切的否定大字、L1/L2/L3 三档色卡 (绿/琥珀/红)、圆形前置指示灯 alert-box、policy-yaml 深色代码块带红色左边框 + `bad` 关键词高亮、红/绿复选框 checklist、Q1 事故柱状图。
6
+
7
+ **Use when:** 讲安全 / 风控 / 事故复盘 / 红队测试 / AI 上线前评估 / policy as code;你需要让观众立刻感到「这事严肃,别马虎」。
8
+
9
+ **Source inspiration:** `20260412-AI测试与安全/html/xhs-ai-testing-safety-v2.html`.
10
+
11
+ **Path:** `templates/full-decks/testing-safety-alert/index.html`