Slide Deck Design skill for Codex
Titles that tell the story on their own. Codex designs the argument before the slides: it pins the audience and decision, writes the one-sentence answer, drafts a title-only storyline you can review, matches each claim to the right chart or number, and only then builds the deck with consistent margins, type sizes and colour. A final pass checks the title read-through, the numbers and the legibility of every slide.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- slide-deck-design Installs to ~/.agents/skills/slide-deck-design/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install slide-deck-design The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project slide-deck-design Installs to .agents/skills/slide-deck-design/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/slide-deck-design.zipunzip -o slide-deck-design.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) slide-deck-design PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $slide-deck-design, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Designs clear, persuasive slide decks by fixing the storyline before the visuals, using situation-complication-resolution structure, action titles, one message per slide, evidence-first charts and a readable type and layout system, then builds in PowerPoint, Google Slides, Marp, Slidev or reveal.js. Use when asked to make a pitch, board update, sales or conference deck, turn a document into slides, restructure a deck that does not land, or review slides for clarity.
Use it when
- A document, analysis or idea needs to become a presentation
- An existing deck is long, confusing or full of topic-label titles
- You must choose charts and layouts that make one point per slide
- Slides will be read as a pre-read and need to stand without a speaker
Use something else when
- The structure is settled and you only need python-pptx mechanics: use pptx-presentations
- The slides live in Google Slides and must be filled through the API: use google-docs-automation
How to check the result
Read only the slide titles in order and confirm they make the whole argument, reconcile every number with its source, and render slides to thumbnails to check overflow and legibility.
The mistake it prevents
Starting in the slide tool with topic titles like 'Background' and 'Findings', which produces nicely formatted slides with no argument.
A deck works when a busy reader who reads only the slide titles, in order, gets the full argument, and every slide body proves its own title. Visual polish comes after that, and only serves legibility.
Workflow
- [ ] 1. Pin down audience, decision and setting
- [ ] 2. Write the one-sentence answer
- [ ] 3. Build the storyline as a title-only outline
- [ ] 4. Pick the evidence for each slide
- [ ] 5. Choose the build tool and apply the layout system
- [ ] 6. Run the review checks
- [ ] 7. Hand over with speaker notes and an appendix
1. Audience, decision, setting
Ask or infer before writing a single slide:
| Question | Why it changes the deck |
|---|---|
| Who decides, and what do they already believe? | Sets how much context and which objections to pre-empt |
| What should they do or decide afterwards? | The deck exists for this; if there is no ask, it is an update, say so |
| Presented live or read alone (pre-read, emailed)? | Live: sparse slides plus notes. Read alone: full-sentence titles and denser bodies |
| Time slot? | Roughly one main slide per 1 to 2 minutes live; everything else goes to the appendix |
| Brand template or house style? | Check the repo or shared drive for a .potx/theme and AGENTS.md notes before inventing one |
2. Write the answer first
One sentence the decision-maker could repeat to their boss, for example: “Moving EU traffic to the Frankfurt region cuts p95 latency by 40% for 18k a year, and we need approval by 1 December to hit Q1.”
If you cannot write it, the deck is not ready to design. Go back to the source material.
3. Storyline as a title-only outline
Default structure for a decision deck (situation, complication, resolution, then proof):
- Title slide states the answer or the ask, not just the topic.
- Situation: what the audience already accepts (1 slide).
- Complication: what changed or what is at risk, with one number (1 to 2 slides).
- Resolution: the recommendation and the ask (1 slide).
- Supporting arguments, one per slide, each a claim with evidence (3 to 6 slides).
- Risks, costs and alternatives considered (1 to 2 slides).
- Next steps with owners and dates (1 slide).
- Appendix: methodology, detail tables, backup charts.
Variants:
| Deck type | Shape |
|---|---|
| Status update | Headline status, what changed since last time, risks and asks, then detail |
| Conference talk | Problem the audience has, the insight, 3 demonstrations, what to do Monday |
| Sales/pitch | Customer’s problem in their words, cost of the problem, approach, proof, offer |
| Training | Outcome, then concept-example-practice loops |
Write every title as an action title: a full sentence with the takeaway, at most two lines. “Q3 revenue” is a label; “Q3 revenue grew 12%, driven by annual plans” is a title.
Produce the outline as a table before building anything:
| # | Action title | Evidence on slide | Notes |
|---|---|---|---|
| 1 | Move EU traffic to Frankfurt to cut latency 40% for 18k/yr | Ask + date | Title slide |
| 2 | EU users are now 46% of sessions, up from 20% | Line chart, share by region | Situation |
| 3 | Their p95 latency is 2.3x US users' and churn tracks it | Bar chart + churn callout | Complication |
Read the titles aloud in sequence. If the argument has a gap or repeats itself, fix the outline, not the visuals.
4. Evidence per slide
One message per slide, and the body must prove the title. Pick the element by message:
| Message | Use | Avoid |
|---|---|---|
| Change over time | Line chart, highlight the relevant series | 3D, more than 5 lines |
| Compare items | Horizontal bar, sorted | Pie with more than 3 slices |
| Part of whole | Stacked bar or a single big number | Donut grids |
| One striking number | Big number with a one-line comparison | Number without baseline |
| Process or sequence | 3 to 5 step flow, left to right | Smart-art with 9 bubbles |
| Before/after or options | Two-column comparison, same rows on both sides | Asymmetric columns |
| Quote or customer voice | Short quote with attribution | Wall of testimonials |
Chart rules: label lines directly instead of a legend, put the takeaway in the title and mark it on the chart (colour or annotation), start bar axes at zero, state units and source in a small footer, remove gridlines and borders that carry no data.
5. Layout system and build tool
Layout defaults for a 16:9 deck (13.333 x 7.5 in, 1920 x 1080 px):
- Margins at least 0.5 in (about 5% of width) on every side; content never touches edges.
- Type: titles 28 to 40 pt, body 18 to 24 pt, footnotes and sources no smaller than 12 pt. For a large room, body text at 24 pt or more.
- At most 2 typefaces; use weight and size for hierarchy, not new fonts.
- Colour: one neutral for text, one accent for “look here”, one muted for context. Body text contrast at least 4.5:1 against the background.
- Same element, same position on every slide (title, source line, page number), so the eye only tracks what changes.
- About 6 bullet lines maximum, each one line long. More than that becomes a document slide: split it or move it to the appendix.
- Alignment: everything snaps to a grid; left-align text blocks; do not centre paragraphs.
Pick the build tool:
| Situation | Tool |
|---|---|
Stakeholders edit in PowerPoint, brand .potx exists | python-pptx with the template’s layouts (see pptx-presentations) |
| Team lives in Google Workspace | Slides API with a template copy (see google-docs-automation) |
| Engineer audience, slides in git, code samples | Marp (Markdown) or Slidev (Markdown + Vue) |
| Interactive web talk, embedded demos | reveal.js |
| Must be emailed as a fixed file | Any of the above, exported to PDF |
Marp example (one slide per ---; export needs @marp-team/marp-cli, which needs network
to install):
---
marp: true
paginate: true
size: 16:9
---
# EU users now drive 46% of sessions

<!-- Speaker notes: mention that the growth came after the DE launch. -->
npx @marp-team/marp-cli deck.md --pdf --allow-local-files
npx @marp-team/marp-cli deck.md --pptx # each slide becomes an image, not editable text
Generate charts as SVG or high-DPI PNG from code (matplotlib savefig(dpi=200)) at the size
they will appear, so text inside charts matches slide typography.
6. Review checks
Run these before calling it done:
- Title read-through: titles alone tell the full story in order.
- So-what test: each slide’s body supports its title; delete anything that does not.
- Squint test: render to images and view small; the most important element per slide should still stand out.
- Number check: every figure matches the source; the same metric uses the same units and rounding on every slide.
- Legibility: no text below 12 pt, no text over busy photos without a scrim, colour is never the only cue (add labels or patterns).
- Overflow: no text box spilling past margins; check every slide image, not a sample.
To render slides as images for review (needs LibreOffice for pptx):
soffice --headless --convert-to pdf deck.pptx
pdftoppm -r 50 -png deck.pdf review/slide # poppler; small thumbnails for the squint test
7. Hand over
Speaker notes on every main slide carry what the presenter says and the details cut from the slide. The appendix holds methodology and backup data, referenced from main slides as “see A3”.
Gotchas
- Topic titles (“Background”, “Findings”) hide the argument; replace every one.
- Decks written as documents fail live, and decks built for live delivery fail as pre-reads. Ask which one it is.
- Agenda slides for short decks waste a slot; use one only above roughly 15 slides.
- Logos, page numbers and confidentiality footers repeated at large size eat 15% of space.
- Animations: use builds only to reveal a sequence in order; never decorative transitions.
- Pasted screenshots of tables are unreadable; rebuild the 3 to 5 rows that matter.
Output
Deliver the outline table (step 3), the deck file, and a short note:
## Deck: eu-region-proposal.pptx (12 main slides + 5 appendix)
- One-sentence answer: <the answer>
- Audience/setting: infra steering group, presented live, 20 min
- Checks: title read-through ok, numbers reconciled to capacity-model.xlsx, all text >= 14 pt
- Open questions: cost estimate assumes 2026 list prices (slide 8) What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "Slide Deck Design"
short_description: "Titles that tell the story on their own"
default_prompt: "$slide-deck-design Turn this 12-page design doc into a 15-minute deck for the architecture review board" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.