
PPTX Deck Layout Contract 详解用 JSON 坐标契约驱动可编辑 PPTX 演示文稿的布局审计【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents导读本指南聚焦于pptx-deck-creation插件中pptx-slide-specification技能所定义的Layout Contract布局契约。它是一份坐标显式的 JSON 规范生成演示文稿的最终根 JSON 中同时包含summary摘要与slides幻灯片数组其中的layout_tree布局树是审计契约而非渲染提示。读完本文你将掌握契约的完整字段语义、各字段的度量单位与取值范围、build 阶段 builder 的映射要求以及修复顺序Repair order这一从几何调整到字号降级的四级排错路径并能在构建后回读 PPTX 实际边界与契约比对。契约的定位审计契约而非渲染提示Layout Contract 的核心论断只有一句A generated deck uses a JSON root withsummaryandslides. The final tree is an audit contract, not a rendering hint.生成的数据包使用含summary和slides的 JSON 根最终的树是审计契约而不是渲染提示。这句话区分了两种截然不同的工作方式传统自动布局auto-layout渲染器在绘制时自行决定位置、自行缩放文字、自行推断布局作者无法预知最终坐标。坐标契约式coordinate-explicit作者直接在layout_tree中写明最终坐标任何渲染器在审计之后都不得再决定位置、不得缩小文字、不得推断布局。在 SKILL.md 中这一原则被表述为Author final coordinates directly inlayout_tree. No renderer may decide placement, shrink text, or infer layout after the audit.也就是说Layout Contract 是一份逐对象、逐坐标、逐样式的完整规格它同时充当三份角色给 builder 的构建指令、给审计工具的核对基准、以及给后续维护者的可读文档。该插件的 README.md 也强调这一点——插件提供的是final inch-basedlayout_treecontracts rather than implicit auto-layout基于英寸的最终布局树契约而非隐式自动布局。契约的整体结构summaryslides根 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 } } } }] }summary全局策略与可访问性元数据summary承载整个数据包的全局约束。其中生产环境production数据包必须包含显式的layout_policy与可访问性元数据见 SKILL.md 的 Required contract 一节。layout_policy是构建与审计阶段的硬约束四个字段的语义如下字段示例值含义审计用途safe_margin0.5安全边距英寸内容距页面边缘的最小距离内容 bbox 不得侵入该边距背景类对象除外content_bottom6.7内容区下边界英寸页脚轨道之上的底线正文内容的下沿不得超过该值footer_top6.85页脚上边界英寸页脚轨道的起始线页脚对象须位于该线以下minimum_gap0.12对象之间的最小间隙英寸用于判定内容碰撞与间距不足以 13.333 × 7.5 英寸的宽屏为例content_bottom: 6.7与footer_top: 6.85之间形成了 0.15 英寸宽的页脚轨道正文内容必须保持在 6.7 英寸线以上页脚元素从 6.85 英寸线开始。在 audit-checklist.md 的Layout policy检查项中这一约束被精确表述为内容保持在安全边距内、位于页脚轨道之上只有layout_design类对象可以 full bleed出血全幅。accessibility记录全局可访问性信息字段示例值含义languageen-US文档语言标记写入 PPTX 语言元数据presentation_titleQuarterly operating review演示文稿标题用于文档属性此外从仓库的配套技能可见summary还可以承载更丰富的设计上下文pptx-deck-context技能要求在编写坐标前将叙事框架、假设、来源清单、调色板、排版、间距与标志性元素记录进summarydesign-profiles.mdreferences/design-profiles.md则要求把锁定的设计档案如fluent-ui-design-tokens、primer-primitives、editorial-minimal记录在summary.design_context中并在 audit-checklist.md 的Design context检查项中要求其必须存在否则拒绝默认主题式纯标题加项目符号的输出。slides逐页契约slides是幻灯片数组每一页包含id稳定可读的标识符如s01_overview用于审计报告与异常追踪。title以消息/结论为导向的标题message-led title。从 pptx-deck-context/SKILL.md 可知一页只传达一条消息且当叙事框架要求时应使用 action-style行动式标题。accessibility.reading_order该页的阅读顺序数组如[title]驱动无障碍阅读顺序。layout_tree该页的完整布局树。layout_tree坐标、分组与对象的完整声明layout_tree声明了页面尺寸、根组、以 id 为键的分组与对象、最终英寸 bbox、样式、z 序与分类。它由三个主要成员构成1.slide_size页面物理尺寸slide_size: { width: 13.333, height: 7.5 }单位是英寸inches与python-pptx的Inches(...)单位体系一一对应。13.333 × 7.5 即标准的 16:9 宽屏页面。build 阶段 builder 会从空白幻灯片版式blank slide layout开始将所有 bbox 用Inches(...)映射见 SKILL.md 的 Build contract 一节。2.groups以 id 为键的分组表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 } } }字段含义字段含义id组标识供root_group_id及其他引用使用role角色根组为slidelayout_mode布局模式契约要求使用absolute绝对坐标object_ids该组直接包含的对象 id 列表group_ids该组包含的子组 id 列表可嵌套bbox组的边界框英寸含x、y、width、height根组的 bbox 通常与slide_size一致从(0, 0)延伸到整页。audit-checklist 的Containment检查项要求子对象必须适配其父组形状上的文字还需尊重内边距inner padding。3.objects以 id 为键的对象表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 } }契约要求每个有意义meaningful的对象都必须完整具备八个字段见 SKILL.md 的 Required contract字段示例说明idtitle稳定标识kindtext对象类型text、shape、line、table、imageroletitle语义角色标题、正文、标签等classificationcontent分类如content背景装饰类对象用layout_design仅此类可 full bleedcontent{text: ...}内容载荷按kind变化style{font_size: 30, color: #111827}显式样式字号、颜色、字体等bbox{ x: 0.75, y: 0.55, width: 10.8, height: 0.65 }最终边界框英寸z_index2层叠顺序越大越靠上几个值得注意的约束bbox 尺寸均为正英寸数。authoring 规则第 1 条要求使用稳定可读 id、绝对分组与正英寸尺寸build 契约进一步要求在添加对象前拒绝零或负几何reject zero or negative geometry。字号下限 9 pt。authoring 规则第 5 条内容文字必须 ≥ 9 pt优先缩短文案、调整 bbox 或拆分密集内容而不是降低字号。图片必须有有意义的 alt 文本且带来源的论断要记录source_refauthoring 规则第 4 条。z 序必须是有意的intentional z-order。在 asset-guidance.md 中进一步要求视觉素材在 z 序上要低于其上可读文本Keep visual assets below overlapping readable text in z-order。示例对象中title的 bbox 为x0.75, y0.55, width10.8, height0.65。对照策略值验证x0.75 ≥ safe_margin0.5y0.55 ≥ safe_margin0.5xwidth11.55 ≤ 13.333-0.512.833yheight1.2 ≤ content_bottom6.7完全落在安全区内。Build 契约把 JSON 坐标映射为真实 PPTX 对象Layout Contract 不止是一份文档——它定义了 builder 的硬性行为契约。见 SKILL.md 的 Build contract 一节A task-local builder starts from a blank slide layout and maps all bboxes withInches(...). Explicitly set wrapping, disabled auto-size, text insets, anchors, alignment, fonts, colors, line settings, image aspect ratio, and hidden-slide state. Reject zero or negative geometry before adding an object.要点拆解从空白版式开始builder 不使用模板克隆从 blank slide layout 出发。Inches(...)映射全部 bbox契约中的英寸值直接映射为python-pptx的Inches(...)度量。显式设置每一项换行wrapping、禁用自动缩放disabled auto-size、文本内边距insets、锚点anchors、对齐alignment、字体、颜色、线条设置、图片宽高比、隐藏页状态全部显式写入不依赖渲染器推断。几何前置校验添加对象前拒绝零或负几何。这一点与插件边界一致README.md 明确说明插件只会在用户请求 PPTX 时创建一个任务级task-specific的小型python-pptxbuilder不内置通用渲染器、不克隆模板、不需要浏览器、不依赖 MCP 服务器或在线服务。而 pptx-deck-creation-builder.md 将layout_tree定义为唯一事实来源source of truth要求标题、解释、标签、指标、表格、图表与图示都必须使用原生nativePPTX 对象图片只是辅助视觉supporting visuals绝不允许用整页图片充当幻灯片的核心内容。禁用 auto-size与契约的定位直接呼应正因为 auto-size 会让渲染器自行缩放文字契约要求关闭它让最终几何完全由 JSON 决定从而保证审计后无任何渲染器可篡改布局。Repair order契约被破坏后的四级修复顺序当审计发现契约与实际几何不一致时必须按以下顺序修复layout-contract.md 的 Repair order 一节移动或调整 bbox、改变 z 序、或拆分内容过密的幻灯片Move or resize bboxes, change z-order, or split a dense slide。缩短文案或放大可用的文字 bboxShorten copy or enlarge the available text bbox。仅在万不得已时才改变字号内容字号永不低于 9 ptChange type size only as a last resort; content never drops below 9 pt。重新构建并将实际对象边界与契约比对Rebuild and compare actual object bounds with the contract。这一顺序体现了明确的设计优先级几何与内容优先字号是最后的杠杆。原因很直接——字号是排版的全局杠杆一旦降低会影响整页的层级与可读性而移动 bbox、缩短文案是局部、低风险的修复。第 4 步则强调修复不是一次性的改完必须重建并重新比对形成一个审计 → 修复 → 重建 → 再审计的闭环。该闭环在pptx-quality-gates技能中得到完整承接SKILL.md 的 Workflow 第 7 步即Repair the spec or task-local builder, rebuild, and rerun the same checks修复规范或任务级 builder重建并重跑同样的检查并将确定性失败视为待修复的工作repair work而非异常。构建后审计用实际几何回读校验契约契约的最终验证发生在构建之后。pptx-quality-gates技能SKILL.md要求Reopen the PPTX and compare slide count, actual bounds, hidden slides, and requested geometry with the layout tree.即重新打开生成的 PPTX将实际幻灯片数、实际对象边界、隐藏页状态、请求的几何与layout_tree逐一比对。这要求审计工具能够从 OOXML 包中读出真实坐标——仓库中的 validate_package.py 正是这一类只读校验工具的实现样例它负责 OOXML 包完整性验证其validate()函数会检查XML 良构性所有.xml/.relspart 均可被解析。内容类型[Content_Types].xml必须存在且每个ppt/slides/slide*.xml都必须有正确的 slide content type override。内部关系完整性每个内部关系Relationship的目标必须存在且不越界。幻灯片顺序唯一性presentation.xml中sldId不得重复且必须引用有效的 slide 关系。孤儿 part 告警未被任何内部关系引用的ppt/media/与 notesSlide 会被标记为告警。在pptx-quality-gates的 Workflow 第 4 步中生产级数据包要求运行该脚本并保存 JSON 报告audit-checklist.md 的After build部分则将其列为第 13 项检查修复畸形 XML、断裂的关系、内容类型缺口与重复的 layout 链接并对接受的告警做文档化。通过Pass标准什么样的契约算合格pptx-quality-gates技能定义了明确的通过标准SKILL.md 的 Pass criteria 一节Zero content collisions, text overflows, unsafe content bounds, invalid positive geometry, and package-integrity errors. Meaningful slide content must remain native editable objects; images support rather than replace it.即零内容碰撞、零文字溢出、零不安全内容边界、零非法正几何、零包完整性错误且有意义的内容必须是原生可编辑对象图片只是辅助。若无法完全通过则每个例外都必须记录幻灯片 id、对象 id、原因、负责人与复审日期见 audit-checklist.md 的结尾要求。其中内容碰撞的判定公式在 audit-checklist.md 的 Build 前第 1 项中给出A.x B.x B.w B.x A.x A.w A.y B.y B.h B.y A.y A.h当该四条件同时成立时两个内容 bbox 即发生重叠属于必须修复的确定性失败。而文字容量检查则提示预估可能溢出的内容应缩短、缩放或拆分且对于CJK/全角文本每行可容纳字符数估算减半halve estimated characters-per-line for CJK/full-width text——这一条对中文 PPTX 的实战排版尤为重要。配套技能与文件索引Layout Contract 是pptx-slide-specification技能的压缩模式参考它与同一插件下的其他技能协同构成完整的 spec-first 工作流layout-contract.md本文讲解的契约本体紧凑 schema 与修复指引。SKILL.md技能的完整要求包括 Required contract、Authoring rules 与 Build contract。audit-checklist.md构建前 10 项 构建后 4 项的手动审计清单。SKILL.md质量门禁工作流、必备工件与通过标准。validate_package.py只读 OOXML 包完整性校验脚本。design-profiles.mdsummary.design_context可引用的设计档案。asset-guidance.md图片出处、放置、SVG 与信息图约束。pptx-deck-creation-builder.md负责创建、修复与审计数据包的 Agent 及其非协商规则。小结Layout Contract 把 PPTX 制作从渲染器自由发挥转变为坐标显式契约 事后几何回读的闭环summary.layout_policy锁定安全边距、内容下界、页脚上界与最小间隙slides[].layout_tree用英寸 bbox、显式样式与 z 序声明每一页的最终形态builder 从空白版式出发用Inches(...)映射全部坐标并禁用 auto-size构建后通过回读实际边界、运行 OOXML 校验与逐项审计清单验证契约成立一旦失败则按调几何 → 缩文案 → 降字号不低于 9 pt→ 重建再比对的顺序修复。掌握这份契约你就能写出可被审计、可被重建、且保持原生可编辑性的 PPTX 坐标规范。【免费下载链接】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),仅供参考