open-press Create Slide
Create a slide deck as a sequence of direct, editable slide sources. Each slide owns its composition; the Press owns only deck registration, theme, and genuinely shared UI.
First principles
- Start with the audience, the single message of each slide, and the evidence that supports it.
- Keep one visual idea per slide. Prefer a diagram, image, comparison, or large number over dense prose.
- New slides begin as direct source files, never through a registry or preselected layout asset.
- Reuse a local component only after a visual primitive is genuinely repeated. Keep it in
press/<slug>/ui/ or press/<slug>/components/.
Read before changing source
Read the deck press/<slug>/press.tsx, the active theme/default.css, and nearby slides.
State the deck's visual direction in a short STYLE note: type scale, palette, spacing, and intended visual language.
For a new or restructured deck, write a compact delivery shape:
AUDIENCE: who must understand what
STORY:
- id | composition | one message | evidence or visual
PRODUCE: direct slide sources, active theme, only proven shared UI
Preserve the existing slide order and IDs unless the user asks to change them.
Source contract
press/<slug>/press.tsx registers slide IDs with marker-only <Slide id="…" /> entries.
- Each
press/<slug>/slides/<id>/slide.tsx explicitly imports and composes the objects it needs.
- The deck canvas is fixed at 1920 × 1080. Keep a single
<Slide> root, a predictable <Frame> boundary, and literal meta.
layout in meta describes the composition for readers; it does not select source or generate a slide.
- Put deck tokens in
press/<slug>/theme/default.css. Keep slide-specific CSS beside that slide or in the active theme when it is shared across the deck.
- Use
@open-press/core objects where they clarify geometry, semantic structure, or responsive constraints. Use normal TSX and CSS for authored detail.
Read references/layout-contract.md before creating a slide. Read references/css-colocate.md when changing styles and references/press-tree.md when adding files.
Add and edit slides
Create a blank slide source with:
open-press slide add <id> --press <slug>
Then edit press/<slug>/slides/<id>/slide.tsx directly. The generated placeholder is intentionally minimal: replace it with the slide's actual composition rather than preserving boilerplate.
For a new visual treatment:
- Build the composition in the slide source.
- Extract a local primitive only after the same structure has a second real use.
- Name shared components for their role (
EvidenceGrid, SectionKicker), not for a generic layout category.
- Keep the content and metadata literal enough for source inspection and reader navigation.
Reordering and removal
Use the CLI to preserve registration and folder consistency:
open-press slide move <id> <position> --press <slug>
open-press slide remove <id> --press <slug>
open-press slide status --press <slug>
Review checklist
- Does every slide communicate one claim at speaking pace?
- Are images, charts, and diagrams legible at presentation distance?
- Is the slide source self-contained and directly editable?
- Are shared components justified by real reuse rather than anticipated reuse?
- Does the active theme provide the spacing and contrast the deck needs?
- Do navigation, slide order, notes, source view, and focus state still behave correctly?
Verify source changes with:
npm run typecheck
npm test
npm run build
For visual work, also run npm run dev:workspace and inspect the affected Press in the Workbench before reporting completion.
1---2name: openpress-create-slide3description: Use when creating, editing, reordering, or verifying an OpenPress slide deck or presentation.4---56# open-press Create Slide78Create a slide deck as a sequence of direct, editable slide sources. Each slide owns its composition; the Press owns only deck registration, theme, and genuinely shared UI.910## First principles1112- Start with the audience, the single message of each slide, and the evidence that supports it.13- Keep one visual idea per slide. Prefer a diagram, image, comparison, or large number over dense prose.14- New slides begin as direct source files, never through a registry or preselected layout asset.15- Reuse a local component only after a visual primitive is genuinely repeated. Keep it in `press/<slug>/ui/` or `press/<slug>/components/`.1617## Read before changing source18191. Read the deck `press/<slug>/press.tsx`, the active `theme/default.css`, and nearby slides.202. State the deck's visual direction in a short `STYLE` note: type scale, palette, spacing, and intended visual language.213. For a new or restructured deck, write a compact delivery shape:2223 ```text24 AUDIENCE: who must understand what25 STORY:26 - id | composition | one message | evidence or visual27 PRODUCE: direct slide sources, active theme, only proven shared UI28 ```29304. Preserve the existing slide order and IDs unless the user asks to change them.3132## Source contract3334- `press/<slug>/press.tsx` registers slide IDs with marker-only `<Slide id="…" />` entries.35- Each `press/<slug>/slides/<id>/slide.tsx` explicitly imports and composes the objects it needs.36- The deck canvas is fixed at 1920 × 1080. Keep a single `<Slide>` root, a predictable `<Frame>` boundary, and literal `meta`.37- `layout` in `meta` describes the composition for readers; it does not select source or generate a slide.38- Put deck tokens in `press/<slug>/theme/default.css`. Keep slide-specific CSS beside that slide or in the active theme when it is shared across the deck.39- Use `@open-press/core` objects where they clarify geometry, semantic structure, or responsive constraints. Use normal TSX and CSS for authored detail.4041Read `references/layout-contract.md` before creating a slide. Read `references/css-colocate.md` when changing styles and `references/press-tree.md` when adding files.4243## Add and edit slides4445Create a blank slide source with:4647```bash48open-press slide add <id> --press <slug>49```5051Then edit `press/<slug>/slides/<id>/slide.tsx` directly. The generated placeholder is intentionally minimal: replace it with the slide's actual composition rather than preserving boilerplate.5253For a new visual treatment:54551. Build the composition in the slide source.562. Extract a local primitive only after the same structure has a second real use.573. Name shared components for their role (`EvidenceGrid`, `SectionKicker`), not for a generic layout category.584. Keep the content and metadata literal enough for source inspection and reader navigation.5960## Reordering and removal6162Use the CLI to preserve registration and folder consistency:6364```bash65open-press slide move <id> <position> --press <slug>66open-press slide remove <id> --press <slug>67open-press slide status --press <slug>68```6970## Review checklist7172- Does every slide communicate one claim at speaking pace?73- Are images, charts, and diagrams legible at presentation distance?74- Is the slide source self-contained and directly editable?75- Are shared components justified by real reuse rather than anticipated reuse?76- Does the active theme provide the spacing and contrast the deck needs?77- Do navigation, slide order, notes, source view, and focus state still behave correctly?7879Verify source changes with:8081```bash82npm run typecheck83npm test84npm run build85```8687For visual work, also run `npm run dev:workspace` and inspect the affected Press in the Workbench before reporting completion.