[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-minimax-ppt-orchestra-skill":3,"mdc--e79ft6-key":37,"related-repo-minimax-ppt-orchestra-skill":1720,"related-org-minimax-ppt-orchestra-skill":1843},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"ppt-orchestra-skill","plan and orchestrate PowerPoint presentations","Plan and orchestrate multi-slide PowerPoint creation from scratch. Use before generating a full deck with subagents: classify each slide type, enforce visual variety, set typography\u002Fspacing rules, and run text-based QA to catch content issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"minimax","MiniMax","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fminimax.jpg","MiniMax-AI",[13,17,20,23],{"name":14,"slug":15,"type":16},"Presentations","presentations","tag",{"name":18,"slug":19,"type":16},"PowerPoint","powerpoint",{"name":21,"slug":22,"type":16},"Templates","templates",{"name":24,"slug":25,"type":16},"Design","design",13030,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002Fskills","2026-07-16T06:00:25.142248","Proprietary. LICENSE.txt has complete terms",1118,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],null,"https:\u002F\u002Fgithub.com\u002FMiniMax-AI\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fpptx-plugin\u002Fskills\u002Fppt-orchestra-skill","---\nname: ppt-orchestra-skill\ndescription: \"Plan and orchestrate multi-slide PowerPoint creation from scratch. Use before generating a full deck with subagents: classify each slide type, enforce visual variety, set typography\u002Fspacing rules, and run text-based QA to catch content issues.\"\nlicense: Proprietary. LICENSE.txt has complete terms\n---\n\n# Slide Page Types (Standard)\n\nFor slide-by-slide generation (one JS file per slide), classify **every slide** as **exactly one** of these 5 page types. This keeps structure consistent and prevents \"random layout drift\".\n\n1. **Cover Page**\n   - **Use for**: opening + tone setting\n   - **Content**: big title, subtitle\u002Fpresenter, date\u002Foccasion, strong background\u002Fmotif\n2. **Table of Contents**\n   - **Use for**: navigation + expectation setting (3–5 sections)\n   - **Content**: section list (optional icons \u002F page numbers)\n3. **Section Divider**\n   - **Use for**: clear transitions between major parts\n   - **Content**: section number + title (+ optional 1–2 line intro)\n4. **Content Page** (pick a subtype)\n   - **Text**: bullets\u002Fquotes\u002Fshort paragraphs (still add icons\u002Fshapes)\n   - **Mixed media**: two-column \u002F half-bleed image + text overlay\n   - **Data visualization**: chart + 1–3 key takeaways + **source**\n   - **Comparison**: side-by-side columns\u002Fcards (A vs B, pros\u002Fcons)\n   - **Timeline \u002F process**: steps with arrows, journey, phases\n   - **Image showcase**: hero image, gallery, or visual-first layout\n5. **Summary \u002F Closing Page**\n   - **Use for**: wrap-up + action\n   - **Content**: key takeaways, CTA\u002Fnext steps, contact\u002FQR, thank-you\n\n**Layout 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\n**Data display:**\n- Large stat callouts (big numbers 60-72pt with small labels below)\n- Comparison columns (before\u002Fafter, pros\u002Fcons, side-by-side options)\n- Timeline or process flow (numbered steps, arrows)\n\n**Visual polish:**\n- Icons in small colored circles next to section headers\n- Italic accent text for key stats or taglines\n\n### Typography\n\n**Choose 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## Compiling Slides\n\nAfter all slide JS files are generated in `slides\u002F`, create `slides\u002Fcompile.js` to compile them into a single PPTX:\n\n```javascript\n\u002F\u002F slides\u002Fcompile.js\nconst pptxgen = require('pptxgenjs');\nconst pres = new pptxgen();\npres.layout = 'LAYOUT_16x9';\n\nconst theme = {\n  primary: \"22223b\",    \u002F\u002F dark color for backgrounds\u002Ftext\n  secondary: \"4a4e69\",  \u002F\u002F secondary accent\n  accent: \"9a8c98\",     \u002F\u002F highlight color\n  light: \"c9ada7\",      \u002F\u002F light accent\n  bg: \"f2e9e4\"          \u002F\u002F background color\n};\n\nfor (let i = 1; i \u003C= 12; i++) {  \u002F\u002F adjust count as needed\n  const num = String(i).padStart(2, '0');\n  const slideModule = require(`.\u002Fslide-${num}.js`);\n  slideModule.createSlide(pres, theme);\n}\n\npres.writeFile({ fileName: '.\u002Foutput\u002Fpresentation.pptx' });\n```\n\nRun with: `cd slides && node compile.js`\n\n---\n\n## QA (Required)\n\n**Assume 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\n```bash\npython -m markitdown output.pptx\n```\n\nCheck for missing content, typos, wrong order.\n\n**When using templates, check for leftover placeholder text:**\n\n```bash\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### Verification Loop\n\n1. Generate slides → Extract text with `python -m markitdown output.pptx` → Review content\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\n**Do not declare success until you've completed at least one fix-and-verify cycle.**\n\n---\n\n## Dependencies\n\n- `pip install \"markitdown[pptx]\"` - text extraction\n- `npm install -g pptxgenjs` - creating from scratch\n",{"data":38,"body":39},{"name":4,"description":6,"license":29},{"type":40,"children":41},"root",[42,51,72,274,282,305,313,331,339,352,359,369,496,570,576,594,600,712,719,740,1473,1484,1488,1494,1502,1507,1513,1546,1551,1559,1615,1620,1626,1672,1680,1683,1689,1714],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"slide-page-types-standard",[48],{"type":49,"value":50},"text","Slide Page Types (Standard)",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,63,65,70],{"type":49,"value":56},"For slide-by-slide generation (one JS file per slide), classify ",{"type":43,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":49,"value":62},"every slide",{"type":49,"value":64}," as ",{"type":43,"tag":58,"props":66,"children":67},{},[68],{"type":49,"value":69},"exactly one",{"type":49,"value":71}," of these 5 page types. This keeps structure consistent and prevents \"random layout drift\".",{"type":43,"tag":73,"props":74,"children":75},"ol",{},[76,109,138,167,245],{"type":43,"tag":77,"props":78,"children":79},"li",{},[80,85],{"type":43,"tag":58,"props":81,"children":82},{},[83],{"type":49,"value":84},"Cover Page",{"type":43,"tag":86,"props":87,"children":88},"ul",{},[89,99],{"type":43,"tag":77,"props":90,"children":91},{},[92,97],{"type":43,"tag":58,"props":93,"children":94},{},[95],{"type":49,"value":96},"Use for",{"type":49,"value":98},": opening + tone setting",{"type":43,"tag":77,"props":100,"children":101},{},[102,107],{"type":43,"tag":58,"props":103,"children":104},{},[105],{"type":49,"value":106},"Content",{"type":49,"value":108},": big title, subtitle\u002Fpresenter, date\u002Foccasion, strong background\u002Fmotif",{"type":43,"tag":77,"props":110,"children":111},{},[112,117],{"type":43,"tag":58,"props":113,"children":114},{},[115],{"type":49,"value":116},"Table of Contents",{"type":43,"tag":86,"props":118,"children":119},{},[120,129],{"type":43,"tag":77,"props":121,"children":122},{},[123,127],{"type":43,"tag":58,"props":124,"children":125},{},[126],{"type":49,"value":96},{"type":49,"value":128},": navigation + expectation setting (3–5 sections)",{"type":43,"tag":77,"props":130,"children":131},{},[132,136],{"type":43,"tag":58,"props":133,"children":134},{},[135],{"type":49,"value":106},{"type":49,"value":137},": section list (optional icons \u002F page numbers)",{"type":43,"tag":77,"props":139,"children":140},{},[141,146],{"type":43,"tag":58,"props":142,"children":143},{},[144],{"type":49,"value":145},"Section Divider",{"type":43,"tag":86,"props":147,"children":148},{},[149,158],{"type":43,"tag":77,"props":150,"children":151},{},[152,156],{"type":43,"tag":58,"props":153,"children":154},{},[155],{"type":49,"value":96},{"type":49,"value":157},": clear transitions between major parts",{"type":43,"tag":77,"props":159,"children":160},{},[161,165],{"type":43,"tag":58,"props":162,"children":163},{},[164],{"type":49,"value":106},{"type":49,"value":166},": section number + title (+ optional 1–2 line intro)",{"type":43,"tag":77,"props":168,"children":169},{},[170,175,177],{"type":43,"tag":58,"props":171,"children":172},{},[173],{"type":49,"value":174},"Content Page",{"type":49,"value":176}," (pick a subtype)\n",{"type":43,"tag":86,"props":178,"children":179},{},[180,190,200,215,225,235],{"type":43,"tag":77,"props":181,"children":182},{},[183,188],{"type":43,"tag":58,"props":184,"children":185},{},[186],{"type":49,"value":187},"Text",{"type":49,"value":189},": bullets\u002Fquotes\u002Fshort paragraphs (still add icons\u002Fshapes)",{"type":43,"tag":77,"props":191,"children":192},{},[193,198],{"type":43,"tag":58,"props":194,"children":195},{},[196],{"type":49,"value":197},"Mixed media",{"type":49,"value":199},": two-column \u002F half-bleed image + text overlay",{"type":43,"tag":77,"props":201,"children":202},{},[203,208,210],{"type":43,"tag":58,"props":204,"children":205},{},[206],{"type":49,"value":207},"Data visualization",{"type":49,"value":209},": chart + 1–3 key takeaways + ",{"type":43,"tag":58,"props":211,"children":212},{},[213],{"type":49,"value":214},"source",{"type":43,"tag":77,"props":216,"children":217},{},[218,223],{"type":43,"tag":58,"props":219,"children":220},{},[221],{"type":49,"value":222},"Comparison",{"type":49,"value":224},": side-by-side columns\u002Fcards (A vs B, pros\u002Fcons)",{"type":43,"tag":77,"props":226,"children":227},{},[228,233],{"type":43,"tag":58,"props":229,"children":230},{},[231],{"type":49,"value":232},"Timeline \u002F process",{"type":49,"value":234},": steps with arrows, journey, phases",{"type":43,"tag":77,"props":236,"children":237},{},[238,243],{"type":43,"tag":58,"props":239,"children":240},{},[241],{"type":49,"value":242},"Image showcase",{"type":49,"value":244},": hero image, gallery, or visual-first layout",{"type":43,"tag":77,"props":246,"children":247},{},[248,253],{"type":43,"tag":58,"props":249,"children":250},{},[251],{"type":49,"value":252},"Summary \u002F Closing Page",{"type":43,"tag":86,"props":254,"children":255},{},[256,265],{"type":43,"tag":77,"props":257,"children":258},{},[259,263],{"type":43,"tag":58,"props":260,"children":261},{},[262],{"type":49,"value":96},{"type":49,"value":264},": wrap-up + action",{"type":43,"tag":77,"props":266,"children":267},{},[268,272],{"type":43,"tag":58,"props":269,"children":270},{},[271],{"type":49,"value":106},{"type":49,"value":273},": key takeaways, CTA\u002Fnext steps, contact\u002FQR, thank-you",{"type":43,"tag":52,"props":275,"children":276},{},[277],{"type":43,"tag":58,"props":278,"children":279},{},[280],{"type":49,"value":281},"Layout options:",{"type":43,"tag":86,"props":283,"children":284},{},[285,290,295,300],{"type":43,"tag":77,"props":286,"children":287},{},[288],{"type":49,"value":289},"Two-column (text left, illustration on right)",{"type":43,"tag":77,"props":291,"children":292},{},[293],{"type":49,"value":294},"Icon + text rows (icon in colored circle, bold header, description below)",{"type":43,"tag":77,"props":296,"children":297},{},[298],{"type":49,"value":299},"2x2 or 2x3 grid (image on one side, grid of content blocks on other)",{"type":43,"tag":77,"props":301,"children":302},{},[303],{"type":49,"value":304},"Half-bleed image (full left or right side) with content overlay",{"type":43,"tag":52,"props":306,"children":307},{},[308],{"type":43,"tag":58,"props":309,"children":310},{},[311],{"type":49,"value":312},"Data display:",{"type":43,"tag":86,"props":314,"children":315},{},[316,321,326],{"type":43,"tag":77,"props":317,"children":318},{},[319],{"type":49,"value":320},"Large stat callouts (big numbers 60-72pt with small labels below)",{"type":43,"tag":77,"props":322,"children":323},{},[324],{"type":49,"value":325},"Comparison columns (before\u002Fafter, pros\u002Fcons, side-by-side options)",{"type":43,"tag":77,"props":327,"children":328},{},[329],{"type":49,"value":330},"Timeline or process flow (numbered steps, arrows)",{"type":43,"tag":52,"props":332,"children":333},{},[334],{"type":43,"tag":58,"props":335,"children":336},{},[337],{"type":49,"value":338},"Visual polish:",{"type":43,"tag":86,"props":340,"children":341},{},[342,347],{"type":43,"tag":77,"props":343,"children":344},{},[345],{"type":49,"value":346},"Icons in small colored circles next to section headers",{"type":43,"tag":77,"props":348,"children":349},{},[350],{"type":49,"value":351},"Italic accent text for key stats or taglines",{"type":43,"tag":353,"props":354,"children":356},"h3",{"id":355},"typography",[357],{"type":49,"value":358},"Typography",{"type":43,"tag":52,"props":360,"children":361},{},[362,367],{"type":43,"tag":58,"props":363,"children":364},{},[365],{"type":49,"value":366},"Choose an interesting font pairing",{"type":49,"value":368}," — don't default to Arial. Pick a header font with personality and pair it with a clean body font.",{"type":43,"tag":370,"props":371,"children":372},"table",{},[373,392],{"type":43,"tag":374,"props":375,"children":376},"thead",{},[377],{"type":43,"tag":378,"props":379,"children":380},"tr",{},[381,387],{"type":43,"tag":382,"props":383,"children":384},"th",{},[385],{"type":49,"value":386},"Header Font",{"type":43,"tag":382,"props":388,"children":389},{},[390],{"type":49,"value":391},"Body Font",{"type":43,"tag":393,"props":394,"children":395},"tbody",{},[396,410,423,435,447,459,471,484],{"type":43,"tag":378,"props":397,"children":398},{},[399,405],{"type":43,"tag":400,"props":401,"children":402},"td",{},[403],{"type":49,"value":404},"Georgia",{"type":43,"tag":400,"props":406,"children":407},{},[408],{"type":49,"value":409},"Calibri",{"type":43,"tag":378,"props":411,"children":412},{},[413,418],{"type":43,"tag":400,"props":414,"children":415},{},[416],{"type":49,"value":417},"Arial Black",{"type":43,"tag":400,"props":419,"children":420},{},[421],{"type":49,"value":422},"Arial",{"type":43,"tag":378,"props":424,"children":425},{},[426,430],{"type":43,"tag":400,"props":427,"children":428},{},[429],{"type":49,"value":409},{"type":43,"tag":400,"props":431,"children":432},{},[433],{"type":49,"value":434},"Calibri Light",{"type":43,"tag":378,"props":436,"children":437},{},[438,443],{"type":43,"tag":400,"props":439,"children":440},{},[441],{"type":49,"value":442},"Cambria",{"type":43,"tag":400,"props":444,"children":445},{},[446],{"type":49,"value":409},{"type":43,"tag":378,"props":448,"children":449},{},[450,455],{"type":43,"tag":400,"props":451,"children":452},{},[453],{"type":49,"value":454},"Trebuchet MS",{"type":43,"tag":400,"props":456,"children":457},{},[458],{"type":49,"value":409},{"type":43,"tag":378,"props":460,"children":461},{},[462,467],{"type":43,"tag":400,"props":463,"children":464},{},[465],{"type":49,"value":466},"Impact",{"type":43,"tag":400,"props":468,"children":469},{},[470],{"type":49,"value":422},{"type":43,"tag":378,"props":472,"children":473},{},[474,479],{"type":43,"tag":400,"props":475,"children":476},{},[477],{"type":49,"value":478},"Palatino",{"type":43,"tag":400,"props":480,"children":481},{},[482],{"type":49,"value":483},"Garamond",{"type":43,"tag":378,"props":485,"children":486},{},[487,492],{"type":43,"tag":400,"props":488,"children":489},{},[490],{"type":49,"value":491},"Consolas",{"type":43,"tag":400,"props":493,"children":494},{},[495],{"type":49,"value":409},{"type":43,"tag":370,"props":497,"children":498},{},[499,515],{"type":43,"tag":374,"props":500,"children":501},{},[502],{"type":43,"tag":378,"props":503,"children":504},{},[505,510],{"type":43,"tag":382,"props":506,"children":507},{},[508],{"type":49,"value":509},"Element",{"type":43,"tag":382,"props":511,"children":512},{},[513],{"type":49,"value":514},"Size",{"type":43,"tag":393,"props":516,"children":517},{},[518,531,544,557],{"type":43,"tag":378,"props":519,"children":520},{},[521,526],{"type":43,"tag":400,"props":522,"children":523},{},[524],{"type":49,"value":525},"Slide title",{"type":43,"tag":400,"props":527,"children":528},{},[529],{"type":49,"value":530},"36-44pt bold",{"type":43,"tag":378,"props":532,"children":533},{},[534,539],{"type":43,"tag":400,"props":535,"children":536},{},[537],{"type":49,"value":538},"Section header",{"type":43,"tag":400,"props":540,"children":541},{},[542],{"type":49,"value":543},"20-24pt bold",{"type":43,"tag":378,"props":545,"children":546},{},[547,552],{"type":43,"tag":400,"props":548,"children":549},{},[550],{"type":49,"value":551},"Body text",{"type":43,"tag":400,"props":553,"children":554},{},[555],{"type":49,"value":556},"14-16pt",{"type":43,"tag":378,"props":558,"children":559},{},[560,565],{"type":43,"tag":400,"props":561,"children":562},{},[563],{"type":49,"value":564},"Captions",{"type":43,"tag":400,"props":566,"children":567},{},[568],{"type":49,"value":569},"10-12pt muted",{"type":43,"tag":353,"props":571,"children":573},{"id":572},"spacing",[574],{"type":49,"value":575},"Spacing",{"type":43,"tag":86,"props":577,"children":578},{},[579,584,589],{"type":43,"tag":77,"props":580,"children":581},{},[582],{"type":49,"value":583},"0.5\" minimum margins",{"type":43,"tag":77,"props":585,"children":586},{},[587],{"type":49,"value":588},"0.3-0.5\" between content blocks",{"type":43,"tag":77,"props":590,"children":591},{},[592],{"type":49,"value":593},"Leave breathing room—don't fill every inch",{"type":43,"tag":353,"props":595,"children":597},{"id":596},"avoid-common-mistakes",[598],{"type":49,"value":599},"Avoid (Common Mistakes)",{"type":43,"tag":86,"props":601,"children":602},{},[603,613,623,633,643,653,663,673,692,702],{"type":43,"tag":77,"props":604,"children":605},{},[606,611],{"type":43,"tag":58,"props":607,"children":608},{},[609],{"type":49,"value":610},"Don't repeat the same layout",{"type":49,"value":612}," — vary columns, cards, and callouts across slides",{"type":43,"tag":77,"props":614,"children":615},{},[616,621],{"type":43,"tag":58,"props":617,"children":618},{},[619],{"type":49,"value":620},"Don't center body text",{"type":49,"value":622}," — left-align paragraphs and lists; center only titles",{"type":43,"tag":77,"props":624,"children":625},{},[626,631],{"type":43,"tag":58,"props":627,"children":628},{},[629],{"type":49,"value":630},"Don't skimp on size contrast",{"type":49,"value":632}," — titles need 36pt+ to stand out from 14-16pt body",{"type":43,"tag":77,"props":634,"children":635},{},[636,641],{"type":43,"tag":58,"props":637,"children":638},{},[639],{"type":49,"value":640},"Don't default to blue",{"type":49,"value":642}," — pick colors that reflect the specific topic",{"type":43,"tag":77,"props":644,"children":645},{},[646,651],{"type":43,"tag":58,"props":647,"children":648},{},[649],{"type":49,"value":650},"Don't mix spacing randomly",{"type":49,"value":652}," — choose 0.3\" or 0.5\" gaps and use consistently",{"type":43,"tag":77,"props":654,"children":655},{},[656,661],{"type":43,"tag":58,"props":657,"children":658},{},[659],{"type":49,"value":660},"Don't style one slide and leave the rest plain",{"type":49,"value":662}," — commit fully or keep it simple throughout",{"type":43,"tag":77,"props":664,"children":665},{},[666,671],{"type":43,"tag":58,"props":667,"children":668},{},[669],{"type":49,"value":670},"Don't create text-only slides",{"type":49,"value":672}," — add images, icons, charts, or visual elements; avoid plain title + bullets",{"type":43,"tag":77,"props":674,"children":675},{},[676,681,683,690],{"type":43,"tag":58,"props":677,"children":678},{},[679],{"type":49,"value":680},"Don't forget text box padding",{"type":49,"value":682}," — when aligning lines or shapes with text edges, set ",{"type":43,"tag":684,"props":685,"children":687},"code",{"className":686},[],[688],{"type":49,"value":689},"margin: 0",{"type":49,"value":691}," on the text box or offset the shape to account for padding",{"type":43,"tag":77,"props":693,"children":694},{},[695,700],{"type":43,"tag":58,"props":696,"children":697},{},[698],{"type":49,"value":699},"Don't use low-contrast elements",{"type":49,"value":701}," — icons AND text need strong contrast against the background; avoid light text on light backgrounds or dark text on dark backgrounds",{"type":43,"tag":77,"props":703,"children":704},{},[705,710],{"type":43,"tag":58,"props":706,"children":707},{},[708],{"type":49,"value":709},"NEVER use accent lines under titles",{"type":49,"value":711}," — these are a hallmark of AI-generated slides; use whitespace or background color instead",{"type":43,"tag":713,"props":714,"children":716},"h2",{"id":715},"compiling-slides",[717],{"type":49,"value":718},"Compiling Slides",{"type":43,"tag":52,"props":720,"children":721},{},[722,724,730,732,738],{"type":49,"value":723},"After all slide JS files are generated in ",{"type":43,"tag":684,"props":725,"children":727},{"className":726},[],[728],{"type":49,"value":729},"slides\u002F",{"type":49,"value":731},", create ",{"type":43,"tag":684,"props":733,"children":735},{"className":734},[],[736],{"type":49,"value":737},"slides\u002Fcompile.js",{"type":49,"value":739}," to compile them into a single PPTX:",{"type":43,"tag":741,"props":742,"children":747},"pre",{"className":743,"code":744,"language":745,"meta":746,"style":746},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F slides\u002Fcompile.js\nconst pptxgen = require('pptxgenjs');\nconst pres = new pptxgen();\npres.layout = 'LAYOUT_16x9';\n\nconst theme = {\n  primary: \"22223b\",    \u002F\u002F dark color for backgrounds\u002Ftext\n  secondary: \"4a4e69\",  \u002F\u002F secondary accent\n  accent: \"9a8c98\",     \u002F\u002F highlight color\n  light: \"c9ada7\",      \u002F\u002F light accent\n  bg: \"f2e9e4\"          \u002F\u002F background color\n};\n\nfor (let i = 1; i \u003C= 12; i++) {  \u002F\u002F adjust count as needed\n  const num = String(i).padStart(2, '0');\n  const slideModule = require(`.\u002Fslide-${num}.js`);\n  slideModule.createSlide(pres, theme);\n}\n\npres.writeFile({ fileName: '.\u002Foutput\u002Fpresentation.pptx' });\n","javascript","",[748],{"type":43,"tag":684,"props":749,"children":750},{"__ignoreMap":746},[751,763,821,857,898,908,930,970,1005,1040,1075,1106,1115,1123,1206,1286,1353,1396,1405,1413],{"type":43,"tag":752,"props":753,"children":756},"span",{"class":754,"line":755},"line",1,[757],{"type":43,"tag":752,"props":758,"children":760},{"style":759},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[761],{"type":49,"value":762},"\u002F\u002F slides\u002Fcompile.js\n",{"type":43,"tag":752,"props":764,"children":766},{"class":754,"line":765},2,[767,773,779,785,791,796,801,807,811,816],{"type":43,"tag":752,"props":768,"children":770},{"style":769},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[771],{"type":49,"value":772},"const",{"type":43,"tag":752,"props":774,"children":776},{"style":775},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[777],{"type":49,"value":778}," pptxgen ",{"type":43,"tag":752,"props":780,"children":782},{"style":781},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[783],{"type":49,"value":784},"=",{"type":43,"tag":752,"props":786,"children":788},{"style":787},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[789],{"type":49,"value":790}," require",{"type":43,"tag":752,"props":792,"children":793},{"style":775},[794],{"type":49,"value":795},"(",{"type":43,"tag":752,"props":797,"children":798},{"style":781},[799],{"type":49,"value":800},"'",{"type":43,"tag":752,"props":802,"children":804},{"style":803},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[805],{"type":49,"value":806},"pptxgenjs",{"type":43,"tag":752,"props":808,"children":809},{"style":781},[810],{"type":49,"value":800},{"type":43,"tag":752,"props":812,"children":813},{"style":775},[814],{"type":49,"value":815},")",{"type":43,"tag":752,"props":817,"children":818},{"style":781},[819],{"type":49,"value":820},";\n",{"type":43,"tag":752,"props":822,"children":824},{"class":754,"line":823},3,[825,829,834,838,843,848,853],{"type":43,"tag":752,"props":826,"children":827},{"style":769},[828],{"type":49,"value":772},{"type":43,"tag":752,"props":830,"children":831},{"style":775},[832],{"type":49,"value":833}," pres ",{"type":43,"tag":752,"props":835,"children":836},{"style":781},[837],{"type":49,"value":784},{"type":43,"tag":752,"props":839,"children":840},{"style":781},[841],{"type":49,"value":842}," new",{"type":43,"tag":752,"props":844,"children":845},{"style":787},[846],{"type":49,"value":847}," pptxgen",{"type":43,"tag":752,"props":849,"children":850},{"style":775},[851],{"type":49,"value":852},"()",{"type":43,"tag":752,"props":854,"children":855},{"style":781},[856],{"type":49,"value":820},{"type":43,"tag":752,"props":858,"children":860},{"class":754,"line":859},4,[861,866,871,876,880,885,890,894],{"type":43,"tag":752,"props":862,"children":863},{"style":775},[864],{"type":49,"value":865},"pres",{"type":43,"tag":752,"props":867,"children":868},{"style":781},[869],{"type":49,"value":870},".",{"type":43,"tag":752,"props":872,"children":873},{"style":775},[874],{"type":49,"value":875},"layout ",{"type":43,"tag":752,"props":877,"children":878},{"style":781},[879],{"type":49,"value":784},{"type":43,"tag":752,"props":881,"children":882},{"style":781},[883],{"type":49,"value":884}," '",{"type":43,"tag":752,"props":886,"children":887},{"style":803},[888],{"type":49,"value":889},"LAYOUT_16x9",{"type":43,"tag":752,"props":891,"children":892},{"style":781},[893],{"type":49,"value":800},{"type":43,"tag":752,"props":895,"children":896},{"style":781},[897],{"type":49,"value":820},{"type":43,"tag":752,"props":899,"children":901},{"class":754,"line":900},5,[902],{"type":43,"tag":752,"props":903,"children":905},{"emptyLinePlaceholder":904},true,[906],{"type":49,"value":907},"\n",{"type":43,"tag":752,"props":909,"children":911},{"class":754,"line":910},6,[912,916,921,925],{"type":43,"tag":752,"props":913,"children":914},{"style":769},[915],{"type":49,"value":772},{"type":43,"tag":752,"props":917,"children":918},{"style":775},[919],{"type":49,"value":920}," theme ",{"type":43,"tag":752,"props":922,"children":923},{"style":781},[924],{"type":49,"value":784},{"type":43,"tag":752,"props":926,"children":927},{"style":781},[928],{"type":49,"value":929}," {\n",{"type":43,"tag":752,"props":931,"children":933},{"class":754,"line":932},7,[934,940,945,950,955,960,965],{"type":43,"tag":752,"props":935,"children":937},{"style":936},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[938],{"type":49,"value":939},"  primary",{"type":43,"tag":752,"props":941,"children":942},{"style":781},[943],{"type":49,"value":944},":",{"type":43,"tag":752,"props":946,"children":947},{"style":781},[948],{"type":49,"value":949}," \"",{"type":43,"tag":752,"props":951,"children":952},{"style":803},[953],{"type":49,"value":954},"22223b",{"type":43,"tag":752,"props":956,"children":957},{"style":781},[958],{"type":49,"value":959},"\"",{"type":43,"tag":752,"props":961,"children":962},{"style":781},[963],{"type":49,"value":964},",",{"type":43,"tag":752,"props":966,"children":967},{"style":759},[968],{"type":49,"value":969},"    \u002F\u002F dark color for backgrounds\u002Ftext\n",{"type":43,"tag":752,"props":971,"children":973},{"class":754,"line":972},8,[974,979,983,987,992,996,1000],{"type":43,"tag":752,"props":975,"children":976},{"style":936},[977],{"type":49,"value":978},"  secondary",{"type":43,"tag":752,"props":980,"children":981},{"style":781},[982],{"type":49,"value":944},{"type":43,"tag":752,"props":984,"children":985},{"style":781},[986],{"type":49,"value":949},{"type":43,"tag":752,"props":988,"children":989},{"style":803},[990],{"type":49,"value":991},"4a4e69",{"type":43,"tag":752,"props":993,"children":994},{"style":781},[995],{"type":49,"value":959},{"type":43,"tag":752,"props":997,"children":998},{"style":781},[999],{"type":49,"value":964},{"type":43,"tag":752,"props":1001,"children":1002},{"style":759},[1003],{"type":49,"value":1004},"  \u002F\u002F secondary accent\n",{"type":43,"tag":752,"props":1006,"children":1008},{"class":754,"line":1007},9,[1009,1014,1018,1022,1027,1031,1035],{"type":43,"tag":752,"props":1010,"children":1011},{"style":936},[1012],{"type":49,"value":1013},"  accent",{"type":43,"tag":752,"props":1015,"children":1016},{"style":781},[1017],{"type":49,"value":944},{"type":43,"tag":752,"props":1019,"children":1020},{"style":781},[1021],{"type":49,"value":949},{"type":43,"tag":752,"props":1023,"children":1024},{"style":803},[1025],{"type":49,"value":1026},"9a8c98",{"type":43,"tag":752,"props":1028,"children":1029},{"style":781},[1030],{"type":49,"value":959},{"type":43,"tag":752,"props":1032,"children":1033},{"style":781},[1034],{"type":49,"value":964},{"type":43,"tag":752,"props":1036,"children":1037},{"style":759},[1038],{"type":49,"value":1039},"     \u002F\u002F highlight color\n",{"type":43,"tag":752,"props":1041,"children":1043},{"class":754,"line":1042},10,[1044,1049,1053,1057,1062,1066,1070],{"type":43,"tag":752,"props":1045,"children":1046},{"style":936},[1047],{"type":49,"value":1048},"  light",{"type":43,"tag":752,"props":1050,"children":1051},{"style":781},[1052],{"type":49,"value":944},{"type":43,"tag":752,"props":1054,"children":1055},{"style":781},[1056],{"type":49,"value":949},{"type":43,"tag":752,"props":1058,"children":1059},{"style":803},[1060],{"type":49,"value":1061},"c9ada7",{"type":43,"tag":752,"props":1063,"children":1064},{"style":781},[1065],{"type":49,"value":959},{"type":43,"tag":752,"props":1067,"children":1068},{"style":781},[1069],{"type":49,"value":964},{"type":43,"tag":752,"props":1071,"children":1072},{"style":759},[1073],{"type":49,"value":1074},"      \u002F\u002F light accent\n",{"type":43,"tag":752,"props":1076,"children":1078},{"class":754,"line":1077},11,[1079,1084,1088,1092,1097,1101],{"type":43,"tag":752,"props":1080,"children":1081},{"style":936},[1082],{"type":49,"value":1083},"  bg",{"type":43,"tag":752,"props":1085,"children":1086},{"style":781},[1087],{"type":49,"value":944},{"type":43,"tag":752,"props":1089,"children":1090},{"style":781},[1091],{"type":49,"value":949},{"type":43,"tag":752,"props":1093,"children":1094},{"style":803},[1095],{"type":49,"value":1096},"f2e9e4",{"type":43,"tag":752,"props":1098,"children":1099},{"style":781},[1100],{"type":49,"value":959},{"type":43,"tag":752,"props":1102,"children":1103},{"style":759},[1104],{"type":49,"value":1105},"          \u002F\u002F background color\n",{"type":43,"tag":752,"props":1107,"children":1109},{"class":754,"line":1108},12,[1110],{"type":43,"tag":752,"props":1111,"children":1112},{"style":781},[1113],{"type":49,"value":1114},"};\n",{"type":43,"tag":752,"props":1116,"children":1118},{"class":754,"line":1117},13,[1119],{"type":43,"tag":752,"props":1120,"children":1121},{"emptyLinePlaceholder":904},[1122],{"type":49,"value":907},{"type":43,"tag":752,"props":1124,"children":1126},{"class":754,"line":1125},14,[1127,1133,1138,1143,1148,1152,1158,1163,1167,1172,1177,1181,1186,1191,1196,1201],{"type":43,"tag":752,"props":1128,"children":1130},{"style":1129},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1131],{"type":49,"value":1132},"for",{"type":43,"tag":752,"props":1134,"children":1135},{"style":775},[1136],{"type":49,"value":1137}," (",{"type":43,"tag":752,"props":1139,"children":1140},{"style":769},[1141],{"type":49,"value":1142},"let",{"type":43,"tag":752,"props":1144,"children":1145},{"style":775},[1146],{"type":49,"value":1147}," i ",{"type":43,"tag":752,"props":1149,"children":1150},{"style":781},[1151],{"type":49,"value":784},{"type":43,"tag":752,"props":1153,"children":1155},{"style":1154},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1156],{"type":49,"value":1157}," 1",{"type":43,"tag":752,"props":1159,"children":1160},{"style":781},[1161],{"type":49,"value":1162},";",{"type":43,"tag":752,"props":1164,"children":1165},{"style":775},[1166],{"type":49,"value":1147},{"type":43,"tag":752,"props":1168,"children":1169},{"style":781},[1170],{"type":49,"value":1171},"\u003C=",{"type":43,"tag":752,"props":1173,"children":1174},{"style":1154},[1175],{"type":49,"value":1176}," 12",{"type":43,"tag":752,"props":1178,"children":1179},{"style":781},[1180],{"type":49,"value":1162},{"type":43,"tag":752,"props":1182,"children":1183},{"style":775},[1184],{"type":49,"value":1185}," i",{"type":43,"tag":752,"props":1187,"children":1188},{"style":781},[1189],{"type":49,"value":1190},"++",{"type":43,"tag":752,"props":1192,"children":1193},{"style":775},[1194],{"type":49,"value":1195},") ",{"type":43,"tag":752,"props":1197,"children":1198},{"style":781},[1199],{"type":49,"value":1200},"{",{"type":43,"tag":752,"props":1202,"children":1203},{"style":759},[1204],{"type":49,"value":1205},"  \u002F\u002F adjust count as needed\n",{"type":43,"tag":752,"props":1207,"children":1209},{"class":754,"line":1208},15,[1210,1215,1220,1225,1230,1234,1239,1243,1247,1252,1256,1261,1265,1269,1274,1278,1282],{"type":43,"tag":752,"props":1211,"children":1212},{"style":769},[1213],{"type":49,"value":1214},"  const",{"type":43,"tag":752,"props":1216,"children":1217},{"style":775},[1218],{"type":49,"value":1219}," num",{"type":43,"tag":752,"props":1221,"children":1222},{"style":781},[1223],{"type":49,"value":1224}," =",{"type":43,"tag":752,"props":1226,"children":1227},{"style":787},[1228],{"type":49,"value":1229}," String",{"type":43,"tag":752,"props":1231,"children":1232},{"style":936},[1233],{"type":49,"value":795},{"type":43,"tag":752,"props":1235,"children":1236},{"style":775},[1237],{"type":49,"value":1238},"i",{"type":43,"tag":752,"props":1240,"children":1241},{"style":936},[1242],{"type":49,"value":815},{"type":43,"tag":752,"props":1244,"children":1245},{"style":781},[1246],{"type":49,"value":870},{"type":43,"tag":752,"props":1248,"children":1249},{"style":787},[1250],{"type":49,"value":1251},"padStart",{"type":43,"tag":752,"props":1253,"children":1254},{"style":936},[1255],{"type":49,"value":795},{"type":43,"tag":752,"props":1257,"children":1258},{"style":1154},[1259],{"type":49,"value":1260},"2",{"type":43,"tag":752,"props":1262,"children":1263},{"style":781},[1264],{"type":49,"value":964},{"type":43,"tag":752,"props":1266,"children":1267},{"style":781},[1268],{"type":49,"value":884},{"type":43,"tag":752,"props":1270,"children":1271},{"style":803},[1272],{"type":49,"value":1273},"0",{"type":43,"tag":752,"props":1275,"children":1276},{"style":781},[1277],{"type":49,"value":800},{"type":43,"tag":752,"props":1279,"children":1280},{"style":936},[1281],{"type":49,"value":815},{"type":43,"tag":752,"props":1283,"children":1284},{"style":781},[1285],{"type":49,"value":820},{"type":43,"tag":752,"props":1287,"children":1289},{"class":754,"line":1288},16,[1290,1294,1299,1303,1307,1311,1316,1321,1326,1331,1336,1341,1345,1349],{"type":43,"tag":752,"props":1291,"children":1292},{"style":769},[1293],{"type":49,"value":1214},{"type":43,"tag":752,"props":1295,"children":1296},{"style":775},[1297],{"type":49,"value":1298}," slideModule",{"type":43,"tag":752,"props":1300,"children":1301},{"style":781},[1302],{"type":49,"value":1224},{"type":43,"tag":752,"props":1304,"children":1305},{"style":787},[1306],{"type":49,"value":790},{"type":43,"tag":752,"props":1308,"children":1309},{"style":936},[1310],{"type":49,"value":795},{"type":43,"tag":752,"props":1312,"children":1313},{"style":781},[1314],{"type":49,"value":1315},"`",{"type":43,"tag":752,"props":1317,"children":1318},{"style":803},[1319],{"type":49,"value":1320},".\u002Fslide-",{"type":43,"tag":752,"props":1322,"children":1323},{"style":781},[1324],{"type":49,"value":1325},"${",{"type":43,"tag":752,"props":1327,"children":1328},{"style":775},[1329],{"type":49,"value":1330},"num",{"type":43,"tag":752,"props":1332,"children":1333},{"style":781},[1334],{"type":49,"value":1335},"}",{"type":43,"tag":752,"props":1337,"children":1338},{"style":803},[1339],{"type":49,"value":1340},".js",{"type":43,"tag":752,"props":1342,"children":1343},{"style":781},[1344],{"type":49,"value":1315},{"type":43,"tag":752,"props":1346,"children":1347},{"style":936},[1348],{"type":49,"value":815},{"type":43,"tag":752,"props":1350,"children":1351},{"style":781},[1352],{"type":49,"value":820},{"type":43,"tag":752,"props":1354,"children":1356},{"class":754,"line":1355},17,[1357,1362,1366,1371,1375,1379,1383,1388,1392],{"type":43,"tag":752,"props":1358,"children":1359},{"style":775},[1360],{"type":49,"value":1361},"  slideModule",{"type":43,"tag":752,"props":1363,"children":1364},{"style":781},[1365],{"type":49,"value":870},{"type":43,"tag":752,"props":1367,"children":1368},{"style":787},[1369],{"type":49,"value":1370},"createSlide",{"type":43,"tag":752,"props":1372,"children":1373},{"style":936},[1374],{"type":49,"value":795},{"type":43,"tag":752,"props":1376,"children":1377},{"style":775},[1378],{"type":49,"value":865},{"type":43,"tag":752,"props":1380,"children":1381},{"style":781},[1382],{"type":49,"value":964},{"type":43,"tag":752,"props":1384,"children":1385},{"style":775},[1386],{"type":49,"value":1387}," theme",{"type":43,"tag":752,"props":1389,"children":1390},{"style":936},[1391],{"type":49,"value":815},{"type":43,"tag":752,"props":1393,"children":1394},{"style":781},[1395],{"type":49,"value":820},{"type":43,"tag":752,"props":1397,"children":1399},{"class":754,"line":1398},18,[1400],{"type":43,"tag":752,"props":1401,"children":1402},{"style":781},[1403],{"type":49,"value":1404},"}\n",{"type":43,"tag":752,"props":1406,"children":1408},{"class":754,"line":1407},19,[1409],{"type":43,"tag":752,"props":1410,"children":1411},{"emptyLinePlaceholder":904},[1412],{"type":49,"value":907},{"type":43,"tag":752,"props":1414,"children":1416},{"class":754,"line":1415},20,[1417,1421,1425,1430,1434,1438,1443,1447,1451,1456,1460,1465,1469],{"type":43,"tag":752,"props":1418,"children":1419},{"style":775},[1420],{"type":49,"value":865},{"type":43,"tag":752,"props":1422,"children":1423},{"style":781},[1424],{"type":49,"value":870},{"type":43,"tag":752,"props":1426,"children":1427},{"style":787},[1428],{"type":49,"value":1429},"writeFile",{"type":43,"tag":752,"props":1431,"children":1432},{"style":775},[1433],{"type":49,"value":795},{"type":43,"tag":752,"props":1435,"children":1436},{"style":781},[1437],{"type":49,"value":1200},{"type":43,"tag":752,"props":1439,"children":1440},{"style":936},[1441],{"type":49,"value":1442}," fileName",{"type":43,"tag":752,"props":1444,"children":1445},{"style":781},[1446],{"type":49,"value":944},{"type":43,"tag":752,"props":1448,"children":1449},{"style":781},[1450],{"type":49,"value":884},{"type":43,"tag":752,"props":1452,"children":1453},{"style":803},[1454],{"type":49,"value":1455},".\u002Foutput\u002Fpresentation.pptx",{"type":43,"tag":752,"props":1457,"children":1458},{"style":781},[1459],{"type":49,"value":800},{"type":43,"tag":752,"props":1461,"children":1462},{"style":781},[1463],{"type":49,"value":1464}," }",{"type":43,"tag":752,"props":1466,"children":1467},{"style":775},[1468],{"type":49,"value":815},{"type":43,"tag":752,"props":1470,"children":1471},{"style":781},[1472],{"type":49,"value":820},{"type":43,"tag":52,"props":1474,"children":1475},{},[1476,1478],{"type":49,"value":1477},"Run with: ",{"type":43,"tag":684,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":49,"value":1483},"cd slides && node compile.js",{"type":43,"tag":1485,"props":1486,"children":1487},"hr",{},[],{"type":43,"tag":713,"props":1489,"children":1491},{"id":1490},"qa-required",[1492],{"type":49,"value":1493},"QA (Required)",{"type":43,"tag":52,"props":1495,"children":1496},{},[1497],{"type":43,"tag":58,"props":1498,"children":1499},{},[1500],{"type":49,"value":1501},"Assume there are problems. Your job is to find them.",{"type":43,"tag":52,"props":1503,"children":1504},{},[1505],{"type":49,"value":1506},"Your 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.",{"type":43,"tag":353,"props":1508,"children":1510},{"id":1509},"content-qa",[1511],{"type":49,"value":1512},"Content QA",{"type":43,"tag":741,"props":1514,"children":1518},{"className":1515,"code":1516,"language":1517,"meta":746,"style":746},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python -m markitdown output.pptx\n","bash",[1519],{"type":43,"tag":684,"props":1520,"children":1521},{"__ignoreMap":746},[1522],{"type":43,"tag":752,"props":1523,"children":1524},{"class":754,"line":755},[1525,1531,1536,1541],{"type":43,"tag":752,"props":1526,"children":1528},{"style":1527},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1529],{"type":49,"value":1530},"python",{"type":43,"tag":752,"props":1532,"children":1533},{"style":803},[1534],{"type":49,"value":1535}," -m",{"type":43,"tag":752,"props":1537,"children":1538},{"style":803},[1539],{"type":49,"value":1540}," markitdown",{"type":43,"tag":752,"props":1542,"children":1543},{"style":803},[1544],{"type":49,"value":1545}," output.pptx\n",{"type":43,"tag":52,"props":1547,"children":1548},{},[1549],{"type":49,"value":1550},"Check for missing content, typos, wrong order.",{"type":43,"tag":52,"props":1552,"children":1553},{},[1554],{"type":43,"tag":58,"props":1555,"children":1556},{},[1557],{"type":49,"value":1558},"When using templates, check for leftover placeholder text:",{"type":43,"tag":741,"props":1560,"children":1562},{"className":1515,"code":1561,"language":1517,"meta":746,"style":746},"python -m markitdown output.pptx | grep -iE \"xxxx|lorem|ipsum|this.*(page|slide).*layout\"\n",[1563],{"type":43,"tag":684,"props":1564,"children":1565},{"__ignoreMap":746},[1566],{"type":43,"tag":752,"props":1567,"children":1568},{"class":754,"line":755},[1569,1573,1577,1581,1586,1591,1596,1601,1605,1610],{"type":43,"tag":752,"props":1570,"children":1571},{"style":1527},[1572],{"type":49,"value":1530},{"type":43,"tag":752,"props":1574,"children":1575},{"style":803},[1576],{"type":49,"value":1535},{"type":43,"tag":752,"props":1578,"children":1579},{"style":803},[1580],{"type":49,"value":1540},{"type":43,"tag":752,"props":1582,"children":1583},{"style":803},[1584],{"type":49,"value":1585}," output.pptx",{"type":43,"tag":752,"props":1587,"children":1588},{"style":781},[1589],{"type":49,"value":1590}," |",{"type":43,"tag":752,"props":1592,"children":1593},{"style":1527},[1594],{"type":49,"value":1595}," grep",{"type":43,"tag":752,"props":1597,"children":1598},{"style":803},[1599],{"type":49,"value":1600}," -iE",{"type":43,"tag":752,"props":1602,"children":1603},{"style":781},[1604],{"type":49,"value":949},{"type":43,"tag":752,"props":1606,"children":1607},{"style":803},[1608],{"type":49,"value":1609},"xxxx|lorem|ipsum|this.*(page|slide).*layout",{"type":43,"tag":752,"props":1611,"children":1612},{"style":781},[1613],{"type":49,"value":1614},"\"\n",{"type":43,"tag":52,"props":1616,"children":1617},{},[1618],{"type":49,"value":1619},"If grep returns results, fix them before declaring success.",{"type":43,"tag":353,"props":1621,"children":1623},{"id":1622},"verification-loop",[1624],{"type":49,"value":1625},"Verification Loop",{"type":43,"tag":73,"props":1627,"children":1628},{},[1629,1642,1652,1657,1667],{"type":43,"tag":77,"props":1630,"children":1631},{},[1632,1634,1640],{"type":49,"value":1633},"Generate slides → Extract text with ",{"type":43,"tag":684,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":49,"value":1639},"python -m markitdown output.pptx",{"type":49,"value":1641}," → Review content",{"type":43,"tag":77,"props":1643,"children":1644},{},[1645,1650],{"type":43,"tag":58,"props":1646,"children":1647},{},[1648],{"type":49,"value":1649},"List issues found",{"type":49,"value":1651}," (if none found, look again more critically)",{"type":43,"tag":77,"props":1653,"children":1654},{},[1655],{"type":49,"value":1656},"Fix issues",{"type":43,"tag":77,"props":1658,"children":1659},{},[1660,1665],{"type":43,"tag":58,"props":1661,"children":1662},{},[1663],{"type":49,"value":1664},"Re-verify affected slides",{"type":49,"value":1666}," — one fix often creates another problem",{"type":43,"tag":77,"props":1668,"children":1669},{},[1670],{"type":49,"value":1671},"Repeat until a full pass reveals no new issues",{"type":43,"tag":52,"props":1673,"children":1674},{},[1675],{"type":43,"tag":58,"props":1676,"children":1677},{},[1678],{"type":49,"value":1679},"Do not declare success until you've completed at least one fix-and-verify cycle.",{"type":43,"tag":1485,"props":1681,"children":1682},{},[],{"type":43,"tag":713,"props":1684,"children":1686},{"id":1685},"dependencies",[1687],{"type":49,"value":1688},"Dependencies",{"type":43,"tag":86,"props":1690,"children":1691},{},[1692,1703],{"type":43,"tag":77,"props":1693,"children":1694},{},[1695,1701],{"type":43,"tag":684,"props":1696,"children":1698},{"className":1697},[],[1699],{"type":49,"value":1700},"pip install \"markitdown[pptx]\"",{"type":49,"value":1702}," - text extraction",{"type":43,"tag":77,"props":1704,"children":1705},{},[1706,1712],{"type":43,"tag":684,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":49,"value":1711},"npm install -g pptxgenjs",{"type":49,"value":1713}," - creating from scratch",{"type":43,"tag":1715,"props":1716,"children":1717},"style",{},[1718],{"type":49,"value":1719},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1721,"total":1842},[1722,1744,1760,1773,1786,1806,1824],{"slug":1723,"name":1723,"fn":1724,"description":1725,"org":1726,"tags":1727,"stars":26,"repoUrl":27,"updatedAt":1743},"android-native-dev","develop Android native applications","Android native application development and UI design guide. Covers Material Design 3, Kotlin\u002FCompose development, project configuration, accessibility, and build troubleshooting. Read this before Android native application development.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1728,1731,1734,1737,1740],{"name":1729,"slug":1730,"type":16},"Accessibility","accessibility",{"name":1732,"slug":1733,"type":16},"Android","android",{"name":1735,"slug":1736,"type":16},"Kotlin","kotlin",{"name":1738,"slug":1739,"type":16},"Mobile","mobile",{"name":1741,"slug":1742,"type":16},"UI Components","ui-components","2026-07-13T06:16:54.247834",{"slug":1745,"name":1745,"fn":1746,"description":1747,"org":1748,"tags":1749,"stars":26,"repoUrl":27,"updatedAt":1759},"buddy-sings","generate singing performances for AI companions","Use when user wants their Claude Code pet (\u002Fbuddy) to sing a song. Triggers on any request that combines the concept of their Claude Code buddy, pet, or companion with singing or music. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1750,1753,1756],{"name":1751,"slug":1752,"type":16},"Agents","agents",{"name":1754,"slug":1755,"type":16},"Audio","audio",{"name":1757,"slug":1758,"type":16},"Creative","creative","2026-07-13T06:16:35.130644",{"slug":1761,"name":1761,"fn":1762,"description":1763,"org":1764,"tags":1765,"stars":26,"repoUrl":27,"updatedAt":1772},"color-font-skill","select color palettes and font pairings","Choose presentation-ready color palettes and font pairings for PPT\u002Fdesign tasks. Use when users ask for visual theme choices, brand-safe palettes, or font recommendations. Triggers include: 配色, 色板, 字体, color palette, font, PPT配色, 字体搭配.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1766,1767,1768,1771],{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":1769,"slug":1770,"type":16},"Themes","themes",{"name":358,"slug":355,"type":16},"2026-07-13T06:17:02.785587",{"slug":1774,"name":1774,"fn":1775,"description":1776,"org":1777,"tags":1778,"stars":26,"repoUrl":27,"updatedAt":1785},"design-style-skill","select visual design systems for presentations","Select a consistent visual design system for PPT slides using radius\u002Fspacing style recipes. Use when users ask for overall style direction or component styling consistency. Includes Sharp\u002FSoft\u002FRounded\u002FPill recipes, component mappings, typography\u002Fspacing rules, and mixing guidance. Triggers: 风格, style, radius, spacing, 圆角, 间距, PPT风格, 视觉风格, design style, component style.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1779,1780,1783,1784],{"name":24,"slug":25,"type":16},{"name":1781,"slug":1782,"type":16},"Design System","design-system",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},"2026-07-13T06:17:10.398389",{"slug":1787,"name":1787,"fn":1788,"description":1789,"org":1790,"tags":1791,"stars":26,"repoUrl":27,"updatedAt":1805},"flutter-dev","build cross-platform apps with Flutter","Flutter cross-platform development guide covering widget patterns, Riverpod\u002FBloc state management, GoRouter navigation, performance optimization, and platform-specific implementations. Includes const optimization, responsive layouts, testing strategies, and DevTools profiling.\nUse when: building Flutter apps, implementing state management (Riverpod\u002FBloc), setting up GoRouter navigation, creating custom widgets, optimizing performance, writing widget tests, cross-platform development.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1792,1795,1798,1799,1802],{"name":1793,"slug":1794,"type":16},"Dart","dart",{"name":1796,"slug":1797,"type":16},"Flutter","flutter",{"name":1738,"slug":1739,"type":16},{"name":1800,"slug":1801,"type":16},"Performance","performance",{"name":1803,"slug":1804,"type":16},"State Management","state-management","2026-07-13T06:16:36.626679",{"slug":1807,"name":1807,"fn":1808,"description":1809,"org":1810,"tags":1811,"stars":26,"repoUrl":27,"updatedAt":1823},"frontend-dev","build visually striking frontend web pages","Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1812,1815,1816,1817,1820],{"name":1813,"slug":1814,"type":16},"Animation","animation",{"name":1757,"slug":1758,"type":16},{"name":24,"slug":25,"type":16},{"name":1818,"slug":1819,"type":16},"Frontend","frontend",{"name":1821,"slug":1822,"type":16},"Web Development","web-development","2026-07-13T06:16:39.108827",{"slug":1825,"name":1825,"fn":1826,"description":1827,"org":1828,"tags":1829,"stars":26,"repoUrl":27,"updatedAt":1841},"fullstack-dev","build full-stack web applications","Full-stack backend architecture and frontend-backend integration guide.\nTRIGGER when: building a full-stack app, creating REST API with frontend, scaffolding backend service,\nbuilding todo app, building CRUD app, building real-time app, building chat app,\nExpress + React, Next.js API, Node.js backend, Python backend, Go backend,\ndesigning service layers, implementing error handling, managing config\u002Fauth,\nsetting up API clients, implementing auth flows, handling file uploads,\nadding real-time features (SSE\u002FWebSocket), hardening for production.\nDO NOT TRIGGER when: pure frontend UI work, pure CSS\u002Fstyling, database schema only.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1830,1833,1834,1837,1840],{"name":1831,"slug":1832,"type":16},"Backend","backend",{"name":1818,"slug":1819,"type":16},{"name":1835,"slug":1836,"type":16},"Full-stack","full-stack",{"name":1838,"slug":1839,"type":16},"REST API","rest-api",{"name":1821,"slug":1822,"type":16},"2026-07-13T06:16:43.219005",22,{"items":1844,"total":1965},[1845,1853,1859,1866,1873,1881,1889,1897,1912,1928,1945,1955],{"slug":1723,"name":1723,"fn":1724,"description":1725,"org":1846,"tags":1847,"stars":26,"repoUrl":27,"updatedAt":1743},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1848,1849,1850,1851,1852],{"name":1729,"slug":1730,"type":16},{"name":1732,"slug":1733,"type":16},{"name":1735,"slug":1736,"type":16},{"name":1738,"slug":1739,"type":16},{"name":1741,"slug":1742,"type":16},{"slug":1745,"name":1745,"fn":1746,"description":1747,"org":1854,"tags":1855,"stars":26,"repoUrl":27,"updatedAt":1759},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1856,1857,1858],{"name":1751,"slug":1752,"type":16},{"name":1754,"slug":1755,"type":16},{"name":1757,"slug":1758,"type":16},{"slug":1761,"name":1761,"fn":1762,"description":1763,"org":1860,"tags":1861,"stars":26,"repoUrl":27,"updatedAt":1772},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1862,1863,1864,1865],{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":1769,"slug":1770,"type":16},{"name":358,"slug":355,"type":16},{"slug":1774,"name":1774,"fn":1775,"description":1776,"org":1867,"tags":1868,"stars":26,"repoUrl":27,"updatedAt":1785},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1869,1870,1871,1872],{"name":24,"slug":25,"type":16},{"name":1781,"slug":1782,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":1787,"name":1787,"fn":1788,"description":1789,"org":1874,"tags":1875,"stars":26,"repoUrl":27,"updatedAt":1805},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1876,1877,1878,1879,1880],{"name":1793,"slug":1794,"type":16},{"name":1796,"slug":1797,"type":16},{"name":1738,"slug":1739,"type":16},{"name":1800,"slug":1801,"type":16},{"name":1803,"slug":1804,"type":16},{"slug":1807,"name":1807,"fn":1808,"description":1809,"org":1882,"tags":1883,"stars":26,"repoUrl":27,"updatedAt":1823},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1884,1885,1886,1887,1888],{"name":1813,"slug":1814,"type":16},{"name":1757,"slug":1758,"type":16},{"name":24,"slug":25,"type":16},{"name":1818,"slug":1819,"type":16},{"name":1821,"slug":1822,"type":16},{"slug":1825,"name":1825,"fn":1826,"description":1827,"org":1890,"tags":1891,"stars":26,"repoUrl":27,"updatedAt":1841},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1892,1893,1894,1895,1896],{"name":1831,"slug":1832,"type":16},{"name":1818,"slug":1819,"type":16},{"name":1835,"slug":1836,"type":16},{"name":1838,"slug":1839,"type":16},{"name":1821,"slug":1822,"type":16},{"slug":1898,"name":1898,"fn":1899,"description":1900,"org":1901,"tags":1902,"stars":26,"repoUrl":27,"updatedAt":1911},"gif-sticker-maker","create animated GIF stickers from photos","Convert photos (people, pets, objects, logos) into 4 animated GIF stickers with captions.\nUse when: user wants to create cartoon stickers, GIF expressions, emoji packs, animated avatars,\nor convert photos to Funko Pop \u002F Pop Mart blind box style animations.\nTriggers: sticker, GIF, cartoon, emoji, expression pack, avatar animation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1903,1904,1905,1908],{"name":1813,"slug":1814,"type":16},{"name":1757,"slug":1758,"type":16},{"name":1906,"slug":1907,"type":16},"Images","images",{"name":1909,"slug":1910,"type":16},"Media","media","2026-07-13T06:16:51.74461",{"slug":1913,"name":1913,"fn":1914,"description":1915,"org":1916,"tags":1917,"stars":26,"repoUrl":27,"updatedAt":1927},"ios-application-dev","develop iOS applications with SwiftUI and UIKit","iOS application development guide covering UIKit, SnapKit, and SwiftUI. Includes touch targets, safe areas, navigation patterns, Dynamic Type, Dark Mode, accessibility, collection views, common UI components, and SwiftUI design guidelines. For detailed references on specific topics, see the reference files.\nUse when: developing iOS apps, implementing UI, reviewing iOS code, working with UIKit\u002FSnapKit\u002FSwiftUI layouts, building iPhone interfaces, Swift mobile development, Apple HIG compliance, iOS accessibility implementation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1918,1919,1922,1923,1926],{"name":1729,"slug":1730,"type":16},{"name":1920,"slug":1921,"type":16},"iOS","ios",{"name":1738,"slug":1739,"type":16},{"name":1924,"slug":1925,"type":16},"SwiftUI","swiftui",{"name":1741,"slug":1742,"type":16},"2026-07-13T06:16:55.686092",{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":1932,"tags":1933,"stars":26,"repoUrl":27,"updatedAt":1944},"minimax-docx","create and edit DOCX documents","Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET). Three pipelines: (A) create new documents from scratch, (B) fill\u002Fedit content in existing documents, (C) apply template formatting with XSD validation gate-check. MUST use this skill whenever the user wants to produce, modify, or format a Word document — including when they say \"write a report\", \"draft a proposal\", \"make a contract\", \"fill in this form\", \"reformat to match this template\", or any task whose final output is a .docx file. Even if the user doesn't mention \"docx\" explicitly, if the task implies a printable\u002Fformal document, use this skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1934,1937,1940,1943],{"name":1935,"slug":1936,"type":16},"Documents","documents",{"name":1938,"slug":1939,"type":16},"DOCX","docx",{"name":1941,"slug":1942,"type":16},"Office","office",{"name":21,"slug":22,"type":16},"2026-07-13T06:16:40.461868",{"slug":1946,"name":1946,"fn":1947,"description":1948,"org":1949,"tags":1950,"stars":26,"repoUrl":27,"updatedAt":1954},"minimax-music-gen","generate music and audio tracks","Use when user wants to generate music, songs, or audio tracks. Triggers on any request involving music creation, song writing, lyrics generation, audio production, or covers. Also triggers when user provides lyrics and wants them turned into a song, or describes a mood\u002Fscene and wants background music. Supports multilingual triggers — match equivalent phrases in any language. Do NOT use for music playback of existing files, music theory questions, or music recommendation without generation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1951,1952,1953],{"name":1754,"slug":1755,"type":16},{"name":1757,"slug":1758,"type":16},{"name":1909,"slug":1910,"type":16},"2026-07-13T06:16:50.381758",{"slug":1956,"name":1956,"fn":1957,"description":1958,"org":1959,"tags":1960,"stars":26,"repoUrl":27,"updatedAt":1964},"minimax-music-playlist","generate personalized music playlists","Generate personalized music playlists by analyzing the user's music taste and generation feedback history. Triggers on any request involving playlist generation, music taste profiling, or personalized music recommendations. Supports multilingual triggers — match equivalent phrases in any language.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1961,1962,1963],{"name":1754,"slug":1755,"type":16},{"name":1757,"slug":1758,"type":16},{"name":1909,"slug":1910,"type":16},"2026-07-13T06:16:57.002997",37]