Make Slides
Turn an accepted (or nearly-done) paper into a conference talk deck —
Beamer
or Marp markdown — built around a problem-first story, one
claim per slide, the paper's own figures, and a slide count the slot can
actually afford. The deck is the deliverable; the timed word-by-word
script and Q&A drill are separate skills (
,
).
When to use
- The paper got accepted and a talk slot is coming: build the deck.
- The user has a slot length ("12 minutes plus 3 Q&A", "5-minute
lightning") and needs a deck that fits it.
- An existing deck is overlong, text-heavy, or paper-shaped and needs to
be cut down to a talk.
Related skills:
(timed speaker script for the deck),
(hostile/curious Q&A drill),
(poster +
2-min/5-min pitches),
(how strong papers at the venue
frame contributions),
(gate for any reference that
appears on a slide).
Inputs
- The paper's main file (preferred — figures are harvested from
source) or the PDF plus the figure files.
- The slot length and Q&A split, from the venue's presenter
instructions or acceptance email. This is the one fact the skill
cannot look up: venue profiles do not encode talk slots (they change
year to year and per track). If the user does not know it, stop and ask
— see references/venue-timing.md.
- Optional:
venues/conferences/<id>.yml
for venue context (name, track,
live URLs). Re-verify anything taken from a profile against the live
/ venue site before the user relies on it.
- Output format choice: Beamer (LaTeX toolchain, vector figures reused
as-is) or Marp (markdown, fast iteration, figures must be PNG/SVG).
Decision guide: references/deck-formats.md.
Process
1. Pin down the slot, then budget the deck
Confirm slot minutes and Q&A minutes with the user (ask; never assert a
slot length from memory or from a venue profile — typical shapes and the
verification checklist are in
references/venue-timing.md). Then run, from
the repo root:
python3 skills/make-slides/scripts/slide_budget.py --minutes <slot> --qa <qa> \
[--format auto|full|lightning] [--venue-profile venues/conferences/<id>.yml] [--json]
It prints the content-slide target (~1 slide per speaking minute, hard max
1.25x) and a problem-first section allocation (minutes + slides per
section) in the full-talk shape (12-20 min) or the lightning shape
(<= 7 min). Treat the allocation as the storyboard skeleton.
2. Inventory and harvest the paper's figures
python3 skills/make-slides/scripts/extract_figures.py path/to/main.tex \
--copy-to talk/assets [--json]
It follows
/
, resolves
, and ranks every
figure by how often the text references it — the most-referenced figures
are usually the ones the talk is built around. It also counts table
environments: tables almost never survive as slides; redesign each one as
a chart or a single highlighted number. TikZ-only figures (no graphics
file) must be recompiled or screenshot from the paper PDF.
If the deck will be Marp, convert harvested PDFs to PNG/SVG now
(commands in references/deck-formats.md);
Marp cannot render PDF images.
3. Storyboard: problem first, one claim per slide
Map the paper onto the budget's sections using
references/narrative-storyboard.md.
The non-negotiables:
- Problem-first: open with why the problem matters, not an outline or
the paper's section order. The talk is an advertisement for the paper,
not a compression of it.
- One claim per slide: every slide title is a full assertion — the
sentence to be remembered if the audience reads nothing else ("LRU
evicts the tiles a burst is about to revisit", not "Background").
Evidence (a figure, one number) supports the title; bullets are a last
resort.
- Numbers and claims on slides come from the paper or the user — never
invent, round up, or extrapolate. Any cited work shown on a slide goes
through first.
- Proofs, secondary ablations, and related-work depth move to backup
slides after the final slide — they cost nothing against the budget.
Write the storyboard as a list (slide title-claim, supporting visual,
~seconds of talk) and confirm it with the user before drafting slides.
4. Draft the deck
Build the deck from the approved storyboard using the skeletons in
references/deck-formats.md:
- Beamer: , frame title = the claim, reuse paper PDFs
via , speaker-note stubs in , backup frames
after .
- Marp: front matter, / title = the claim,
PNG/SVG images only, speaker-note stubs in comments, backup
slides titled .
Write the deck and assets under
next to the paper (or where the
user prefers); never overwrite an existing deck without confirming.
5. Lint, fix, re-lint
python3 skills/make-slides/scripts/deck_lint.py talk/slides.md|slides.tex \
--minutes <SPEAKING minutes = slot - Q&A> [--strict] [--json]
Deterministic checks: pacing vs the slot, overfull slides (>100 words is
a document, not a slide), bullet overload, generic non-claim titles,
missing image files, Marp-unrenderable PDF images, tiny Beamer fonts.
Fix every RISK and re-run until RISK-free; resolve pacing by cutting or
merging slides, never by planning to talk faster.
6. Verify it builds, then hand off
Compile the deck if the toolchain is available (
for
Beamer,
CLI for Marp — commands in
references/deck-formats.md); otherwise say
explicitly that it was not compiled. Deliver the deck, the figure
inventory, and the lint report, and point the user at
to time the narration and
before the session. Remind them
to re-check slot length, room aspect ratio, and any pre-recording
requirement against the venue's presenter instructions.
Output
- (Marp) or (Beamer) — RISK-free under
for the stated speaking time, with speaker-note stubs
and backup slides.
- — the paper figures the deck uses, harvested by
(converted for Marp).
- The slide budget and figure inventory as the paper trail for what was
cut and why.
Guardrails
- Never invent results, numbers, or comparisons for a slide; every figure
and number traces to the paper or the user. Pending results get an
explicit placeholder, flagged in the handoff.
- Never fabricate citations on slides; anything cited goes through
.
- Never assert slot lengths, room formats, or recording rules from memory
or from a venue profile — presenter instructions and the acceptance
email are ground truth; label anything unconfirmed as UNVERIFIED.
- Never bundle or paste another paper's slides or text as a template;
exemplar study happens transiently via .
- Never upload or submit the deck anywhere on the user's behalf.