Create beautiful slides from YAML - presentations as structured data for open sharing and collaboration. Built for open source, usable everywhere.
Slide Spec turns structured YAML into static slide decks you can host anywhere. Keep presentations in the same repo as your code so teams can review them in PRs, diff changes, and publish open formats without proprietary authoring tools.
- Write slides as structured YAML you can diff, lint, and review
- Build a static site you can deploy to GitHub Pages, S3, or any CDN
- Share presentations as open web output, not proprietary files
- Use validation in CI for a source-controlled workflow
Prereqs: Node 24+ and npm.
npx @slide-spec/cli init
npx @slide-spec/cli serveOpen the URL printed in your terminal. If 5173 is busy, serve picks another free port. You should have a working deck in under two minutes.
From there, edit the YAML under content/, then validate and build:
npx @slide-spec/cli validate
npx @slide-spec/cli build # outputs to ./distPass --deployment-url to build for canonical metadata and sitemap.xml generation.
Every command accepts an optional directory as its first argument (e.g. npx @slide-spec/cli serve ./my-deck). When omitted, the current working directory is used.
Monorepo with independent packages. Each has its own README with setup, development, and testing details.
| Directory | Purpose | |
|---|---|---|
app/ |
Vue 3 + Vite presentation renderer | README |
cli/ |
Scaffold, validate, build, and serve | README |
docs/ |
VitePress documentation site | README |
shared/ |
Shared TypeScript types and validation | README |
content/ |
YAML for this repo's own slide decks |
Slide Spec follows semver. The CLI is published to npm as @slide-spec/cli.
⚠️ v0 / alpha - the project is pre-1.0 and minor versions may contain breaking changes without prior deprecation. Pin your version if you need stability.
Pushing a v* release tag triggers the release pipeline. CI runs all quality gates, publishes to npm, and attaches both a source tarball and a CycloneDX SBOM to the GitHub release.
Stable releases use signed vX.Y.Z tags. Prereleases use signed vX.Y.Z-alpha, vX.Y.Z-beta, or vX.Y.Z-rc tags and publish to matching npm dist-tags.
See CONTRIBUTING.md for how to report bugs, request features, and submit code.
Please read our Code of Conduct before participating.
