kwongfuk/codex-skills/paper-slides

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Generate conference presentation slides (beamer LaTeX → PDF + editable PPTX) from a compiled paper, with speaker notes and full talk script. Use when user says \"做PPT\", \"做幻灯片\", \"make slides\", \"conference talk\", \"presentation slides\", \"生成slides\", \"写演讲稿\", or wants beamer slides for a conference talk.

Install

npx vskill@latest install kwongfuk/codex-skills/paper-slides

SKILL.md

Paper Slides: From Paper to Conference Talk

Generate conference presentation slides from: $ARGUMENTS

Context

This skill runs after Workflow 3 (/paper-writing). It takes a compiled paper and generates a presentation slide deck for conference oral talks, spotlight presentations, or poster lightning talks.

Unlike posters (single page, visual-first), slides tell a temporal story: each slide builds on the previous one, with progressive revelation of the research narrative. A good talk makes the audience understand why this matters before showing what was done.

Constants

  • VENUE = `NeurIPS` — Target venue, determines color scheme. Supported: NeurIPS, ICML, ICLR, AAAI, ACL, EMNLP, CVPR, ECCV, GENERIC. Override via argument.
  • TALK_TYPE = `spotlight` — Talk format. Options: oral (15-20 min), spotlight (5-8 min), poster-talk (3-5 min), invited (30-45 min). Determines slide count and content depth.
  • TALK_MINUTES = 15 — Talk duration in minutes. Auto-adjusts slide count (~1 slide/minute for oral, ~1.5 slides/minute for spotlight). Override explicitly if needed.
  • ASPECT_RATIO = `16:9` — Slide aspect ratio. Options: 16:9 (default, modern projectors), 4:3 (legacy).
  • SPEAKER_NOTES = true — Generate \note{} blocks in beamer and corresponding PPTX notes. Set false for clean slides without notes.
  • PAPER_DIR = `paper/` — Directory containing the compiled paper.
  • OUTPUT_DIR = `slides/` — Output directory for all slide files.
  • REVIEWER_MODEL = `gpt-5.4` — Model used via Codex MCP for slide review.
  • AUTO_PROCEED = false — At each checkpoint, always wait for explicit user confirmation.
  • COMPILER = `latexmk` — LaTeX build tool.
  • ENGINE = `pdflatex` — LaTeX engine. Use xelatex for CJK text.
💡 Override: /paper-slides "paper/" — talk_type: oral, venue: ICML, minutes: 20, aspect: 4:3

Talk Type → Slide Count

Talk TypeDurationSlidesContent Depth
poster-talk3-5 min5-8Problem + 1 method slide + 1 result + conclusion
spotlight5-8 min8-12Problem + 2 method + 2 results + conclusion
oral15-20 min15-22Full story with motivation, method detail, experiments, analysis
invited30-45 min25-40Comprehensive: background, related work, deep method, extensive results, discussion

Venue Color Schemes

Same as /paper-poster:

VenuePrimaryAccentBackgroundText
NeurIPS#8B5CF6#2563EB#FFFFFF#1E1E1E
ICML#DC2626#1D4ED8#FFFFFF#1E1E1E
ICLR#059669#0284C7#FFFFFF#1E1E1E
CVPR#2563EB#7C3AED#FFFFFF#1E1E1E
GENERIC#334155#2563EB#FFFFFF#1E1E1E

State Persistence (Compact Recovery)

Persist state to slides/SLIDES_STATE.json after each phase:

json
{
"phase": 3,
"venue": "NeurIPS",
"talk_type": "spotlight",
"slide_count": 10,
"codex_thread_id": "019cfcf4-...",
"status": "in_progress",
"timestamp": "2026-03-18T15:00:00"
}

On startup: if SLIDES_STATE.json exists with "status": "in_progress" and within 24h → resume. Otherwise → fresh start.

Workflow

Phase 0: Input Validation & Setup
  1. Check prerequisites:

``bash which pdflatex && which latexmk ``

  1. Verify paper exists:

``bash ls $PAPER_DIR/main.tex || ls $PAPER_DIR/main.pdf ls $PAPER_DIR/sections/*.tex ls $PAPER_DIR/figures/ ``

  1. Backup existing slides: if slides/ exists, copy to slides-backup-{timestamp}/
  1. Create output directory: mkdir -p slides/figures
  1. Detect CJK: if paper contains Chinese/Japanese/Korean, set ENGINE to xelatex
  1. Determine slide count: from TALK_TYPE and TALK_MINUTES using the table above
  1. Check for resume: read slides/SLIDES_STATE.json if it exists

State: Write SLIDES_STATE.json with phase: 0.

Phase 1: Content Extraction & Slide Outline

Read paper/sections/*.tex and build a slide-by-slide outline.

Slide template by talk type:

Oral (15-22 slides)
SlidePurposeContent SourceFigure?
1TitlePaper metadataNo
2OutlineSection headersNo
3-4Motivation & ProblemIntroductionOptional
5Key InsightIntroduction (contribution)No
6-9MethodMethod sectionYes (hero figure)
10-14ResultsExperimentsYes (per slide)
15-16Analysis / AblationsExperimentsYes
17LimitationsConclusionNo
18Conclusion / TakeawayConclusionNo
19Thank You + QR—QR code
Spotlight (8-12 slides)
SlidePurposeContent SourceFigure?
1TitlePaper metadataNo
2-3Problem + Why It MattersIntroductionOptional
4Key InsightContributionNo
5-6MethodMethod (condensed)Yes (hero)
7-9ResultsKey results onlyYes
10TakeawayConclusionNo
11Thank You + QR—QR code
Poster-talk (5-8 slides)
SlidePurposeContent SourceFigure?
1TitlePaper metadataNo
2ProblemIntroduction (1 slide)No
3MethodMethod (1 slide)Yes
4-5ResultsKey result onlyYes
6Takeaway + QRConclusionQR

For each slide, specify:

  • Title (max 8 words)
  • 3-5 bullet points (max 8 words each)
  • Figure reference (if any) from paper/figures/
  • Speaker note (2-3 sentences of what to say)
  • Time allocation (in seconds)

Output: slides/SLIDE_OUTLINE.md

🚦 Checkpoint:

📊 Slide outline ready:
- Talk type: [TALK_TYPE] ([TALK_MINUTES] min)
- Slide count: [N] slides
- Figures used: [N] from paper/figures/
- Time budget: [breakdown]
Slide-by-slide outline:
1. [Title slide]
2. [Motivation — 1.5 min]
3. [Problem statement — 1 min]
...
Proceed to drafting? Or adjust the outline?

⛔ STOP HERE and wait for user response. This is the most critical checkpoint — the outline determines the entire talk flow.

Options:

  • "go" → proceed to Phase 2
  • adjustments (e.g., "merge slides 3-4", "add a demo slide", "cut the ablation") → revise
  • "stop" → save to slides/SLIDE_OUTLINE.md

State: Write SLIDES_STATE.json with phase: 1.

Phase 2: Slide-by-Slide Content Drafting

For each slide in the outline, draft the actual content.

Presentation rules (enforced strictly):

RuleRationale
One message per slideIf a slide has two ideas, split it
Max 6 lines per slideMore than 6 lines = wall of text
Max 8 words per lineAudience reads, not listens, if text is long
Sentence fragments, not sentences"Improves F1 by 3.2%" not "Our method improves the F1 score by 3.2 percentage points"
Figure slides: figure ≥60% areaThe figure IS the content; bullets are annotations
Bold key numbers"Achieves 94.3% accuracy"
Progressive disclosureUse \pause or \onslide for complex slides
No Related Work slideUnless invited talk (30+ min)

For each slide, produce:

  1. \frametitle{}
  2. Content (itemize or figure + caption)
  3. \note{} with speaker text (if SPEAKER_NOTES=true)
Phase 3: Generate Slides LaTeX

Create slides/main.tex using beamer.

Template structure:

latex
\documentclass[aspectratio=169]{beamer}
% Venue theme
\usepackage{xcolor}
\definecolor{primary}{HTML}{VENUE_PRIMARY}
\definecolor{accent}{HTML}{VENUE_ACCENT}
% Clean theme
\usetheme{default}
\usecolortheme{default}
\setbeamercolor{frametitle}{fg=primary}
\setbeamercolor{title}{fg=primary}
\setbeamercolor{structure}{fg=accent}
\setbeamercolor{itemize item}{fg=primary}
\setbeamercolor{itemize subitem}{fg=accent}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{
\hfill\insertframenumber/\inserttotalframenumber\hspace{2mm}\vspace{2mm}
}
% Packages
\usepackage{graphicx,amsmath,booktabs}
\graphicspath{{figures/}}
% Speaker notes (if enabled)
% \setbeameroption{show notes on second screen=right}
% Metadata
\title{PAPER TITLE}
\author{Author 1 \and Author 2}
\institute{Affiliation}
\date{VENUE YEAR}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
% Content slides follow...
\begin{frame}{Motivation}
\begin{itemize}
\item Bullet point 1
\item Bullet point 2
\item \textbf{Key insight in bold}
\end{itemize}
\note{Speaker note: explain the motivation...}
\end{frame}
% Figure slide example
\begin{frame}{Method Overview}
\centering
\includegraphics[width=0.85\textwidth]{method_overview.pdf}
\vspace{0.5em}
\begin{itemize}
\item Key annotation about the figure
\end{itemize}
\note{Walk through the figure left to right...}
\end{frame}
% ... more slides ...
\begin{frame}{Thank You}
\centering
{\Large Questions?}\\[2em]
Paper: [URL or QR placeholder]\\
Code: [URL or QR placeholder]
\end{frame}
\end{document}

Symlink figures:

bash
ln -sf ../paper/figures/*.pdf slides/figures/ 2>/dev/null
ln -sf ../paper/figures/*.png slides/figures/ 2>/dev/null

Key formatting rules:

  • Title font: ≥28pt, venue primary color
  • Body font: ≥20pt
  • Footnotes: ≥14pt
  • No navigation symbols
  • Frame numbers in bottom-right
  • Clean white background (no gradients, no decorative elements)
Phase 4: Compile Slides
bash
cd slides && latexmk -$ENGINE -interaction=nonstopmode main.tex

Error handling loop (max 3 attempts):

  1. Parse error log
  2. Fix: missing package, undefined command, file not found, overfull boxes
  3. Recompile

Verification:

bash
# Check slide count matches outline
pdfinfo slides/main.pdf | grep Pages

If page count differs significantly from outline (>2 slides off), investigate.

State: Write SLIDES_STATE.json with phase: 4.

Phase 5: Codex MCP Review

Send the slide outline + selected LaTeX frames to GPT-5.4 xhigh:

mcp__codex__codex:
config: {"model_reasoning_effort": "xhigh"}
prompt: |
Review this [TALK_TYPE] presentation ([TALK_MINUTES] min) for [VENUE].
Evaluate using these criteria (score 1-5 each):
1. **Story arc** — Does the talk build a compelling narrative? (Problem → insight → method → evidence → takeaway)
2. **Slide density** — Any slides with too much text? (Max 6 lines, 8 words/line)
3. **Time budget** — Is [N] slides realistic for [TALK_MINUTES] minutes?
4. **Figure visibility** — Will figures be readable on a projector?
5. **Opening hook** — Do slides 2-3 grab attention? (Not "In this paper, we...")
6. **Takeaway** — Is the final message clear and memorable?
7. **Progressive build** — Are complex ideas revealed gradually?
Slide outline:
[PASTE SLIDE_OUTLINE.md]
Selected frames (LaTeX):
[PASTE KEY FRAMES]
Provide:
- Score for each criterion
- Top 3 actionable fixes
- Overall: Ready to present? (Yes / Needs revision / Major issues)

Apply fixes. Recompile if LaTeX was changed.

⚠️ If mcp__codex__codex is not available (no OpenAI API key), skip external review and proceed to Phase 6. Note the skip in SLIDES_STATE.json.

Save review to slides/SLIDES_REVIEW.md.

State: Write SLIDES_STATE.json with phase: 5.

Phase 6: Speaker Notes

For each slide, ensure a \note{} block exists with:

  1. What to say (2-3 complete sentences, conversational tone)
  2. Timing hint (e.g., "spend 1 minute here", "quick — 20 seconds")
  3. Transition phrase to the next slide (e.g., "So how do we actually implement this? Let me show you...")

Also generate slides/speaker_notes.md as a standalone backup:

markdown
# Speaker Notes
## Slide 1: Title
[No speaking — wait for introduction]

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
1
7-day trend score
3

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 19 Sep 2026, a month ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/kwongfuk/codex-skills/paper-slides/badge)](https://verified-skill.com/skills/kwongfuk/codex-skills/paper-slides)

Something wrong with this skill or its page? Tell us.