Pptx slide specification
Skill kimtth/agent-pptify-kit/pptx-deck-creation/skills/pptx-slide-specification
π¨β¨ Agent-driven toolkit for generating editable PowerPoint slides β skills, plugins, and design profiles.
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.
What its author says it does
Copied from the file, not written here
Author or repair coordinate-explicit JSON specifications for editable PPTX decks.
SKILL.md
10.3 KB, 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.