# Sn Ppt Story

当前 PPT 任务已由 sn-ppt-entry 建好 DECK_DIR（task_pack.json 与 info_pack.json 已写入）后，必须由本 skill 将...

- Repository: https://github.com/OpenSenseNova/SenseNova-Skills (6002 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-story -g -a claude-code -y`
Codex: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-story -g -a codex -y`
Cursor: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-story -g -a cursor -y`
Gemini CLI: `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-story -g -a gemini-cli -y`

## Description

当前 PPT 任务已由 sn-ppt-entry 建好 DECK_DIR（task_pack.json 与 info_pack.json 已写入）后，必须由本 skill 将 query、全部用户材料与已完成 Research 编排为唯一可编辑的 outline.md 时使用。本 skill 是 entry → 出口（standard / dazzle / creative）之间的强制中间环节：不允许执行 Agent 跳过本 skill 直接依据 task_pack / info_pack 即兴编写大纲，不允许出口 skill 代写或改写大纲；前置产物缺失时停止并返回 sn-ppt-entry 补齐，不得自行补做研究。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# sn-ppt-story

把 query、全部用户材料和已经完成的研究综合成一份清楚、完整、可直接修改的
`outline.md`。Story 统一管理内容理解和页面叙事，不生成页面，不自行开展外部研究。

## 输入边界

只接受 Entry 传入的绝对 `DECK_DIR`。开始前读取：

- `<DECK_DIR>/task_pack.json`
- `<DECK_DIR>/info_pack.json`
- `info_pack.raw_documents` 指向的完整 `raw_documents.json`（存在时）
- `info_pack.research_report` 指向的 Research 主报告（存在时）
- 用户明确要求读取的其他源文件
- 当前 `<DECK_DIR>/outline.md`（修改或继续任务时）

用户材料是事实来源，query 是任务目标，Research 是外部证据补充。三者冲突时明确区分
“用户要求”“材料事实”“外部证据”和“推断”，不得用顺畅文案掩盖冲突。

`task_pack.state.research.required == true` 时，Story 开始前必须已有
`info_pack.research_report` 指向的可读报告。缺失时停止并返回 Entry 完成
`task_pack.state.research.executor` 指定的证据路径；不得先写 outline 再补研究。Standard
默认读取 Entry 写入的定向搜索摘要，Deep 默认读取 `sn-deep-research` 的完整报告，Story
不把 Standard 自动升级为 Deep。

## 输出和状态

- 唯一用户叙事文件：`<DECK_DIR>/outline.md`
- 不创建 `outline_v2.md`、story spec、页面 JSON 或另一份并行大纲。
- 开始时把 `task_pack.state.current_stage` 更新为 `story`，状态更新为 `storytelling`。
- 完成时把 `story` 加入 `completed_stages`，把 outline 绝对路径写入
  `state.artifacts.outline`，把 `task_pack.params.page_count` 同步为当前连续页数，状态更新为
  `story_ready`。
- 修改现有大纲时覆盖同一文件，并清晰标记哪些下游页面需要重新生产；不要清除
  Research 和材料解析的完成状态。

## 工作方法

### 1. 完整理解

阅读与任务相关的全部内容，而不是只看标题、摘要或开头。材料较长时可以分段读取，
但最终综合必须覆盖：

- 可以直接使用的事实、数据、案例、定义和结论；
- Markdown/DOCX 表格及文档内图片所承载的信息；
- 多份材料的重复、冲突、时效和口径差异；
- 受众真正需要做出的理解、判断或行动；
- 仍然缺少证据、只能作为推断或需要弱化表达的内容。

`document_digest` 是索引和辅助，不替代原文。决定性数字、专有名词、时间、单位和引用
必须回到原材料或 Research 主报告核对。

### 2. 先确定整套 Story

在排页前明确：

1. 谁在什么场景下向谁表达；
2. 演示希望受众理解、相信或决定什么；
3. 全套唯一的核心观点；
4. 采用什么论证路径，为什么按这个顺序；
5. 最后一页应留下什么结论或行动方向。

不要把材料目录机械改成页面目录。内容应形成连续推进，例如“建立背景 -> 暴露关键矛盾
-> 给出判断框架 -> 用证据验证 -> 落到方案或行动”，具体结构由任务决定。

### 3. 再规划逐页逻辑

每页只承担一个主要任务，并明确：

- 页面标题；
- 受众看完必须记住的完整结论；
- 支撑结论的事实、数据、案例和自然语言来源；
- 它如何承接上一页并推动下一页；
- 信息之间的关系和建议的表达方式。

页面表达只描述用户能理解的意图，例如“用统一维度对比三种方案”或“用趋势图说明拐点”。
不要写像素、坐标、HTML 节点、组件 ID、内部页型代码或出口实现细节。

### 4. 做三轮 Story 自审

这不是模型评测，也不产生测试文件。写入前在当前上下文中连续复读三次：

The rest: https://github.com/OpenSenseNova/SenseNova-Skills/blob/HEAD/skills/sn-ppt-story/SKILL.md
