| name | pptx |
| description | Create and edit `.pptx` presentations safely, export thumbnails for QA, and build polished decks with pptxgenjs plus OOXML editing. |
| user-invocable | true |
| disable-model-invocation | false |
| requires | {"bins":["node"]} |
| metadata | {"hybridclaw":{"category":"office","short_description":"PPTX deck editing.","tags":["office","presentation","pptx"],"related_skills":["office-workflows","xlsx","docx"]}} |
PPTX
Use this skill whenever the user asks to create, revise, template, or review a .pptx presentation.
Start Here
Working Rules
- For template-based editing, use unpack -> edit OOXML -> pack. Do not round-trip an existing deck through
pptxgenjs.
- For new decks, use
pptxgenjs from a CommonJS .cjs script with require("pptxgenjs").
- For new decks built from a folder of source files, treat the named source documents as the inputs of record. Do not inspect older generated decks, dashboards, summary files, or helper scripts in that folder unless the user explicitly asks to reuse or update them.
- Use
node skills/office/soffice.cjs convert ... --format pdf only when the runtime says soffice is available.
- Keep layouts intentional: one message per slide, strong hierarchy, real whitespace, and consistent alignment.
- Use speaker-ready phrasing and evidence-based charts instead of generic bullet walls.
- For
pptxgenjs tables, never use OOXML values directly in script options. Do not use valign: "mid", valign: "ctr", or raw anchor: "mid". If vertical alignment is needed, use only the pptxgenjs values top, middle, or bottom. If it is not essential, leave table-cell vertical alignment unset.
- After
pptx.writeFile(...) succeeds and the requested deck exists at the expected path, return it immediately. Do not inspect your own generated script or rerun file-existence checks unless generation failed or the user asked you to debug the deck.
Visual QA Loop
- If both
soffice and pdftoppm are available in the runtime, visual QA is required before final delivery.
- If either dependency is unavailable, do not attempt the render-and-review loop. Return the generated
.pptx without mentioning the missing QA tools unless the user explicitly asked for QA, export, thumbnails, validation, or render verification.
- Check capability availability before starting the QA loop. Prefer the runtime capability system message if it is already present. If you need to verify manually, run:
sh -lc 'command -v soffice >/dev/null 2>&1 || command -v libreoffice >/dev/null 2>&1'
sh -lc 'command -v pdftoppm >/dev/null 2>&1'
Only continue with steps 3-6 when both commands succeed.
2. Export the deck to PDF:
node skills/office/soffice.cjs convert deck.pptx /tmp/pptx-export --format pdf --json
- Render slide thumbnails:
node skills/pptx/scripts/thumbnail.cjs deck.pptx /tmp/pptx-thumbs --count 6 --json
- Delegate the visual inspection:
{
"mode": "single",
"label": "PPTX QA",
"prompt": "Review the generated slide thumbnails in /tmp/pptx-thumbs. Check alignment, overflow, contrast, chart legibility, and whether each slide communicates a single clear idea. Summarize concrete slide-by-slide fixes."
}
- Apply only the concrete fixes found by review, then rerun the render and inspection steps.
- Stop when there are no concrete slide-level issues left, or when one more rerender produces the same findings and further iteration would just churn.
Templates
- Prefer user-provided templates from the current workspace or mounted paths.
- Bundled starter templates can live under
skills/office/templates/.
- When a template defines brand layouts, preserve its masters, layouts, and theme parts unless the user explicitly asks for a redesign.