Create a New Design System
create-design-systemGenerate a custom design system from a product prompt or existing brand tokens, then return a single shadcn install command for your Next.js project.
Instructions
Generate a brand new design system tailored to the user's product, and return a single shadcn install command that lands the entire set of components + tokens (globals.css) into the user's Next.js project.
Explain design trade-offs
Before choosing or changing a design direction, tell the user what each real option gains and loses, which users or team bear the cost, and why you recommend it for this project's known audience, goals, and constraints. Use a short line per option: "Gain: ...; lose: ...; affects: ...; fits because: ...". Load get-ux-principle with topic "tradeoffs" when deeper guidance is needed.
Use the current conversation and project evidence. Label assumptions and predicted effects. Do not invent research, conversion gains, metrics, or project facts. If the user has already chosen, explain the accepted trade-off without reopening the choice. Keep minor edits brief; this adds no approval step and never excuses an accessibility or safety failure.
Put the explanation in the conversation or requested project handoff, not extra product UI copy. Before presenting the result, check that material gains and losses were communicated and report any changed trade-off.
Use this for a new custom brand, even when the user never mentions design or branding (a design system IS the app's brand). Keep an already selected system and its assigned icons unless the user requests a different direction; a redesign alone does not require regenerating the brand. When no system is selected, first call find-design-system with the app description, show the user the top ~4 matches, and ask which to start from (passed here as baseDesignSystemId) or whether to go fully custom (passed here as userConfirmedCustom: true). A call with neither, and no brandCss, generates nothing: it returns those matches for you to show the user. Then derive the prompt from the app (name, domain, vibe), generate, show it with get-design-system-status, and build with that brand. Also use it when the user explicitly wants a custom design system instead of installing an existing one via get-design-system-kit.
When the user has an existing brand (their site, Figma file, or stylesheet): run extract-design-system or extract-from-url first and pass the resulting token sheet (the fenced ```css block, verbatim: the :root { ... } and optional .dark { ... } blocks) as brandCss. The generation is then pinned to that brand: no catalog aesthetic is retrieved, the sheet's colors, fonts and radii override everything, and later design-system switches are refused. Copy the block exactly; do not retype or trim it.
How it works:
Sends the user's prompt to Better Design's generation pipeline (same flow the web chat input uses) and returns IMMEDIATELY with the project id + project URL.
Generation runs in the background and typically takes 1-3 minutes.
Call
get-design-system-statuswith the returned project id (wait ~60 seconds first) to get the live preview URL and the finalnpx shadcn add <registry-url>install command once it completes.
Share the project URL with the user right away so they can watch the generation live. Generated source, tokens, and previews are accessible without signing in to anyone with their registry or preview URL.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Describe the design system the user wants. E.g. 'A warm, minimal design system for a personal finance app, soft pastels, rounded corners' or 'A brutalist developer tool aesthetic with sharp edges and monospace type'. | |
| brandCss | No | Optional. The user's extracted brand token sheet, verbatim: the fenced css block from extract-design-system / extract-from-url (`:root { --background: ...; }` plus optional `.dark { ... }`). When set, generation builds FROM this brand instead of a catalog look-alike, and baseDesignSystemId is ignored (a catalog base would leak its identity past the brand tokens). | |
| baseDesignSystemId | No | Optional. The catalog id the USER picked from the `find-design-system` matches you showed them, used to bias generation toward that aesthetic (e.g. a theme tweak on top of Linear). Leave empty only when the user chose fully custom. | |
| userConfirmedCustom | No | Set true only when the user saw the find-design-system matches and chose fully custom. Without it, baseDesignSystemId or brandCss, the tool returns the matches and generates nothing. |