$npx -y skills add nguyenphp/antigravity-marketing --skill pptx-generatorGenerate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides.
| 1 | # PPTX Generator & Editor |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | This skill handles all PowerPoint tasks: reading/analyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type. |
| 6 | |
| 7 | ## Quick Reference |
| 8 | |
| 9 | | Task | Approach | |
| 10 | |------|----------| |
| 11 | | Read/analyze content | `python -m markitdown presentation.pptx` | |
| 12 | | Edit or create from template | See [Editing Presentations](references/editing.md) | |
| 13 | | Create from scratch | See [Creating from Scratch](#creating-from-scratch-workflow) below | |
| 14 | |
| 15 | | Item | Value | |
| 16 | |------|-------| |
| 17 | | **Dimensions** | 10" x 5.625" (LAYOUT_16x9) | |
| 18 | | **Colors** | 6-char hex without # (e.g., `"FF0000"`) | |
| 19 | | **English font** | Arial (default), or approved alternatives | |
| 20 | | **Chinese font** | Microsoft YaHei | |
| 21 | | **Page badge position** | x: 9.3", y: 5.1" | |
| 22 | | **Theme keys** | `primary`, `secondary`, `accent`, `light`, `bg` | |
| 23 | | **Shapes** | RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE | |
| 24 | | **Charts** | BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR | |
| 25 | |
| 26 | ## Reference Files |
| 27 | |
| 28 | | File | Contents | |
| 29 | |------|----------| |
| 30 | | [slide-types.md](references/slide-types.md) | 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns | |
| 31 | | [design-system.md](references/design-system.md) | Color palettes, font reference, style recipes (Sharp/Soft/Rounded/Pill), typography & spacing | |
| 32 | | [editing.md](references/editing.md) | Template-based editing workflow, XML manipulation, formatting rules, common pitfalls | |
| 33 | | [pitfalls.md](references/pitfalls.md) | QA process, common mistakes, critical PptxGenJS pitfalls | |
| 34 | | [pptxgenjs.md](references/pptxgenjs.md) | Complete PptxGenJS API reference | |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## Reading Content |
| 39 | |
| 40 | ```bash |
| 41 | # Text extraction |
| 42 | python -m markitdown presentation.pptx |
| 43 | ``` |
| 44 | |
| 45 | --- |
| 46 | |
| 47 | ## Creating from Scratch — Workflow |
| 48 | |
| 49 | **Use when no template or reference presentation is available.** |
| 50 | |
| 51 | ### Step 1: Research & Requirements |
| 52 | |
| 53 | Search to understand user requirements — topic, audience, purpose, tone, content depth. |
| 54 | |
| 55 | ### Step 2: Select Color Palette & Fonts |
| 56 | |
| 57 | Use the [Color Palette Reference](references/design-system.md#color-palette-reference) to select a palette matching the topic and audience. Use the [Font Reference](references/design-system.md#font-reference) to choose a font pairing. |
| 58 | |
| 59 | ### Step 3: Select Design Style |
| 60 | |
| 61 | Use the [Style Recipes](references/design-system.md#style-recipes) to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone. |
| 62 | |
| 63 | ### Step 4: Plan Slide Outline |
| 64 | |
| 65 | Classify **every slide** as exactly one of the [5 page types](references/slide-types.md). Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides. |
| 66 | |
| 67 | ### Step 5: Generate Slide JS Files |
| 68 | |
| 69 | Create one JS file per slide in `slides/` directory. Each file must export a synchronous `createSlide(pres, theme)` function. Follow the [Slide Output Format](#slide-output-format) and the type-specific guidance in [slide-types.md](references/slide-types.md). Generate up to 5 slides concurrently using subagents if available. |
| 70 | |
| 71 | **Tell each subagent:** |
| 72 | 1. File naming: `slides/slide-01.js`, `slides/slide-02.js`, etc. |
| 73 | 2. Images go in: `slides/imgs/` |
| 74 | 3. Final PPTX goes in: `slides/output/` |
| 75 | 4. Dimensions: 10" x 5.625" (LAYOUT_16x9) |
| 76 | 5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative) |
| 77 | 6. Colors: 6-char hex without # (e.g. `"FF0000"`) |
| 78 | 7. Must use the theme object contract (see [Theme Object Contract](#theme-object-contract)) |
| 79 | 8. Must follow the [PptxGenJS API reference](references/pptxgenjs.md) |
| 80 | |
| 81 | ### Step 6: Compile into Final PPTX |
| 82 | |
| 83 | Create `slides/compile.js` to combine all slide modules: |
| 84 | |
| 85 | ```javascript |
| 86 | // slides/compile.js |
| 87 | const pptxgen = require('pptxgenjs'); |
| 88 | const pres = new pptxgen(); |
| 89 | pres.layout = 'LAYOUT_16x9'; |
| 90 | |
| 91 | const theme = { |
| 92 | primary: "22223b", // dark color for backgrounds/text |
| 93 | secondary: "4a4e69", // secondary accent |
| 94 | accent: "9a8c98", // highlight color |
| 95 | light: "c9ada7", // light accent |
| 96 | bg: "f2e9e4" // background color |
| 97 | }; |
| 98 | |
| 99 | for (let i = 1; i <= 12; i++) { // adjust count as needed |
| 100 | const num = String(i).padStart(2, '0'); |
| 101 | const slideModule = require(`./slide-${num}.js`); |
| 102 | slideModule.createSlide(pres, theme); |
| 103 | } |
| 104 | |
| 105 | pres.writeFile({ fileName: './output/presentation.pptx' }); |
| 106 | ``` |
| 107 | |
| 108 | Run with: `cd slides && node compile.js` |
| 109 | |
| 110 | ### Step 7: QA (Required) |
| 111 | |
| 112 | See |