{“content”:”---\nname: powerpoint\ndescription: “Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions \“deck,\” \“slides,\” \“presentation,\” or references a .pptx filename, regardless of what they plan to do with the content afterward. If a .pptx file needs to be opened, created, or touched, use this skill.”\nlicense: Proprietary. LICENSE.txt has complete terms\n---\n\n# Powerpoint Skill\n\n## Quick Reference\n\n| Task | Guide |\n|------|-------|\n| Read/analyze content | python -m markitdown presentation.pptx |\n| Edit or create from template | Read editing.md |\n| Create from scratch | Read pptxgenjs.md |\n\n---\n\n## Reading Content\n\nbash\n# Text extraction\npython -m markitdown presentation.pptx\n\n# Visual overview\npython scripts/thumbnail.py presentation.pptx\n\n# Raw XML\npython scripts/office/unpack.py presentation.pptx unpacked/\n\n\n---\n\n## Editing Workflow\n\nRead editing.md for full details.\n\n1. Analyze template with thumbnail.py\n2. Unpack → manipulate slides → edit content → clean → pack\n\n---\n\n## Creating from Scratch\n\nRead pptxgenjs.md for full details.\n\nUse when no template or reference presentation is available.\n\n---\n\n## Design Ideas\n\nDon’t create boring slides. Plain bullets on a white background won’t impress anyone. Consider ideas from this list for each slide.\n\n### Before Starting\n\n- Pick a bold, content-informed color palette: The palette should feel designed for THIS topic. If swapping your colors into a completely different presentation would still “work,” you haven’t made specific enough choices.\n- Dominance over equality: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight.\n- Dark/light contrast: Dark backgrounds for title + conclusion slides, light for content (“sandwich” structure). Or commit to dark throughout for a premium feel.\n- Commit to a visual motif: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders. Carry it across every slide.\n\n### Color Palettes\n\nChoose colors that match your topic — don’t default to generic blue. Use these palettes as inspiration:\n\n| Theme | Primary | Secondary | Accent |\n|-------|---------|-----------|--------|\n| Midnight Executive | 1E2761 (navy) | CADCFC (ice blue) | FFFFFF (white) |\n| Forest & Moss | 2C5F2D (forest) | 97BC62 (moss) | F5F5F5 (cream) |\n| Coral Energy | F96167 (coral) | F9E795 (gold) | 2F3C7E (navy) |\n| Warm Terracotta | B85042 (terracotta) | E7E8D1 (sand) | A7BEAE (sage) |\n| Ocean Gradient | 065A82 (deep blue) | 1C7293 (teal) | 21295C (midnight) |\n| Charcoal Minimal | 36454F (charcoal) | F2F2F2 (off-white) | 212121 (black) |\n| Teal Trust | 028090 (teal) | 00A896 (seafoam) | 02C39A (mint) |\n| Berry & Cream | 6D2E46 (berry) | A26769 (dusty rose) | ECE2D0 (cream) |\n| Sage Calm | 84B59F (sage) | 69A297 (eucalyptus) | 50808E (slate) |\n| Cherry Bold | 990011 (cherry) | FCF6F5 (off-white) | 2F3C7E (navy) |\n\n### For Each Slide\n\nEvery slide needs a visual element — image, chart, icon, or shape. Text-only slides are forgettable.\n\nLayout options:\n- Two-column (text left, illustration on right)\n- Icon + text rows (icon in colored circle, bold header, description below)\n- 2x2 or 2x3 grid (image on one side, grid of content blocks on other)\n- Half-bleed image (full left or right side) with content overlay\n\nData display:\n- Large stat callouts (big numbers 60-72pt with small labels below)\n- Comparison columns (before/after, pros/cons, side-by-side options)\n- Timeline or process flow (numbered steps, arrows)\n\nVisual polish:\n- Icons in small colored circles next to section headers\n- Italic accent text for key stats or taglines\n\n### Typography\n\nChoose an interesting font pairing — don’t default to Arial. Pick a header font with personality and pair it with a clean body font.\n\n| Header Font | Body Font |\n|-------------|-----------|\n| Georgia | Calibri |\n| Arial Black | Arial |\n| Calibri | Calibri Light |\n| Cambria | Calibri |\n| Trebuchet MS | Calibri |\n| Impact | Arial |\n| Palatino | Garamond |\n| Consolas | Calibri |\n\n| Element | Size |\n|---------|------|\n| Slide title | 36-44pt bold |\n| Section header | 20-24pt bold |\n| Body text | 14-16pt |\n| Captions | 10-12pt muted |\n\n### Spacing\n\n- 0.5” minimum margins\n- 0.3-0.5” between content blocks\n- Leave breathing room—don’t fill every inch\n\n### Avoid (Common Mistakes)\n\n- Don’t repeat the same layout — vary columns, cards, and callouts across slides\n- Don’t center body text — left-align paragraphs and lists; center only titles\n- Don’t skimp on size contrast — titles need 36pt+ to stand out from 14-16pt body\n- Don’t default to blue — pick colors that reflect the specific topic\n- Don’t mix spacing randomly — choose 0.3” or 0.5” gaps and use consistently\n- Don’t style one slide and leave the rest plain — commit fully or keep it simple throughout\n- Don’t create text-only slides — add images, icons, charts, or visual elements; avoid plain title + bullets\n- Don’t forget text box padding — when aligning lines or shapes with text edges, set margin: 0 on the text box or offset the shape to account for padding\n- Don’t use low-contrast elements — icons AND text need strong contrast against the background; avoid light text on light backgrounds or dark text on dark backgrounds\n- NEVER use accent lines under titles — these are a hallmark of AI-generated slides; use whitespace or background color instead\n\n---\n\n## QA (Required)\n\nAssume there are problems. Your job is to find them.\n\nYour first render is almost never correct. Approach QA as a bug hunt, not a confirmation step. If you found zero issues on first inspection, you weren’t looking hard enough.\n\n### Content QA\n\nbash\npython -m markitdown output.pptx\n\n\nCheck for missing content, typos, wrong order.\n\nWhen using templates, check for leftover placeholder text:\n\nbash\npython -m markitdown output.pptx | grep -iE \"xxxx|lorem|ipsum|this.*(page|slide).*layout\"\n\n\nIf grep returns results, fix them before declaring success.\n\n### Visual QA\n\n**⚠️ USE SUBAGENTS** — even for 2-3 slides. You’ve been staring at the code and will see what you expect, not what’s there. Subagents have fresh eyes.\n\nConvert slides to images (see Converting to Images), then use this prompt:\n\n\nVisually inspect these slides. Assume there are issues — find them.\n\nLook for:\n- Overlapping elements (text through shapes, lines through words, stacked elements)\n- Text overflow or cut off at edges/box boundaries\n- Decorative lines positioned for single-line text but title wrapped to two lines\n- Source citations or footers colliding with content above\n- Elements too close (< 0.3\" gaps) or cards/sections nearly touching\n- Uneven gaps (large empty area in one place, cramped in another)\n- Insufficient margin from slide edges (< 0.5\")\n- Columns or similar elements not aligned consistently\n- Low-contrast text (e.g., light gray text on cream-colored background)\n- Low-contrast icons (e.g., dark icons on dark backgrounds without a contrasting circle)\n- Text boxes too narrow causing excessive wrapping\n- Leftover placeholder content\n\nFor each slide, list issues or areas of concern, even if minor.\n\nRead and analyze these images:\n1. /path/to/slide-01.jpg (Expected: [brief description])\n2. /path/to/slide-02.jpg (Expected: [brief description])\n\nReport ALL issues found, including minor ones.\n\n\n### Verification Loop\n\n1. Generate slides → Convert to images → Inspect\n2. List issues found (if none found, look again more critically)\n3. Fix issues\n4. Re-verify affected slides — one fix often creates another problem\n5. Repeat until a full pass reveals no new issues\n\nDo not declare success until you’ve completed at least one fix-and-verify cycle.\n\n---\n\n## Converting to Images\n\nConvert presentations to individual slide images for visual inspection:\n\nbash\npython scripts/office/soffice.py --headless --convert-to pdf output.pptx\npdftoppm -jpeg -r 150 output.pdf slide\n\n\nThis creates slide-01.jpg, slide-02.jpg, etc.\n\nTo re-render specific slides after fixes:\n\nbash\npdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed\n\n\n---\n\n## Dependencies\n\n- pip install \"markitdown[pptx]\" - text extraction\n- pip install Pillow - thumbnail grids\n- npm install -g pptxgenjs - creating from scratch\n- LibreOffice (soffice) - PDF conversion (auto-configured for sandboxed environments via scripts/office/soffice.py)\n- Poppler (pdftoppm) - PDF to images\n”}