add Launch Week Vol.01 campaign page (#6647)
- feat(landing-page): add Launch Week Vol.01 event page
Five-day campaign page at /community/events/launch-week/ for Aug 10–14.
Structure: full-screen campaign hero (stateless — nothing here needs a daily edit), a pinned lineup panel beside a sticky stack of five drop cards, the All-Week Pass / Community Open Call tickets, and a short closing CTA into Discord and Feishu.
Drop state is derived, not authored. Each day flips at 08:00 UTC+8 (00:00 UTC, no DST to resolve), computed client-side so a cached page still shows the right day without a redeploy. Sealed days render as full cards with their contents redacted, so the pile reads on day one when traffic peaks rather than as four flat bars.
?preview=alland?preview=1–5simulate any day for review.All CSS is scoped under
.lwand the two campaign faces (Anton, IBM Plex Mono) are self-hosted latin subsets, 36 KB total — no third-party font request, and nothing leaks into the rest of the site.Motion is limited to one entrance per element behind a
prefers-reduced-motionguard; with motion reduced every element renders in its final state.
- fix(landing-page): gate Launch Week preview and settle the page chrome
Preview modes now need a shared key (
?preview=<day>&key=…); without it the parameter is ignored and the real schedule applies, so the running order can’t be read off a URL guess before each drop opens.The page also stops borrowing
.sub-main. That class assumes a normal article column — a 140px top gap and a 48px bottom gap — which left dead space under the nav and a beige seam between the closing CTA and the site footer. The page now declares only the offset it needs (clearance for the sticky nav) and butts straight against the footer, matching how the story pages sit.Dropped our own copyright baseline: the site footer already carries it.
- fix(landing-page): restore the Launch Week hero wash and size the closing CTA
The hero’s paper wash and drawing grid were never painting. Two causes stacked: the rule hung off
.hero::before, which globals.css already owns as a section divider it sets todisplay: none, and even without that collision an absolute pseudo-element inside the flex hero collapsed to a 1px sliver. The wash is now its own.lw-washelement with explicit dimensions, so the paint reads at the intended strength instead of full saturation.The closing CTA was also shorter than the section CTAs on neighbouring /community pages. It now carries a comparable height and headline scale.
- fix(landing-page): drop the Launch Week masthead strip, rebuild the closing CTA
The strip under the site header repeated the logo beside it and read as a second navigation bar. Removed; the date it carried moves into the hero as a normal eyebrow, where a campaign page usually puts it.
The closing CTA now follows the house
.v4finalpattern used by the story and community pages: a single left-aligned column stepping from eyebrow to headline to copy to one row of buttons, over a darkened image rather than flat black. Previously it split 60/40 with the buttons stranded in their own column, which is why it read as under-designed next to its neighbours. The darkening image is our own plate, so the campaign’s material carries to the last screen.
- fix(landing-page): restore Launch Week’s screen-by-screen scroll rhythm
Scroll snapping was silently lost in the port. In the mockup it lived on
html; scoping every rule under.lwmoved it onto<main>, which is not a scroll port, so the property had no effect and the ticket section spilled past the fold. It now sits onhtml:has(main.lw)— this stylesheet ships only with this page, so the scope still holds — withscroll-padding-topso a snapped section clears the sticky nav.The hero and the ticket section also disagreed on what “one screen” meant. The hero opens below the nav and takes
100svh - header; every later full-screen section is reached with the nav scrolled away and takes the whole viewport.Also rewrote the closing paragraph as one sentence — the previous four clipped sentences read as a list rather than an invitation.
- copy(landing-page): sharpen the Launch Week closing paragraph
Leads with what the community actually gives you — how to claim the perks, what each drop really does, how to enter the Open Call — then the people, the team, and what comes next. Drops the perk list that the two tickets already cover in full, and stops naming Discord and Feishu in prose since the buttons below already do.
- feat(landing-page): lead the events page with Launch Week
Launch Week was buried in the “Coming soon” grid below a July recap, which read as if the flagship event were an afterthought. It now opens the page as its own band directly under the hero, and comes out of the grid so it appears once.
The band shows the approved key visual whole rather than a page screenshot — the poster already carries the name, the dates, the five days, the challenge and the Pass, so the only things laid over it are what it cannot say: that the week is live, and where to go next. Those sit in a bar beneath the art instead of on top of it.
The share card now uses the same key visual for the same reason.
- fix(landing-page): scale the Launch Week band to a feature card
Full-bleed 16:9 made the poster over 600px tall and swallowed the page. It is now a horizontal card the same size as the recap feature below it (352px), with the art in a 16:9 column so the key visual still shows whole, and the copy the poster cannot carry beside it.
- fix(landing-page): let the Launch Week poster be the only loud thing
The copy column repeated the poster’s own palette — ink, acid, high contrast — so the band read as two competing halves. It is now the same neutral white card as every other event on the page, using the shared pill. The artwork carries the campaign; the card carries the facts.
- fix(landing-page): give every Launch Week day a sealed card
Only days 3–5 had a sealed twin, carried over from a mockup that assumed the first two days were always already out. Before the week opens — and on day one, when traffic peaks — the page was therefore short two and one cards.
Every day now has both halves, and the no-JS fallback shows all five sealed, which is honest on any date; the script then opens whichever days have happened.
- fix(landing-page): keep the TBA stamp clear of the stacked card above it
The stamp sat low enough in a sealed card that the next card in the sticky stack sliced it in half. It now sits centred against the redacted lines, inside the area the peek leaves visible.
- seo(landing-page): tighten Launch Week metadata and image loading
Audit of the built page found the basics sound — canonical, 12 hreflang alternates, full OG/Twitter set, one H1, no missing alt, in the sitemap — with five gaps:
- Title was 30 characters and carried no brand, wasting half the SERP line. Now states what the week is and ends in “Open Design”.
- Description opened on a sentence fragment and buried the premise; rewritten to 156 characters that lead with the dates and the promise.
- Event schema lacked
image,performer,offersandisAccessibleForFree, which Google wants before it will render an event rich result.- Seventeen images all loaded eagerly on a page read a screen at a time; the ten below the fold are now lazy with async decoding.
- Target logos had no intrinsic size, so each one could shift layout on load.
- i18n(landing-page): localise Launch Week into the ten non-English locales
Adds a body partial per active locale plus the meta table, wired through
localeFromPathlike the story pages. The client script that writes drop states receives this locale’s words too, so a translated page does not flip back to English once it runs.What stays English everywhere, deliberately: the campaign lockup (“Launch Week Vol.01”), the kill questions — each reads against a competitor’s brand name — the ticket furniture, and the rubber stamps, which are artwork with the word cut into them.
CJK sets far wider than Anton at the same size, so zh/ja/ko get their own step for the headline scales; without it the drop titles and the lineup title spilled past two lines.
Translations are machine-drafted and want a native read per locale before this goes to production.
- i18n(landing-page): translate the closing headline as a whole line
“Get inside.” is split across two elements so the second half can take the acid colour, and the word-level pass never matched the first half — every locale shipped a literal “Get” followed by a translated fragment, and French read “GET À L’INTÉRIEUR.” Each locale now supplies the whole headline, with its own choice of which words carry the accent.
- i18n(landing-page): drop the CJK word space, even out the join buttons
Splitting the closing headline so the second half can take the accent colour left a space between the two halves — correct in Latin scripts, wrong in zh/ja/ko, where “进来 一起做。” should read without the gap.
The two community buttons also sit at very different widths once translated (“加入 DISCORD” beside “加入飞书群”); a shared minimum keeps the pair level in every locale.
- fix(landing-page): stop shipping unopened Launch Week drops in the HTML
Self-audit found the campaign’s central mechanism was not actually holding: a static page sends its whole DOM to every visitor, so each unopened day’s headline and target sat in view-source days early. The preview key gated the display, never the markup — anyone could read the running order straight out of the page.
Unopened drops are now dropped at build time. The sealed twin always ships; its revealed counterpart is emitted only once its date has passed, so the secret is never in the response. The cost is that a day opens on the next deploy rather than on the hour, which needs a scheduled build during the week.
Also from the audit:
- Mobile had no breakpoint at all. The kill list collapsed into an unreadable row, the lineup kept its two-column desktop shape, and the pass ticket overflowed because its grid track held the desktop intrinsic width. All three now have a narrow-screen layout.
white-space: nowrapon the hero lockup keeps it on one line on desktop, but every translated slogan is longer than the English and ran off a phone screen; it wraps below 900px.- Six assets were left behind by earlier revisions and no longer referenced.
- fix(landing-page): release Launch Week drops at request time, not build time
504a8e57 kept unopened drops out of the HTML by stripping them at build, which bought secrecy at the cost of needing a deploy every morning of the week — five scheduled production builds, each one able to fail on the one day it matters.
Serve them from a Pages Function instead. The page ships only the sealed cards;
/launch-week/dropsreturns the markup for days that have actually opened and the browser slots it in. A day now flips on its own, and an unopened one is never in a response for anyone to read early.
- Revealed markup moves to
_partials/launch-week-drops.ts, per locale.- Edge cache expires at the next 00:00 UTC boundary, so a stale day-1 response cannot survive into day 2.
?preview=N&key=…still rehearses any day, and is servedno-store.- A failed fetch leaves the sealed cards up: it fails toward the pre-launch page, never toward a leak.
Tests cover the boundary, the key gate, cache lifetime, locale fallback, and that no locale partial carries revealed markup. Verified in the browser across 11 locales x 3 viewports, with scroll reveal and reduced motion.
- fix(landing-page): drop the Watch button until its post exists
The X post for a day is not written when the page ships, so the button on the live card pointed at
href="#"— the most prominent control on the card, and clicking it threw the visitor back to the top of the page for nothing.Serve the button only once
DROP_LINKShas that day’s URL. The card reads fine without it: the kill strip becomes the closing line and the composition still balances.Filling a link in costs a production deploy and a
landing-deployersapproval, so the comment says to batch the days rather than edit it each morning.
- fix(landing-page): stop shipping the Launch Week preview key to visitors
The page carried
PREVIEW_KEYin its inline script, so every visitor was served the key that unlocks the unreleased days. Read it off the page, request?preview=all&key=…, and the endpoint handed back all five days — the schedule protected nothing. Caught in review on the PR preview deployment.The key now comes from
LAUNCH_WEEK_PREVIEW_KEY, a Pages secret, and appears neither in the page nor in this repository — both are public, so a key in either is a key everyone has. Unset means preview is off rather than open: a missing secret must not open the week up.The page no longer needs to know the key. It forwards whatever
?preview=and?key=are in the URL and the endpoint decides; the response reports which preview it honoured, and the day labels are rebuilt from that.Two tests now guard the leak directly: one asserts the page source carries no key, the other that no literal key sits in the function.
Requires
LAUNCH_WEEK_PREVIEW_KEYon both the staging and production Pages projects. Until it is set, preview is simply unavailable — the live schedule is unaffected.
Co-authored-by: Scarlett Huang scarletthuang@Scarletts-MacBook-Air.local
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
Open Design: The open-source Claude Design alternative
Website · Download · Open Design Cloud · Discord · Follow @OpenDesignHQ
English · Español · Português · Deutsch · Français · 简体中文 · 繁體中文 · 한국어 · 日本語 · العربية · Русский · Українська · Türkçe · ภาษาไทย
What is Open Design
🎨 The open-source Claude Design alternative. 🖥️ Local-first native desktop app for macOS and Windows. ⚡ Composable skills, brand-grade
DESIGN.mddesign systems, and ready-to-use plugins. 🖼️ Generates web · desktop · mobile prototypes, live dashboards / artifacts, decks, images, video, plus HyperFrames motion graphics. 🔒 Sandboxed iframe preview · HTML / PDF / PPTX / MP4 export. 🤖 Runs on Claude Code · OpenClaw · Codex · Cursor · OpenCode · Qwen · Copilot · Amp · Hermes · Kimi · Antigravity and 25 distinct local CLI executables, or any OpenAI-compatible endpoint via BYOK.Open Design is what you get when the agent-native loop Anthropic shipped with Claude Design — discover the brief, lock the direction, stream the artifact, critique, deliver — stops being closed and becomes a filesystem of functional skills, rendering design templates, design systems, and plugins that the coding agents already on your laptop can read, write, and remix. Your CLI becomes the design engine, your laptop becomes the studio, and your team’s
DESIGN.mdbecomes the brand contract.It’s also the Figma alternative for the agent era — instead of pushing pixels on a canvas, it delivers single-page artifacts in real CSS, real fonts, real components, exported straight to HTML / PDF / PPTX / MP4 — already shaped by your design system, already runnable inside the agent you use every day.
Product tour
A quick look at what Open Design is and what it does. Start from Home, orchestrate repeat workflows with Automation, distill a brand contract in Design System, and extend with Plugins and integrations; inside any project’s Studio, the same design system streams out prototypes, live artifacts, HyperFrames, decks, and images.
Core pages
Home — the overview entry point. Pick a skill and a design system, type the brief, and kick off everything from one place.
Automation — orchestrate repetitive design workflows into reusable, schedulable automations.
Design System — distill your team's
DESIGN.mdinto a brand contract that shapes every output.Plugin — browse, install, and distribute workflow plugins to extend generation on demand.
Integrations — connect external systems and MCP tools, and use Open Design from any IDE, script, or automation.
Studio — many artifact types in one project
Inside a project’s Studio, the same design system streams out multiple artifact types:
Prototype — single-page HTML artifacts that read your design system and render in a sandboxed iframe, previewable instantly and downloadable as source.
HyperFrame — programmatic motion and animated graphics, rendered to a real MP4 (e.g. 1920×1080 · 30fps).
Deck — pitch decks you can page through, navigate by keyboard, and export to PPTX / PDF.
Image — brand-grade images and visual assets, with high-resolution generation and download.
Platform Compatibility
od mcp install claudeod mcp install codexod mcp install reasonixod mcp install ravenod mcp install cursorod mcp install copilotod mcp install copilotod mcp install opencodeod mcp install openclawod mcp install antigravityod mcp install clineod mcp install traeod mcp install kimiod mcp install kirood mcp install piod mcp install vibeod mcp install hermesod mcp install <agent> --printfor a dry-run preview ·--uninstallto remove · full list withod mcp install --help.No CLI installed? The BYOK proxy at
POST /api/proxy/{anthropic,openai,azure,google,ollama,senseaudio}/streamgives you the same loop (no process spawn) — pastebaseUrl+apiKey+model, with presets for OpenAI, Atlas Cloud, Anthropic, Azure OpenAI, Google Gemini, Ollama, LM Studio, vLLM, or any OpenAI-compatible endpoint. Atlas Cloud useshttps://api.atlascloud.ai/v1with your own key and OpenAI-compatible model ids such asqwen/qwen3.5-flash. Per-target SSRF protection blocks internal IPs / link-local / CGNAT at the daemon edge.Runtime definitions live in
apps/daemon/src/runtimes/defs/, with registration and shared stream handling underapps/daemon/src/runtimes/. Seedocs/agent-adapters.mdfor the adapter contract.Demo
Four core product categories, all rendered by a coding agent running on your laptop. Click a thumbnail to see the real example.
1 · Prototypes — web · desktop · mobile
The default output surface. Single-page HTML artifacts that read your
DESIGN.mdand render in a sandboxed iframe.Entry view — pick a skill, pick a design system, type the brief. One surface for prototypes, dashboards, decks, mobile apps, magazine pages.
Mobile prototype — pixel-accurate iPhone 15 Pro chrome, multi-screen flows. The agent never redraws the phone frame; shared device frames live in
assets/frames/.Web prototype — an editorial dashboard with scrollbars, KPIs, and charts. Rendered straight from
design-templates/dating-web/.Mobile app prototype — a three-screen gamified flow with XP ribbons and quest detail. Hand off straight to Cursor / Codex / Claude Code to turn into React/Next/Vue.
2 · Live artifacts & dashboards
Live dashboards, decision rooms, KPI walls — single-page artifacts that pull data through a tweaks panel and stay editable in place.
Live dashboard — an editable KPI wall whose tweaks panel surfaces the parameters worth nudging. The agent emits a manifest, and the iframe re-renders without a reload.
Decision room — a multi-source briefing artifact for product / research / ops meetings.
GitHub-style dashboard — repo metrics presented as a live artifact.
Flow live-dashboard template — a domain-specific KPI template, branded through the active
DESIGN.md.3 · Decks — magazine decks, weekly updates, pitches
Deck mode (guizang-ppt) — magazine layouts, WebGL hero, P0/P1/P2 checklists. Bundled verbatim from
op7418/guizang-ppt-skillwith its original license preserved.Swiss International-style deck — grid-anchored, monochrome accents. One of 15 deck templates and 36 themes under
design-templates/html-ppt-*/.Every deck exports to HTML (single file, inlined assets), PDF (browser print, deck-aware), PPTX (agent-driven skill), ZIP (archive), or Markdown.
4 · Images —
gpt-image-2, ImageRouter, custom APIIllustrated city food map
Hand-drawn editorial travel poster
Cinematic elevator scene
Single-frame editorial still
Cyberpunk portrait
Profile avatar — neon face text
3D stone staircase
Hewn-stone infographic
Glamorous portrait
Editorial studio shot
93 ready-to-replicate prompts live in
prompt-templates/— preview thumbnails, full prompt body, target model, aspect ratio, and source attribution. One click drops a brief into the composer.5 · Video & HyperFrames — agent-native motion graphics
HyperFrames is HeyGen’s open-source, agent-native video framework, integrated as a first-class citizen in Open Design. The agent writes HTML + CSS + GSAP, and HyperFrames renders it to a deterministic MP4 via headless Chrome + FFmpeg. Pair it with Seedance 2.0 for cinematic t2v / i2v, Veo 3 / Sora 2 / Kling 2 for routed model variants, and Suno v5 / Lyria 2 for the audio layer.
30s SaaS product promo · 16:9 · UI 3D reveals
TikTok karaoke talking-head · 9:16 · TTS + word-synced captions
30s brand sizzle reel · 16:9 · audio-reactive kinetic type
Bar chart race · 16:9 · NYT-style data infographic
Flight map · 16:9 · Apple-style route reveal
4s cinematic logo outro · 16:9 · piece-by-piece assembly + bloom
$0 → $10K money counter · 9:16 · Apple-style hype
Website-to-video · 16:9 · captures the site at 3 viewports
11 HyperFrames templates + 39 Seedance prompts ship with the repo. Catalog thumbnails © HeyGen; the framework is Apache-2.0. The OD-specific render workflow (composition cache, sandbox-exec workaround, MP4-as-chip) is detailed in
design-templates/hyperframes/.Why Open Design
Open Design (OD) is the open-source alternative. Same loop, same artifact-first mental model, none of the lock-in:
claude/codex/cursor-agent/copilot/hermes/kimialready on yourPATHare the design engine. Swap with one click.DESIGN.mdas the core brand contract. 151 design-system packages ship with the repo; legacy packages may beDESIGN.md-only, while newer packages can addmanifest.json,tokens.css, components, assets, and provenance. Drop a folder in, the picker finds it.AGENTS.md→ Daemon data directory contract. This README MUST NOT restate it.gitrepo +DESIGN.mdto the agent and it refactors your real components to the brand spec. Dedicated plugins migrate Figma / Pencil workflows into React / Next.js / Vue code.Comparison
DESIGN.mdDESIGN.mdQuick start
🖥️ Download the desktop app (recommended — zero config)
The fastest way to use Open Design. No Node, no pnpm, no clone.
After install: the app auto-detects every coding-agent CLI on your
PATH, loads 100+ functional skills, the separate rendering-template catalog, and 151 design systems, and lets you type a brief in the entry view.🤖 Install into your coding agent (no UI)
You can use Open Design without ever opening the GUI — call it as a skill, plugin, or MCP server inside Claude Code, Codex, Cursor, Copilot, OpenClaw, Antigravity, Hermes, Kimi, and more.
If you installed the macOS desktop app via the DMG or Homebrew cask, your shell may still resolve
odto Apple’s built-in/usr/bin/odoctal-dump utility. In that case, open Settings → MCP server in the desktop app and copy the client-specific snippet; it uses absolute paths and does not rely on the bareodcommand.install.shis a thin shell wrapper aroundod mcp install; it exists so the hosted URL returns shell instead of the landing-page HTML fallback and fails fast if your shell resolves a non-Open-Designodbinary.Then, inside the agent:
In a filesystem-backed local CLI run, the agent composes the selected functional skill or design template with your
DESIGN.md, writes the canonical project files, and Open Design previews those files. A BYOK/plain-API run without filesystem tools instead returns one complete<artifact>block.🐳 Run with Docker
🚀 Deploy on Sealos
The Sealos App Store template runs the published Open Design Docker image with persistent workspace storage and Basic Auth on the public proxy. For custom public or shared Docker deployments, follow the reverse-proxy and
OPEN_DESIGN_ALLOWED_ORIGINSguidance indeploy/README.md.🧑💻 Run from source
Open the URL printed by
tools-dev; development ports are allocated dynamically unless you pass explicit port flags.Node
~24, pnpm10.33.x. WSL2 users, seedocs/wsl-setup.md; native Windows users, seedocs/windows-troubleshooting.md. Full quickstart, env vars, Nix flake, and packaged build flow →QUICKSTART.md.A full workflow — from brief to artifact
brief → plugin → direction → design system → artifact → handoff → memoryDESIGN.md.DESIGN.mdare bound. Filesystem-backed CLI runs write canonical project files and the preview follows them; BYOK/plain-API runs without file tools return one complete<artifact>block.Use Open Design from your coding agent
Open Design ships a stdio MCP server and per-agent install scripts. Any MCP-compatible agent in another repo can read files from your local Open Design projects directly — tokens CSS, JSX components, entry HTML — as a structured API queryable by name. The agent always sees the live file, not a stale export.
Why MCP? Exporting and re-attaching a zip every iteration breaks flow. MCP exposes the design source directly — the agent always sees the live file.
For an agent starting from scratch, the installer places
~/.config/<agent>/open-design.json(or the platform equivalent) plus a copy-paste MCP snippet. Cursor gets a one-click deeplink; Claude Code gets aclaude mcp add-jsonone-liner; every other agent gets JSON in the schema its config expects. On macOS desktop installs, prefer that Settings snippet over typing bareod mcp install <agent>in Terminal, because/usr/bin/odmay win on PATH. Full per-agent flow → Settings → MCP server in the desktop app, ordocs/agent-adapters.md.Security model. Read-only by default, the daemon binds to
127.0.0.1, and SSRF is blocked at the proxy edge. LAN exposure requires an explicitOD_BIND_HOSTplusOD_ALLOWED_ORIGINS. Connector credentials and live-artifact preview routes stay loopback-only regardless.Internally-hosted model endpoints. To prevent SSRF, the daemon blocks provider base URLs that resolve to private/internal address ranges (RFC1918, link-local, CGNAT, and cloud-metadata IPs) by default, surfacing
Internal IPs blocked. If you run an internally-hosted gateway (e.g. LiteLLM or Ollama on a VPN-only10.x/192.168.xaddress), opt that host out withOD_ALLOWED_INTERNAL_HOSTS=<host1>,<host2>,...— a comma- or whitespace-separated list of bare hostnames or IPs (10.0.0.5,litellm.internal.corp; ahost:portor full URL is accepted and reduced to its hostname; IPv6 must be bracketed, e.g.[fd00::1]). The allowlist is strict opt-in (empty by default), exact-host (no subdomain/substring matching), and applies only to provider endpoints you configure (connection test, model discovery, BYOK chat). It deliberately does not relax the guard on download URLs returned inside upstream responses, which stay blocked. A malformed entry — or CIDR notation, which is not supported — is dropped with a warning rather than silently trusted, so a typo never quietly widens (or fails to widen) the guard. Allowlisting a hostname trusts whatever it resolves to (likeOD_ALLOWED_ORIGINS); allowlist the resolved IP instead if you want the DNS-resolved address re-checked.Skills and design templates
100+ functional skills ship in
skills/. Each follows the Agent SkillsSKILL.mdconvention and supplies reusable agent behavior, references, or utilities. Renderable starters live separately indesign-templates/; they may also useSKILL.md, but they populate the design-template catalog rather than the functional-skill registry.Two modes anchor the design-template catalog:
prototype(web/mobile/desktop single-page artifacts) anddeck(horizontal-swipe presentations). Other templates coverimage,video,audio, and utility surfaces. Thescenariofield groups templates by audience:design·marketing·operation·engineering·product·finance·hr·sale·personal.web-prototypesaas-landingdashboardmobile-appmobile-onboardingsocial-carouselemail-marketingmagazine-postermotion-framessprite-animationpm-specteam-okrseng-runbookfinance-reporthr-onboardingguizang-ppthtml-ppt-*design-templates/html-ppt/)hyperframescritiquetweaksFull protocol and directory split →
docs/skills-protocol.md. Registry endpoints:GET /api/skillsfor functional skills andGET /api/design-templatesfor rendering templates.Design Systems
151 brand-grade design-system packages centered on
DESIGN.mdship with the repo. Legacy packages may contain only that Markdown contract; newer packages can also carrymanifest.json, compiledtokens.css, component fixtures, assets, and provenance evidence. The catalog mixes upstream-derived systems with project-owned additions;design-systems/README.mdrecords the package shape and provenance. Switch a system → the next render uses the new tokens.Full catalog (click to expand)
AI & LLM —
claude·cohere·mistral-ai·minimax·together-ai·replicate·runwayml·elevenlabs·ollama·x-aiDeveloper Tools —
cursor·vercel·linear-app·framer·expo·clickhouse·mongodb·supabase·hashicorp·posthog·sentry·warp·webflow·sanity·mintlify·lovable·composio·opencode-ai·voltagentProductivity —
notion·figma·miro·airtable·superhuman·intercom·zapier·cal·clay·raycastFintech —
stripe·coinbase·binance·kraken·mastercard·revolut·wiseE-commerce —
shopify·airbnb·uber·nike·starbucks·pinterestMedia —
spotify·playstation·wired·theverge·metaAutomotive —
tesla·bmw·ferrari·lamborghini·bugatti·renaultOther —
apple·ibm·nvidia·vodafone·resend·spacexStarters —
default(Neutral Modern) ·warm-editorialRe-import the library via
scripts/sync-design-systems.ts. Add your own brand → drop aDESIGN.mdintodesign-systems/<brand>/. Full guide →design-systems/README.md.Plugins
277 official plugins plus 183 remixable reference examples live in
plugins/_official/. Each entry is a portable plugin directory anchored byopen-design.jsonplus the payload required by its type: for exampleSKILL.mdfor agent workflows,template.jsonfor media templates, orDESIGN.mdfor design-system entries. Jump straight to a category:scenarios/od-default,od-design-refine,od-figma-migration,od-code-migration,od-react-export,od-nextjs-export,od-vue-export,od-media-generation,od-new-generation,od-tune-collab,od-plugin-authoring,od-share-to-community,od-web-effect-extractorimage-templates/video-templates/design-systems/DESIGN.mdwrapped as pluginsatoms/examples/Also
plugins/community/for community plugins andplugins/registry/for the publishing flow.What plugins can do
od-figma-migration.gitrepo +DESIGN.md, get a PR. Seeod-code-migration.Using plugins
Plugins are at full parity across the web UI and the
odCLI — same/api/pluginsendpoints, pick whichever fits.In the desktop / web app: open the Plugin page to browse the marketplace and click Install; inside a project’s Studio, plugins appear as composer chips you click to apply (with the inputs they declare).
On the command line (runs without a UI — this is the path external agents use):
Every command supports
--json, so you can pipe it throughjq/xargsinto automation.Building a plugin
An Open Design plugin requires
open-design.jsonplus the payload required by its type. A workflow skill or scenario also includesSKILL.md; manifest-only template and design-system entries use their own payloads instead:Core
open-design.jsonfields:specVersion(currently1.0.0),name(stable ID),version(semver), optionalcompat.agentSkills[].path(points at./SKILL.mdwhen the entry exposes an Agent Skill),od.kind(skill/scenario/atom/bundle),od.taskKind(new-generation/figma-migration/code-migration/tune-collab),od.mode(the output surface, e.g.prototype/deck/live-artifact/image/video/hyperframes/audio/design-system/scenario),od.capabilities[](declare the minimum — a restricted install grants onlyprompt:injectby default),od.inputs[](apply-time parameters).Scaffold + validate locally:
Full field set and runtime contract →
plugins/spec/SPEC.md; developing a plugin with a coding agent →plugins/spec/AGENT-DEVELOPMENT.md; copy-paste minimal templates →plugins/spec/examples/.Contributing a plugin
plugins/community/(third-party plugins), or — to ship it bundled with Open Design — into the matching tier ofplugins/_official/.od plugin validate,pnpm guard,pnpm --filter @open-design/plugin-runtime typecheck.plugins/spec/CONTRIBUTING.md(ID, version, lane, mode, capabilities, trigger examples; attach a screenshot / preview for visual plugins).plugins/spec/PUBLISHING-REGISTRIES.md.Plugin registry endpoint:
GET /api/plugins. Directory overview →plugins/README.md(简体中文).Architecture
better-sqlite3AGENTS.md→ Daemon data directory contract. This README MUST NOT restate it.<artifact>block into a sandboxedsrcdociframepnpm tools-dev(start / stop / run / status / logs / inspect / check)Full architecture →
docs/architecture.md. Skill protocol →docs/skills-protocol.md. Agent adapter contract →docs/agent-adapters.md.Roadmap
/api/proxy/{anthropic,openai,azure,google,ollama,senseaudio}/stream) with OpenAI-compatible presets including Atlas Cloud + SSRF guard/api/import/claude-design)DESIGN.mdsystemnpx od initto scaffold a project withDESIGN.mdod plugin {add,list,remove,test,publish}CLIDESIGN.md)Phased delivery →
docs/roadmap.md.Community
Real people behind every channel.
The
good-first-issueandhelp-wantedlabels are the easiest way in.Contributing
Open Design keeps moving because contributors — designers, engineers, prompt authors — keep showing up. Many of the most-used skills, design systems, and plugins were written by people outside the core team.
🎯 Where to start (max leverage, min change)
SKILL.md+ optionalassets/+references/skills/· spec indocs/skills-protocol.mdSKILL.mdbundledesign-templates/DESIGN.md; addmanifest.json,tokens.css, components, assets, or provenance when neededdesign-systems/<brand>/open-design.json+ the type-specific payload under a category folderplugins/community/· spec inplugins/spec/SPEC.md· agent dev guide inplugins/spec/AGENT-DEVELOPMENT.mdapps/daemon/src/runtimes/defs/good-first-issuelabelREADME.<lang>.mdfilesTRANSLATIONS.md🤖 Contributing as an agent
If you are the agent reading this, the fastest path is:
Full agent-friendly contribution flow, code style, and PR bar →
CONTRIBUTING.md(Deutsch · Français · 简体中文 · 日本語 · 한국어 · Português · ภาษาไทย).🏅 Open Design Fellow program
We’re recruiting Open Design Fellows around the world — Fellows shape the product alongside the core team, represent Open Design officially in their region, and grow the community locally, backed by funded support ($1,000 / MR), free LLM credits, and a direct review track. Details →
MAINTAINERS.mdand the announcement on Discord.Maintainers
They carry a lot of the load — daily maintenance, review, and community support.
@Nagendhra-web
Maintainer
@Sid-Qin
Maintainer
@YOMXXX
Maintainer
Maintainer rules, promotion criteria, and the exit protocol →
MAINTAINERS.md(also Deutsch · Français · 简体中文 · 日本語 · 한국어 · Português · ภาษาไทย).Contributors
Thanks to everyone who has taken part — code, docs, feedback, a sharp issue, a new skill, a new design system.
Repository activity
The SVG above is regenerated daily by
.github/workflows/metrics.ymlusinglowlighter/metrics.Star us
If this saved you thirty minutes, give it a ★. Stars don’t pay rent — but they tell the next designer, agent, and contributor that this experiment is worth their attention. One click, three seconds, a real signal.
References & lineage
alchaincyf/huashu-designop7418/guizang-ppt-skilldesign-templates/guizang-ppt/. Default for deck mode.lewislulu/html-ppt-skillOpenCoworkAI/open-codesignmultica-ai/multicaVoltAgent/awesome-design-mdDESIGN.mdschema and 70 upstream-derived systems; current packages may extend that baseline.bergside/awesome-design-skillsdesign-systems/.heygen-com/hyperframeshyperframes-htmlin Open Design.SKILL.mdconvention we adopt verbatim.Detailed provenance →
docs/references.md.License
Apache-2.0. Bundled skills and templates with their own
LICENSEfiles retain those licenses, includingdesign-templates/guizang-ppt/(MIT, @op7418),design-templates/html-ppt/(MIT, @lewislulu), andskills/web-clone/(MIT, @Jane-xiaoer).