--- title: Create a slide description: From empty folder to first page. --- open-slide is built around a tight loop: **init → create → iterate**. This page covers the *create* step. Once a deck exists, head to [Iterate](/docs/flow/iterate) for the feedback loop. ## With an agent The recommended path — open your editor, ask: ```text /create-slide for "intro to vector databases — 6 pages, dense text, dark aesthetic, subtle motion" ``` `/create-slide` asks four scoping questions, picks a deck id, plans the structure, and writes pages under `slides//index.tsx`. See [`/create-slide`](/docs/skills/create-slide) for the full skill walk-through. ## By hand Create a folder, add an `index.tsx`, default-export an array of components. ```tsx title="slides/intro/index.tsx" import type { Page, SlideMeta } from '@open-slide/core'; const Cover: Page = () => (
{/* anything you can render */}
); const Outline: Page = () =>
{/* ... */}
; export const meta: SlideMeta = { title: 'Intro', theme: 'corporate' }; export default [Cover, Outline] satisfies Page[]; ``` The dev server picks it up and adds it to the slide browser automatically. ## Conventions - IDs are kebab-case: `q2-launch`, `intro-to-rag`, `2026-roadmap`. - One folder per deck. Co-locate everything that deck needs. - Don't touch `package.json`, `open-slide.config.ts`, or other slides from inside a deck folder.