Pptx slide specification
Skill kimtth/agent-pptify-kit/pptx-deck-creation/skills/pptx-slide-specification
Author or repair coordinate-explicit JSON specifications for editable PPTX decks.From its SKILL.md
npx -y skills add kimtth/agent-pptify-kit --skill pptx-slide-specificationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.3 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it
PPTX Slide Specification
Use this skill when writing or repairing a coordinate-explicit JSON deck spec.
Author final coordinates directly in layout_tree; plugin scripts will not choose layouts, measure browser boxes, or shrink text to fit. Split dense material across slides rather than relying on tiny fonts.
Workflow
- Define slide messages, design context, and slide size.
- Create each slide with
id,title, and completelayout_tree. - Place groups and objects with final inch bboxes, z-order, and styles.
- Add at least one style-derived
layout_designelement on normal content slides. - Audit collisions, density, font sizes, and default-theme failures.
Deck Shape
- Return a JSON object with top-level
slides; use stable readable IDs such ass01_overview. - Use top-level
summaryfor audit metadata. Newly generated decks requiresummary.design_contextunless a user-provided brand guide or reference PPTX is documented as the primary style source. - Record design profile IDs, source URLs, and license IDs in
summary.design_contextwhen using design references. - Use
render_mode: "layout"or omit it for generated decks. OOXML mode is only for extracted specs withooxml_elements. - Every generated slide must include
layout_tree; do not rely on shorthand layout specs. - Production decks must also include
summary.layout_policyandsummary.accessibility. They define the usable content region and document language before the PPTX is built.
Production Metadata
Use this compact form for production decks. Values may change for a different slide size or an approved design system, but all values must be explicit.
{
"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"
}
}
}
content_bottom must be lower than footer_top. Content objects must end at
or above content_bottom. Footer objects may use the space from footer_top
to the slide edge. A footer never overlaps content.
Slide Fields
- Each generated slide must include
id,title, andlayout_tree. - Production slides must include
accessibility.reading_order, an ordered list of meaningful object IDs. The order must follow the intended reading sequence. - Use
hidden: trueonly for appendix/reference slides that should remain in the PPTX package but not appear during normal presentation. - Do not use
pattern,layout_pattern,composition.pattern,layout,sections,bullets,objects, orthemeas render-time shorthand. Decide all positions, sizes, z-order, colors, font sizes, and relationships in the JSON before rendering. - Do not overfill a slide: prefer three to five major content groups.
- Do not ship default
python-pptx-looking slides: plain white background, Calibri-only text, default theme colors, and bullet-only layouts are design failures unless explicitly requested.
Layout Tree
- Required keys:
slide_size(width,heightin inches),root_group_id,groupskeyed by ID, andobjectskeyed by ID. groupsandobjectsare id-keyed maps;object_ids/group_idsare arrays. Addnotesonly when useful for audit or speaker context.
{
"id": "s01_overview",
"title": "Overview",
"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": "Overview" }, "style": { "font_size": 30, "color": "#111827" }, "bbox": { "x": 0.75, "y": 0.55, "width": 8.5, "height": 0.65 }, "z_index": 2 } }
}
}
Layout Grid & Safe Margins
- Reserve a content-safe margin on every edge; default 0.5 in for 13.333×7.5 in slides. Only
layout_designfull-bleed bands may cross an edge. - Use a consistent column grid, e.g. 12 columns with 0.2–0.25 in gutters; align sibling cards to shared tops, widths, and heights.
- Keep a vertical rhythm: title band first, then content below the title rule, e.g. y ≤ 1.3 in.
- No
contentobject may extend past the slide bounds (0,0)–(width,height) or into the safe margin. - A
footerobject may enter the declared footer rail. It must stay on the slide canvas and cannot overlap a content object.
Groups
- Each group must include
id,role,layout_mode,object_ids,group_ids, andbbox. - Use
layout_mode: "absolute"for generated slides to make the coordinate contract explicit. - Keep group IDs unique and stable for audit repairs.
- Keep every child inside its parent
bbox; siblings at the same level must not overlap unless one islayout_designbehind the other. - Use groups for semantic organization and audit readability; coordinates remain final object coordinates.
Objects
- Every object must include
id,kind,role,classification,content,style,bbox, andz_index. - Supported
kindvalues:text,shape,image,line,table. classificationislayout_designfor decorative/background objects,contentfor meaningful text, tables, lines, and media.- Shape names:
rect,round_rect,oval,triangle,diamond,hexagon,parallelogram,chevron,pentagon,trapezoid, and arrow variants. - Shape content must include
content.shape; text on a shape usescontent.text. Image content usescontent.path,content.blob_base64, andcontent.alt. - Meaningful images require
content.alt. Decorative images must haveclassification: "layout_design"and must not appear in the slide reading order. - A sourced metric, chart value, quotation, or factual claim requires
source_refwithsource_id,locator,claim_type, andverification_status. Uselocatorfor a page, figure, table, section, or spreadsheet range. - Table content uses
content.rows; make column widths sum tobbox.width, size rows for wrapped text, and split long tables with repeated headers. - Line content must include
content.x1,content.y1,content.x2, andcontent.y2. - Connectors anchor to edge midpoints, leave a small node-border gap, and route around other nodes.
- Do not use
chartobjects. Build charts from editable text, shapes, lines, and tables. A chart image may support the slide, but it cannot be the only presentation of editable chart values or labels.
Styling
- Every text-bearing object and table must include
style.font_sizeandstyle.color. - Every line object must include
style.lineandstyle.line_width. - Every shape object must include
content.shape,style.fill, andstyle.line. - Specify text color with
style.color; do not rely on inferred contrast or default text color. - Use a consistent
z_indexstack: background band (0) < card/panel (1) < rule (2) < image/diagram (3) < body text (4) < label/badge (5) < callout/number (6). Decorative overlaps are allowed only when the lower object islayout_design. - When text sits on a shape or card, inset the text bbox by ≤0.1 in on each side from the shape bbox and size the text to that inner area, so on-card text never overflows the card.
- Every normal content slide must include at least one
layout_designobject or style-derived visual structure such as an accent band, card shell, divider, signature shape, or image treatment. - Do not use a raster or SVG as the full content of a slide. When a source visual contains essential text, labels, numbers, or a legend, recreate that information with editable native objects. Keep the original visual only as an optional supporting asset or hidden reference.
Type Scale
Recommended/minimum pt: title 24–32/20; H2 16–20/14; claim 13–15/12; body 11–12/10; evidence 10–11/10; label 9–10/9; footer/meta 8–9/8. Decorative layout_design text may go below the content floor; any content text must stay at 9 pt or above.
Build Contract (spec → PPTX)
No renderer is bundled. Author the JSON spec and a small python-pptx build script. To keep rendered output matching audited coordinates:
- Start each slide from blank layout
slide_layouts[6]so placeholders, theme text, and bullet styles do not leak in. - Place every object from its
bboxwithInches(...)geometry; never rely on placeholder auto-position. - For every text frame set
word_wrap = Trueandauto_size = MSO_AUTO_SIZE.NONE; disable shape autofit/auto-grow. - Zero or shrink default text insets (
margin_left/right/top/bottom), or subtract them from capacity estimates. - Set vertical anchor (
MSO_ANCHOR) and horizontal alignment (PP_ALIGN) explicitly. - Map
style.font_size→Pt, colors→RGBColor,style.line_width→Pt/Emu, dash→MSO_LINE_DASH_STYLE. - Preserve image aspect ratio (see
pptx-visual-assets); do not stretch to a mismatched bbox. - Mark hidden slides with
show="0"and keep them last. - Reject every zero or negative bbox before adding a shape, line, image, table, or text box. A valid ZIP package can still contain geometry that PowerPoint will not open.
- Write a small build manifest with the builder path, input spec path, output PPTX path, slide count, and build warnings. Do not add a generic renderer only to create this manifest.
A JSON-audit pass can still overflow if the build script skips these text-frame controls.
Repair Rules
- If content collides, edit bboxes, z-order, grouping, slide density, or split the slide.
- If text overflows, shorten copy, enlarge the bbox, or split content across slides. Lower
font_sizeonly as a last resort, and never below the type scale minimum. - For CJK or other full-width text, halve the Latin character-capacity estimate so dense Japanese/Chinese/Korean copy does not silently overflow.
- If an object sits outside the slide bounds or inside the safe margin, move or resize it back inside; only
layout_designfull-bleed bands may cross an edge. - If an object is misplaced, repair the final coordinates directly; do not add layout hints expecting a later tool to resolve them.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.