MCPcopy
hub / github.com/1weiho/open-slide

github.com/1weiho/open-slide @main sqlite

repository ↗ · DeepWiki ↗
1,266 symbols 2,790 edges 236 files 0 documented · 0%
README

open-slide github cover

Vercel OSS Program

open-slide

GitHub stars GitHub forks License: MIT

The slide framework built for agents. Describe your deck in natural language — your coding agent writes the React. open-slide handles the canvas, scaling, navigation, hot reload, and present mode so the agent can focus on content.

Every slide renders into a fixed 1920 × 1080 canvas. Pages are arbitrary React components, not a constrained DSL.

npx @open-slide/cli init my-slide

Why open-slide

Slides are visual code. Agents are great at writing code. open-slide is the missing runtime that turns "make slides about X" into a polished, presentable deck — without you ever leaving the chat.

Highlights

🤖 Agent-native authoring

Works with any coding agent (Claude Code, Codex, Cursor, …). The scaffolder ships with built-in skills:

  • /create-slide — drafts a deck end-to-end. Asks four scoping questions (topic & aesthetic, page count, text density, motion vs. static), picks an id, plans the structure, and writes the pages.
  • /slide-authoring — the technical reference for the 1920 × 1080 canvas, type scale, palette, and layout rules. The agent reads this before writing.

From a one-line prompt to a polished deck, no boilerplate.

🎯 In-browser inspector

Click any element in the dev server and attach a comment — "make this red", "change to 'Open Slide Rocks'", "shrink the headline". Comments are persisted as @slide-comment markers in source. Run /apply-comments and the agent applies every pending edit, then clears the markers.

The loop: present → click to comment → /apply-comments → repeat.

🖼️ Assets manager + svgl logo search

Manage images, videos, and fonts per deck through a built-in assets panel. Search and drop in any brand logo via the integrated svgl catalogue — no more hunting for SVGs.

🎬 Professional present mode

Fullscreen playback with keyboard navigation, plus a presenter mode with current/next slide preview, speaker notes, and a timer. Built for the stage, not just the browser tab.

📦 Export to static HTML & PDF

One command exports your deck as a self-contained static HTML site or a print-ready PDF. Share without a server.

📁 Slide manager

Organise decks into folders with custom emoji and drag-and-drop to reorder. Useful once you've built more than three decks and need to find anything.

🚀 Deploy-friendly

Outputs a plain static build — one-click deploy to Vercel, Cloudflare Pages, Zeabur, Netlify, or any static host. No server, no runtime, no lock-in.

Get started

npx @open-slide/cli init my-slide
cd my-slide
pnpm dev

The scaffolded workspace ships with agent skills preconfigured for Claude Code. From there you drive the deck through your agent — or edit slides/<id>/index.tsx directly. See CLAUDE.md for the hard rules.

Repo layout

This repo is a pnpm + Turbo monorepo.

Path Description
packages/core @open-slide/core — runtime (home page, slide viewer, present mode, inspector), Vite plugin, and the open-slide dev/build/preview CLI.
packages/cli @open-slide/clinpx @open-slide/cli init scaffolder. Generates a minimal workspace where Vite/React/tsconfig stay hidden inside core.
apps/demo Example workspace that consumes @open-slide/core via workspace:*. Used for local development of the framework.

Development

pnpm install
pnpm dev      # runs the demo against the local @open-slide/core
pnpm build    # builds all packages
pnpm check    # type-checks all packages
pnpm lint     # lints via biome

Star history

If open-slide is useful to you, please star the repo on GitHub — it helps other people find the project.

Star History Chart

Support

If open-slide has been useful to you, consider supporting development:

ko-fi

License

MIT

Extension points exported contracts — how you extend this code

ServerFlags (Interface)
(no doc)
packages/core/src/cli/run.ts
InitCliFlags (Interface)
(no doc)
packages/cli/src/index.ts
DevFlags (Interface)
(no doc)
packages/core/src/cli/run.ts
RunResult (Interface)
(no doc)
packages/cli/src/git.ts
BuildFlags (Interface)
(no doc)
packages/core/src/cli/run.ts
GitInitResult (Interface)
(no doc)
packages/cli/src/git.ts
SyncFlags (Interface)
(no doc)
packages/core/src/cli/run.ts
InitOptions (Interface)
(no doc)
packages/cli/src/init.ts

Core symbols most depended-on inside this repo

json
called by 149
packages/core/src/vite/routes/context.ts
cn
called by 132
packages/core/src/app/lib/utils.ts
useLocale
called by 82
packages/core/src/app/lib/use-locale.ts
applyEdit
called by 71
packages/core/src/editing/edit-ops.ts
format
called by 40
packages/core/src/locale/format.ts
sanitizeDirName
called by 32
packages/cli/src/init.ts
validateMutationRequest
called by 27
packages/core/src/http/request-guard.ts
validateAssetName
called by 25
packages/core/src/files/assets.ts

Shape

Function 1,246
Interface 13
Class 4
Method 3

Languages

TypeScript100%

Modules by API surface

packages/core/src/editing/edit-ops.ts64 symbols
packages/core/src/app/components/inspector/inspector-panel.tsx40 symbols
packages/core/src/app/components/slide-transition-layer.tsx32 symbols
packages/cli/template/slides/getting-started/index.tsx29 symbols
apps/demo/slides/steps-in-motion/index.tsx29 symbols
packages/core/src/app/components/inspector/inspector-provider.tsx28 symbols
apps/web/components/landing/demo-slide/index.tsx28 symbols
apps/demo/slides/vercel-labs-2026/index.tsx28 symbols
apps/demo/slides/nextjs-ppr-cache/index.tsx25 symbols
apps/web/components/landing/inspector.tsx21 symbols
apps/demo/slides/open-slide-anatomy/index.tsx21 symbols
packages/core/src/vite/open-slide-plugin.ts20 symbols

Dependencies from manifests, versioned

@babel/parser7.29.2 · 1×
@babel/types7.29.0 · 1×
@biomejs/biome2.4.12 · 1×
@changesets/changelog-github0.6.0 · 1×
@changesets/cli2.31.0 · 1×
@dnd-kit/core6.3.1 · 1×
@dnd-kit/sortable10.0.0 · 1×
@dnd-kit/utilities3.2.2 · 1×
@fontsource-variable/geist5.2.8 · 1×
@open-slide/core0.0.6 · 1×
@tailwindcss/vite4.2.2 · 1×

For agents

$ claude mcp add open-slide \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact