PPTX Slide Specification
Author final coordinates directly in layout_tree. No renderer may decide placement, shrink text, or infer layout after the audit.
Required contract
- The root JSON contains
summary and slides.
- Every slide has a stable
id, a message-led title, an accessibility reading order, and a complete layout_tree.
- A layout tree declares slide size, root group, id-keyed groups and objects, final inch bboxes, styles, z-indexes, and classifications.
- Every meaningful object has
id, kind, role, classification, content, style, bbox, and z_index.
- Production
summary contains an explicit layout_policy (safe margin, content bottom, footer top, minimum gap) and accessibility metadata.
Authoring rules
- Use stable readable IDs, absolute groups, and positive inch dimensions.
- Keep normal content inside the safe margin and above the footer rail. Only background
layout_design objects may be full bleed.
- Use native
text, shape, line, table, and image objects. Recreate labels and values from any supporting visual as native objects.
- Give meaningful images alt text. Record
source_ref for sourced claims.
- Keep content text at 9 pt or greater; shorten, resize, or split dense content before reducing type.
- Use shared grids, consistent gaps, explicit color, explicit font size, and an intentional z-order.
Build contract
A task-local builder starts from a blank slide layout and maps all bboxes with Inches(...). 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.
See references/layout-contract.md for the compact schema and repair guidance.
1---2name: pptx-slide-specification3description: Use when authoring or repairing a coordinate-explicit JSON specification for an editable PPTX deck.4---5
6# PPTX Slide Specification
7
8Author final coordinates directly in `layout_tree`. No renderer may decide placement, shrink text, or infer layout after the audit.
9
10## Required contract
11
12- The root JSON contains `summary` and `slides`.
13- Every slide has a stable `id`, a message-led `title`, an accessibility reading order, and a complete `layout_tree`.
14- A layout tree declares slide size, root group, id-keyed groups and objects, final inch bboxes, styles, z-indexes, and classifications.
15- Every meaningful object has `id`, `kind`, `role`, `classification`, `content`, `style`, `bbox`, and `z_index`.
16- Production `summary` contains an explicit `layout_policy` (safe margin, content bottom, footer top, minimum gap) and accessibility metadata.
17
18## Authoring rules
19
201. Use stable readable IDs, absolute groups, and positive inch dimensions.
212. Keep normal content inside the safe margin and above the footer rail. Only background `layout_design` objects may be full bleed.
223. Use native `text`, `shape`, `line`, `table`, and `image` objects. Recreate labels and values from any supporting visual as native objects.
234. Give meaningful images alt text. Record `source_ref` for sourced claims.
245. Keep content text at 9 pt or greater; shorten, resize, or split dense content before reducing type.
256. Use shared grids, consistent gaps, explicit color, explicit font size, and an intentional z-order.
26
27## Build contract
28
29A task-local builder starts from a blank slide layout and maps all bboxes with `Inches(...)`. 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.
30
31See `references/layout-contract.md` for the compact schema and repair guidance.