lingzhi227/slide-generation
Convert a completed paper into presentation slides (Beamer LaTeX) or poster. Extract key figures, tables, equations, and create a narrative flow for oral presentation. Identified gap in existing tools — designed from best practices.
npx skills add https://github.com/lingzhi227/agent-research-skills --skill slide-generation
Convert a completed paper into presentation slides or poster.
$0 — Paper LaTeX file (main.tex) or paper directory~/.claude/skills/slide-generation/references/slide-templates.mdpython ~/.claude/skills/slide-generation/scripts/extract_paper_elements.py --tex main.tex --output slides_skeleton.tex
python ~/.claude/skills/slide-generation/scripts/extract_paper_elements.py --tex main.tex --format json --output elements.json
python ~/.claude/skills/slide-generation/scripts/extract_paper_elements.py --tex main.tex --output slides.tex --theme metropolis
Parses .tex, extracts title/authors/sections/equations/figures/tables, generates Beamer skeleton.
From the paper, extract:
Standard oral presentation flow (~15-20 slides):
| Slide # | Content | Source Section |
|---------|---------|---------------|
| 1 | Title slide | Title/Authors |
| 2 | Motivation / Problem | Introduction |
| 3 | Why existing solutions fail | Related Work |
| 4-5 | Our approach (high-level) | Methods |
| 6-8 | Technical details + equations | Methods |
| 9 | Experimental setup | Experiments |
| 10-13 | Results (figures + tables) | Results |
| 14 | Ablation study | Results |
| 15 | Limitations & Future work | Discussion |
| 16 | Conclusion | Conclusion |
| 17 | Thank you + Q&A | — |
\documentclass[aspectratio=169]{beamer}
\usetheme{metropolis}
\title{Paper Title}
\author{Authors}
\date{Venue Year}
\begin{document}
\maketitle
\begin{frame}{Motivation}
\begin{itemize}
\item Problem statement
\item Why it matters
\end{itemize}
\end{frame}
% ... more frames
\end{document}
For poster sessions, use a multi-column layout:
Take lingzhi227/slide-generation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.