Skip to content
Back to skills

Open Design Landing Deck

ASecurity

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.

  • 98,936 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 6, 2026
ai-agentsgobashnode

Works with

  • cli

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add nexu-io/open-design --skill open-design-landing-deck --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Open Design Landing Deck?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Open Design Landing Deck
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nexu-io-open-design-landing-deck/badge)](https://www.skillsdirectory.com/skills/nexu-io-open-design-landing-deck)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: open-design-landing-deck
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.
triggers:
  - slide deck
  - 演示文稿
  - pitch deck
  - keynote
  - editorial slides
  - atelier zero deck
  - open design deck
  - open design landing deck
od:
  category: brand-deck
  surface: web
  mode: deck
  scenario: marketing
  audience: founders pitching, conference talks, internal reviews
  tone: editorial, restrained, premium
  scale: 6-15 viewport-locked slides
  preview:
    type: html
    entry: index.html
  craft:
    requires:
      - typographic-rhythm
      - pixel-discipline
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`.
    schema_path: ./schema.ts#Slide
  - id: imagery
    label: Image library (defaults to sister skill's assets)
    schema_path: ../open-design-landing/schema.ts#ImageryConfig
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.
outputs:
  - path: <out>/index.html
    description: Self-contained HTML deck — Atelier Zero CSS inlined, runtime script inline, images relative.
capabilities_required:
  - file-write
  - node-runtime
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.
---

# open-design-landing-deck

Sister skill to [`open-design-landing`](../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`](../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.

```text
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`](./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`](./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:

```bash
# 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

```bash
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.css` at 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`](../open-design-landing/) — landing page sister skill.
- [`guizang-ppt`](../guizang-ppt/) — the magazine-deck navigation
  pattern this skill borrows.
- [`design-systems/atelier-zero/DESIGN.md`](../../design-systems/atelier-zero/DESIGN.md) — token spec.

Files in this skill

  • README.md4.2 KB
  • SKILL.md8.7 KB
  • example.html80.7 KB
  • inputs.example.json7.5 KB
  • schema.ts3.8 KB
  • scripts/compose.ts33.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.