agentleFS
huangrx6huangrx6/agent-skills/skills/deck-authoring/SKILL.md

deck-authoring

Skill5 starsChanged 20 days agoMITView on GitHub

只从材料新建演示,不改已有 PPTX:把内容组织成 HTML 页面,设计版式、页内配图与播放, 再导出 PDF、PNG、贴图 PPTX,或把每页录成视频(幻灯片录制,不是剪辑)。 单张图、剪片子也不接。 触发:做一份演示、做 PPT、把材料做成幻灯片、定演示的视觉风格。 Do NOT use for: 编辑已有 PowerPoint 文件、单张配图或单张图表、用 LaTeX/beamer 排论文 (交付物是 .tex 源码)、影视剪辑(这里的视频只指把幻灯片逐页录下来)。

The file

Files
SKILL.md

演示文稿制作

把材料做成适合观众、读得清楚且有视觉表达的演示。新项目以自由 HTML 为主路线; 内容、风格与素材保留在项目中,工具负责稳定播放、检查和导出,不替作者决定构图。

审美是设计判断,不是检查通过。完整新稿先过 审美闸门:至少三张 hero pages 连看成立、第一眼有明确焦点、图像承担解释、有一个 signature move;两轮回看、major 清零再扩展。

制作是一条链路:上一关没过,不进入下一关

七个闸门串成一条链路:范围 → 风格 → 样页 → 配图交接 → 全套 → 审稿回填 → 导出。 每关的出口是可核验的产物,没有产物就不算过;上一关没过就做下一关的事,返工成本高一量级。 闸门定义、越界清单、状态卡格式见 阶段闸门; 状态写在 design.md 的 ## 阶段闸门 表里,用 gate_check.py 核验。

  • 「顺便把后面做了」不算进度:样页没确认就铺全套、图位还会变就交 brief、图没回填就导出, 都要回到对应闸门重做。检查器只服务当前闸门,web_check 通过不推进闸门,也不等于设计完成。
  • 每关结束报一次状态卡:现在在哪一关、依据是什么、下一关要谁确认什么。

开始制作前:先判断是否需要交互

新稿或整体重做默认先选视觉参考,再看真实样页,最后扩展整套。 先执行本节,不能读完制作资料就直接写全稿。 判断依据是用户的实际表达,不是作者自己选出的主题、搜索结果或旧 design.md。

当前情况下一步
没有已选参考,也没有让作者决定风格本轮先提出参考选择问题,等待回答
用户已选具体作品、截图、品牌规范或认可了部分页面沿用其认可范围,制作代表样页;不重复问已确定的选择
用户明确说“风格你定,直接做完”“不用问,直接做”自主选方向、试排和审稿,继续完成整套
只改文字、修布局、换图或按已认可样页扩展直接处理本次范围,不重新选主题

开新版本(v2、v3…)一律从「选参考」重新开始,上一版的风格不自动继承。 同一项目、同一主题也一样: 只有用户明确说“沿用上一版风格”才能跳过;“上一版已经确认过”不是理由。新版本先清场:上一版目录是只读的 验收对象,不是设计素材——不打开它的源文件、CSS、design.md、image-plan.json、refs/ 找灵感, 不复制 class、组件、封面构图、背景纹理、图标或渐变,也不凭记忆重建。新目录从空开始, 先写 design.md 的「与上一版的差异」,再从本版参考长出页面;三张 hero pages 之后跑 version_guard.py,完整边界见 版本隔离。 “重新做一下”“用最新 skill”“做得高级一些”“继续”不表示已选风格,“你推荐几种”也不等于授权; 先前选择只在当前版本内有效,仅有“简洁、精致、技术感”时用可见参考澄清。

需要选择时,在全面读库、下载字体、写样式或生成全稿之前,先问一个可回答的问题:

  • 按 参考选择入口 给少量相关作品或浏览网站,附链接并说明看什么; 让用户返回作品链接、截图或偏好,也可选“先帮我找参考”或明确委托自主完成。网站入口本身不算已选作品。
  • 选风格必须让用户看见「这一风格在页面上长什么样」:优先给同媒介的实现案例(用户能打开的页面本身); 只有影片、海报、摄影、游戏这类别的媒介时,先做 1–2 页可比拟样张再让用户选。 选择前必须答出五个问题(页面主体、一页长什么样、色彩明暗、素材来源、动效),并给一条反例。 证据等级、五个问题与媒介转译规则见 风格证据。 只报作品名、只贴风格缩略图或影视海报,不算完成选择——用户看不到页面就会用想象补,交付必然对不上。
  • 风格词从站点取,不要自己编:站点清单在 assets/style-sources.json(九个站、三个分组), 用 style_probe.py --probe "…" 取样,取回真实模板或作品(标题里的颜色词、风格词、用途词), 再挑 3–5 个候选给用户。分组不同:成品模板给版式、成套主题给母题、视觉语言给画风, 候选要跨分组,只用一个站等于只借了那一站的审美。都取不到匹配风格时(如「3D 动画电影」), 说明这个方向不是模板站能给的,按 B 档样张走,不要硬套模板凑数。规则见 风格来源。
  • 参考截图只放 refs/,永远不进 assets/images/,也不在页面里当 <img> 引用: 它证明的是作者看过什么,不是本 deck 画了什么。
  • 使用当前宿主实际提供的提问工具;没有可用工具时,直接在回复中提问并结束本轮,等用户下一条消息。 不调用不存在的 ask_question,不通过 shell 的 read/input 模拟对话,也不为提问要求安装插件。
  • 异步提问后只做不依赖选择的内容整理;本轮结束仍未收到选择,就保持待回答。 取消、空答或工具不可用时改用文字问题;不能把默认选项、等待超时或“先按推荐继续”当成用户选择。

参考明确后,用本项目的开场和有代表性的内容展示真实样页,让用户看见中英文字形、图文关系和留白; 默认等用户接受或调整这组样页后再批量制作。只说“你帮我选风格”可由作者提出方向并做样页; 已明确委托直接完成整套时自行检查样页后继续。样页数量随内容决定,不固定三套主题或必选风格菜单。 现有认可样页无需再确认;配色、字体、图像和构图在样页里一起判断,不分成多轮表单。

完整新稿或整体重做必须包含功能配图、封面/章节/议程主视觉与内页背景设计,页面按占位图位交付,并交 image-plan.json 与 image-brief.md(文件名 + 路径 + 输出像素/比例 + 完整提示词 + 负面约束)。 配图只交接、不代生:量图位、写计划,用 image_handoff.py --brief(结构化 spec 用 image_source.py --brief)交 image-brief.md,由用户用自己的模型生成并按文件名回填;真实截图与授权素材也由用户提供。不调用任何生图工具、不为出图写脚本的完整边界见 交接做法。HTML/SVG 自绘的图表、流程、结构图不算生图,照常绘制。 数量由内容决定,不设上限;图承担解释或气氛就多用,只是重复文字或凑数就删。只有用户明确要求纯文字或本次仅改局部文字时,才免除相应交付; 作者不能以“技术题材”“信息密集”“排印路线”或暂无图片自行豁免,也不能以“用户让我直接生成”“环境里有生图密钥”为由跳过 brief。 HTML 完成后先问配图是否还需要,再问导出 PDF 还是 PPTX;图未回填前不导出,见收尾提问。

项目与版本目录(硬约束)

一个演示项目在仓库里只占一个目录,每次重做开新版本,绝不原地覆盖:

deck/
├── <项目>-<主题A>/
│   ├── v1-YYYY-MM-DD-<风格>/    ← 源、产物、design.md、image-plan/brief.md、refs/、
│   │                            assets/{deck.css,fonts,images}、checks/、preview/
│   └── v2-YYYY-MM-DD-<风格>/    ← 同一份 deck 的第二次制作(结构同上)
└── <项目>-<主题B>/v1-…/         ← 换主题就是新 deck,从 v1 开始
  • 版本目录自带字体、配图与参考图:把整个 vN-.../ 拷走就能交付。不要跨版本引用任何素材。
  • 新版本目录从空开始:不 cp -R 上一版、不在旧 source.html / deck.css 上删字改版; 复制出来的文件会把上一版的判断一起带进来。
  • 图片与参考图按版本独立:换风格往往意味着换素材——同一张"文档材料拼贴"在排印版和手绘版里都不成立。 新版本要重新设计配图并重写提示词,参考图重新找;确需复用上一版图片时,在 image-plan.json 里登记 source: "provided" 并写清"为什么仍然成立",不能默认沿用。
  • 风格变更、整体重做、换参考,都等于新版本;旧版本原样留着,不删、不改名、不搬素材。
  • 只有用户明确说"删掉某版"才删除;否则归档到 _archive/。
  • vN 后面的日期与风格是给人和 AI 读的:v3-2026-10-20-技术评审-深色工程。
  • vN 是同一份 deck 的第 N 版,不是第 N 个题材。换了讲的主题、换了观众,或做的是另一套材料,都算新 deck:新建主题目录、从 v1 开始;不要把新主题塞进旧主题的 v2。
  • 同一主题下的版本按序号递增,不跳号;空着的版本目录保留 README,别让它变成杂物间。
  • 新版本 = 新风格:开 v2 的第一件事是重新选参考,不是在 v1 的 CSS 上改内容。 目录名保持 vN-... 格式,version_guard.py 才能自动找到更早的版本。

选择交付路线

  • 新演示、HTML / PDF / PNG / 贴图 PPTX:读 HTML 源文件与工具契约,自行编写 HTML / CSS。内部布局不限页型词表。
  • 已有 spec,或必须原生可编辑 PPTX:读 结构化规格 和 兼容制作管线。只承诺已支持的文字、图片、形状与图表;先验证关键页面的最终导出,任意 HTML/CSS 不能自动保真转换。
  • 用户明确要求可编辑时,不能用整页截图冒充。格式差异和导出命令见 交付格式;环境与安装见 README。

设计与制作

  1. 按问题拆讲。 根据观众、目标、观看条件核实事实,按 内容理解 确定每页要回答的问题、视觉解释和细节去向,页序与追溯按 规划 记。没有明确页数限制时,内容过多优先增加页数,不沿用旧稿页数或把文档章节直接塞进一页;比较所需的共同信息保持同屏。
  2. 把已选参考转成真实页面。 先在项目记录里写一句视觉命题:观众与场景、2–3 个参考 move、字体/颜色/网格/图像/材质、一个 signature move、一个可重复的视觉母题、反目标。再做至少三张 hero pages(封面、最难讲的内容页、signature page,其中至少一张由图像/图形承担主体),在目标观看尺寸按 审美闸门 至少回看两轮;major 未清零不扩全套。封面与尾页必须独立设计、不沿用内页骨架:封面只放文档名称 / 作者 / 时间 + 一个立气质的视觉动作,尾页只留一句收束。作者找到参考并写进记录不代表用户选中了它。开新版本时,上一版的页面清单、类名与组件不是起点,按本轮问题重新推导。
  3. 让图本身呈现内容。 先画视觉分镜表(页、视觉载体、母题角色、图位),再写 HTML:同一母题在封面、章节、议程与内容页以不同尺度和角色出现 3–6 次,封面与章节页默认由图像承担主体。再判断这段解释该不该是图(「谁 → 对谁 → 什么关系」能指认就画);矩阵、流程、剖面、时间轴、标注截图或信息图都可以成为页面主体,数据图按 图表契约 验收。裁切、出血、蒙版、双色调和拼贴要服务解释,标签与条件就近放置。按 配图流程 量图位、写占位并交 image-brief.md;提示词按本版视觉方向重写,换版本必须重写。
  4. 用真实字形和实际画面实现。 按 排印、视觉 craft 与 字体接入 确定标题、正文及中英混排。一个字族承担全部文本:标题、正文、图注、表格、数字和页脚都用它,等宽只给代码与机器标识;标题再配展示体属于例外,只有用户或品牌明确要求才允许,并用 type_audit.py 登记,不能为了"层次感"自行配第二族。交付前用 pdffonts 核对没有混入系统字体。缺字或需要成套字重时,用 python3 scripts/font_repos.py --search 到公开字体仓库查,再用 --get 落盘,用真实长标题、段落、数字和图标签试排;尺度、行长和字重按关系试排,不把一张字号表当处方。按 构图、布局系统 和 布局计算 量取图文与间距;待图阶段也检查容量。容量超标先看内容带(占可用高 60–80%)与间距层级(内边距 < 组间距 < 页边距),不是压 gap/padding 把内容挤到上半、底部空出四分之一页,也不是只加 align-content:center 收场。内联 SVG 的图形与文字不得越出 viewBox 或所属形状——越界会被静默裁成"半截",收尾逐叶子形状扫描渲染边界(见布局计算)。需要运动时分别编排 转场、页内讲解和静态输出,不能把外部应用的效果名当成本播放器能力。
  5. 让整套一致且适应内容,但不要同构。 非图像骨架不超过全书 45%;图像/整幅页由内容决定,不设上限,但同一构图成排出现时要换;不要连续三页同一非图像主角(用 rhythm_check.py 验;相邻两页同构只在信息比较时允许); 延续已确定的视觉特征,各页按任务安排主角、密度与位置;一个 signature move 重复 2–5 次,但不每页出现。信息比较可以同构,内容变化也可以改变组织。反馈落实到具体范围,更新相关页面并回看。局部修订无需重走整套设计流程。

已有明确品牌与用户选择持续有效;品牌、logo 与授权素材的接入见 品牌与资产。整体重做的历史排除范围见 资料边界。 品牌指定的字体与色值可以跨版本沿用,但要在 design.md 记为本版约束,并用 version_guard.py --allow fonts,palette --reason "品牌规范" 放行;其余色彩角色与构图仍要重做。 brands/ 与 assets/brand*/ 下的 logo 等组织标识不计入图片查重。

图片、背景与播放

一套 deck 要有自己的视觉世界。 同一母题在封面、章节、议程和内容页反复出现并改变角色,图像因此承担结构而不是装饰; 母题可以是插画对象、图形装置(价签、轨道、框架、编号牌)或照片处理,技术材料用图形装置同样成立。 整套缩略图缩小到看不清字,仍应认得出同一个世界。只有文字块加右侧小图,说明图像还停在装饰层。 做法见 图像系统。

不代用户生图(硬约束)。 位图只走三件事:量图位、写 image-plan.json、交 image-brief.md; 用户说“你直接生成”“我有 key”也照样交 brief,不执行、不复用项目里已有的出图脚本。

内容页不能只是「标题 + 正文 + 页脚」的排版加配色。 每页要有一个可指认的视觉主角,而且主角必须换: 全幅图、出血材质、整幅色域/明暗反转、大数字、引文、表格、剖面、流程、标注截图、拼贴、局部放大——任选, 但一套里至少四种不同类型。标题、导语、注解、结论都属于附属层,换它们不算换页型。

图像可以承担主体、证据、背景或透明叠层,与精确的 HTML/SVG 标签和连线组合。解释页要用视觉分担信息,只给文字卡换颜色或只有装饰封面不能代替功能配图;图位、裁切与文字安全区一起设计。

形象统一是硬约束。 同一角色或物件只能来自一种实现:要么全部生成位图,要么全部手写矢量; PNG / WebP / JPG 可以混,媒介不能混。图表、流程线、标注、图标属于图形层,可以与位图同页; 有脸、有身体、有固定造型的角色不算。封面背景已含角色时,前景只放文字与细线,不再叠 SVG 角色。

图位是空白框。 占位时只显示空框,不写“待配图”、文件名、尺寸或 alt;回填后页面不得残留任何占位文案。 文字、标签、页码不能压在图的主体上;图注放在图位外,不用绝对定位叠图。

先量图位,再给宽高。 每张图的 target_px 从实际图位量出(渲染尺寸 × 导出倍率),比例由它决定; 提示词第一行写清输出像素与“按此比例原生生成、不裁切、不拉伸、不加白边”,主体位置和文字安全区写成百分比。 用户回填后核对真实像素:要放大或比例对不上,就请用户重出或改图位,不用 object-fit 硬撑。 流程、图表、剖面、截图这类功能图的比例必须等于图位;照片与背景才可以用 cover 裁切。

文字与图只有两种关系:在图外,或压在图里预留的安静区。 后者写进 negativeSpace,必要时加局部 scrim,回填后复测;正文压在高细节区读起来是脏,不是风格。图被卡片、标签或遮罩盖住是层序错了。

可以也应该打破网格:非对称比例(7/5、8/4、9/3)、越界出血、元素叠压、旋转或错位排版都可用, 前提是每次断裂都有可辨依据(共享对齐轴、图注基线、视觉重量),不是随机漂移。

保留素材来源,用户生成的图不能冒充真实界面、数据或系统证据。用户禁止 SVG 时启用 --raster-only。 配图清单必须实际保存,图位以占位交付(缺图不影响编译);文件和尺寸检查不证明图像内容或显示效果合格。

画面的灵动先由尺度、位置、疏密和页间接续形成。需要运动时读 播放与动效, 检查入场前、中、落定与 ?scroll 完成态;落定要等于静态态:层级标在图层(背景/装饰/图/遮罩/文字) 而不是 DOM 顺序,reveal 只包原子元素,落定后不留 transform / will-change / 半透明。“动画结束文字被图压住”多半出自这里。

渲染、审稿与交付

完整新稿先确认占位图位、image-plan.json 与 image-brief.md 齐备;交付前过一遍输入与产物验收与返工清单;封面与尾页独立设计、只做展示:封面只放名称 / 作者 / 时间 + 一个视觉动作(禁止目录、章节列表、流程预览、刻度尺、摘要、第二张图);尾页只留一句收束(禁止多栏分块与清单);需要图要在配图清单里单列 cover / finale 条目;自由 HTML 的源与产物放在同目录,用不同文件名:

收尾先问,不自动导出(硬约束)

HTML 编译并检查完成后停在提问,不跑 pdf.py / pptx_native.py。每次生成 HTML 都按这个顺序收尾:

  1. 报状态:占图位几个、已回填几个、占位文字残留几个、image-brief.md 在哪。
  2. 配图未齐时问:"这次还要配图吗?" 要,就说明提示词与回填路径,图齐后跑 image_handoff.py --check (退出 1 = 缺图或占位文字残留);不要或已齐,记"用户确认无配图"/"已回填 N / N"。
  3. 格式未定时问:"导出 PDF 还是 PPTX?" 已指定就按指定执行,不重复问。
  4. 选定后才运行导出命令。没回答就不导出,也不"先导一份看看"。

只有用户明确说"不用管配图,直接导 PDF"才可跳过第 2 步并记"配图待回填";缺图导出只能叫草稿。 流程与分支见 交付格式。

# 链路闸门:随时查"现在在哪一关、下一关缺什么、有没有跳步"
python3 scripts/gate_check.py /path/to/vN-.../ --json checks/gates.json
# 配图只交接:量图位、写 image-plan,再生成 image-brief.md 交给用户出图;
# 不调用生图工具,也不把 brief 当成“用户会出图”的省略理由:
python3 scripts/image_handoff.py --brief /path/to/image-plan.json --html /path/to/source.html
python3 scripts/web_deck.py /path/to/source.html -o /path/to/deck.html --image-plan /path/to/image-plan.json
python3 scripts/build_verify.py /path/to/source.html /path/to/deck.html
python3 scripts/rhythm_check.py /path/to/source.html
python3 scripts/type_audit.py /path/to/vN-... --json /path/to/checks/type-audit.json
python3 scripts/version_guard.py /path/to/vN-... --json /path/to/checks/version-guard.json
python3 scripts/web_check.py /path/to/deck.html --json /path/to/draft.check.json
python3 scripts/design_signals.py /path/to/deck.html --json /path/to/design-signals.json
# 用户回填配图、并选定导出格式后,才运行下面两段:
python3 scripts/image_handoff.py --check /path/to/image-plan.json --html /path/to/deck.html
python3 scripts/web_deck.py /path/to/source.html -o /path/to/deck.html --image-plan /path/to/image-plan.json --check
python3 scripts/shots.py /path/to/deck.html --out-dir /path/to/pages --count N

每写 5–8 页就编译检查一次,不要等全套写完再测:容量问题几乎都来自"内容比预想长一截", 越晚发现越容易靠缩字和压间距收场。

type_audit.py 按选择器判断字族用途:pre / code / .mono 与 .icon 可用等宽或图标字体, 其它选择器出现第二个文本字族就退出 1;样页阶段和交付前各跑一次,双族必须 --allow "字族名" --reason "原话" 并写入 design.md。 v2 起三张 hero pages 之后跑 version_guard.py:只报"哪一维重合、重合多少",不打印上一版的具体值; 硬失败退出 1,提醒退出 0、--strict 变 2,沿用维度必须 --allow fonts,palette --reason "用户原话"。 它不判断好看,只判断有没有搬上一版;审美仍按 审美闸门 看。

--image-plan 让编译同时核对配图清单与占位图位:缺图只提醒,不阻塞编译;但图位里残留“待配图”等可见文字会报错,必须先删掉。它不验证审美或背景设计。 局部编辑或用户明确要求纯文字时可省略该参数。 占位图位缺图不算资源错误;仍须逐页处理实际越界,不把缺图当作跳过布局检查的理由。字体、脚本及其他资源错误仍须处理;报告未测出页面时不能声称容量已验证。 --check 保存浏览器报告:硬错误退出 1;需复核的重叠、遮挡、媒体被容器裁掉或盖住、过小正文等退出 2;普通字号提醒不默认阻塞。 design_signals.py 读取完成态帧,报告字号/字体/颜色/对齐/留白/图像/行长/卡片等可观测信号; 它是审稿提醒,不是分数,也不替代截图目检。处理真实问题后复测,不能靠隐藏内容、缩成小字或改角色标记换取通过。

按 视觉审稿 与 审美闸门 看整套缩略图、逐页目标观看尺寸和所需最终格式:

  • 三张 hero pages 是否各自成立、连看有亲缘;signature move 是否真的出现且不过量。
  • 字体是否只有一个文本字族(type_audit.py 通过),第二族是否有授权与记录。
  • 内容带是否占画面 60–80%,底部空是否由视觉锚点承担;卡片正文 ≥22px、内边距与行高是否够; 缩略图缩小后是否仍认得出同一个视觉世界,图像是否参与封面与章节主体而不只是配图。
  • v2 起:两版缩略图并排是否一眼分得开,version_guard.py 的硬失败是否清零。
  • 内容主次、解释与证据是否清楚,中文换行、表格和辅助文字是否好读。
  • 图片与背景是否服务本页,主体和文字是否避让,裁切与素材瑕疵是否处理;整套具象角色是否同源,占位文字是否清零。
  • 每张图的实际像素与比例是否等于图位,有没有被卡片、标签或遮罩盖住;功能图有没有被 cover 裁掉内容;文字压图是否落在预留的安静区。
  • 动效入场前、中、落定与 ?scroll 完成态是否一致,落定后有没有图文换位、文字压图。
  • 连续内容页是否有合理节奏,实际导出是否保留字体、图像、数据和页数。

按“焦点与关系 → 构图与留白 → 排印与素材 → 细节”处理当前最明显的问题,修后看新图; 完整新稿的 hero pages 至少回看两轮,但轮次不是目标,major 清零和证据才是。生成全部截图不等于已经看过;含动效还需实际播放。 检查器不能覆盖全部像素遮挡、字体回退或互动状态;design_signals 只是信号,不是审美结论, 它的 cjk-tracking、low-contrast、system-font-fallback 要按文档修参数,不靠换字号躲开。 素材或共享 CSS 变化后重验受影响页面;导出 PDF 后用 pdffonts 核对没有混入系统字体。

交付用户需要的格式及可复现的源文件、素材和字体说明;只在核对资源可移植性后称“离线”或“单文件”。简述实际完成的检查、图片或提示词位置与仍待处理的提醒;缺图、未验证导出不得写成完成。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.