OpenDesign is an open-source, local-first desktop app that lets coding agents create prototypes, dashboards, slide decks, images, video, and design systems as exportable files. It is used by people working with agent runtimes such as Claude Code, Codex, Cursor, and DeepSeek Harness. The catalogue add-ons extend the OpenDesign workflow with skills, instructions, commands, and plugins.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add nexu-io/open-design --skill waitlist-pagegit clone --depth 1 https://github.com/nexu-io/open-designWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nexu-io/open-design/waitlist-page)<a href="https://agentmods.dev/skills/nexu-io/open-design/waitlist-page"><img src="https://agentmods.dev/badge/skills/nexu-io/open-design/waitlist-page.svg" alt="Measured on agentmods" height="20"></a>- Snyk pass
- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00049 | $0.03552 |
| Opus 5 | $0.00024 | $0.01776 |
| Sonnet 5 | $0.00010 | $0.00710 |
| Haiku 4.5 | $0.00005 | $0.00355 |
Grade A, and why
waitlist-page scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- waitlist-page — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 229 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Waitlist Page Skill
Pre-launch pages are your first handshake with future users. This skill builds a focused, honest entrance: your brand identity, what you're making, one clear path to join the early list. No artificial scarcity, no fake countdown, no inflation tactics—just a clean, mobile-first vessel for genuine interest.
Workflow
Preflight: Load hardened template and brand foundation
- Load the brand identity — Read
DESIGN.mdfor the color system, font pairing, and spatial rules. This is your foundation. A waitlist page lives or dies by consistency with the brand it represents. IfDESIGN.mdis missing, ask the user to provide one before you proceed. - Read and copy the reusable template — Read
assets/template.html. This template is the hardened seed for all outputs. Copy it toindex.htmlas your base. Do not write HTML from scratch or deviate from this structure. The template has all required layout, form structure, decorations, focus styles, and accessibility scaffolding baked in.
Steps: Token replacement with validation and escaping
- Map tokens from inputs — For each placeholder in the template (e.g.,
{{PRODUCT_NAME}},{{BG_EXPRESSION}},{{BORDER_EXPRESSION}},{{LOGO_MARK}}), follow the replacement rules below:- Text tokens (
{{PRODUCT_NAME}},{{TAGLINE}}): HTML-escape<,>,&,",'before insertion into HTML text nodes or attribute values. - HTML tokens (
{{LOGO_MARK}}): If using text initials, HTML-escape them by default. If using inline SVG, you must strictly sanitize it using an allowlist: strip<script>tags, event handlers (on*),<foreignObject>, external refs (href,xlink:href,url()), and any disallowed attributes/elements before insertion. If the SVG cannot be safely sanitized, fallback to escaped text initials. Never emit raw, unsanitized arbitrary HTML. Ensure any SVG scales cleanly within its container. - Color expression tokens (
{{BG_EXPRESSION}},{{FG_EXPRESSION}},{{ACCENT_EXPRESSION}},{{DECO_EXPRESSION}},{{STRIPE_EXPRESSION}},{{SUCCESS_EXPRESSION}},{{BORDER_EXPRESSION}},{{BTN_LABEL_EXPRESSION}},{{TICKER_BG_EXPRESSION}},{{TICKER_FG_EXPRESSION}},{{DECO_STROKE_EXPRESSION}},{{LOGO_SHADOW_EXPRESSION}},{{LOGO_FG_EXPRESSION}}): Must strictly adhere to an explicit color grammar (#hex,rgb/rgba,hsl/hsla,oklch, orcolor-mix()using only local variables). Hard reject any input containing;,{},<,>, comments (/*),@,url(, or external refs to prevent CSS injection. Do not wrap in#or add extra quotes. Examples:rgba(196, 169, 154, 0.38),color-mix(in srgb, var(--fg) 38%, transparent),#FDE8DF. Insert as-is into:rootCSS variables. Derive--successfrom DESIGN.md if present; otherwise use the allowed fallback#2D6A4Fonly. - Font name tokens (
{{DISPLAY_FONT_CSS}},{{BODY_FONT_CSS}}): These are CSS font-family values, already quoted if they contain spaces (e.g.,'DM Sans',Syne). Insert as-is into--font-displayand--font-bodydeclarations; do NOT add extra quotes. - Font URL tokens (
{{DISPLAY_FONT_URL}},{{BODY_FONT_URL}}): Spaces must be encoded as+for the Google Fonts URL (e.g.,DM+Sans,IBM+Plex+Serif). Validate the URL is well-formed before insertion.
- Text tokens (
- Verify token mapping rules — All color tokens are now in CSS variables:
--bg={{BG_EXPRESSION}}(e.g.,#FDE8DF)--fg={{FG_EXPRESSION}}(e.g.,#1A1410)--accent={{ACCENT_EXPRESSION}}(brand badge)--deco={{DECO_EXPRESSION}}(decoration primary)--deco-stripe={{STRIPE_EXPRESSION}}(accent stripe)--input-border={{BORDER_EXPRESSION}}(full CSS expression with opacity)--success={{SUCCESS_EXPRESSION}}or#2D6A4Ffallback--btn-label={{BTN_LABEL_EXPRESSION}}(button text color for contrast)--ticker-bg={{TICKER_BG_EXPRESSION}}(animated ticker background)--ticker-fg={{TICKER_FG_EXPRESSION}}(animated ticker text)--deco-stroke={{DECO_STROKE_EXPRESSION}}(SVG strokes, typically muted with 12–15% opacity)--logo-shadow={{LOGO_SHADOW_EXPRESSION}}(logo container shadow, subtle foreground shade)--logo-fg={{LOGO_FG_EXPRESSION}}(contrasting text color for logo initials)
- Responsive layout — The template includes mobile-first scaling:
- 375px: form stacks to single column, logo shrinks to 40px, decoration compresses, no horizontal scroll.
- 768px: comfortable two-column breathing room.
- 1440px+: centered layout with generous whitespace.
- Verify all text remains readable and the email input + button are fully visible (no clipping) at 375×667 and 390×844.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 229 lines · 49 tokens per session scan A 16c6f7e1f653
waitlist-page is a skill published in the GitHub repository nexu-io/open-design (94,754 stars, last pushed today), licensed Apache-2.0. It adds 49 tokens to every session and 3,552 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
frame-flowchart-sticky
A single-file HTML template for showing a process or system as a whiteboard with coloured sticky notes, curved arrows, and optional mouse interactions.
prototype-web
A clickable, high-fidelity web product prototype with navigation, a hero section, feature cards, steps, social proof, and optional pricing. It is designed to resemble a finished landing page while remaining a prototype.
saas-landing
A single-page SaaS landing page for a software product, with sections such as the hero, features, customer proof, pricing, FAQs, and a call to action. SaaS means software delivered online, usually by subscription.
waitlist-page
A simple waitlist page for collecting email addresses from people interested in a new product or early-access release.
motion-frames
A collection of looping CSS animation patterns for a webpage hero section, the prominent visual area at the top of a page. It combines rotating text, an animated globe or geometric shape, a timer, and floating labels.
web-proto-brutalist
A web-page style built around Swiss industrial print design, with oversized numbers, stark grids, black typography, red accents, and ASCII symbols.