← → or click · Esc overview · N notes
SlideOps 13 patterns · 4 themes

Slides from your repo,
that tell you when to rebuild them

A skill that turns any repository into a single-file HTML deck, then tells you which slides stopped matching the code. This demo deck was built by the skill, about the skill.

SlideOps · examples/skill-demo.html

Agenda

What we'll cover

1. What it builds

One self-contained HTML file; nothing invented to fill space.

2. How to use it

The guided intake: it scans your repo, then asks with real options.

3. Design control

Four theme presets, font options, Mermaid diagrams: shown on real decks.

4. Under the hood

The verification loop that makes "done" mean "looked at".

What it builds

One file, no dependencies, all real

Every deck is a single HTML file: 1280×720 slides, click/arrow/URL-hash navigation, a progress bar, optional paginated PDF export. No build step, no CDN, works offline and attaches to an email.

Grounded content

Code snippets are copied from real files, stats are recomputed from raw data, diagrams trace real call paths, images are real artifacts. When docs and code disagree, code wins.

Two starting points

A general overview (what it is, install, run, architecture) or a focused deep dive (one subsystem, one release, one decision).

How to use it

The pipeline, orient to ship

Orient
2-minute repo scan before any question
→
Intake
one compact set of questions, concrete options
→
Research
read the real files behind every planned claim
↓
Outline checkpoint
topic list shown for a thumbs-up before any HTML
→
Build
template patterns filled with verified content
→
Verify & ship
every slide screenshotted and viewed; the deck is the only file left behind

The checkpoint is the highest-leverage step: 30 seconds of review beats rebuilding 25 slides around the wrong topics.

How to use it

Say what you want, it asks the rest

💬 "make slides about this repo"
→ scans README, git log, and docs first, then proposes 3-4 concrete deck topics with a "why now" for each, plus audience, length, theme, and extras menus

💬 "deep dive on the auth subsystem, midnight theme, with a PDF"
→ skips answered questions, researches the subsystem, shows the outline, builds a 12-20 slide deck and a page-per-slide verified PDF

# install: copy the skill folder into your skills directory
cp -R slideops ~/.claude/skills/

Existing decks in the output folder reshape the proposals: covered topics drop off the list, and "update deck X" appears when commits have landed since it shipped.

How to use it

Three deck shapes

Deck typeSlidesSection dividersReal decks built with it
Lightning update8-15No, straight into contentrelease update (12), design system tour (12)
Focused deep dive12-20Only if sub-topics run 3+ slidessubsystem deep dive (16-19)
General overview20-35Yes, one per major sectiononboarding overview (25)

Density rule: one idea per slide. A table, a diagram, and a code comparison get three slides, not one.

How to use it

The accuracy contract

Always

  • Copy snippets from the real file, then HTML-escape them
  • Recompute every aggregate stat from the raw data
  • Ground "shipped" claims in actual commits via git log
  • Trace diagrams through real imports and call sites

Never

  • Fabricate a chart or invent numbers for a caption
  • Reword a quoted line to make it fit the slide
  • Checkmark planned work as if it shipped
  • Trust a doc the code contradicts

Why so strict: a wrong technical detail is far worse than a slide with less detail on it. The style guide enforces this with grep checks, not good intentions.

How to use it

13 slide patterns, copy and fill

PatternUse for
Title · agenda · section divider · closingDeck skeleton; dividers give multi-topic decks breathing room
Prose + cards"What is X" concept intros
Reference tableFlags, modes, field lists: anything row-shaped
Before/after codeMigrations and "old way vs new way", both sides verbatim
Annotated snippet (half or full width)One real file with commentary; full width fits ~95-char lines
Flow diagram · lane comparisonSimple pipelines and "where does X apply" rows
Image + captionReal screenshots and generated charts only
Chat bubbles"Say this, get that" usage examples (slide 5 of this deck)

Each block ships in assets/template.html with a comment saying when to use it; unused blocks get deleted.

Design control

The whole theme is one block

assets/template.html
:root{
  /* surfaces */
  --bg:#faf6ee; --bg2:#f2ecdf; --card:#ffffff; --code-bg:#2b2820;
  …
  /* roles */
  --accent:#7a7f1f; --accent2:#5f6419; --warn:#a34a3f; --bad:#b5544a;
  …
  --card-border:color-mix(in srgb, var(--muted) 30%, transparent);
}

Every color derives from these tokens: tags, tints, borders, and gradients are color-mix expressions, so swapping the block restyles the entire deck.

Presets in references/themes.md: Ledger Light, Ledger Dark, midnight, graphite, or extract a brand's real CSS values and map them onto the roles. The next four slides are real decks, one per theme.

Design control · themes 1 of 4

Ledger Light, the default

Sample slide in the Ledger Light theme: a reference table on warm paper surfaces

Sample deck slide in the default theme: warm paper surfaces, olive accent, dark code blocks.

Design control · themes 2 of 4

Ledger Dark, the same palette after dark

Sample slide in the Ledger Dark theme: a flow diagram on warm espresso surfaces

The same sample deck in Ledger Dark: espresso surfaces and a soft gold accent, the same warm family after dark.

Design control · themes 3 of 4

Midnight, with an inline Mermaid diagram

Sample slide in the Midnight theme: a Mermaid sequence diagram on deep navy

Sample deck in Midnight: deep navy, sky-blue accent, with a Mermaid sequence diagram pre-rendered to themed SVG.

Design control · themes 4 of 4

Graphite, and how cheap a re-theme is

Sample slide in the Graphite theme: an annotated code snippet on near-black surfaces

The same sample deck re-themed to graphite by replacing its :root block and nothing else.

Design control

Mermaid without breaking self-containment

references/diagrams.md
npx --yes @mermaid-js/mermaid-cli \
  -i "$STAGE/<name>.mmd" -o "$STAGE/<name>.svg" \
  -c "$STAGE/mermaid-config.json" -p "$STAGE/puppeteer-config.json" \
  -b transparent -I "mmd-<name>"

Rendered at build time, inlined as SVG: no runtime JS, no CDN. The config maps the deck's current theme tokens onto Mermaid's themeVariables, and the unique svgId keeps two diagrams from restyling each other.

When to bother: sequence diagrams, branching graphs, and ER diagrams. Simple linear pipelines use the built-in flow boxes instead (slide 4 of this deck), which need no tooling at all.

Under the hood

The deck tells you when it goes stale

$ python3 scripts/check.py docs/slides/architecture.html --repo .
  slide   7  PIPELINE    backend/app/main.py:40-58      CURRENT
  slide  12  MIGRATIONS  backend/alembic/env.py:18-31   MOVED      same content, now at lines 22-35
  slide  15  RATE-LIMIT  backend/app/middleware/rate.py CHANGED    4 line(s) differ

1 current, 2 stale, 3 cited in total.

Every snippet carries its source: data-src="path:40-58" plus a hash of those lines at build time. Checking a deck re-reads the repository and compares.

Exit code 1 when anything is stale, so a CI job fails the day a deck stops matching the code, not the day someone presents it. --suggest prints the diff and the replacement.

Under the hood

"Done" means "looked at"

CheckWhat it catches
Screenshot every slide with headless Chrome, view each PNGText under the nav pill, stretched cards, clipped code, broken images, wrong numbers
Tag-balance grep (sections and divs)One unclosed div silently breaking every later slide
Em-dash and color-literal grepsStyle violations and colors that escaped the theme block
PDF re-rendered via pypdfium2Structurally valid PDFs whose image pages are silently blank

Chrome discovery is cross-platform (macOS and Linux Playwright caches, then system installs); staging is a fresh per-deck directory so parallel builds never collide.

Closing

What ships & where to start

What ships

  • SKILL.md: the workflow, intake to ship
  • assets/template.html: 13 patterns, nav, theme block
  • references/: style, themes, diagrams, verification, freshness, automation
  • examples/skill-demo.html: this deck
  • slides-to-pdf: companion skill, any HTML deck to PDF
  • scripts/cite.py: writes a citation, stamps the build commit
  • scripts/check.py: tells you when a deck goes stale

Start here

  • SKILL.md: read top to bottom once
  • references/style-guide.md: the writing rules and grep checks
  • references/themes.md: palettes and fonts

Say "make slides about this repo" and let the intake do the rest

1 / 1