{"id":"b76b5739-cf2f-44aa-8a27-86c93464261c","shortId":"NN6XNL","kind":"skill","title":"utility-slideshow-creator","tagline":"Generates professional presentations from a JSON deck specification using 18 slide types with dark/light variants, content-to-layout decision logic, and calibrated character limits. Ships with a default professional theme and supports custom themes via utility-slideshow-themer.","description":"<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->\n\n# Slideshow Creator\n\nGenerate professional presentations (.pptx and .pdf) from a JSON deck specification. Zero design decisions at generation time . Claude selects slide types and fills content slots; all visual properties are pre-decided by the theme.\n\n## When to Use\n\n- Creating slide decks for stakeholder updates, product reviews, team presentations\n- Generating professional .pptx files from content briefs\n- Producing consistent presentations without manual formatting\n- Exporting presentations to PDF for sharing or archiving\n\n## When NOT to Use\n\n- Creating complex data visualizations (use dedicated charting tools)\n- Building interactive web presentations (this produces .pptx, not HTML)\n- Editing existing PowerPoint files (this creates new decks from scratch)\n\n## How It Works\n\n**Two-phase architecture:**\n\n1. **Spec phase (Claude)** . Read the content brief, select slide types using decision logic, write a JSON deck specification. Content slots have character limits calibrated to prevent overflow. This is the only phase that costs tokens.\n2. **Generation phase (Local script)** . Run `node scripts/generate-deck.js deck-spec.json` to produce .pptx. Optionally run `node scripts/export-pdf.mjs deck-spec.json` for PDF. Deterministic rendering, zero token cost.\n\nBoth outputs come from the same JSON spec, so .pptx and .pdf always match.\n\n## 18 Slide Types\n\n| # | Type Key | Purpose | Default Variant |\n|---|----------|---------|-----------------|\n| 1 | `title_dark` | Opening slide (bold) | dark only |\n| 2 | `title_light` | Opening slide (internal/lighter) | light only |\n| 3 | `section` | Section divider | dark |\n| 4 | `content` | Paragraph explanation | light |\n| 5 | `bullets` | 3-6 key points | light |\n| 6 | `two_col` | Side-by-side comparison | light |\n| 7 | `stat` | Single key metric | light |\n| 8 | `dual_stat` | Two metrics compared | dark |\n| 9 | `quote` | Testimonial or pull quote | dark |\n| 10 | `three_card` | Three parallel concepts | dark |\n| 11 | `four_grid` | Four concepts in 2x2 grid | dark |\n| 12 | `timeline` | Dates or milestones (max 6) | light |\n| 13 | `process_flow` | Sequential workflow (max 5) | light |\n| 14 | `agenda` | Meeting agenda (max 7) | light |\n| 15 | `highlight` | Key finding or executive summary | light |\n| 16 | `table` | Tabular data | light |\n| 17 | `icon_rows` | Feature list with markers (max 4) | light |\n| 18 | `closing` | End slide | dark only |\n\nFull slot definitions and character limits: `references/slide-types.md`\n\n## Decision Logic (Quick Reference)\n\n| Content Pattern | Use |\n|---|---|\n| Opening the deck (bold) | `title_dark` |\n| Opening the deck (internal) | `title_light` |\n| Transitioning between topics | `section` |\n| Paragraph explanation | `content` |\n| List of 3-6 points | `bullets` |\n| Side-by-side comparison | `two_col` |\n| Single key metric | `stat` |\n| Two metrics compared | `dual_stat` |\n| Testimonial or pull quote | `quote` |\n| Three parallel concepts | `three_card` |\n| Four concepts in a grid | `four_grid` |\n| Dates or milestones | `timeline` |\n| Sequential workflow | `process_flow` |\n| Meeting agenda | `agenda` |\n| Key finding or summary | `highlight` |\n| Tabular data | `table` |\n| Feature list with markers | `icon_rows` |\n| Ending the deck | `closing` |\n\nFull decision logic with variant strategy: `references/decision-logic.md`\n\n## JSON Deck Spec Format\n\n```json\n{\n  \"title\": \"Q3 Product Update\",\n  \"author\": \"Product Team\",\n  \"footerText\": \"Internal . Q3 Review\",\n  \"slides\": [\n    { \"type\": \"title_dark\", \"title\": \"Q3 Product Update\", \"subtitle\": \"October 2026\" },\n    { \"type\": \"stat\", \"stat\": \"94%\", \"label\": \"Customer satisfaction score\", \"accentColor\": \"secondary\" },\n    { \"type\": \"bullets\", \"title\": \"What Shipped\", \"bullets\": [\"Feature A\", \"Feature B\", \"Feature C\"] },\n    { \"type\": \"closing\" }\n  ]\n}\n```\n\nColors accept theme token names (`\"accent\"`, `\"secondary\"`, `\"tertiary\"`, `\"warm\"`) or 6-character hex strings (`\"2563EB\"`).\n\nFull schema and workflow: `references/TEMPLATE.md` and `references/platform-rules.md`\n\n## Instructions\n\n1. **Read the content brief** . Understand topic, audience, length, specific requirements\n2. **Plan the deck** . Select slide types using the decision logic table. Assign dark/light variants for visual rhythm (alternate to avoid monotony).\n3. **Write the JSON deck specification** . Fill content slots, respecting character limits from `references/slide-types.md`\n4. **Run the generation script** . `node scripts/generate-deck.js deck-spec.json`\n5. **Optionally export PDF** . `node scripts/export-pdf.mjs deck-spec.json output.pdf`\n6. **Report the output** . Tell the user where the file(s) are\n\n## Output Contract\n\n- **Planning artifact**: JSON deck specification (the file Claude writes)\n- **Final output**: .pptx file (+ optional .pdf), generated locally from the spec\n- **Quality gate**: All items in the quality checklist pass\n\n## Quality Checklist\n\n- [ ] Every slide has a valid type key (one of the 18 defined types)\n- [ ] All content slots respect character limits from `references/slide-types.md`\n- [ ] Dark/light variants alternate for visual rhythm (no 3+ consecutive same-variant slides)\n- [ ] Deck has a title slide (first) and a closing slide (last)\n- [ ] Section dividers separate distinct topics in decks > 6 slides\n- [ ] Speaker notes included for key slides (stats, highlights, transitions)\n- [ ] JSON is valid (no trailing commas, proper quoting, correct nesting)\n- [ ] Color values are valid theme tokens or 6-character hex strings (no `#` prefix)\n\n## References\n\n| File | Purpose |\n|------|---------|\n| `references/TEMPLATE.md` | JSON deck specification template with field documentation |\n| `references/EXAMPLE.md` | Worked example: Q3 Product Update deck (9 slides) |\n| `references/slide-types.md` | All 18 slide types: content slots, character limits, variants |\n| `references/decision-logic.md` | Content pattern → slide type mapping, variant strategy, deck sizing |\n| `references/platform-rules.md` | pptxgenjs requirements, Google Slides compatibility, output format |","tags":["utility","slideshow","creator","skills","product-on-purpose","agent-skills","ai-skills","claude-code","claude-desktop","openskills","product-management","skill-families"],"capabilities":["skill","source-product-on-purpose","skill-utility-slideshow-creator","topic-agent-skills","topic-ai-skills","topic-claude-code","topic-claude-desktop","topic-openskills","topic-product-management","topic-skill-families","topic-triple-diamond"],"categories":["pm-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/product-on-purpose/pm-skills/utility-slideshow-creator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add product-on-purpose/pm-skills","source_repo":"https://github.com/product-on-purpose/pm-skills","install_from":"skills.sh"}},"qualityScore":"0.538","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 176 github stars · SKILL.md body (6,128 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-02T12:54:13.657Z","embedding":null,"createdAt":"2026-04-18T22:09:33.295Z","updatedAt":"2026-05-02T12:54:13.657Z","lastSeenAt":"2026-05-02T12:54:13.657Z","tsv":"'-6':265,402 '1':154,236,548 '10':298 '11':305 '12':314 '13':322 '14':330 '15':337 '16':345 '17':350 '18':14,228,360,666,764 '2':190,244,559 '2026':500 '2563eb':539 '2x2':311 '3':252,264,401,581,684 '4':257,358,595 '5':262,328,603 '6':269,320,535,611,708,736 '7':278,335 '8':284 '9':291,760 '94':504 'accent':530 'accentcolor':509 'accept':526 'agenda':331,333,447,448 'altern':577,679 'alway':226 'architectur':153 'archiv':115 'artifact':626 'assign':571 'audienc':555 'author':483 'avoid':579 'b':520 'bold':241,383 'brief':101,161,552 'build':128 'bullet':263,404,512,516 'c':522 'calibr':27,178 'card':300,430 'charact':28,176,370,536,591,673,737,769 'chart':126 'checklist':652,655 'claud':64,157,632 'close':361,466,524,698 'col':271,411 'color':525,729 'come':216 'comma':724 'compar':289,418 'comparison':276,409 'compat':787 'complex':121 'concept':303,309,428,432 'consecut':685 'consist':103 'content':21,70,100,160,173,258,377,398,551,588,670,767,773 'content-to-layout':20 'contract':624 'correct':727 'cost':188,213 'creat':85,120,142 'creator':4,46 'custom':38,506 'dark':238,242,256,290,297,304,313,364,385,493 'dark/light':18,572,677 'data':122,348,455 'date':316,438 'decid':78 'decis':24,60,166,373,468,568 'deck':11,56,87,144,171,382,388,465,475,562,585,628,690,707,747,759,780 'deck-spec.json':198,206,602,609 'dedic':125 'default':33,234 'defin':667 'definit':368 'design':59 'determinist':209 'distinct':704 'divid':255,702 'document':752 'dual':285,419 'edit':137 'end':362,463 'everi':656 'exampl':755 'execut':342 'exist':138 'explan':260,397 'export':108,605 'featur':353,457,517,519,521 'field':751 'file':98,140,620,631,637,743 'fill':69,587 'final':634 'find':340,450 'first':695 'flow':324,445 'footertext':486 'format':107,477,789 'four':306,308,431,436 'full':366,467,540 'gate':646 'generat':5,47,62,95,191,598,640 'googl':785 'grid':307,312,435,437 'hex':537,738 'highlight':338,453,717 'html':136 'icon':351,461 'includ':712 'instruct':547 'interact':129 'intern':389,487 'internal/lighter':249 'item':648 'json':10,55,170,220,474,478,584,627,719,746 'key':232,266,281,339,413,449,662,714 'label':505 'last':700 'layout':23 'length':556 'light':246,250,261,268,277,283,321,329,336,344,349,359,391 'limit':29,177,371,592,674,770 'list':354,399,458 'local':193,641 'logic':25,167,374,469,569 'manual':106 'map':777 'marker':356,460 'match':227 'max':319,327,334,357 'meet':332,446 'metric':282,288,414,417 'mileston':318,440 'monotoni':580 'name':529 'nest':728 'new':143 'node':196,204,600,607 'note':711 'octob':499 'one':663 'open':239,247,380,386 'option':202,604,638 'output':215,614,623,635,788 'output.pdf':610 'overflow':181 'paragraph':259,396 'parallel':302,427 'pass':653 'pattern':378,774 'pdf':52,111,208,225,606,639 'phase':152,156,186,192 'plan':560,625 'point':267,403 'powerpoint':139 'pptx':50,97,134,201,223,636 'pptxgenj':783 'pre':77 'pre-decid':76 'prefix':741 'present':7,49,94,104,109,131 'prevent':180 'process':323,444 'produc':102,133,200 'product':91,481,484,496,757 'profession':6,34,48,96 'proper':725 'properti':74 'pull':295,423 'purpos':233,744 'q3':480,488,495,756 'qualiti':645,651,654 'quick':375 'quot':292,296,424,425,726 'read':158,549 'refer':376,742 'references/decision-logic.md':473,772 'references/example.md':753 'references/platform-rules.md':546,782 'references/slide-types.md':372,594,676,762 'references/template.md':544,745 'render':210 'report':612 'requir':558,784 'respect':590,672 'review':92,489 'rhythm':576,682 'row':352,462 'run':195,203,596 'same-vari':686 'satisfact':507 'schema':541 'score':508 'scratch':146 'script':194,599 'scripts/export-pdf.mjs':205,608 'scripts/generate-deck.js':197,601 'secondari':510,531 'section':253,254,395,701 'select':65,162,563 'separ':703 'sequenti':325,442 'share':113 'ship':30,515 'side':273,275,406,408 'side-by-sid':272,405 'singl':280,412 'size':781 'skill' 'skill-utility-slideshow-creator' 'slide':15,66,86,163,229,240,248,363,490,564,657,689,694,699,709,715,761,765,775,786 'slideshow':3,43,45 'slot':71,174,367,589,671,768 'source-product-on-purpose' 'speaker':710 'spec':155,221,476,644 'specif':12,57,172,557,586,629,748 'stakehold':89 'stat':279,286,415,420,502,503,716 'strategi':472,779 'string':538,739 'subtitl':498 'summari':343,452 'support':37 'tabl':346,456,570 'tabular':347,454 'team':93,485 'tell':615 'templat':749 'tertiari':532 'testimoni':293,421 'theme':35,39,81,527,733 'themer':44 'three':299,301,426,429 'time':63 'timelin':315,441 'titl':237,245,384,390,479,492,494,513,693 'token':189,212,528,734 'tool':127 'topic':394,554,705 'topic-agent-skills' 'topic-ai-skills' 'topic-claude-code' 'topic-claude-desktop' 'topic-openskills' 'topic-product-management' 'topic-skill-families' 'topic-triple-diamond' 'trail':723 'transit':392,718 'two':151,270,287,410,416 'two-phas':150 'type':16,67,164,230,231,491,501,511,523,565,661,668,766,776 'understand':553 'updat':90,482,497,758 'use':13,84,119,124,165,379,566 'user':617 'util':2,42 'utility-slideshow-cr':1 'utility-slideshow-them':41 'valid':660,721,732 'valu':730 'variant':19,235,471,573,678,688,771,778 'via':40 'visual':73,123,575,681 'warm':533 'web':130 'without':105 'work':149,754 'workflow':326,443,543 'write':168,582,633 'zero':58,211","prices":[{"id":"aeac2f73-f18c-4131-b362-8986ec27578d","listingId":"b76b5739-cf2f-44aa-8a27-86c93464261c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"product-on-purpose","category":"pm-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:09:33.295Z"}],"sources":[{"listingId":"b76b5739-cf2f-44aa-8a27-86c93464261c","source":"github","sourceId":"product-on-purpose/pm-skills/utility-slideshow-creator","sourceUrl":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-slideshow-creator","isPrimary":false,"firstSeenAt":"2026-04-18T22:09:33.295Z","lastSeenAt":"2026-05-02T12:54:13.657Z"}],"details":{"listingId":"b76b5739-cf2f-44aa-8a27-86c93464261c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"product-on-purpose","slug":"utility-slideshow-creator","github":{"repo":"product-on-purpose/pm-skills","stars":176,"topics":["agent-skills","ai-skills","claude-code","claude-desktop","openskills","product-management","skill-families","triple-diamond"],"license":"apache-2.0","html_url":"https://github.com/product-on-purpose/pm-skills","pushed_at":"2026-04-24T22:54:13Z","description":"Curated, plug-and-play product management skills for AI agents. 38 skills across Triple Diamond phases plus foundation (lean canvas, persona, meeting lifecycle family) and utility (create, validate, iterate). Templates, workflows, thread-aligned samples, CI-enforced skill-family contracts. Apache 2.0.","skill_md_sha":"1f461e0421bafe0f3b75af97665488cbb8df610c","skill_md_path":"skills/utility-slideshow-creator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/product-on-purpose/pm-skills/tree/main/skills/utility-slideshow-creator"},"layout":"multi","source":"github","category":"pm-skills","frontmatter":{"name":"utility-slideshow-creator","license":"Apache-2.0","description":"Generates professional presentations from a JSON deck specification using 18 slide types with dark/light variants, content-to-layout decision logic, and calibrated character limits. Ships with a default professional theme and supports custom themes via utility-slideshow-themer."},"skills_sh_url":"https://skills.sh/product-on-purpose/pm-skills/utility-slideshow-creator"},"updatedAt":"2026-05-02T12:54:13.657Z"}}