Make Slides

SkillDocs & knowledge

Builds a conference talk deck (Beamer or Marp markdown) from a paper draft - problem-first narrative, one claim per slide, figures reused straight from the paper's LaTeX source, sized to the real slot (12-20 minute full talk vs 5-minute lightning). Use when the user asks to make slides, build a presentation or talk deck for an accepted paper, turn a paper into a talk, prepare a conference presentation, fit a talk into N minutes, or check and trim an existing deck that is too long or too text-heavy. Inventories the paper's figures by in-text reference count, computes a minutes-and-slides budget per section, drafts the deck, and deterministically lints pacing, overfull slides, missing or unrenderable figures, and generic non-claim titles. Venue profiles give context only; the slot length must come from the venue's presenter instructions or acceptance email.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Make Slides skill

What this skill tells your AI

The instructions your AI receives, as published by shaishavmaisuria/research-paper-lifecycle-skills in skills/make-slides/SKILL.md and read by ahel’s review.

Turn an accepted (or nearly-done) paper into a conference talk deck — Beamer .tex 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 (write-talk-script, rehearse-qa).

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: write-talk-script (timed speaker script for the deck), rehearse-qa (hostile/curious Q&A drill), make-poster (poster + 2-min/5-min pitches), study-exemplars (how strong papers at the venue frame contributions), verify-citations (gate for any reference that appears on a slide).

Inputs

  • The paper's main .tex 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 cfp_url / 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 \input/\include, resolves \graphicspath, 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 verify-citations 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: aspectratio=169, frame title = the claim, reuse paper PDFs via \includegraphics, speaker-note stubs in \note{}, backup frames after \appendix.
  • Marp: marp: true front matter, #/## title = the claim, PNG/SVG images only, speaker-note stubs in <!-- --> comments, backup slides titled Backup: ....

Write the deck and assets under talk/ 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 (latexmk -pdf for Beamer, marp 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 write-talk-script to time the narration and rehearse-qa 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

  • talk/slides.md (Marp) or talk/slides.tex (Beamer) — RISK-free under deck_lint.py for the stated speaking time, with speaker-note stubs and backup slides.
  • talk/assets/ — the paper figures the deck uses, harvested by extract_figures.py (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 [RESULT] placeholder, flagged in the handoff.
  • Never fabricate citations on slides; anything cited goes through verify-citations.
  • 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 study-exemplars.
  • Never upload or submit the deck anywhere on the user's behalf.

Signals

GitHub stars
50
Forks
20
Last commit
Jun 2026
Advanced
Item type
skill
Key
make-slides
Source
github.com/shaishavmaisuria/research-paper-lifecycle-skills