agents 插件市场中的 PPTX Deck Creation 插件:基于坐标契约与 OOXML 只读审计的可编辑 PowerPoint 生成工作流
【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents
本篇技术指南以plugins/pptx-deck-creation插件的 README 为核心,完整讲解 agents 插件市场中这套 PPTX 演示文稿生成体系的架构与用法:它以「最终英寸坐标 JSON layout_tree 契约」取代隐式自动排版,通过五个技能模块(叙事上下文、幻灯片规格、视觉资产、参考演示分析、质量门禁)协作,从简报和源材料生成原生可编辑的 PowerPoint 文件。读完后你可以理解该插件的完整工作流、各技能模块的职责边界、layout_tree契约的字段结构,以及内置 OOXML 校验脚本的安全限制与运行方式。
插件定位:任务专用的可编辑 PPTX 生成器
根据 插件 README,PPTX Deck Creation 的目标是「从简报和源材料创建可编辑、达到生产就绪水准的 PowerPoint 演示文稿」。它提供的核心能力包括:
- 一套面向商业叙事与设计上下文准备的预处理工作流;
- 以最终英寸(inch)坐标描述的
layout_tree契约,而非隐式自动布局; - 原生可编辑的 PowerPoint 文本、形状、线条、表格、连接器和辅助图片;
- 对参考演示文稿和 OOXML 包的只读分析,源幻灯片绝不被复制或修改;
- 几何(geometry)、可访问性(accessibility)、源血缘(source lineage)与 OOXML 包完整性四类检查。
README 同时明确了该插件的边界(Boundaries),这些约束直接决定了它的工程形态:
- 只在用户明确要求 PPTX 时,才创建一个小型的、任务专用的
python-pptx构建脚本; - 不附带通用渲染器(renderer)、不克隆模板、不依赖浏览器、不使用 MCP 服务器;
- 不需要任何凭据或在线服务;
- 配套的
pptx-reference-deck-analysis技能提供安全的只读 OOXML 工具,其可选本地依赖仅为defusedxml(见 requirements.txt,约束为defusedxml>=0.7,<1),任务级的高层提取可额外使用python-pptx。
这套设计哲学的核心是「契约优先」:布局坐标由规格文件显式声明并作为审计依据,构建脚本只负责忠实映射坐标,渲染结果永远可以被逐项比对验证。
整体组件与六步工作流
该插件在仓库中由一个 Agent 和五个技能模块组成:
| 组件 | 路径 | 职责 |
|---|---|---|
| Builder Agent | agents/pptx-deck-creation-builder.md | 创建、修复、审计生产就绪可编辑 PPTX 的总控角色 |
| 上下文准备 | skills/pptx-deck-context/SKILL.md | 商业叙事、源血缘、设计锁定 |
| 幻灯片规格 | skills/pptx-slide-specification/SKILL.md | 编写坐标显式的 JSON 布局契约 |
| 视觉资产 | skills/pptx-visual-assets/SKILL.md | 筛选与放置辅助图片、图标、图表 |
| 参考演示分析 | skills/pptx-reference-deck-analysis/SKILL.md | 只读提取设计证据 + 安全 OOXML 检查 |
| 质量门禁 | skills/pptx-quality-gates/SKILL.md | 交付前的几何、可访问性、血缘、包完整性校验 |
Builder Agent 定义了不可协商的硬性规则:参考演示必须保持只读;每张幻灯片使用独立撰写的坐标显式布局;只用原生对象承载标题、说明、标签、指标、表格、图表和流程图,图片仅作辅助;不虚构缺失的品牌、来源、许可证或可访问性事实,遇到缺口要显式声明并请求决策;生产级交付需同时保留规格、构建记录、源清单、审计报告和 PPTX 文件。
Agent 的完整工作流分为六步:
- 确认受众、核心决策、源材料、幻灯片数量、语言和方向;若未提供叙事框架,请用户选择而不是默认;
- 准备叙事、源清单与设计上下文;
- 如提供了参考演示,进行只读分析;仅当高层提取无法确定所需事实时才深入检查其 OOXML 包;
- 编写完整 JSON 布局契约:最终英寸 bbox、z-order、样式、阅读顺序和源引用;
- 只选择已批准的辅助视觉资产,保留宽高比、来源与 alt 文本;
- 按需使用每份演示专属的脚本构建,随后审计演示文稿;修复规格或构建器并重跑检查,直至通过或只剩已记录的例外。
交付时,若用户请求演示规格则返回严格 JSON,否则报告产物路径、假设、审计状态与未决事项。
pptx-deck-context:叙事框架与设计锁定
上下文技能 负责在编写任何坐标或 PPTX 对象之前完成准备工作,拥有「商业叙事、源血缘、设计锁定」三项职责。其决策序列为:
- 确认受众、决策、幻灯片数量、语言、来源与品牌要求;
- 使用用户选定的叙事框架;若未指定,提供
mckinsey、scqa、pyramid、mece、action-title、assertion-evidence、exec-summary-first或custom供选择,不得静默代选; - 为每个指标、引用、图表数值和事实性声明分配稳定的源 ID,并规划
source_ref; - 选择有记录的设计方向:优先用户品牌指南,其次只读参考演示证据,再次是 design-profiles.md 中可复用的设计档案;
- 在编写幻灯片之前,把框架、假设、源清单、调色板、字体、间距和签名元素记录到
summary。
该技能还要求:一张幻灯片只传达一个信息;设计参考只作为「设计证据」而非内容或资产来源;未经记录的许可证证据不得复制外部字体、图片、图标或 Logo;设计信号必须翻译成显式的填充、字体、间距和 bbox,不依赖任何自动布局引擎。
设计档案参考 提供三个可复用的文档化档案:
| 档案 | 适用场景 | 设计信号 |
|---|---|---|
fluent-ui-design-tokens | 企业级、微软风格演示 | 克制的中性色、清晰层级、基于 token 的间距、小圆角 |
primer-primitives | GitHub 与开发者向演示 | 干净表面、强文本对比、功能性强调色、紧凑标签 |
editorial-minimal | 高管叙事与研究类演示 | 大量留白、高对比字体、有限调色板、单一视觉母题 |
使用档案时必须记录档案 ID、来源 URL(如适用)、已知许可证信息和最终样式锁定,并把锁定结果翻译为layout_tree中显式的颜色、填充、字体、分隔线、卡片壳和 bbox。
pptx-slide-specification:layout_tree 坐标契约
这是整个插件的「真相来源」。幻灯片规格技能 明确要求把最终坐标直接写在layout_tree中——没有任何渲染器可以在审计之后决定摆放位置、缩小文本或推断布局。
必需契约包括:
- 根 JSON 包含
summary和slides; - 每张幻灯片具有稳定
id、消息导向的title、可访问性阅读顺序和完整的layout_tree; - 布局树声明幻灯片尺寸、根分组、以 id 为键的分组与对象、最终英寸 bbox、样式、z-index 与分类;
- 每个有意义对象必须包含
id、kind、role、classification、content、style、bbox、z_index; - 生产级
summary包含显式layout_policy(安全边距、内容底边、页脚顶边、最小间隙)和可访问性元数据。
layout-contract.md 给出了紧凑的 JSON 示例,完整继承如下:
{ "summary": { "layout_policy": { "safe_margin": 0.5, "content_bottom": 6.7, "footer_top": 6.85, "minimum_gap": 0.12 }, "accessibility": { "language": "en-US", "presentation_title": "Quarterly operating review" } }, "slides": [{ "id": "s01_overview", "title": "Operating margin improves after the cost reset", "accessibility": { "reading_order": ["title"] }, "layout_tree": { "slide_size": { "width": 13.333, "height": 7.5 }, "root_group_id": "root", "groups": { "root": { "id": "root", "role": "slide", "layout_mode": "absolute", "object_ids": ["title"], "group_ids": [], "bbox": { "x": 0, "y": 0, "width": 13.333, "height": 7.5 } } }, "objects": { "title": { "id": "title", "kind": "text", "role": "title", "classification": "content", "content": { "text": "Operating margin improves after the cost reset" }, "style": { "font_size": 30, "color": "#111827" }, "bbox": { "x": 0.75, "y": 0.55, "width": 10.8, "height": 0.65 }, "z_index": 2 } } } }] }其中layout_policy的四个参数以英寸为单位:safe_margin(安全边距)、content_bottom(内容区底边)、footer_top(页脚轨道顶边)、minimum_gap(对象间最小间隙)。layout_tree强调它是「审计契约而非渲染提示」。
编写规则方面:使用稳定可读的 ID 与绝对分组,尺寸必须为正数英寸;常规内容保持在安全边距内、页脚轨道之上,只有背景layout_design对象允许全出血;使用原生text、shape、line、table、image对象,支撑性视觉中的标签和数值要重建为原生对象;有意义的图片必须有 alt 文本,来源性声明必须记录source_ref;内容文本不低于 9 pt,先缩短文案、调整尺寸或拆分密集内容,而不是缩小字号;使用共享网格、一致的间隙、显式颜色与字号、有意的 z-order。
对应的构建契约要求任务级构建脚本从空白版式(blank slide layout)出发,用Inches(...)映射所有 bbox,显式设置换行、禁用的自动缩放、文本内边距、锚点、对齐、字体、颜色、线条设置、图片宽高比和隐藏幻灯片状态,并在添加对象前拒绝零或负几何值。
同一参考文件还给出了问题修复的优先级顺序:
- 移动或调整 bbox、改变 z-order,或拆分密集幻灯片;
- 缩短文案或扩大可用文本 bbox;
- 改变字号只是最后手段,内容不得低于 9 pt;
- 重新构建,并将实际对象边界与契约比对。
pptx-visual-assets:辅助视觉资产规则
视觉资产技能 的立场是「资产服务于信息,绝不压平或替代可编辑内容」。工作流为:仅当资产确实提升理解时才选择类型(图标、图片、SVG、图表或信息图);放置前确认本地资产路径、来源、使用权利与简洁的 alt 文本;以最终英寸 bbox、有意的 z-index 和content/layout_design分类添加资产;保持宽高比,确保没有资产覆盖可读文本或将必要信息锁死在图片里。
关键规则包括:图标需简单清晰并与文字标签搭配;图注放在图片旁边而非叠加其上;只有真正的干净矢量才能称为 SVG,禁止把栅格图包进 SVG 冒充可编辑;必要的标签、图例、数值和流程步骤必须用原生 PowerPoint 对象重建;若权利、来源或合适资产不可得,宁可省略资产并报告缺口,也绝不把占位符当作完成的视觉交付。提供方或来源细节记录在源清单中,聊天中不得请求密钥。
pptx-reference-deck-analysis:只读参考演示分析与 OOXML 工具
参考演示分析技能 把参考 PPTX 视为「设计证据」,绝不复制、克隆或修改源演示。按需实现的小任务级python-pptx脚本可捕获五类信息:
- 紧凑提示上下文:幻灯片数量与尺寸、文本摘要、形状数量、样式、品牌信号、模板使用与布局节奏;
- 完整提取:
summary、幻灯片与只读layout_tree证据; - 目录诊断:每个演示一份结果加一份清单;
- 样式母版分析:颜色、字体、尺寸分布、母版/版式使用与流式模式;
- 派生模板目录:零基源索引、版式角色、可用区域、占位符、视觉结构与约束。
当高层提取无法暴露原始主题、关系、备注、批注、动画、媒体、母版或版式时,才使用内置 OOXML 工具。三个脚本的用法如下(先按 requirements.txt 安装defusedxml):
# 1. 紧凑 JSON 报告:幻灯片顺序、文本、主题 token、关系、备注、批注、动画、媒体 python scripts/inspect.py <deck.pptx> # 2. 包完整性校验:畸形 XML、断裂内部关系、内容类型缺口、重复版式链接、孤儿部件 python scripts/validate_package.py <deck.pptx> --output <report.json> # 3. 仅在确实需要原始包证据时才解包 python scripts/unpack.py <deck.pptx> <output-dir>从 inspect.py 源码看,inspect()函数读取ppt/presentation.xml与ppt/theme/theme1.xml,提取主题的clrScheme颜色 token 与majorFont/minorFont字体名,按sldId与presentation.xml.rels的关系解析逐页收集文本(a:t节点拼接)、spTree形状计数、隐藏状态(show="0")以及过渡/定时信息;其main()强制要求恰好一个参数,即输入 PPTX 文件。
这些脚本自带一组防御性限制,值得重点关注。以 inspect.py 中定义的常量为例(validate_package.py 与 unpack.py 使用完全相同的值):
MAX_MEMBERS = 5_000:包内成员数量上限;MAX_MEMBER_SIZE = 100 * 1024 * 1024:单个成员最大 100 MB;MAX_TOTAL_SIZE = 512 * 1024 * 1024:解包后总量上限 512 MB;MAX_COMPRESSION_RATIO = 1_000:单成员解压/压缩比超过 1000 视为可疑。
_validate_archive()会同时拒绝符号链接成员;_workspace_path()要求解析后的路径必须位于当前工作区内,否则抛出Path escapes the current workspace错误。unpack.py的_validate_members()更进一步:逐成员校验解包目标不逃出输出目录、不得覆盖输入包本身,并对输出目录中的*.xml/*.rels用defusedxml.minidom美化输出以便人工检查。validate_package.py 的validate()则对每个 XML/rels 部件做良构性解析,检查[Content_Types].xml的 Default/Override 条目,遍历所有.rels文件把内部关系目标按.rels属主解析(相对路径拼接 +normpath,拒绝..逃逸),目标缺失或不安全即记录internal_relationship错误,并核对ppt/presentation.xml中声明的幻灯片与包内实际部件的一致性。
安全规则总结:绝不修改提供的演示或盲目拷贝包部件到新演示;从受信任工作区运行脚本;用defusedxml解析不可信 XML,不启用实体扩展、DTD 加载或网络访问;主题颜色在未对照 color scheme 完全解析前只当作 token 看待。
pptx-quality-gates:质量门禁与审计清单
质量门禁技能 在交付前使用,并把确定性失败一律视为修复工作而非例外。工作流为:确认规格、构建器、PPTX、源清单与审计路径;构建前应用审计清单;重新打开 PPTX 比对幻灯片数、实际边界、隐藏幻灯片与请求几何;生产级演示必须运行pptx-reference-deck-analysis/scripts/validate_package.py并保存 JSON 报告;检查文档语言、幻灯片标题、有意义图片的 alt 文本、阅读顺序、表格表头与源引用;若已有兼容渲染器则检查预览中的裁剪、字体回退、对比度、裁切与层级,但不新增渲染器依赖;修复后重建并重跑同一套检查。
audit-checklist.md 给出完整清单。构建前共 10 项:
- 内容碰撞:内容 bbox 不得重叠,判定式为
A.x < B.x + B.w && B.x < A.x + A.w && A.y < B.y + B.h && B.y < A.y + A.h; - 文本容量:预判溢出时缩短、调整或拆分;CJK/全角文本按每行字符数减半估算;
- 字号阶梯:内容文本不低于 9 pt;
- 设计上下文:
summary.design_context必须指明样式锁定或已批准来源,除非用户明确要求,否则拒绝默认主题的朴素「标题加项目符号」输出; - 布局策略:内容处于安全边距内、页脚轨道之上,只有
layout_design允许全出血; - 包含关系:子对象在父分组内,形状上文本尊重内边距;
- 表格:列宽之和等于表格 bbox,换行文本可容纳,长表格拆分;
- 原生可编辑性:标题、标签、数值、图表和解释保持原生对象,图片仅起辅助作用;
- 血缘:来源性声明具有可解析的源 ID、定位符、声明类型与验证状态;
- 正几何:所有对象尺寸为正数,构建前归一化线段端点。
构建后 4 项:重新打开包比对实际幻灯片数、边界、隐藏状态与规格;检查可访问标题、语言、阅读顺序、alt 文本与表头;运行 OOXML 包校验器,修复畸形 XML、断裂关系、内容类型缺口与重复版式链接,记录已接受的警告;渲染器预览检查(裁剪、字体回退、对比度、裁切、层级)。
通过标准:零内容碰撞、零文本溢出、零越界内容、零非法正几何、零包完整性错误;有意义的幻灯片内容必须保持为原生可编辑对象。任何被接受的例外必须记录幻灯片 ID、对象 ID、责任人、原因与复核日期。
安装与使用方式
在 agents 仓库(多框架 agentic 插件市场,为 Claude Code、Codex、Cursor、OpenCode、GitHub Copilot 与 Google Antigravity 提供统一 Markdown 源)中,该插件的安装方式与仓库其余插件一致(参见仓库 README):
# Claude Code /plugin marketplace add wshobson/agents /plugin install pptx-deck-creation只安装其中技能而不安装完整插件时,可直接使用 Agent Skills 安装器从仓库plugins/*/skills/读取:
# 例如只安装 OOXML 只读分析技能 gh skill install wshobson/agents pptx-reference-deck-analysis --agent claude-code npx skills add wshobson/agents --skill pptx-reference-deck-analysisCodex 与 Cursor 可通过各自市场注册表安装(npx codex-marketplace add wshobson/agents);Antigravity 与 OpenCode 则走make generate+ 安装脚本的流程。技能自带脚本(inspect.py、validate_package.py、unpack.py)是纯 Python +defusedxml,无网络依赖,可在本地工作区直接运行。
小结
PPTX Deck Creation 插件把「生成可编辑演示文稿」从一次性渲染问题转化为可审计的工程问题:pptx-deck-context锁定叙事与设计,pptx-slide-specification产出以英寸为单位的layout_tree审计契约,pptx-visual-assets保证视觉资产只做辅助,pptx-reference-deck-analysis以只读方式从参考演示提取设计证据并提供带防护上限的 OOXML 检查脚本,pptx-quality-gates用构建前/后清单闭环验收。配合pptx-deck-creation-builderAgent 的六步工作流,整套体系在无需浏览器、MCP 服务器、凭据或在线服务的前提下,把几何、可访问性、源血缘与包完整性都变成可重复验证的交付标准。
【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考