Skip to content

Code-first presentations that talk back

Author decks in MDX and TSX. The engine compiles them into one self-contained HTML file that presents offline, runs live sessions with polls and Q&A, and your agent can write it too, as real source you own.

terminal
$ npm install -g bun
$ bun add -g @liebstoeckel/cli
$ liebstoeckel skill install

liebstoeckel is a small, opinionated engine + theming layer, not another reveal.js: content is authored in MDX/TSX, design lives in one place per brand, and motion is first-class.

Single-file output
Every deck builds to one portable .html: JS and CSS inlined, assets base64’d. No server, no CDN. It drops into an email, a USB stick, an air-gapped room. And it isn’t a dead end: liebstoeckel eject turns a built file back into an editable project.
guides/building
Motion that matters
Magic Move (layoutId), spring choreography, animated code diffs: the reason to build our own engine instead of bending a generic tool.
guides/animated-code
Brands, not styles
A deck declares brand: “acme” and inherits the whole look from typed design tokens. Override one token for a one-off without forking the theme.
guides/theming
Decks that talk back
Host the same file and it opens a live Yjs session: polls, audience Q&A, and reactions sync to every device in the room. Unhosted, plugins render a quiet fallback.
guides/live
Built for agents
liebstoeckel skill install teaches your agent the same CLI you use: it reads the component registry, writes MDX and TSX you own, and loops on build —check until the deck is green.
reference/cli
Mobile-ready
The audience joins from a phone. Tap a glowing plugin to interact full-size, swipe to navigate, and the presenter view adapts down to a handset.
guides/mobile

These docs are agent-readable too: every page has Copy Markdown and Open in ChatGPT / Claude, a raw .md at each URL, and an /llms.txt index.

bun add -g @liebstoeckel/cli # or: bunx @liebstoeckel/cli …
liebstoeckel new my-talk # scaffold a deck
liebstoeckel live my-talk # present live (audience joins by QR)
liebstoeckel build my-talk # → one self-contained dist/my-talk.html
  1. Get started: install, scaffold a deck, and run the dev server.
  2. Your first deck: slides, speaker notes, reveal steps, and motion.
  3. Build a plugin: polls, Q&A, reactions, or one of your own.
liebstoeckel

Code-first presentations your agent can author. One file out, no server.

© 2026 Leon Kaucher