Use for creating, editing, reviewing, and validating presentation decks in PPTX format.
| Objective | Technique | Reference |
|---|---|---|
| Extract text or data | python -m markitdown presentation.pptx | Also: slides.py thumbnail for visual grid |
| Modify an existing file or template | Unpack to XML, edit, repack | See EDITING.md |
| Generate a deck from scratch | JavaScript with pptxgenjs | See CREATING.md |
Pre-installed sandbox packages: markitdown[pptx], Pillow, pptxgenjs (Node), react-icons + + + (icon rendering), LibreOffice (), Poppler ().
reactreact-domsharpsofficepdftoppmRender equations with Unicode math symbols only. Do not use OMML or generate equation images — LibreOffice cannot display either during visual QA.
Design defaults: See skills/GENERAL-KNOWLEDGE-WORKER/design-foundations/SKILL.md for palette, fonts + pairings, chart colors, and core principles (1 accent + neutrals, no decorative imagery, accessibility). Below is slides-specific guidance only.
Derive color from the content itself. Don't pick from a preset list — let the subject matter guide the accent:
Build every palette as 1 accent + neutral surface + neutral text. The accent is for emphasis only (headings, key data, section markers) — everything else stays neutral. See skills/GENERAL-KNOWLEDGE-WORKER/design-foundations/SKILL.md for the full "Earn Every Color" philosophy, contrast rules, and the custom-palette workflow (user hue → derive surfaces by desaturating → test contrast).
When no topic-specific color is obvious, fall back to the Kortix neutral system: black/white or soft off-white neutrals with a single accent such as teal #22808D only where emphasis is needed (see skills/GENERAL-KNOWLEDGE-WORKER/design-foundations/SKILL.md).
Use layout variety for visual interest — columns, grids, and whitespace keep slides engaging without decoration.
Layout options:
Data display:
See skills/GENERAL-KNOWLEDGE-WORKER/design-foundations/SKILL.md for font pairings (Slides Pairings table) and size hierarchy. Default to professional sans-serif. Use serif for headings only when formal tone is needed.
margin: 0 on the text box or offset the shape to account for paddingborder-left: 3px solid <accent> is another AI-generated hallmark. Use background color, subtle neutral borders, or whitespace to separate content blocksbullet: true on large stat text — bullets at 60-72pt render as giant dots. Only use bullets on body-sized text (14-16pt)bullet: true on all text in a slide — bullet points should only be used for actual lists of 3+ items. Don't bullet a title, subtitle, description, or stat. Bullets on every text element makes slides look like a Word documentEvery slide that uses information gathered from web sources MUST have a source attribution line at the bottom of the slide using hyperlinked source names — each source name is displayed as clickable text linking to the full URL. Always use "Source:" (singular). Use an array of text objects with hyperlink options.
slide.addText([
{ text: "Source: " },
{ text: "Reuters", options: { hyperlink: { url: "https://reuters.com/article/123" } } },
{ text: ", " },
{ text: "WHO", options: { hyperlink: { url: "https://who.int/publications/m/item/update-42" } } },
{ text: ", " },
{ text: "World Bank", options: { hyperlink: { url: "https://worldbank.org/en/topic/water" } } }
], { x: 0.5, y: 5.2, w: 9, h: 0.3 });
hyperlink.url with the full https:// URL — never omit hyperlinks"Sources: WHO, Reuters, UNICEF" (plain text, no hyperlinks)"Source: WHO, https://who.int/report/123" (raw URL in text instead of hyperlink)[{ text: "WHO", options: { hyperlink: { url: "https://who.int/report/123" } } }] (clickable name)Every pptx task MUST complete ALL three QA steps below before delivering the file. Skipping any step is a failure.
Run markitdown on the output file and review the extracted text:
python -m markitdown output.pptx
Check for missing content, typos, wrong order.
When using templates, check for leftover placeholder text:
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
If grep returns results, fix them before proceeding.
Use a fresh background session for visual inspection so the reviewer starts with fresh eyes.
soffice --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
ls slide-*.jpg # always ls — zero-padding varies by page count
session_start_background, or session_spawn if the alias is what the runtime exposes). Give it the slide image paths plus a prompt like this:Visually inspect these slides. Assume there are issues — find them.
Check for: stray dots/circles (orphan shapes, bullets at display size), overlapping elements, text overflow/cutoff, decorative lines mispositioned after title wrap, source footers colliding with content, elements too close (< 0.3" gaps), uneven spacing, insufficient slide-edge margins (< 0.5"), misaligned columns, low-contrast text or icons, narrow text boxes causing excessive wrapping, and leftover placeholder content.
For each slide, list every issue found, even minor ones.
session_read and treat the returned review as the visual QA checklist.Fix every issue the background review session found, then re-verify:
soffice + pdftoppm)At least one fix-and-verify cycle before delivering the file. Fixes create new problems — always re-check.
To re-render specific slides after fixes:
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
ls slide-fixed-*.jpg
```3a:["$","$L41",null,{"content":"$42","frontMatter":{"name":"pptx","description":"Use for creating, editing, reviewing, and validating presentation decks in PPTX format."}}]