with one click
research-slide-deck-builder
// Design and write reusable research slide decks. Use for advisor updates, lab talks, reading reports, proposals, conference talks, Slidev content, and slide structure.
// Design and write reusable research slide decks. Use for advisor updates, lab talks, reading reports, proposals, conference talks, Slidev content, and slide structure.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | research-slide-deck-builder |
| description | Design and write reusable research slide decks. Use for advisor updates, lab talks, reading reports, proposals, conference talks, Slidev content, and slide structure. |
| allowed-tools | Read, Write, Edit, Bash, Glob |
Turn research content into a clear slide deck: story, slide order, page-level layout, figure placement, speaker notes, and the actual deck source.
This skill should use the external progress-slides template repo as the preferred implementation scaffold for progress, advisor, lab, and research-update decks:
https://github.com/a-green-hand-jack/progress-slides.git
Do not duplicate that template inside this skill. Treat it as an external slides component or project template that should be cloned, inspected, installed, and edited in the user's project.
Use presentation-dry-run later when the user already has slides and wants timing, spoken transitions, rehearsal, or Q&A practice.
progress-slides or a reusable slides template.project-init project has a slides/ component that needs content, setup, or maintenance.progress-slides for research progress, advisor, lab, and project-update decks unless the user explicitly asks for another format.README.md, package.json, and existing slide source files because the external repo is the source of truth.<ProjectName>/slides/ as an independent component repo.progress-slidesFor a new slides component:
git clone https://github.com/a-green-hand-jack/progress-slides.git slides
cd slides
Then inspect the template:
ls
cat README.md
cat package.json
Install dependencies using the package manager indicated by the template lockfile or README. If there is no stronger local instruction, use:
npm install
Run the local preview command from package.json. Common Slidev-style commands are:
npm run dev
npx slidev
For an existing project:
slides/ already exists and is the template repo, edit it in place.slides/ exists but is not the template, ask whether to migrate, add progress-slides as a new independent repo, or only write a compatible outline.slides/.A research project will usually need many decks over its lifetime. Treat slides/ as a deck workspace, not as one permanent slides.md.
Recommended shape:
slides/
├── slides.md # optional active/scratch deck or template index
├── decks/
│ ├── 2026-05-02-advisor-plan.md
│ ├── 2026-05-09-lab-update.md
│ ├── 2026-05-15-result-review.md
│ ├── neurips-rebuttal-risk-review.md
│ ├── assets/ # deck-local assets when Slidev root is decks/
│ ├── setup/
│ └── styles/
├── assets/
│ └── <shared-or-root-deck-assets>
├── templates/
├── snippets/
└── .agent/
├── slides-status.md # component-level status
├── deck-index.md # registry of decks
└── decks/
└── 2026-05-02-advisor-plan.md
Use this policy:
decks/<date>-<audience-or-purpose>-<slug>.md.slides.md only for the active default deck, a temporary working copy, or the template's sample/index deck.snippets/; keep full historical decks in decks/.dist/ or ignored export paths, not as the source of truth.decks/<deck-id>.md, use decks/assets/<deck-id>/... and reference it from the deck as ./assets/<deck-id>/.... Use assets/shared/... only for assets proven to resolve from the active entry.slides.md, initialize there first and then move or copy the finalized source into decks/<deck-id>.md, or use its --out decks/<deck-id>.md option when available.Record deck memory:
slides/.agent/slides-status.md: component status, active deck, recent decks, stale evidence, build/export policyslides/.agent/deck-index.md: one row per deck with id, path, audience, date, purpose, source evidence, validation status, and follow-upslides/.agent/decks/<deck-id>.md: optional per-deck notes for important decks, including deck contract, source evidence, visual validation, and unresolved risksBefore writing slide source, establish a short deck contract:
deck_scope: the one narrative lane this deck is allowed to coverallowed_terms: project names and presentation terms that should appear, such as FK-Doob-PhysGenbanned_terms: implementation names, stale project names, or route words that must not appear in audience-facing textone_sentence_claim: the sentence the audience should rememberproject_title: the exact project name that must appear in the title slide and deck metadataAfter writing, search the slide source for banned or stale terms. If an internal code name is useful during implementation but confusing for the audience, replace it with the presentation term in headings and takeaways while keeping the implementation term only where technically necessary.
Default naming rule: the title slide, browser/PDF metadata, and first H1 must include the project name. Do not use a method-only title unless the user explicitly asks for it.
Determine:
decks/Use the closest archetype.
Advisor update deck:
Lab meeting research update:
Paper reading report:
Conference-style talk:
For each slide, write:
If a slide has no takeaway, merge it, cut it, or move it to backup.
Apply a capacity budget before editing source:
After inspecting progress-slides, write in the format the template already uses. For Slidev-style Markdown, prefer this pattern:
---
theme: default
title: Project Progress Update
---
# Specific Takeaway Title
- Evidence or status point
- Decision or implication
<!--
Speaker note: what to say in 20-40 seconds.
-->
---
# Main Result Supports the Current Claim
<figure-or-table-placeholder>
- Setup:
- Metric:
- Interpretation:
Keep speaker notes close to the slide source when the template supports notes. Keep image paths relative to the slide deck so the deck can be moved or shared.
Slidev source guardrails:
---
layout: center
class: text-center
---
layout: or class: lines in normal Markdown body text.^layout: and ^class: outside frontmatter blocks if the source was heavily modified.decks/, run Slidev against that file, such as npx slidev decks/2026-05-02-advisor-plan.md, instead of assuming the default slides.md is the target.Slidev root, assets, and styling guardrails:
slides/decks/<deck-id>.md, the root may be slides/decks/, not slides/.slides/decks/assets/<deck-id>/figure.png, and reference them as ./assets/<deck-id>/figure.png from slides/decks/<deck-id>.md.slides/decks/styles/index.css, and load it from slides/decks/setup/main.ts with import '../styles/index.css'.<style> block for deck-wide styling; it can fail to apply consistently across slides.pre, code, and code span colors.sips -g pixelWidth -g pixelHeight <figure>.png
code/docs/results/, code/docs/reports/, paper figures, or user-provided assets.figure-results-review before finalizing the deck.memory/ or slides/.agent/ with the risk.Before build or export:
banned_terms, stale project names, and internal implementation names in audience-facing headings and takeawaysmodel_D, only in implementation-detail slidesBefore finishing:
npm run build alone as proof that the slides are visually usableslidev export --format png; Slidev CLI export requires Playwright/playwright-chromiumslides/.agent/slides-status.md and slides/.agent/deck-index.md with deck path, purpose, audience, source evidence, build status, visual validation status, stale evidence risks, known unchecked risks, and follow-up actions when using a project-control-root layoutslides/.agent/decks/<deck-id>.mdFinal checklist:
- [ ] Deck source lives in `decks/<deck-id>.md` unless this is a temporary/default `slides.md` deck.
- [ ] `slides.md` was not used to overwrite a previous real meeting deck.
- [ ] Title includes project name.
- [ ] Deck has one explicit narrative scope.
- [ ] Banned or stale terms checked with search.
- [ ] No normal slide has H1 + question box + code block + takeaway together.
- [ ] Code blocks are <= 3 lines unless in backup.
- [ ] Tables fit within 16:9 width.
- [ ] No literal `layout:` or `class:` frontmatter is rendered as body text.
- [ ] Deck-local assets resolve from the active Slidev root.
- [ ] Global CSS is imported from the active Slidev root, not only embedded in Markdown.
- [ ] Result figure dimensions were inspected before final sizing.
- [ ] Internal code names are replaced in audience-facing text where appropriate.
- [ ] Preview/build passes, or missing dependency is recorded.
- [ ] Representative 16:9 screenshots, PNG/PDF export, or browser visual inspection completed.
- [ ] Code blocks remain readable after syntax highlighting.
- [ ] Figure slides are readable and not undersized.
- [ ] `slides/.agent/slides-status.md` and `slides/.agent/deck-index.md` updated when project memory is present.
For a planning-only request, produce:
# Research Slide Deck Plan - [Deck Name]
## Context
- Audience:
- Time limit:
- Goal:
- One takeaway:
- Template: progress-slides
- Deck id:
- Deck path:
- Deck scope:
- Allowed terms:
- Banned terms:
## Slide Plan
| # | Type | Takeaway title | Visual/evidence | Speaker note | Risk |
|---:|---|---|---|---|---|
## Required Assets
- [ ] [figure/table/diagram]
## Decision Points
1. [Decision/question]
## Backup Slides
- [Backup topic]
For an implementation request, edit the actual slides/ source files in the cloned progress-slides repo and report the changed paths plus the preview/build command used.
When creating a new deck in an existing slides component, default to:
slides/decks/<YYYY-MM-DD>-<audience-or-purpose>-<slug>.md
slides/decks/assets/<deck-id>/...
slides/.agent/deck-index.md
slides/.agent/decks/<deck-id>.md
Use slides/slides.md only when the user explicitly wants the current default deck or the template tooling requires a temporary staging file.
slides/slides.md as the only deck file for a project lifecycle.