Skip to content

lreading/slide-spec

Slide Spec

Create beautiful slides from YAML - presentations as structured data for open sharing and collaboration. Built for open source, usable everywhere.

npm CI License OpenSSF Best Practices

Live Demo · Docs · Example YAML

Slide Spec demo

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

⚡ Quickstart

Prereqs: Node 24+ and npm.

npx @slide-spec/cli init
npx @slide-spec/cli serve

Open 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 ./dist

Pass --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.

Repository layout

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

Releases

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.

Contributing

See CONTRIBUTING.md for how to report bugs, request features, and submit code.

Please read our Code of Conduct before participating.

License

Apache 2.0

About

Create beautiful slides from YAML - presentations as structured data for open sharing and collaboration. Built for open source, usable everywhere.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages