# Sn Ppt Creative

Use when a prepared PPT task with a current outline.md should be generated as an...

- Repository: https://github.com/OpenSenseNova/SenseNova-Skills (6002 stars)
- Category: Documents
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: yes, review before use

## Install

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

## Description

Use when a prepared PPT task with a current outline.md should be generated as an image-first presentation with one 16:9 image per slide and optional PPTX packaging.

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

# sn-ppt-creative

把公共 Story 转译成一套 16:9 整页视觉：每页生成一张完整 PNG，并可组装为 PPTX。
Creative 负责视觉转译，不负责 Research，不生成自己的内容大纲。

## 前置与目录边界

必须存在：

- `<DECK_DIR>/task_pack.json`
- `<DECK_DIR>/info_pack.json`
- `<DECK_DIR>/outline.md`
- `task_pack.choices.output == "creative"`，或旧任务的 `ppt_mode == "creative"`

`DECK_DIR` 只能取 `task_pack.deck_dir` 的绝对路径。所有生成产物只写到该目录；不得写入
用户 home 根目录、宿主 workspace 根目录、Skill 目录、repo、`/tmp` 或另一个 workspace。
已有任务必须复用原 `DECK_DIR`，不得另建目录。

把当前 Skill 所在目录记为只读的 `SKILL_ROOT`，把同级 `sn-ppt-tools/` 解析为绝对
`PPT_TOOLS_DIR`。开始生图前读取
`$PPT_TOOLS_DIR/references/capability-policy.md`。文本推理、风格判断和视觉理解使用宿主
Agent 原生能力；图片生成优先使用宿主原生工具，原生能力不存在或一次实际调用失败时，
才使用 PPT 整包自带的 `image_generate.py`。

不得调用 `model_client.py`、`sn_agent_runner.py`，不得要求用户在 Agent 外再配置文本或
视觉模型 API。

## 公共 Story 契约

开始和恢复时重新读取磁盘上的 `outline.md`。它固定：

- 页数、页序和标题；
- 每页核心结论、内容依据、上屏内容边界和前后关系；
- 用户明确保留、删除或修改的内容。

Creative 可以决定视觉隐喻、艺术媒介、构图、页面动势和信息图形语言，但不能：

- 合并、拆分、增删或重排页面；
- 改变标题和核心结论的含义；
- 恢复用户从 outline 删除的内容；
- 自行搜索事实、补案例或另写 `outline.json`；
- 因整页生图偏好而牺牲事实、逻辑或文字可读性。

发现现有材料不足时，保留对应页位并明确缺口，返回 Entry/Story；不得在 Creative 内补做
Research。

## 设计丰富度

读取 `task_pack.choices.design_richness`：

- `restrained`：收敛构图、材质、文字装饰和视觉隐喻，优先稳定与清晰。
- `rich`：默认，在清晰信息层级上提供充分画面、页型变化和跨页一致性。
- `high_creative`：允许更大胆的构图、艺术媒介、英雄页面和视觉动势，但不牺牲文字
  可读性、事实和 Story。

丰富度只控制视觉投入，不改变页数、结论和 Research 边界。本发布版不再提供额外的
Artistic/Classical 分线选择。

## 产物

```text
style_spec.md
pages/
  page_001.prompt.txt
  page_001.png
  page_002.prompt.txt
  page_002.png
...
<deck_id>.pptx
```

`style_spec.md` 是出口内部的视觉说明，不是第二份 Story；它只能补充跨页视觉语言、构图
规则、配色、材质、字体气质和负面约束，不得重写 outline。

## 恢复

先运行：

```bash
python3 "$SKILL_ROOT/scripts/resume_scan.py" --deck-dir "$DECK_DIR"
```

按磁盘真实产物继续：

- `style_spec.md` 不存在：重新形成 deck 级视觉说明；
- `page_NNN.prompt.txt` 存在而 PNG 缺失：只重新生图；
- PNG 已存在：跳过该页；
- 用户修改了 outline：重新生成受影响页面的 prompt 和 PNG，不让旧 prompt 覆盖新内容；
- PPTX 缺失或页面发生变化：重新打包；
- 已有 style、prompt、PNG 和 PPTX 不无故删除。

## 工作流

### 1. 读取输入并形成视觉说明

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