open-design-landing-deck
Produce a single-file slide deck in the Atelier Zero visual language (warm-paper background, italic-serif emphasis spans, coral terminating dots, surreal collage plates) — Open Design's brand deck recipe. The deck uses **horizontal magazine-style swipe pagination** (←/→, wheel, swipe), a per-slide chrome strip with brand mark and slide counter, an ESC overview grid, a coral progress bar, and inherits the canonical stylesheet + 16-slot image library from the sister `open-design-landing` skill.
- License 许可
- MIT
- 最近更新
- 2026-09-11
- Stars
- ★ 17
- Forks
- 0
01 前言 Front Matter
- od
- { "mode": "deck", "tone": "editorial, restrained, premium", "craft": { "requires": [ "typographic-rhythm", "pixel-discipline" ] }, "scale": "6-15 viewport-locked slides", "preview": { "type": "html", "entry": "index.html" }, "surface": "web", "audience": "founders pitching, conference talks, internal reviews", "category": "brand-deck", "featured": 2, "scenario": "marketing" }
- name
- open-design-landing-deck
- inputs
- [ { "id": "brand", "label": "Brand identity (shared across slides)", "schema_path": "./schema.ts#BrandBlock" }, { "id": "deck_title", "label": "Kicker shown in the per-slide top chrome", "description": "e.g. `'Open Design · Vol. 01 / Issue Nº 26'`." }, { "id": "slides", "label": "Ordered list of typed slides", "description": "Each entry is one of seven slide kinds. Mix and match freely; the composer routes each by `kind`.\n", "schema_path": "./schema.ts#Slide" }, { "id": "imagery", "label": "Image library (defaults to sister skill's assets)", "schema_path": "../open-design-landing/schema.ts#ImageryConfig" } ]
- outputs
- [ { "path": "<out>/index.html", "description": "Self-contained HTML deck — Atelier Zero CSS inlined, runtime script inline, images relative." } ]
- triggers
- [ "slide deck", "演示文稿", "pitch deck", "keynote", "editorial slides", "atelier zero deck", "open design deck", "open design landing deck" ]
- parameters
- { "slides_recommended_count": { "type": "number", "default": 11, "description": "8-15 is the sweet spot. Below 6 the deck feels thin; above 18 attendees lose the thread." } }
- description
- Produce a single-file slide deck in the Atelier Zero visual language (warm-paper background, italic-serif emphasis spans, coral terminating dots, surreal collage plates) — Open Design's brand deck recipe. The deck uses **horizontal magazine-style swipe pagination** (←/→, wheel, swipe), a per-slide chrome strip with brand mark and slide counter, an ESC overview grid, a coral progress bar, and inherits the canonical stylesheet + 16-slot image library from the sister `open-design-landing` skill.
- example_prompt
- Build me an 11-slide pitch deck for "Lumen Field", a focus-soundscape studio. Cover with hero plate, two section dividers, two product content slides with bullets, a stats slide showing 12 soundscapes / 4 presets / 1 daily ritual, a customer quote, a closing CTA, and an end card. Reuse the open-design-landing image library.
- capabilities_required
- [ "file-write", "node-runtime" ]
02 资源文件 6
- 参考文档.openskills.json228 B
- 参考文档example.html80.7 KB
- 参考文档inputs.example.json7.5 KB
- 参考文档README.md4.2 KB
- 脚本schema.ts3.8 KB
- 脚本scripts/compose.ts33.1 KB
03 SKILL.md 正文
open-design-landing-deck
Sister skill to open-design-landing. Same
Atelier Zero visual system (warm paper, Inter Tight + Playfair Display,
italic-serif emphasis, coral dots), but paginated as a horizontal
magazine-style swipe deck instead of a long scrolling page.
The navigation model is intentionally borrowed from the
guizang-ppt skill — ←/→ arrow keys, wheel /
swipe, ESC for the overview grid — so it feels like a print magazine
flipping page by page rather than a web slide deck scrolling.
inputs.json + ../open-design-landing/styles.css
│
└──────────► scripts/compose.ts
│
▼
<out>/index.html
(one viewport per slide, horizontal swipe)
What you get
- A single self-contained HTML file with N viewport-sized slides laid out horizontally on one transformed flex track.
- Keyboard navigation:
←/→·↑/↓· PageUp/PageDown · Space · Home/End. - Wheel + touch swipe (with momentum guard so a single trackpad flick doesn't overshoot).
- Per-slide chrome strip: brand mark, deck title, location,
Roman-numeral year, live slide counter (
01 / 11). - Coral progress bar at the bottom that fills as you advance.
- Dot indicator strip near the bottom; click any dot to jump.
- ESC overview grid — scaled thumbnails of every slide, click to
jump. Mirrors
guizang-ppt's overview UX. - Reuses the same 16-slot image library as the sister skill — no duplicate assets.
Slide types
| Kind | Use it for |
|---|---|
cover |
Title plate at the start. 2-column copy + collage art. |
section |
Roman-numeral divider between chapters. Centered, full-bleed. |
content |
Eyebrow + title + body + bullets + optional collage art. |
stats |
Up to 4 large stat cells (value · label · sub-label). |
quote |
Pull quote + author. Optional portrait collage on the right. |
cta |
Closing pitch + 1-2 buttons. |
end |
Mega italic-serif kicker word + signature footer. |
A typical 11-slide pitch:
1. cover — title plate, hero collage
2. section — "I. The problem"
3. content — about / manifesto, bullets
4. content — capabilities, bullets
5. stats — 4 numbers
6. section — "II. How it feels"
7. content — method, bullets
8. content — selected work
9. quote — customer testimonial
10. cta — primary + secondary action
11. end — mega kicker + signature
Workflow
1. Author inputs.json
Start from inputs.example.json (the Open
Design pitch deck). The brand block, image strategy, and assets path
mirror the sister skill — if you already filled out an
open-design-landing brief, copy brand and imagery over verbatim.
For each slide, pick a kind and fill the typed fields from
schema.ts. MixedText (sans-serif baseline +
italic-serif emphasis spans + coral terminating dot) is the same
encoding used by the sister skill — see its inputs.example.json.
2. (Optional) generate or stub imagery
This skill does not ship its own image generator or placeholder
script — it shares the 16-slot library from open-design-landing. To
regenerate or stub:
# generate via gpt-image-2 (fal.ai)
FAL_KEY=... npx tsx ../open-design-landing/scripts/imagegen.ts ../open-design-landing/inputs.example.json --out=../open-design-landing/assets/
# or paper-textured SVG placeholders
npx tsx ../open-design-landing/scripts/placeholder.ts ../open-design-landing/assets/
Set your deck's inputs.imagery.assets_path to wherever those PNGs
live (default in the example: ../open-design-landing/assets/).
3. Compose the deck
npx tsx scripts/compose.ts inputs.json out/index.html
The composer reads inputs.json, loads the canonical Atelier Zero
stylesheet from ../open-design-landing/styles.css, layers
deck-specific rules on top (horizontal flex track, slide layouts,
HUD, dot nav, ESC overview, keyboard / wheel / touch handlers), and
writes one self-contained HTML file.
4. Self-check
- [ ] Open the HTML in a fresh browser tab; slide 1 (cover) shows
with chrome strip top-right showing
01 / N. - [ ] Press
→(or Space, or scroll-down). Smoothly slides one viewport to the right; dot nav advances; the coral progress bar ticks forward. - [ ] Press
End. Jumps to the final slide. - [ ] Press
Home. Returns to slide 1. - [ ] Press
Esc. Overview grid appears with scaled thumbnails; click any tile to jump and dismiss the overview. - [ ] Resize to 1080px and 640px. Cover / content slides collapse to a single column; dot nav still works; chrome strips shrink.
- [ ]
prefers-reduced-motion: reduce(DevTools → Rendering): page transitions stay snappy and don't induce motion sickness. - [ ] Lighthouse: contrast AA, font-display swap, no layout shift.
Boundaries
- Reuse the sister skill's stylesheet. The composer reads
../open-design-landing/styles.cssat compile time. Do not maintain a duplicate copy here; if Atelier Zero tokens evolve, edit them once in the sister skill. - Reuse the sister skill's image library. No need to re-prompt or re-render — the same 16 plates work for both surfaces.
- Keep slides single-viewport. If a slide's content does not fit 100vh × 100vw at 1280×800 it will overflow and feel cramped. Trim copy or split into two slides.
- Do not switch to vertical scroll-snap. The horizontal swipe posture is what makes this skill feel like a magazine spread; a vertical scroller would just be a long landing page.
- Do not add a router. This is a single-file artifact. Multi-page decks are out of scope; for a multi-deck experience, render each deck separately and link from a parent index.
See also
open-design-landing— landing page sister skill.guizang-ppt— the magazine-deck navigation pattern this skill borrows.design-systems/atelier-zero/DESIGN.md— token spec.
04 同仓库更多 Skills
zyte-api-automation
Automate Zyte API tasks via Rube MCP (Composio). Always search tools first for current schemas.
zylvie-automation
Automate Zylvie tasks via Rube MCP (Composio). Always search tools first for current schemas.
zoominfo-automation
Automate Zoominfo tasks via Rube MCP (Composio). Always search tools first for current schemas.
zoom-out
Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.
zoho-mail-automation
Automate Zoho Mail tasks via Rube MCP (Composio): email sending, folders, labels, and mailbox management. Always search tools first for current schemas.
zoho-invoice-automation
Automate Zoho Invoice tasks via Rube MCP (Composio): invoices, estimates, expenses, clients, and payment tracking. Always search tools first for current schemas.