Build a finished PowerPoint (.pptx) in ONE command from a short JSON outline: title slide, section and bullet slides, two-column, quote, big-number and closing slides, with a clean theme and speaker notes, optional PDF. Use for any request for a deck, presentation, slides or pitch when the content is text and bullets. Faster and far cheaper than hand-written pptxgenjs code: write outline.json, run build_deck.py, done. Triggers: PowerPoint, pptx, deck, slides, presentation, præsentation, pitch deck.
Say it in your own words; the assistant finds this recipe by itself. Examples:
Build a finished PowerPoint (.pptx) in ONE command from a short JSON outline: title slide, section and bullet slides, two-column, quote, big-number and closing slides, with a clean theme and speaker notes, optional PDF. Use for any request for a deck, presentation, slides or pitch when the content is text and bullets. Faster and far cheaper than hand-written pptxgenjs code: write outline.json, run build_deck.py, done. Triggers: PowerPoint, pptx, deck, slides, presentation, præsentation, pitch deck.
Write the outline as JSON, run one script, hand back the file. Do not write pptxgenjs or python-pptx code yourself; do not inspect the result slide by slide. The script validates the file.
/work/outline.json:
{
"title": "On-premise AI for Danish SMEs",
"subtitle": "Why keep the model in the building",
"author": "Percerno",
"theme": "navy",
"language": "en",
"slides": [
{"type": "section", "title": "The problem"},
{"type": "bullets", "title": "Cloud AI leaves three gaps", "bullets": ["Data leaves the EU", "Per-token cost scales with success", "No control over model changes"], "notes": "Open with the GDPR point."},
{"type": "two-column", "title": "Cloud vs on-premise", "left_title": "Cloud", "left": ["Fast start", "No hardware"], "right_title": "On-premise", "right": ["Data stays", "Fixed cost"]},
{"type": "big-number", "title": "Payback", "number": "14 months", "caption": "at 200 daily users"},
{"type": "quote", "quote": "We stopped asking legal for permission.", "attribution": "CIO, manufacturing company"},
{"type": "bullets", "title": "Next steps", "bullets": ["Pilot on one team", "Measure for 90 days", "Decide on rollout"]},
{"type": "closing", "title": "Thank you", "subtitle": "questions@percerno.ai"}
]
}
Slide types: section, bullets (3–6 bullets, each under 14 words), two-column,
big-number, quote, closing. Every slide may carry "notes". Themes: navy, teal,
charcoal, warm. language only affects the date format on the title slide.
Aim for 6–12 slides; one idea per slide; put the takeaway in the title.
python3 /skills/deck-builder/scripts/build_deck.py /work/outline.json /work/out/deck.pptx --pdf
Prints OK <slides> slides -> /work/out/deck.pptx (and deck.pdf) or a clear error. --pdf
also renders a PDF with LibreOffice (adds ~10 s). That is the whole job: give the person the
download link(s).
Not this skill: use pptx-generator (template editing, XML) or python -m markitdown file.pptx
(text extraction).
SKILL.mdscripts/build_deck.pyWritten by Percerno, MIT licence.