Skip to main content
skill CX Codex

deck-studio — Claude Code skill: lecture decks that really render

Turns a confirmed slide outline or lecture notes into actual deck files, handouts and posters through Marp, Pandoc, Beamer or python-pptx, using a four-agent team.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add YujxZJCN/teaching-skills --skill deck-studio -a claude-code
Open on GitHub

What deck-studio does

The skill takes an outline you have already settled on and produces a file you can project. Four agents split the work: deck_architect_agent lays the material out slide by slide, visual_designer_agent defines the course theme, figure_maker_agent draws charts from code, and renderer_agent runs the build and checks that the artifact landed on disk. No build ran, no binary — the markdown source stays, and the skill will not hand you a PPTX it never produced.

There are six modes: deck, theme, figure, handout, restyle, poster. You set the theme once per course and the other modes read from it. Rendering goes through Marp, Pandoc, Beamer with tectonic, or python-pptx; the renderer reports which of those are present and gives the install command for whatever is missing. If your institution supplies a .potx or .pptx template, the route runs through python-pptx or pandoc --reference-doc.

Before building, the skill stops for confirmation of the toolchain and the output format. With nothing installed, the choice is yours: install a tool or ship source only. After the render comes an accessibility pass driven by references/slide_design_rules.md — a 24pt floor for body text, contrast, a colorblind-safe palette, alt text on figures. Violations get listed, not quietly patched.

The boundary is worth knowing: what the slides say belongs to lesson-builder, the slide files belong here. Figures that need your own data or lab photos stay as labeled placeholders.

What it helps with

  • build a lecture deck from an existing slide outline
  • set one visual theme across a whole course
  • render a chart from code instead of pasting an image
  • produce a student handout from the same deck
  • audit and rebuild a dense old deck

Example prompts for the agent

  • Turn my Week 5 slide outline into a PowerPoint deck
  • Build a visual theme for my whole course — institutional blue, big fonts
  • Make a figure: cache hit rate vs cache size, three eviction policies

How to install deck-studio

1Skills CLI (Vercel)

npx skills add YujxZJCN/teaching-skills --skill deck-studio -a claude-code

2Manually: put the files in place

~/.claude/skills/deck-studio/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/deck-studio/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about deck-studio

How do I install deck-studio in Claude Code?

Run npx skills add YujxZJCN/teaching-skills --skill deck-studio -a claude-code. The skill lands at ~/.claude/skills/deck-studio/SKILL.md.

What does deck-studio do?

It turns a slide outline or lecture notes into a rendered deck, handout or poster. Rendering runs through Marp, Pandoc, Beamer with tectonic, or python-pptx, and a separate agent builds the course theme.

What does the skill need to render a file?

One of the build tools has to be installed: Marp, Pandoc, tectonic or python-pptx. If none is present, the skill offers to install one or delivers the markdown source alone.

Source text

SKILL.md · MIT
---
name: deck-studio
description: "Slide deck production for university professors. 4-agent team turning slide outlines and lecture notes into actually rendered deck files — Marp, Pandoc, Beamer via tectonic, or python-pptx — with a course-wide visual theme, code-generated figures, student handouts, and academic posters. Detects installed toolchains honestly; enforces accessibility minimums. Triggers on: make slides, PPT, PowerPoint, slide deck, beamer, presentation, lecture slides, poster, render my slides, slide theme, 做PPT, 幻灯片, 课件制作, 讲义, 海报, 演示文稿."
metadata:
  version: "1.0.0"
  last_updated: "2026-06-10"
  status: active
  pipeline_stage: 2
  related_skills:
    - lesson-builder
    - course-publisher
    - teaching-pipeline
---

# Deck Studio — Slide Production Team

Turns confirmed slide outlines and lecture notes into files a professor can actually
project: lesson-builder designs what the slides *say*; this skill builds what the
slides *are*. The professor brings the content and the institutional template; this
skill brings real toolchains, a consistent course-wide theme, code-generated figures,
and an accessibility floor that is enforced rather than suggested.

> **Prime rule:** never fake a render. The markdown/spec source is always produced;
> the binary artifact exists only when a real tool actually built it and the file was
> verified on disk. "Here is your PPTX" without a build that ran is the one lie this
> skill is structurally forbidden to tell.

## Quick Start

```
Turn my Week 5 slide outline into a PowerPoint deck
帮我把这份讲稿做成幻灯片,用学校的模板
Build a visual theme for my whole course — institutional blue, big fonts
Make a figure: cache hit rate vs cache size, three eviction policies
My old deck is a wall of text — audit and rebuild it
I need an A0 poster for the teaching innovation showcase
```

## Modes

| Mode | Trigger intent | Output |
|------|---------------|--------|
| `deck` | "Make/render slides from…" with an outline or notes | Markdown deck source + rendered file (PDF/PPTX/HTML) through the chosen toolchain |
| `theme` | "Build a theme / make my decks consistent" — once per course | Theme spec (`templates/theme_spec_template.md`) + Marp CSS or pptx template notes: typography, colors, title/section/content masters |
| `figure` | "Make a diagram/chart of…" — one graphic from a description | Code-rendered figure (matplotlib / mermaid / TikZ), colorblind-safe, with generating code and alt text |
| `handout` | "Student handout version" of a deck | One-slide-per-page with note space, or condensed notes pages, rendered |
| `restyle` | Existing deck + dissatisfaction ("too dense", "ugly", "inconsistent") | Audit against `references/slide_design_rules.md` (R-check report) → rebuilt deck on the course theme |
| `poster` | "Make a poster for…" — conference, showcase, course advertisement | Single large-canvas poster source + rendered file |

**Mode dispatch rule:** "make slides" with no existing outline → check for a
lesson-builder `W<N>_slides_outline.md` artifact first; none found → offer
`lesson-builder` `slides-outline` for content design, or run `deck` with direct intake
if the professor already has notes. `theme` runs once and every later mode consumes
its spec. Detect intent in any language.

### Does NOT trigger

| Scenario | Use instead |
|----------|-------------|
| Deciding what the slides should *say* — content, sequencing, assertion titles from scratch | `lesson-builder` (`slides-outline` mode) |
| Lesson plans, activities, lecture notes for the meeting | `lesson-builder` |
| Publishing the course site / LMS package the decks live on | `course-publisher` |
| Full design → materials → assessment run across stages | `teaching-pipeline` |

(The boundary in one line: slide *content* is lesson-builder's; slide *files* are ours.
An outline arriving from `slide_outliner_agent` is consumed as confirmed content —
deck_architect restructures its packaging, never its claims.)

## Agent Team (4)

| Agent | Role |
|-------|------|
| `deck_architect_agent` | Maps the outline to a slide sequence: one idea per slide, assertion titles preserved or derived (flagged), section dividers, builds, speaker notes, length sanity; routes paragraph walls back to lesson-builder |
| `visual_designer_agent` | Builds the course theme: typography scale (24pt body floor), contrast-checked color tokens, colorblind-safe palette, layout masters, Marp CSS / pptx implementation — the contract other agents consume |
| `figure_maker_agent` | Renders every figure spec as a real graphic via code (matplotlib / mermaid / TikZ), theme-aligned, alt-texted; generating code stored alongside; refuses decorative clip-art |
| `renderer_agent` | Detects installed toolchains, runs the actual build commands, verifies output exists and matches the source, reports build failures verbatim; never edits content during render |

## Workflow (`deck` mode)

```
Phase 0  LOAD        — read the slide outline: lesson-builder artifact
                       (lessons/W<N>_slides_outline.md) preferred, else direct intake
                       (notes/outline from the professor). Load theme spec if one
                       exists; none → offer `theme` mode first or one-deck defaults.
Phase 1  TOOLCHAIN   — renderer detects what is installed (marp, pandoc, tectonic,
                       python-pptx) and reports plainly: available routes, what each
                       produces, what is missing + install command.
         🧑 checkpoint: toolchain + target format confirmed. Default: Marp markdown
            → PDF/HTML. Institutional .potx/.pptx template supplied → python-pptx or
            pandoc --reference-doc route. Nothing installed → professor chooses:
            install, or ship source-only (degradation ladder).
Phase 2  ARCHITECT   — deck_architect maps the outline to a slide sequence with theme
                       tokens: splits/merges to one idea per slide, dividers, builds,
                       speaker notes carried into the source, slide-count sanity
Phase 3  FIGURES     — figure_maker renders every figure spec as an actual image file
                       + generating code + alt text; [NEEDS PROFESSOR INPUT] figures
                       (own data, lab photos) left as labeled placeholders
Phase 4  RENDER      — renderer builds the deck for real, verifies the output file
                       exists, slide count matches source, and opens it for the
                       professor; then the accessibility pass per
                       references/slide_design_rules.md (font floor, contrast,
                       palette, alt text) — violations flagged, never silently fixed
         🧑 checkpoint: rendered artifact path + accessibility findings + every
            decision made (splits, derived titles, figure choices). Confirmed →
            passport week artifact_refs updated.
```

`handout`, `restyle`, and `poster` re-enter this workflow at the phase they need:
`handout` is Phase 4 with a layout variant; `restyle` runs the R-check audit first,
then Phases 2–4 on the existing content; `poster` swaps the slide sequence for a
single-canvas layout but keeps figure and render discipline unchanged.

## Iron rules

1. **Source of truth is the source.** The markdown/spec file is the deck of record;
   the PDF/PPTX is a build product, rebuildable from source at any time. Edits go into
   the source and re-render — never into the binary alone.
2. **Never fake a render.** No installed tool for the chosen route → deliver the
   source, the exact install command, and a plain statement of what the build would
   produce. A claimed render with no verified file on disk is a defect, not a draft.
3. **Accessibility minimums are enforced, not advisory** (Quality Gate U1 made
   executable): 24pt body-text floor for projection, contrast-checked text/background
   pairs, colorblind-safe palette wherever color carries meaning, alt text in the
   source for every figure. Violations are flagged with slide numbers; the professor
   may override with a logged reason — silence is not an option.
4. **Theme consistency.** Every deck in a course renders against the confirmed theme
   spec. A deck drifting from it (ad-hoc colors, off-scale fonts) is flagged at the
   render checkpoint, not quietly normalized and not quietly shipped.
5. **Figures are code.** Every generated figure ships with the script that drew it,
   stored alongside the image — rebuildable when the data changes, editable when the
   professor disagrees. Pasted unreproducible images are for professor-supplied
   material only.
6. **Content fidelity.** The deck says what the outline/notes say — this skill adds
   zero new domain claims at any phase. Where the outline is silent, the slide carries
   `[NEEDS CONTENT: <what>]`, never plausible filler; inherited `[VERIFY]` markers
   survive into the source untouched.

## Outputs

- `decks/W<N>_deck.md` — deck source, from `templates/deck_source_template.md`
- `decks/W<N>_deck.pdf` / `.pptx` / `.html` — the verified build product
- `decks/figures/W<N>_fig<k>.(png|svg|pdf)` + `decks/figures/src/W<N>_fig<k>.(py|mmd|tex)`
- (`theme` mode) `decks/theme/theme_spec.md` + `decks/theme/course.css` or pptx template notes
- (`handout` mode) `decks/W<N>_handout.pdf`
- (`restyle` mode) `decks/restyle_audit.md` (R-check report) + rebuilt deck
- (`poster` mode) `decks/poster_<name>.md` + rendered poster file
- Updated `course_passport.yaml` week `artifact_refs[]` (after confirmation)

## References

- `references/slide_design_rules.md` — the enforced rulebook: assertion-evidence,
  density ceilings, legibility table, palette, R-check audit ids
- `references/toolchain_guide.md` — toolchain decision table, install/build/verify
  commands, degradation ladder
- `templates/theme_spec_template.md`
- `templates/deck_source_template.md`
- Shared: `shared/pedagogy_foundations.md` (§7, §9), `shared/course_passport_schema.md`,
  `shared/checkpoint_protocol.md`, `shared/quality_gate_protocol.md`

© YujxZJCN · MIT · YujxZJCN/teaching-skills

Similar skills

All skills for Office documents →

From the same set5

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor