diff --git a/bolt-slides/.bolt/prompt b/bolt-slides/.bolt/prompt index 4772365..e1bba7f 100644 --- a/bolt-slides/.bolt/prompt +++ b/bolt-slides/.bolt/prompt @@ -1,5 +1,5 @@ -Import project modules with the `@/` path alias, which maps to `src/` (e.g. `@/components/Foo` == `src/components/Foo`), instead of deep relative paths like `../../components/Foo`. +Import project modules with the `@/` path alias, which maps to `src/` (e.g. `@/deck/Slide` == `src/deck/Slide`), instead of deep relative paths like `../../deck/Slide`. This template uses Vite 8. `resolve.tsconfigPaths: true` is a valid built-in Vite option. Preserve it for the `@/` alias; do not claim it is invalid or add the `vite-tsconfig-paths` plugin. -Author decks by writing `deck.json` and `src/styles/tokens.css`. Follow `.bolt/skills/slides/SKILL.md`. Layout `props` match `src/data/layoutProps.ts`. +Author decks by writing one React component per slide in `src/slides/` and listing them in `deck.json` (theme in `src/styles/tokens.css`). Follow `.bolt/skills/slides/SKILL.md`. There is no house style: design each deck's palette, type, imagery and composition for its subject. Every slide must be responsive. diff --git a/bolt-slides/.bolt/skills/slides/SKILL.md b/bolt-slides/.bolt/skills/slides/SKILL.md index 3d1f645..ffd68a6 100644 --- a/bolt-slides/.bolt/skills/slides/SKILL.md +++ b/bolt-slides/.bolt/skills/slides/SKILL.md @@ -1,189 +1,363 @@ --- name: slides description: >- - Author a premium slide deck in Bolt Slides. Slides live in repo-root - deck.json; the studio lets the user reorder, duplicate, delete, - edit speaker notes, Present, and download PDF/JSON. Use this whenever - the user asks for a deck, a pitch, slides, or a presentation in this - project. + Author a slide deck in Bolt Slides. Each slide is a React component you + design and write in src/slides/, listed in repo-root deck.json; the studio + handles reorder, duplicate, delete, speaker notes, Present, speaker view + and PDF / JSON download. Use this whenever the user asks for a deck, a + pitch, slides, or a presentation in this project. --- -# Slides — prompt decks into a presentable app - -This repo is a complete slide **studio**. Author content into it. - -- `/` — in the Bolt preview iframe (and local Vite): studio. Side panel - (S) and grid (G) reorder / duplicate / delete; the dock holds notes, - Download (PDF or JSON), Speaker view, and Present. Present opens a new - tab (`/?present=1`); the studio stays put. Grid selection is the - start slide. The published site at `/` is the audience deck (notes - stripped). **P** opens speaker view in a new tab. -- `/?presenter=1` — speaker view (current slide, up next, notes - read-only, timer, note text size). `/present` is the same route. - -**Your job is CONTENT.** A deck is `deck.json`. Write that file (and -`src/styles/tokens.css` when theming). Layout `props` follow -`src/data/layoutProps.ts`. - -## Hard rules - -1. **Write `deck.json` and `src/styles/tokens.css`.** Those are the - authoring files. Colors, fonts, sizes, spacing in a deck request mean - deck `accent` / `font` or `tokens.css` `:root` values. If they want a - studio or engine change, say so and wait. -2. **Author from the user's REAL input.** Topic, brand, facts, numbers. - Never invent a placeholder company for a real subject. Brand given → - derive theme colors/fonts from it (fetch the site or use its known - palette) and say what you used. -3. **One solid accent.** `--accent` is a hex, never a gradient. Use it - sparingly. -4. **`layout` is an exact `LayoutName`.** Pick a camelCase key from - `LAYOUT_NAMES` in `src/data/layoutProps.ts` (`cover`, `bigNumber`, - `statGrid`, …) and put it on the `layout` field. -5. **Homonym keys follow that layout's `*Props` type.** Chart - `kind: "line"` `points` is a pipe string of numbers - (`"12 | 18 | 26"`). Insight takeaways `points` are - `{label, body}[]`. Insight line series is `points_line`. Contrast - bullets are `string[]` on `left.points` / `right.points`. Logos - `items` is one pipe string (`"Acme | Globex"`); every other - layout's `items` is an object array. - -## Step 0 · bootstrap (mandatory, first) +# Slides — you design the slides, the studio does the rest -Read `deck.json`. If `boltSlidesId` is missing or null, set it to a new -uuid (`crypto.randomUUID()` or equivalent) and write the file. Keep -`boltSlidesVersion` at `1`. Then patch content. +This repo is a complete slide **studio** with **no house style**. There is +no layout catalog, no theme, no type scale, no default palette or imagery. +Every visual decision in a deck is yours, made for this brief. -## Workflow +- `/` — in the Bolt preview iframe (and local Vite): the studio. Side panel + (S) and grid (G) reorder / duplicate / delete and pick the start slide; + the dock holds speaker notes, Download (PDF or JSON), Speaker view (P) + and Present. Present opens a new tab (`/?present=1`); the studio stays + put. The published site at `/` is the audience deck (notes stripped). +- `/?presenter=1` — speaker view: current slide, up next, notes, timer. + +**What you write:** + +1. `src/slides/.tsx` — one React component per slide (default + export). Free-form: any markup, inline styles or a `