For developers and their coding agents
Readable HTML · no build step · automated deck checks · offline delivery · MIT
A deck is a folder of readable HTML on Web standards: no build step for the author, a clean diff in Git, and the runtime sits in the folder, so nothing needs reinstalling when you reopen it. You or your coding agent write the slides; Rikiki checks every slide in a browser and exports standalone HTML or PDF.
Interactive example
Edit the HTML and watch the slide respond. The panel below runs three sample rules of its own, so you can see the loop from edit to diagnostic; the real rikiki check command loads every slide in Chromium and reports structural, runtime, timing and visual-layout diagnostics.
What you write
interactive exampleWhat Rikiki renders
<deck-feature> sets the composition.title and lead place the copy.<deck-code> renders the code.npx rikiki init index.htmlstarter decknpx rikiki check index.htmldiagnostic reportnpx rikiki render index.htmlPNGs + gallerynpx rikiki bundle index.htmlstandalone HTMLnpx rikiki export index.htmlPDFnpm i -D playwright && npx playwright install chromium); bundle also needs the rolldown bundler.Example decks
These are the example decks shipped in the repository, under examples/. The docs tour is the reference: it is the deck the documentation itself runs on.
The deck the documentation embeds, written as a source deck against the shared runtime.
Open the deckOne slide per layout, with eleven opt-in components loaded by their own script tags.
Open the deckOne self-contained file, bundled from its authoring source with no external reference left.
Open the deckThumbnails rendered by npx rikiki render, one picture per first slide.
Coding-agent workflow
Rikiki ships a component reference and an authoring workflow for coding agents. Hand your own agent a brief plus llms.txt, the packaged component reference; it writes the same HTML you would review by hand, and rikiki check returns diagnostics for the next revision. Rikiki supplies the reference and the checks, not an AI service.
your briefllms.txtindex.htmlrikiki checkHTML · PDF · PNGsReusable parts
<deck-cover>An XL title on a dark surface, with an optional brand mark and a meta block for the speaker, company and talk duration.
<deck-feature>One idea per slide, backed by code, a Markdown table, a mermaid diagram or a single large stat.
<deck-split>Lay content side by side in two or three columns, with ratios like cols="1-1", "1-2" or "3".
<deck-bento>Arrange several ideas on one slide with explicit rows, columns and spans, so each keeps the space it deserves.
<deck-kpi-grid> optional moduleAlign a small set of metrics so the result reads in one glance. Loads from dist/deck-kpi-grid.js when a deck imports it.
<deck-takeaway>A single line, centered on a dark background, for the point the audience should remember.
Swipe to browse · 6 layouts
Mediaphoto · mermaid · code
Datastat · metric · tier list
Structuregrid · stack · cards
Browse all componentsDesign system
Theme tokens control the main colors, type and spacing of deck components. Copy themes/rikiki.css, keep its structure and adjust the values for your brand.
Embedded learning
A Rikiki deck is a Web Component, so the same material can live inside a training course, an onboarding guide, or product documentation. The slide canvas scales to its container; keyboard navigation starts when the embedded deck has focus.
The integration
<deck-root
autoplay="4000"
loop
swipe>
…your slides
</deck-root>Add three attributes to the existing deck. Autoplay pauses on hover, touch gestures work on mobile, and loop returns to the first slide.
Optional modules
The ~43 KB initial load excludes these modules. In a source deck, imported modules load when their feature starts. A standalone bundle packages them locally.
Sizes below are measured from the current gzip-compressed build artifacts.
deck-transition.jsAdd slide, fade, zoom or flip transitions only when a deck asks for them.
Activatetransition="slide"
deck-presenter.jsOpen the current slide, next slide, notes and timer in a synchronized presenter window.
Activatepress P
shiki.jsLoad TextMate syntax highlighting and its vendored engine on first use, with no CDN request.
ActivateinstallShiki()
Optional component modules
<deck-agenda> · <deck-flow> · <deck-graph> · <deck-kpi-grid> · <deck-timeline> · <deck-versus> · and more
A deck is plain HTML, so your own custom elements or a stylesheet can sit next to it and load with a <script type="module"> tag, with no build step. Read the API reference
Fit check
Rikiki is a small tool with a definite shape. Both lists are short on purpose.
.pptx files.FAQ
--- separator to learn. Inside a slide, the core <deck-md> component renders standard GitHub-flavoured Markdown, including headings, lists, links, tables, code blocks and images, plus one ::: cards fence that expands into a card grid. A deck can mix HTML slides and Markdown bodies freely.rikiki export deck.html --output deck.pdf, which drives a headless Chromium and waits for fonts and diagrams first. The CLI needs Playwright, an optional peer dependency.<deck-notes> inside any slide, then press P during the talk. A popup opens with the current and next slide, the notes, a timer and a slide counter. The two windows synchronize locally through BroadcastChannel; no external service is involved.themes/rikiki.css, change the palette and semantic CSS variables, then link your file instead of the default theme. For one component instance, override its documented --deck-* variables directly.<deck-root> in a page and add autoplay loop swipe for a touch-friendly carousel with the same ~43 KB initial load. Keyboard input stays scoped to the deck while it has focus.rikiki check loads every slide in Chromium and reports structural, runtime, timing and visual-layout risks. It does not test contrast, focus order or screen-reader output, so keep an accessibility review in your release process.prefers-reduced-motion. rikiki export writes a tagged PDF with one bookmark per slide. Those tests cover the shipped examples and the runtime, not the contrast or the reading order of the content you write.^20.19.0 || >=22.12.0 is required for the CLI commands that initialize, inspect, render, bundle or export it. The commands that drive a browser, namely check, render and export, also need the optional Playwright peer dependency: npm i -D playwright && npx playwright install chromium. bundle and init --standalone need the optional rolldown peer dependency instead.index.html from any static HTTP server and it runs. Everything rests on Web standards, namely Custom Elements, Shadow DOM, ES Modules and CSS custom properties, with a thin component library rather than an application framework underneath. The source is readable HTML, so a slide reads the same in your editor and in the browser. Features beyond the core, such as presenter mode, transitions or syntax highlighting, are opt-in modules you import only when a deck needs them.Ready to try it
Create a checked, standalone deck.
Review the diagnostics and slide images before you deliver the offline HTML and PDF.
$ npm install rikiki-deck
$ npx rikiki init index.html