nexu-io/open-design/design-templates/open-design-landing/SKILL.md
open-design-landing
Produce a world-class single-page editorial landing site in the Atelier Zero visual language (Monocle / Apartamento / Études editorial collage) — the same aesthetic Open Design uses for its own marketing surface. The agent fills a typed `inputs.json` from a brand brief, optionally generates 16 collage assets via gpt-image-2, then runs a pure-function composer that emits a self-contained HTML file; a separate path can mirror the Astro marketing site in `apps/landing-page/`. Drop-in scroll-reveal
- Source repository stars
- 82,073
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-28
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
Build a single-page editorial landing site (or a slide deck — see the sibling open-design-landing-deck skill) in the Atelier Zero design system: warm-paper background, Inter Tight + Playfair Display, italic serif emphasis spans, dotted hairline rules, coral terminating dots, scr…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/nexu-io/open-design --skill "design-templates/open-design-landing"Inspect the Agent Skill "open-design-landing" from https://github.com/nexu-io/open-design/blob/89d6d4ef21baf80f871595abdf6f7de6e941dd44/design-templates/open-design-landing/SKILL.md at commit 89d6d4ef21baf80f871595abdf6f7de6e941dd44. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Workflow contract
Run these four steps in order. The agent should complete each step before moving on, and prefer asking the user a focused question over inventing copy.
brand variables (name / nav / headline / italic emphasis pulledThe full Atelier Zero stylesheet, inlined.All section markup with data-reveal attributes for staggered - 02
What you get
A single HTML file with all of:
Editorial topbar (volume / issue / language strip), Headroom-style8 numbered Roman-numeral sections with paper-textured background:Footer with 4 link columns + huge italic-serif kicker word. - 03
1. Gather brand inputs
Use AskQuestion (or the equivalent in your UI) to collect the brand brief in chunks; do not dump the entire schema.ts on the user. Map their answers into inputs.json matching the typed shape.
Use AskQuestion (or the equivalent in your UI) to collect the brand brief in chunks; do not dump the entire schema.ts on the user. Map their answers into inputs.json matching the typed shape.The eight question groups, in order:Open inputs.example.json for a complete worked example (Open Design itself). - 04
2. Decide the image strategy
Set inputs.imagery.strategy accordingly.
brand variables (name / nav / headline / italic emphasis pulledSet inputs.imagery.strategy accordingly.Writes 16 .svg files (with .png aliases for compatibility) into /assets/. Each placeholder shows the slot id, ratio, pixel dimensions, and the prompt hint from image-manifest.json. The composer's etc. just work. - 05
placeholder — frame mode
Writes 16 .svg files (with .png aliases for compatibility) into /assets/. Each placeholder shows the slot id, ratio, pixel dimensions, and the prompt hint from image-manifest.json. The composer's etc. just work.
Writes 16 .svg files (with .png aliases for compatibility) into /assets/. Each placeholder shows the slot id, ratio, pixel dimensions, and the prompt hint from image-manifest.json. The composer's etc. just work.
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
npx tsx scripts/placeholder.ts <out>/assets/Runs scripts
The documentation asks the agent to run terminal commands or scripts.
npx tsx scripts/compose.ts <inputs.json> <out>/index.htmlEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 82/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 82,073 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- nexu-io/open-design
- Skill path
- design-templates/open-design-landing/SKILL.md
- Commit
- 89d6d4ef21baf80f871595abdf6f7de6e941dd44
- License
- Apache-2.0
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
open-design-landing
Build a single-page editorial landing site (or a slide deck — see the
sibling open-design-landing-deck skill)
in the Atelier Zero design system: warm-paper background, Inter
Tight + Playfair Display, italic serif emphasis spans, dotted hairline
rules, coral terminating dots, scroll-reveal motion, and 16 surreal
collage plates.
This is the canonical Open Design marketing-page recipe — the example output is the very page you see at open-design.
The skill is fully parameterized. The agent fills one typed
inputs.json from the user's brief; the composer turns that JSON +
the canonical styles.css into a deployable artifact.
inputs.json + styles.css 16 image slots
│ │
└──────────► scripts/compose.ts ◄────────────┘
│
▼
<out>/index.html (self-contained)
<out>/assets/ (PNG or SVG)
What you get
A single HTML file with all of:
- Editorial topbar (volume / issue / language strip), Headroom-style sticky nav with live GitHub star count.
- 8 numbered Roman-numeral sections with paper-textured background: hero (with 3 stat rings + 4-step index), about, capabilities (4 cards), labs (5 cards + filter pills + progress bar), method (4 steps with thumbnails), selected work (dark slab + 2 tilted cards), testimonial (pull quote + 5 partner glyphs), CTA (ribbon + email pill).
- Footer with 4 link columns + huge italic-serif kicker word.
- Scroll-reveal motion on every section (IntersectionObserver, respects
prefers-reduced-motion). - Fully responsive at 1280 / 1080 / 880 / 560 breakpoints.
Workflow contract
Run these four steps in order. The agent should complete each step before moving on, and prefer asking the user a focused question over inventing copy.
1. Gather brand inputs
Use AskQuestion (or the equivalent in your UI) to collect the brand
brief in chunks; do not dump the entire schema.ts on the user.
Map their answers into inputs.json matching the typed shape.
The eight question groups, in order:
| Group | Schema fields | Min answers | Notes |
|---|---|---|---|
| 1 | brand.{name,mark,tagline,description,location} | 5 | Mark = single glyph (Ø, ▲, ★…) |
| 2 | brand.{license,version,year,primary_url,contact_email} | 4 | URL is required; license defaults Apache-2.0 |
| 3 | nav[] (up to 5) | 3 | Optional count badges |
| 4 | hero.{label,headline,lead,primary,secondary,stats} | All | Headline as MixedText (sans+em+dot) |
| 5 | about + capabilities.cards[4] | All | 4 cards × {num,tag,title,body} |
| 6 | labs.cards[5] + method.steps[4] | All | Both grids fixed-arity |
| 7 | work.cards[2] + testimonial | All | 5 partner glyphs as inline SVG path data |
| 8 | cta + footer.{columns[4],mega} | All | Mega kicker is a MixedText like the headlines |
Open inputs.example.json for a complete
worked example (Open Design itself).
2. Decide the image strategy
| Strategy | When to choose | Cost / latency |
|---|---|---|
placeholder | First pass. Demo. Slide internal. No image budget yet. | $0, <1s |
generate | Final delivery. Brand wants original collages. | ~$0.40, ~6 min |
bring-your-own | User has art direction PNGs. Drop them at assets_path. | $0, 0s |
Set inputs.imagery.strategy accordingly.
placeholder — frame mode
npx tsx scripts/placeholder.ts <out>/assets/
Writes 16 .svg files (with .png aliases for compatibility) into
<out>/assets/. Each placeholder shows the slot id, ratio, pixel
dimensions, and the prompt hint from image-manifest.json. The
composer's <img src='./assets/hero.png'> etc. just work.
generate — gpt-image-2 mode
FAL_KEY=... npx tsx scripts/imagegen.ts <inputs.json> --out=<out>/assets/
Calls fal.ai's openai/gpt-image-2 synchronous endpoint per slot.
Composes prompts as: style anchor (paper-collage editorial system)
- brand variables (name / nav / headline / italic emphasis pulled
from
inputs.json) + per-slot composition (e.g. cropped plaster head + tree growing through arch). Skips slots whose target file already exists; pass--forceto re-render.
Without FAL_KEY, the script prints the prompts so the operator can
route them through the /gpt-image-fal slash-command skill manually.
bring-your-own
Drop 16 PNGs matching assets/image-manifest.json filenames at
inputs.imagery.assets_path. Done.
3. Compose the artifact
npx tsx scripts/compose.ts <inputs.json> <out>/index.html
The composer reads inputs.json and ../styles.css, then writes one
self-contained HTML file. The page includes:
- The full Atelier Zero stylesheet, inlined.
- All section markup with
data-revealattributes for staggered scroll motion. - Inline IntersectionObserver script (mirrors
apps/landing-page/app/_components/reveal-root.tsx). - Inline Headroom nav script (mirrors
header.tsx). - Inline GitHub star-count fetcher (auto-detects from
brand.primary_url).
4. (Optional) Mirror the deployable Astro site
For deployable production output, fork the apps/landing-page/
package: copy it into your workspace, align app/page.tsx with content
from your inputs.json, and copy your <out>/assets/*.png into the
paths expected by app/image-assets.ts / R2 URLs. Build with
pnpm --filter @open-design/landing-page build for a static out/
export ready for any CDN.
A future iteration may bundle a composer that emits the full
apps/landing-page/tree frominputs.jsonin one command. Until then, fork-and-edit is the supported path.
Self-check before delivering
Before marking done, the agent must verify:
-
<out>/index.htmlopens in a browser without console errors. - All 16 image slots load (no 404s in DevTools network tab).
- Headline italic emphasis spans render in Playfair (not sans).
- Coral terminating dots appear at every
displayh1/h2 end. - Scroll from top to bottom; every section animates in once.
- Resize to 880px and 560px; no horizontal scroll, no overlap.
-
prefers-reduced-motion: reduce(DevTools → Rendering) disables transitions cleanly. - Lighthouse: contrast AA, font-display swap, no layout shift on the hero (CLS < 0.05).
Files in this skill
design-templates/open-design-landing/
├── SKILL.md # this contract
├── README.md # quick-start
├── schema.ts # typed inputs (single source of truth)
├── styles.css # Atelier Zero stylesheet (single source of truth)
├── inputs.example.json # Open Design as the worked example
├── example.html # canonical rendering (regenerated from inputs.example.json)
├── scripts/
│ ├── compose.ts # inputs.json + styles.css → index.html
│ ├── imagegen.ts # gpt-image-2 wrapper (fal.ai)
│ └── placeholder.ts # SVG paper-textured frames
└── assets/
├── *.png # 16 collage plates (Open Design instance)
├── image-manifest.json # slot → file/dimensions/prompt mapping
└── imagegen-prompts.md # human-readable prompt pack
Boundaries
- Do not invent new colors or typefaces. Tokens live in
design-systems/atelier-zero/DESIGN.md; extend the design system before adding a new ramp here. - Do not drop
data-revealattributes from generated markup. Without them the page goes static and feels dead. - Do not wrap the composed HTML in a framework that injects its own stylesheet ordering — Atelier Zero relies on stylesheet-order cascade for paper texture and z-index of side rails.
- Do not add a separate stylesheet file for the Astro landing-page
fork; copy
styles.cssverbatim intoapp/globals.cssso visual parity stays one-to-one.
See also
design-systems/atelier-zero/DESIGN.md— token spec.apps/landing-page/— deployable Astro static counterpart.design-templates/open-design-landing-deck/— sibling slides skill that reuses this design system.
Alternatives
Compare before choosing
MoizIbnYousaf/marketing-cli
higgsfield-generate
Use when the user wants to generate an image or video via Higgsfield AI. Covers 30+ models: Soul V2, Seedance 2.0, Kling 3.0, Veo 3.1, GPT Image 2, Nano Banana 2. Also covers Marketing Studio — branded ad video/image with avatars and products. Use whenever: "generate an image", "make a video", "animate this photo", "image-to-video", "img2vid", "edit this image with AI", "produce a clip", "create an ad", "make a UGC video", "marketing video", "brand video", "TV spot", "import product from URL", "
wshobson/agents
brand-landingpage
Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens —
coreyhaines31/marketingskills
emails
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program. Also use when the user mentions "email sequence," "drip campaign," "nurture sequence," "onboarding emails," "welcome sequence," "re-engagement emails," "email automation," "lifecycle emails," "trigger-based emails," "email funnel," "email workflow," "what emails should I send," "welcome series," or "email cadence." Use this for any multi-email automated flow. For cold out
JasonColapietro/suede-creator-skills
suede-workflow-skills
Umbrella workflow for 67 public skills: Full Send, copy, design, code review, SEO, launch packaging, MCP QA, iOS and Android app shipping, and creator workflows. Loads the full public skill pack.