{"id":"81e84592-d2ce-49f2-aecc-8001b4629ef2","shortId":"LJU7v5","kind":"skill","title":"pptx","tagline":"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 ","description":"# PPTX 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](editing.md) |\n| Create from scratch | Read [pptxgenjs.md](pptxgenjs.md) |\n\n---\n\n## Reading Content\n\n```bash\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\n**Read [editing.md](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\n**Read [pptxgenjs.md](pptxgenjs.md) for full details.**\n\nUse when no template or reference presentation is available.\n\n---\n\n## Design Ideas\n\n**Don'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\n**Every slide needs a visual element** — image, chart, icon, or shape. Text-only slides are forgettable.\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/after, pros/cons, 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---\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### 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](#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\n**Do 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\n```bash\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\n```bash\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","tags":["pptx","skills","anthropics","agent-skills"],"capabilities":["skill","source-anthropics","skill-pptx","topic-agent-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/anthropics/skills/pptx","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add anthropics/skills","source_repo":"https://github.com/anthropics/skills","install_from":"skills.sh"}},"qualityScore":"0.950","qualityRationale":"deterministic score 0.95 from registry signals: · indexed on github topic:agent-skills · official publisher · 136948 github stars · SKILL.md body (8,344 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:50:07.652Z","embedding":null,"createdAt":"2026-04-18T20:23:32.403Z","updatedAt":"2026-05-18T18:50:07.652Z","lastSeenAt":"2026-05-18T18:50:07.652Z","tsv":"'-0.5':577 '-12':569 '-16':565,633 '-2':210 '-24':559 '-3':869 '-44':553 '-70':205 '-72':459 '/path/to/slide-01.jpg':1048 '/path/to/slide-02.jpg':1053 '0':712 '0.3':576,654,963 '0.5':573,656,985 '00a896':353 '028090':351 '02c39a':355 '065a82':332 '1':104,209,1047,1066 '10':568 '14':564,632 '150':1149,1169 '1c7293':335 '1e2761':299 '2':109,868,1052,1073 '20':558 '212121':347 '21295c':337 '2c5f2d':308 '2f3c7e':320,382 '2x2':425 '2x3':427 '3':1084 '36':552 '36454f':341 '36pt':627 '4':1087 '5':1099 '50808e':372 '60':204,458 '69a297':370 '6d2e46':359 '84b59f':368 '97bc62':310 '990011':376 'a26769':361 'a7beae':328 'accent':216,296,493,755 'account':722 'across':271,603 'add':685 'affect':1091 'ai':765 'ai-gener':764 'align':612,703,991 'almost':790 'analyz':105,1044 'anoth':979,1097 'anyon':151 'approach':793 'area':973,1036 'arial':510,531,533,543 'arrow':480 'assum':776,912 'auto':1202 'auto-configur':1201 'avail':134 'avoid':589,692,741 'b85042':324 'background':147,226,740,746,752,771,1005,1015 'bash':78,819,839,1137,1165 'before/after':467 'berri':357,360 'big':456 'black':348,532 'bleed':441 'block':436,580 'blue':287,303,334,640 'bodi':523,527,562,608,635 'bold':164,375,421,555,561 'border':268 'bore':140 'boundari':937 'box':700,716,1021 'breath':582 'brief':1050,1055 'bug':797 'bullet':143,695 'cadcfc':301 'calibri':530,534,535,538,541,547 'callout':455,602 'calm':367 'cambria':537 'caption':567 'card':600 'cards/sections':966 'carri':269 'caus':1024 'center':607,616 'charcoal':339,342 'chart':394,688 'check':824,834 'cherri':374,377 'choic':196 'choos':276,501,653 'circl':263,420,487,1019 'citat':953 'clean':115,522 'close':962 'code':877 'collid':956 'color':168,181,201,220,262,274,277,419,486,642,772,1004 'column':408,466,599,986 'commit':237,245,671 'common':590 'comparison':465 'complet':184,1116 'concern':1038 'conclus':229 'configur':1203 'confirm':801 'consid':152 'consist':660,992 'consola':546 'content':42,57,77,114,166,233,435,449,579,817,827,958,1029 'content-inform':165 'contrast':224,624,730,737,995,1008,1018 'convers':1200 'convert':892,897,901,1069,1125,1128,1142 'convert-to':1141 'converting-to-imag':900 'coral':314,317 'correct':792 'cramp':977 'cream':313,358,365,1003 'cream-color':1002 'creat':22,64,70,117,139,680,1096,1153,1194 'critic':1083 'cut':933 'cycl':1124 'dark':225,239,748,751,1011,1014 'dark/light':223 'data':451 'deck':24,26 'declar':860,1111 'decor':938 'deep':333 'default':284,508,638 'depend':1178 'descript':423,1051,1056 'design':135,174 'detail':103,125 'differ':185 'display':452 'distinct':252 'domin':197,203 'dusti':362 'e.g':997,1010 'e7e8d1':326 'ece2d0':364 'edg':709,984 'edges/box':936 'edit':62,96,113 'editing.md':68,69,99,100 'element':253,392,548,691,731,921,929,960,989 'elsewher':46 'empti':972 'energi':315 'enough':195,816 'environ':1206 'equal':199,221 'etc':1156 'eucalyptus':371 'even':38,866,1039 'everi':272,387,587 'excess':1025 'execut':298 'expect':883,1049,1054 'extract':32,41,80,1184 'eye':891 'f':1170 'f2f2f2':343 'f5f5f5':312 'f96167':316 'f9e795':318 'fcf6f5':378 'feel':173,244 'ffffff':304 'file':9,37 'fill':586 'find':784,916 'first':787,809 'fix':857,1085,1094,1121,1164,1177 'fix-and-verifi':1120 'flow':477 'font':504,514,524,526,528 'footer':955 'forest':306,309 'forget':698 'forgett':403 'found':805,1060,1076,1079 'frame':259 'fresh':890 'full':102,124,443,1103 'fulli':672 'g':1192 'gap':657,964,970 'garamond':545 'generat':766,1067 'generic':286 'georgia':529 'give':218 'gold':319 'gradient':331 'gray':999 'grep':844,854 'grid':428,433,1189 'guid':55 'half':440 'half-ble':439 'hallmark':762 'hard':815 'haven':191 'header':422,491,513,525,557 'headless':1140 'hunt':798 'ice':302 'icon':260,395,414,417,483,687,732,1009,1012 'idea':136,153 'ie':845 'illustr':411 'imag':258,393,429,442,686,895,899,903,1046,1071,1127,1133,1213 'impact':542 'impress':150 'inch':588 'includ':21,1061 'individu':1131 'inform':167 'input':16 'inspect':810,909,1072,1136 'inspir':292 'instal':1180,1186,1191 'instead':773 'insuffici':980 'interest':503 'involv':11 'ipsum':848 'issu':807,915,1034,1059,1075,1086,1108 'ital':492 'job':781 'jpeg':1147,1167 'keep':674 'key':496 'l':1172 'label':463 'larg':453,971 'layout':404,597,852 'least':1118 'leav':581,667 'left':410,444,611 'left-align':610 'leftov':836,1027 'libreoffic':1197 'light':231,536,742,745,998 'like':47 'line':704,756,925,939,944,951 'list':156,615,1033,1074 'look':814,918,1080 'loop':1065 'lorem':847 'low':729,994,1007 'low-contrast':728,993,1006 'm':59,82,821,841 'made':193 'manipul':111 'margin':575,711,981 'markitdown':60,83,822,842,1181 'match':279 'midnight':297,338 'minim':340 'minimum':574 'minor':1041,1062 'mint':356 'miss':826 'mistak':591 'mix':650 'moss':307,311 'motif':249 'ms':540 'mute':571 'n':1171,1173 'narrow':1023 'navi':300,321,383 'near':967 'need':389,626,735 'never':217,753,791 'new':1107 'next':488 'none':1078 'npm':1190 'number':457,478 'ocean':330 'off-whit':344,379 'offset':718 'often':1095 'one':200,214,251,431,664,975,1063,1093,1119 'option':405,473 'order':830 'output':17 'output.pdf':1150,1174 'output.pptx':823,843,1145 'overflow':931 'overlap':920 'overlay':450 'overview':86 'pack':116 'pad':701,724 'page':850 'pair':505,518 'palatino':544 'palett':169,171,275,290 'paragraph':613 'pars':30 'pass':1104 'pdf':1144,1199,1211 'pdftoppm':1146,1166,1210 'person':516 'pick':162,250,511,641 'pillow':1187 'pip':1179,1185 'pitch':25 'place':976 'placehold':837,1028 'plain':142,670,693 'polish':482 'poppler':1209 'posit':940 'pptx':1,8,36,50,1182 'pptxgenj':1193 'pptxgenjs.md':74,75,121,122 'premium':243 'present':28,132,186,1129 'presentation.pptx':61,84,89,94 'primari':294 'problem':779,1098 'process':476 'prompt':907 'pros/cons':468 'pt':460,554,560,566,570,634 'python':58,81,87,92,820,840,1138 'qa':774,794,818,863 'quick':52 'r':1148,1168 'random':652 'raw':90 're':1089,1159 're-rend':1158 're-verifi':1088 'read':29,67,73,76,98,120,1042 'read/analyze':56 'refer':53,131 'reflect':644 'render':788,1160 'repeat':255,594,1100 'report':1057 'requir':775 'rest':669 'result':856 'return':855 'reveal':1105 'right':413,446 'room':583 'rose':363 'round':257 'row':416 'sage':329,366,369 'sand':327 'sandbox':1205 'sandwich':234 'scratch':72,119,1196 'scripts/office/soffice.py':1139,1208 'scripts/office/unpack.py':93 'scripts/thumbnail.py':88 'seafoam':354 'secondari':295 'section':490,556 'see':880,896 'set':710 'shape':397,706,720,924 'sharp':215 'side':267,432,447,470,472 'side-by-sid':469 'similar':988 'simpl':676 'singl':266,943 'single-lin':942 'single-sid':265 'size':549,623 'skill':4,51 'skill-pptx' 'skimp':621 'slate':373 'slide':23,112,141,159,230,273,386,388,401,550,604,665,684,767,851,870,893,911,983,1032,1068,1092,1132,1151,1162,1176 'slide-01.jpg':1154 'slide-02.jpg':1155 'slide-fix':1175 'small':462,485 'soffic':1198 'sourc':952 'source-anthropics' 'space':572,651 'specif':194,646,1161 'stack':928 'stand':629 'stare':874 'start':161 'stat':454,497 'step':479,802 'still':188 'strong':736 'structur':235 'style':663 'subag':865,888 'success':861,1112 'support':211 'swap':179 'taglin':499 'task':54 'teal':336,349,352 'templat':66,106,129,833 'terracotta':323,325 'text':33,79,399,409,415,494,563,609,682,699,708,715,734,743,749,838,922,930,945,996,1000,1020,1183 'text-on':398,681 'theme':293 'thick':264 'throughout':240,677 'thumbnail':1188 'thumbnail.py':108 'time':6 'timelin':474 'titl':228,551,618,625,694,758,947 'tone':212 'topic':177,281,647 'topic-agent-skills' 'touch':968 'trebuchet':539 'trust':350 'two':407,950 'two-column':406 'typo':828 'typographi':500 'uneven':969 'unpack':95,110 'use':2,45,126,288,659,727,754,768,832,864,905 'vari':598 've':872,1115 'verif':1064 'verifi':1090,1123 'via':1207 'visual':85,206,248,391,481,690,862,908,1135 'warm':322 'way':14 'weight':207,222 'weren':812 'white':146,305,346,381 'whitespac':769 'without':1016 'won':148 'word':927 'work':189 'workflow':97 'would':187 'wrap':948,1026 'wrong':829 'xml':91 'xxxx':846 'zero':806","prices":[{"id":"db2844ad-2596-4546-9e87-c6862a836dc8","listingId":"81e84592-d2ce-49f2-aecc-8001b4629ef2","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"anthropics","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:23:32.403Z"}],"sources":[{"listingId":"81e84592-d2ce-49f2-aecc-8001b4629ef2","source":"github","sourceId":"anthropics/skills/pptx","sourceUrl":"https://github.com/anthropics/skills/tree/main/skills/pptx","isPrimary":false,"firstSeenAt":"2026-04-18T21:24:28.251Z","lastSeenAt":"2026-05-18T18:50:07.652Z"},{"listingId":"81e84592-d2ce-49f2-aecc-8001b4629ef2","source":"skills_sh","sourceId":"anthropics/skills/pptx","sourceUrl":"https://skills.sh/anthropics/skills/pptx","isPrimary":true,"firstSeenAt":"2026-04-18T20:23:32.403Z","lastSeenAt":"2026-05-07T22:40:12.440Z"}],"details":{"listingId":"81e84592-d2ce-49f2-aecc-8001b4629ef2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"anthropics","slug":"pptx","github":{"repo":"anthropics/skills","stars":136948,"topics":["agent-skills"],"license":null,"html_url":"https://github.com/anthropics/skills","pushed_at":"2026-05-17T22:47:19Z","description":"Public repository for Agent Skills","skill_md_sha":"df5000e17ef60ecf400e65bfcd3c58ff88b604c3","skill_md_path":"skills/pptx/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/anthropics/skills/tree/main/skills/pptx"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"pptx","license":"Proprietary. LICENSE.txt has complete terms","description":"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."},"skills_sh_url":"https://skills.sh/anthropics/skills/pptx"},"updatedAt":"2026-05-18T18:50:07.652Z"}}