Skill v1.0.1
currentAutomated scan100/100+3 new
version: "1.0.1" name: powerpoint description: Create designed, editable PowerPoint .pptx presentations with PptxGenJS. Use when the user asks to create, generate, update, or inspect a deck, slide deck, presentation, or .pptx file.
PowerPoint
Use this skill whenever a PowerPoint deck is involved. For new decks, pass a trusted PptxGenJS build script directly to the pptx_write tool. For filling or editing an existing template, call pptx_template_analyze first and then pptx_template_fill with the exact IDs returned by analysis.
Workflow
- Decide the deck outline and choose a visual system: palette, typography, repeated motif, and slide rhythm.
- Write JavaScript module content that exports
default async function build(pptx, ctx)or namedbuild(pptx, ctx). - In the script, add slides directly with PptxGenJS. Do not generate HTML for this workflow.
- Call
pptx_writewithpath,script, optionalassets_dir, and optionaldata. - Verify the result with
pptx_read; for visual QA, convert the PPTX to images if the environment has LibreOffice and Poppler.
Template Workflow
- Use
pptx_template_analyzewhen the user provides a.pptxtemplate or wants to preserve existing layouts, charts, images, tables, or SmartArt. - Build a
template_fill_pptx_plan.v1plan from the returned slide IDs and object IDs, then callpptx_template_fill. - For SmartArt, use
smartarts[*].smartart_idandsmartarts[*].nodes[*].node_idinsmartart_edits. This edits existing node text only; it does not create, delete, or relayout SmartArt nodes.
Script Creation
- Put the complete JavaScript module in the
scriptargument. - Do not use
local_file_writeor shell commands to create a temporary.mjsfile for this workflow. - If revising a deck, update the
scriptcontent and callpptx_writeagain.
Tool Contract
{"tool": "pptx_write","arguments": {"path": "deck.pptx","script": "export default async function build(pptx, ctx) {\\n pptx.layout = \"LAYOUT_WIDE\";\\n}","assets_dir": "/absolute/path/to/assets","data": {"title": "Quarterly Review"}}}
The worker creates the PptxGenJS instance and writes the output file. The script only adds slides and content.
export default async function build(pptx, ctx) {pptx.layout = "LAYOUT_WIDE";pptx.author = "OpenAgent";const slide = pptx.addSlide();slide.background = { color: "FFFFFF" };slide.addText("Title", {x: 0.6, y: 0.4, w: 8, h: 0.6,fontSize: 36, bold: true, color: "1F2937",margin: 0,});slide.addNotes("speaker notes");}
ctx includes:
ctx.data: JSON data passed from the tool call.ctx.assetsDir: resolved asset directory.ctx.outPath: final PPTX path.ctx.resolveAsset("image.png"): absolute path underassets_dir.ctx.imageData("image.png"): base64 image data URL.ctx.iconSvgData("check", "16A34A"): Font Awesome solid icon as SVG data.
Design Rules
- Avoid plain white bullet decks. Every slide should have a visual element: shape, image, chart, icon, timeline, stat callout, or diagram.
- Vary layouts across the deck: title, divider, two-column, card grid, process flow, quote/callout, and conclusion.
- Pick topic-specific colors. Use one dominant color, one or two supporting tones, and one accent.
- Use strong hierarchy: titles around 36-44 pt, section labels around 20-24 pt, body text around 14-18 pt.
- Keep at least 0.5 inch margins and consistent gaps around 0.3-0.5 inch.
- Use editable text wherever practical; use images for photos, screenshots, logos, or complex visual backgrounds.
- Add speaker notes when useful;
pptx_readcan surface them later.
PptxGenJS Reference
For API patterns, chart examples, bullets, image sizing, icons, and common file-corruption pitfalls, load pptxgenjs.md.
Required QA
- Run
pptx_readon the generated file and check slide order, missing text, typo risk, and notes. - Inspect generated XML or render slides when visual precision matters.
- Watch for overlap, text overflow, low contrast, cramped spacing, repeated layouts, and leftover placeholder text.
- If a visual issue is found, edit the
.mjsscript and rewrite the PPTX.