qiaomu bento ppt
把资料转成可编辑、可演示、可离线分发的单文件 bento/slides deck。
Router Rules
- 触发:用户明确提到
bento、.bento.html、单文件 HTML 演示文稿、离线可编辑 deck,或点名$qiaomu-bento-ppt。 - 近邻:只说“做 PPT”且未指定格式时,优先使用通用 PPT skill;先确认是否接受 bento 格式。
- 不触发:明确要求
.pptx、Keynote、Google Slides;开发 bento 平台源码;制作 bento/spaces、bento/dash 或 bento/vault。 - 编辑已有 deck 时保留
docId、未知字段、collab 数据和原始 HTML shell;只改#bento-doc。 - 新建 deck 时只生成一次
docId。禁止把既有文档当“新文档”重新生成身份。 - 不发布、不部署、不签名,不读取
~/.bento/release-key.json。
Required Sources
开始制作前读取 references/workflow.md 和 references/upstream-contract.md。
本 skill 自带固定版本的官方资料,按顺序读取:
references/upstream/bento-official-skill.mdreferences/upstream/bento-agents.mdreferences/upstream/bento-format.md
当前固定 release、commit、文件来源与 SHA-256 记录在
upstream.lock.json。普通 deck 任务禁止临时联网换最新版;只有用户明确提出
维护/同步上游时,才运行:
python3 scripts/sync_upstream.py --report reports/upstream-sync-check.json
需要刷新时加 --update。脚本只接受同一个官方 GitHub release 的完整快照,
全部暂存并验证后才替换;随后必须重跑 standalone、identity、shell、fixture 和
browser gates。定期 GitHub workflow 只创建 PR,不直接更新 main。
用下面的命令检查独立资产:
python3 scripts/bento_deck.py locate
正常结果必须包含 "standalone": true。原始 bento checkout 不是前置条件;
只有更新兼容性检查时才可选传入 --repo。
Compact Workflow
- 判定交付物:确认新建还是编辑、语言、受众、场景、时长、比例、是否必须完全离线,以及用户是否明确要求跳过方案确认。
- 先做方案:广义主题先给
1a / 2b / 3c选择卡和默认建议;形成 source-groundeddeck-plan.md。用户说“直接生成/跳过确认”时可继续。 - 读取官方规范:使用 skill 内置的官方 bento skill/agent/format 快照,禁止凭记忆发明字段。
- 提取或起草 JSON:
- 编辑:
python3 scripts/bento_deck.py extract input.bento.html --output deck.json - 新建:从官方最小文档骨架起草;不带
collab、template、readonly。
- 编辑:
- 内容映射:数字→chart,规格/对比→table,连续变化→morph,展开细节→state slide,主视觉→image+scrim+ken-burns,流程→path/dash-march,关键数字→countUp。
- 构建新文件:默认不覆盖任何输入。
python3 scripts/bento_deck.py build deck.json \
--output result.bento.html \
--new-document \
--report reports/deck-validation.json
编辑已有 deck 时去掉 --new-document,用原文件同时锚定身份和 shell:
python3 scripts/bento_deck.py build deck.json \
--identity-source input.bento.html \
--output input.updated.bento.html \
--report reports/deck-validation.json
脚本会拒绝 deck.json 与原文件 docId 不一致的构建。只有用户明确要求时
才加 --overwrite。
- 验证:结构校验、bento shell gate、真实浏览器打开、编辑态与演示态检查。视觉任务不能只以脚本通过作为完成证据。
- 交付:给出
.bento.html、deck-plan.md、可选deck.json、验证结果和仍属missing evidence的项目。
Authoring Rules
- 默认 1280×720;遵循实际
doc.size。常规内容保留约 96px 侧边距。 - 每页一个视觉主语;画面与字幕/正文不要完整复读同一句。
- 一套主色、最多两套字体。不要用左侧彩色竖线、默认网格或施工线制造廉价层级。
- 使用真实图片、图标和数据;外部 URL 媒体会破坏离线承诺,必须明确说明。
- 同一对象跨页变化时使用稳定、确定性的 id;同一页的有效 morph key 不得重复。
- 每页写 speaker notes。控制文字密度,数字能图表化时不要堆文字。
- chart option 必须是纯 JSON;bar/line 数据用纯数字;禁止函数 formatter。
- 写入文档块时所有
<转义为\u003c,文档块中不得出现字面 script 结束标签。
Gate Ladder
- Route gate:触发和近邻边界通过
evals/trigger_cases.json。 - Structure gate:
scripts/bento_deck.py validate无 error。 - Shell gate:生成文件必须通过内部 gate;可选 checkout 存在时再跑其
scripts/shell-gate.mjs做兼容性复核。 - Identity gate:编辑时
docId与源文件一致;新建时只 mint 一次。 - Quality gate:无越界、关键文字过小、空 notes、断链、无动效等未解释 warning。
- Browser gate:真实打开后检查封面、至少一页内容页、演示模式、字体/图片/图表和无横向溢出。
- Rollback boundary:默认写新文件;源
.bento.html与源资料保持不变。 - Upstream gate:
upstream.lock.json与四个内置快照的 SHA-256 必须一致;自动同步只能开 PR,合并前仍需浏览器复核。 - 缺少浏览器、人工审阅、外部媒体可用性或发布安装证明时标为
missing evidence,不得写成“已验证”。
Output Contract
deck-plan.md:受众、目标、叙事弧、逐页结构、素材映射、视觉方向、证据来源。deck.json:纯bento/slides文档数据;编辑场景保留身份和未知字段。<title>.bento.html:可独立打开、编辑和演示的单文件交付物。reports/deck-validation.json:errors、warnings、shell gate 和身份结果。- 简短交付说明:路径、页数、离线边界、已验证项、
missing evidence。
Permissions And Exclusions
- 允许:读取用户指定资料和 skill 内置 shell/规范;在任务输出目录写计划、JSON、报告和新 deck;运行 Python 校验与本地浏览器。
- 需用户明确授权:手动联网更新 shell/规范、覆盖既有 deck、把大型媒体改成外链、修改 bento 项目源码。仓库维护者启用的定期同步 workflow 仅限官方 release 元数据和快照,并只创建待审 PR。
- 禁止:发布/部署/release、触碰签名密钥、向
main直接推送、把 token/cookie/账号写入 deck 或报告。