--- name: sn-ppt-dazzle description: 需要把演示 / 幻灯片 / PPT / slides 做成单文件 HTML 动态 deck(动效、跨页过渡、键盘翻页、1280×720)时使用。本 skill 非入口:使用前必须先确认 sn-ppt-entry 与 sn-ppt-story 两个前置 skill 可用,依次执行 entry(建 DECK_DIR / task_pack.json)→ story(生成 outline.md)完成后才可开始;前置缺失或未完成时停止并回报,严禁绕过(如改用生图+手写 HTML 等方式)。 metadata: project: SenseNova-Skills tier: 1 category: scene user_visible: false triggers: - "sn-ppt-dazzle" - "动态 HTML" - "动态演示" - "炫彩 deck" - "dazzle" --- # sn-ppt-dazzle:单 HTML 炫彩演示 deck 你要交付的不是一份"幻灯片",而是一场在浏览器里上演的**动态视觉演出**:持续运行的动态背景、每页的入场编排、页间的过渡特效、键盘可交互——同时排版严谨、内容真实、零控制台报错。 ## 0. Entry / Story 输入契约(最高优先级) 本 Skill 不是用户请求入口,不直接接收裸 query 或附件创建新任务。只接受 `sn-ppt-entry` 传入的绝对 `DECK_DIR`,并且必须已经存在: - `/task_pack.json`; - `/info_pack.json`; - `/outline.md`; - `task_pack.choices.output == "dynamic_html"`,或旧任务的 `ppt_mode == "dazzle"`。 任一条件不满足时停止并返回 `sn-ppt-entry` 补齐,不自行新建 deck 目录、不从 query 绕过 `sn-ppt-story`。 开始和恢复时都 **重新读取`read_file`磁盘上的当前 `outline.md`**,不得使用`sn-ppt-story` 的 write_file 返回内容或对话上下文中的 outline;`outline.md`是 Dazzle 的唯一内容输入并固定: - 最终页数、页序和标题; - 每页核心结论、内容依据、上屏内容边界和前后关系; - 用户明确保留、删除或修改的内容。 Dazzle 仍按本文后续六阶段决定风格 family、动态背景、版式、素材、动画和实现细节,但不得 合并、拆分、增删或重排 outline 页面,不得改变标题和核心结论的含义,不得恢复用户删除的 内容,也不得自行 Research 或补造事实。事实不足时停止相关页面并返回 Entry / Story。 `DECK_DIR` 只能取 `task_pack.deck_dir` 的绝对路径,所有任务产物都写入该目录。当前 Skill 目录只读并记为 `SKILL_ROOT`;references 和渲染脚本只从 `SKILL_ROOT` 读取。 ## 1. 产物与边界 - 最终产物:`/deck.html`(如用了生成图则外加 `/assets/`,图片在 HTML 中仍用相对路径 `assets/img_NN.png` 引用;没有生成图时 `deck.html` 就是唯一演示交付物)。 - 画布 **1280×720(16:9)**,固定设计画布 + JS 等比缩放适配屏幕(见 §4 契约)。 - CSS / JS 全部内联在 `