academic-slides — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited academic-slides (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Source. This skill is a rethemed academic derivative ofzarazhangrui/frontend-slidesby Zara Zhang. The Phase 0-5 architecture, "Show Don't Tell" preview UX,STYLE_PRESETS.md12-preset convention, viewport-fit invariant, andpython-pptx-based PPT ingest are all inherited. The academic fork swaps the 12 design themes for 12 Beamer-flavored themes (Madrid, Berlin, Copenhagen, Warsaw, Metropolis, etc.), adds Phase 0.5 (audience / takeaway / narrative arc), and layers in theorem / lemma / proof CSS classes, KaTeX math, anddata-pauseBeamer-style progressive disclosure.
Produces a single self-contained HTML file (inline CSS/JS, KaTeX via CDN — no npm, no build tools) with Beamer-style header/footer chrome, theorem/proof/algorithm boxes, KaTeX equations, data-pause progressive disclosure, keyboard + swipe navigation, and a 12-theme catalog (Madrid, Berlin, Copenhagen, Warsaw, Metropolis, Classic Serif, Cambridge, Lecture Notes, Technical Report, Thesis Defense, Seminar, Journal Article).
100vh. No scrolling within a frame, ever. This is non-negotiable.| Topic | Where to look |
|---|---|
Viewport fit invariant, density caps, theorem/proof/algorithm box CSS, AcademicPresentation JS controller, progressive disclosure (data-pause), KaTeX wiring, responsive clamp() typography, keyboard + swipe handlers | references/viewport-rules.md |
| Full CSS / structural detail per theme, frame layouts, cross-theme conventions (title / section / content / theorem / results frames) | references/themes.md |
Phase 4 PPT-ingest via python-pptx (image extraction, equation flagging, speaker notes, asset path resolution) | references/ppt-ingest.md |
| Higher-level overview of the 12 presets (vibe, best-for, font, signature colors) | STYLE_PRESETS.md |
For viewport rules, density caps, CSS box definitions, and progressive-disclosure mechanics, load references/viewport-rules.md. For full theme implementations including CSS, frame layouts, and theme-specific conventions, load references/themes.md. For PPT conversion (Mode B: ingest existing .pptx), see references/ppt-ingest.md. STYLE_PRESETS.md is the higher-level overview.
Trigger phrases include: "academic slides", "Beamer-inspired HTML slides", "conference talk slides", "thesis defense slides", "lecture slides", "seminar slides", "research presentation in HTML", "convert my PPTX to web slides", "make slides for my ICML paper", "slides with theorems and KaTeX". Use this skill when the user wants a single-file HTML deck with academic chrome rather than a .pptx, a Beamer .tex, or a Reveal.js / Slidev project.
For Beamer / LaTeX decks use /create-lecture. For PowerPoint (.pptx) decks use /academic-pptx. For full-deck review use /slide-excellence.
/academic-slides <N>-slide <type> on <topic> [using <theme>]Examples:
/academic-slides 10-slide lecture on dynamic programming using Metropolis/academic-slides conference talk on our ICML paper, Berlin themeMake 15 slides about transformer attention for my lab meetingWhen the user's message specifies enough format detail (topic, length, and/or theme name), you MAY skip the Phase 1 format questions (purpose, length, content types, field). However, you MUST still run Phase 0.5 (audience / takeaway / narrative arc). No presentation should ever be generated without asking the Phase 0.5 questions.
Mode A — New Academic Presentation. From scratch for a talk, lecture, or defense. → Phase 0.5 → Phase 1 → Phase 2 → Phase 3 → Phase 5.
Mode B — PPT/PDF/Paper Conversion. User has an existing .pptx, PDF, or paper URL. → Phase 4 (ingest) → Phase 0.5 → Phase 1P (paper focus) → Phase 2 → Phase 3 → Phase 5. See references/ppt-ingest.md.
Mode C — Existing Presentation Enhancement. User has an HTML deck and wants to improve it. Read the file, understand the structure, then enhance in place.
These questions MUST be asked before generating any presentation, regardless of mode or how much information the user provided. They cannot be inferred from topic or theme — they require the user's judgment. Ask all 3 in a single AskUserQuestion call.
Why these matter. A talk on "transformer attention" for NLP researchers looks completely different from one for undergraduate CS students. A talk whose takeaway is "our method is 3× faster" structures differently from one whose takeaway is "this framework unifies prior work." These questions determine content strategy, not format.
Question 1 — Audience (header Audience, "Who is your audience?")
Question 2 — Key Takeaway (header Takeaway, "If the audience remembers ONE thing, what should it be?")
KEY_RESULT, place on a dedicated frame, echo in conclusion).Question 3 — Narrative Arc (header Structure, "How should the presentation flow?")
Audience → depth calibration:
Takeaway → emphasis strategy:
Narrative arc → frame sequencing:
Prerequisite: Phase 0.5 has already been completed.
If the user is on the fast path (topic, length, theme all known), skip Phase 1 — Phase 0.5 has captured what matters. Proceed to Phase 2 or Phase 3.
Otherwise ask via AskUserQuestion:
Purpose): Conference talk / Lecture-Course / Seminar-Workshop / Thesis Defense.Length): Short 5–10 / Medium 10–20 / Long 20+.Content): All content ready / Rough notes / Topic only.Content Types, multiSelect): Theorems/Proofs/Lemmas, Equations/Derivations, Algorithms/Pseudocode, Citations/References.Field): Math/Stats / CS-Engineering / Natural Sciences / Humanities-Social Sciences.If the user has content, ask them to share it.
This phase runs AFTER Phase 4 (extraction) and AFTER Phase 0.5, BEFORE theme selection. Specific to Mode B when the source is a research paper.
After summarizing the extracted paper, ask:
Focus, multiSelect): Main results/theorems, Method/approach, Experiments/evaluation, Motivation/problem setup.Coverage): Deep dive on key results / Balanced overview / Highlight reel / Extended with discussion.Skip, optional, only if paper is long): Related work, Proofs and derivations, Experimental details, Nothing.Proof: see paper.Most users can't articulate design preferences in words. Instead of asking "Madrid or Metropolis?", generate mini-previews and let them react.
Option A — Guided Discovery (default). User answers mood questions; skill generates 3 previews; user picks the favorite. Best when no specific style is in mind.
Option B — Direct Selection. If the user already knows the theme ("Use Madrid", "I want something like Metropolis"), skip preview generation and go to Phase 3.
Step 2.0 — Style Path Selection (Theme, "How would you like to choose your theme?"):
Theme with all 12 options listed (Madrid, Berlin, Copenhagen, Warsaw, Metropolis, Classic Serif, Cambridge, Lecture Notes, Technical Report, Thesis Defense, Seminar, Journal Article), then skip to Phase 3.Step 2.1 — Mood Selection (Tone, multiSelect ≤ 2):
Step 2.2 — Generate 3 Theme Previews. Generate 3 distinct mini-HTML files (single title frame + one content frame with a theorem box). Each preview must feel academically authentic: Computer Modern or Source Serif primary, header/footer chrome, sample theorem box, sample KaTeX inline equation, muted/professional palette (no neon, no gradients-for-decoration). Each ~80–120 lines, fully self-contained.
Write previews to .claude-design/frame-previews/style-a.html, style-b.html, style-c.html.
Step 2.3 — Present Previews. Tell the user the file paths, give a one-line description of each theme, and ask:
Open each file:
- .claude-design/frame-previews/style-a.html
- .claude-design/frame-previews/style-b.html
- .claude-design/frame-previews/style-c.html
Which resonates? What do you like? Anything to change?Then AskUserQuestion (Theme): Theme A / Theme B / Theme C / "Mix elements" (if "Mix", ask what to combine).
For the per-theme CSS specifications and structural details to use when generating these previews, see references/themes.md. For the higher-level vibe / best-for / font reference, see STYLE_PRESETS.md.
Inputs:
KEY_RESULT).KEY_RESULT on a dedicated frame and echo in the conclusion.Default for new decks (Mode A) — single self-contained HTML, no side files:
presentation.htmlFor Mode B PPT conversion, an assets/ folder is produced as a side effect of image extraction (see references/ppt-ingest.md). This is the only case where the deck is not strictly single-file:
presentation.html
assets/ # images extracted from the source .pptxFor projects with multiple decks:
[presentation-name].html
[presentation-name]-assets/The generated HTML follows this structure:
<head> — meta, academic font CDN (Computer Modern via jsDelivr, plus Google Fonts fallback per theme), KaTeX CSS + katex.min.js + auto-render.min.js with the standard $…$ / $$…$$ delimiter config.<style> block — base reset, CSS custom properties (theme tokens), viewport-fit base, frame containers, header/footer chrome, title/section/content frame styles, theorem/definition/proof/algorithm boxes, equation block, citation block, columns grid, item-list/enum-list, responsive breakpoints (700/600/500 px height; 600 px width), reveal + data-pause animations, reduced-motion fallback.<body> — fixed .frame-header, fixed .frame-footer, one <section class="frame"> per slide.<script> — AcademicPresentation controller class: keyboard / wheel / swipe navigation, intersection observer for .visible fade-in, progressive disclosure (data-pause consumes one next() before advancing the frame), frame counter.For the full base CSS, the controller class, density limits, and box definitions, see references/viewport-rules.md. For per-theme color tokens, chrome heights, sidebar widths, and font stacks, see references/themes.md.
AcademicPresentation class — keyboard (arrows, space, Page Up/Down, Home/End), touch/swipe, mouse wheel, frame counter (X / Y)..visible class for CSS fade-in.data-pause="N" consumed one step at a time before advancing frame (Beamer \pause equivalent).<section>, <header>, <footer>, <nav>)..frame (see references/viewport-rules.md).When the source is a .pptx:
python-pptx (text, images → assets/, equation objects flagged, speaker notes).For the full python-pptx extraction script, the equation-object detection heuristic, the user-confirmation template, and asset-path resolution rules, see references/ppt-ingest.md.
.claude-design/frame-previews/.open [filename].html on macOS, start on Windows).Your presentation is ready.
File: [filename].html
Theme: [Theme Name]
Frames: [count]
Equations: KaTeX rendering enabled
Navigation:
- Arrow keys or Space to advance (including data-pause steps)
- Page Up / Page Down for frame-level navigation
- Home / End jumps to first / last
- Scroll and swipe also work; frame counter in footer
To customize:
- Colors and fonts: edit :root CSS variables at the top
- Theorem styles: .theorem-box / .definition-box / .proof-box variables
- Chrome: --header-bg, --header-fg, --footer-bg, --footer-fg
- Equations: $...$ inline, $$...$$ display (KaTeX)
Want adjustments?User: /academic-slides 10-slide lecture on dynamic programming using Lecture Notes
User: "Convert my research paper PPT to web slides."
python-pptx extracts text, saves images to assets/, flags equation objects.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.