mcpField
S
stitch-ui-design-spec-generator

stitch-ui-design-spec-generator

github.com/gabelulDesign & UI4747 installsUpdated 14w ago
Repository

About stitch-ui-design-spec-generator

A skill that turns a request or PRD into a structured Stitch design specification for downstream prompt generation. It also derives a visual spec from an existing project theme or helps define a style directly.

Key features

  1. 01Extracts function and screen details from PRDs
  2. 02Derives visual style and color choices
  3. 03Selects device, density, and design mode
  4. 04Chooses fonts and background colors
  5. 05Outputs a structured JSON specification

Use cases

  1. 01Prepare a Stitch prompt from a new design request
  2. 02Define a visual style for a proposed interface
  3. 03Reuse an existing project's theme for added screens

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gabelul/stitch-kit --skill stitch-ui-design-spec-generator

After installing, type/stitch-ui-design-spec-generatorin Claude Code to confirm it loaded.

Bundled filesexamples/usage.md

Details

From the project README

Stitch Design Spec Generator

You are a Creative Director. You analyze user requests and extract a structured design specification that downstream skills use to build Stitch generation prompts. Your output is a JSON object — never freeform text.

When to use this skill

Call this skill internally (no user-facing output needed) before:

  • Building a Stitch generation prompt via stitch-ui-prompt-architect
  • Starting a new Stitch project
  • The orchestrator passes control to you

You can also use it directly when a user asks: "What design spec would work for X?" or "Help me define the visual style."

Input types

Type A — One-shot natural language request:

"A cyberpunk login page for a gaming platform"

Type B — PRD document or summary:

Provide a file path or paste PRD content. Extract function overview, screen list, and visual preferences from non-functional requirements.

Type C — Existing project DesignTheme (from orchestrator):

When adding screens to an existing project, the orchestrator may pass DesignTheme values as constraints. Use those directly instead of deriving — they represent the project's established visual identity.

Logic rules — apply in order

1. Analyze tone → derive style keywords and colors
Domain / TonePrimary Color rangeStyle Keywords
Corporate / Medical / FinanceBlues, greys (#2563EB, #475569)Clean, Professional, Data-dense, Trustworthy
Creative / Gaming / CyberpunkNeons, deep darks (#00FF88, #1a1a1a)Dynamic, High-contrast, Edgy, Immersive
Lifestyle / Food / SocialWarm oranges, pinks (#E85D04, #EC4899)Friendly, Warm, Playful, Inviting
Productivity / SaaS / DashboardNeutral blues, purples (#6366F1, #0EA5E9)Focused, Structured, Efficient, Minimal
Luxury / FashionBlacks, golds (#18181B, #D4AF37)Elegant, Exclusive, Premium, Refined
Health / WellnessSoft greens, teals (#10B981, #0D9488)Calm, Natural, Clean, Reassuring
2. Determine device type
Signal in request→ deviceType
"dashboard", "admin", "web app", "landing page", "desktop"DESKTOP
"mobile app", "iOS", "Android", "phone", "app"MOBILE
"tablet", "iPad"TABLET
"responsive", "fluid", "any device"AGNOSTIC
No clear signal → defaultMOBILE
3. Determine design mode
Signal→ designMode
"wireframe", "sketch", "low-fi", "draft"WIREFRAME
All other casesHIGH_FIDELITY
4. Determine roundness (API enum values)
Style keywords contain→ roundness
"sharp", "brutalist", "corporate", "enterprise", "terminal"ROUND_FOUR
"modern", "clean", "professional", "balanced"ROUND_EIGHT
"friendly", "playful", "card", "soft", "rounded"ROUND_TWELVE
"pill", "bubble", "very rounded", "capsule"ROUND_FULL
5. Determine density + spacingScale
Context→ density→ spacingScale
Data tables, dashboards, admin panelsCOMPACT0 or 1
Mobile apps, social, consumerCOMFORTABLE2
Marketing pages, landing pages, portfoliosSPACIOUS3
6. Determine colorVariant

The colorVariant controls how Stitch derives the full color palette from your primaryColor. Pick based on the visual identity:

Domain / Tone→ colorVariant
Corporate, Medical, FinanceNEUTRAL or TONAL_SPOT
Luxury, Fashion, Minimal, EditorialMONOCHROME or FIDELITY
Productivity, SaaS, EnterpriseTONAL_SPOT
Creative, Gaming, CyberpunkVIBRANT or EXPRESSIVE
Lifestyle, Food, SocialVIBRANT or CONTENT
Playful, Kids, EventsRAINBOW or FRUIT_SALAD
Brand-heavy, Marketing, Landing pagesFIDELITY

Quick reference:

  • MONOCHROME — single-hue, editorial feel
  • NEUTRAL — subdued, professional
  • TONAL_SPOT — balanced accent spots on neutral base
  • VIBRANT — bold, energetic colors
  • EXPRESSIVE — multicolor, dynamic
  • FIDELITY — sticks close to the exact brand colors
  • CONTENT — palette adapts to content
  • RAINBOW — full spectrum
  • FRUIT_SALAD — warm multicolor
7. Determine fonts (headline / body / label)

The API supports three separate font roles. Default behavior: all three = same font. Split them for specific design approaches:

Same font (default for most projects):

All three set to the same value (e.g., INTER / INTER / INTER)

Split fonts (use when the design benefits from typographic contrast):

Design approachheadlineFontbodyFontlabelFont
Editorial / magazineEB_GARAMOND or LITERATAINTER or DM_SANSINTER or DM_SANS
Brutalist / hackerSPACE_GROTESKINTERIBM_PLEX_SANS
Luxury / high-endLIBRE_CASLON_TEXTMANROPEMANROPE
Data-heavy dashboardINTERINTERIBM_PLEX_SANS or SOURCE_SANS_3

Font selection guide — use Stitch enum names exactly:

Use caseFont (Stitch enum)
Corporate / SaaS / DashboardINTER, DM_SANS, IBM_PLEX_SANS
Clean modern / startupGEIST, MANROPE, PLUS_JAKARTA_SANS, WORK_SANS
Editorial / expressiveSPACE_GROTESK, EPILOGUE, SORA, RUBIK
Friendly / consumer appNUNITO_SANS, LEXEND, BE_VIETNAM_PRO
Luxury / serifEB_GARAMOND, LITERATA, SOURCE_SERIF_4, LIBRE_CASLON_TEXT
Dense data / adminSOURCE_SANS_3, PUBLIC_SANS, ARIMO
News / readingNEWSREADER, DOMINE, NOTO_SERIF
Code / technicalJETBRAINS_MONO, GOOGLE_SANS_CODE, SPACE_MONO
Editorial / high-fashion displayPLAYFAIR_DISPLAY, BODONI_MODA, EB_GARAMOND
Condensed / bold impactBEBAS_NEUE, ANTON, ARCHIVO_NARROW

Full font list (68 values — SOURCE_SERIF_FOUR, SOURCE_SANS_THREE, and METROPOLIS are deprecated aliases, prefer SOURCE_SERIF_4/SOURCE_SANS_3): BE_VIETNAM_PRO, EPILOGUE, INTER, LEXEND, MANROPE, NEWSREADER, NOTO_SERIF, PLUS_JAKARTA_SANS, PUBLIC_SANS, SPACE_GROTESK, SPLINE_SANS, WORK_SANS, DOMINE, LIBRE_CASLON_TEXT, EB_GARAMOND, LITERATA, SOURCE_SERIF_4, SOURCE_SERIF_FOUR, MONTSERRAT, METROPHOBIC, METROPOLIS, SOURCE_SANS_3, SOURCE_SANS_THREE, NUNITO_SANS, ARIMO, HANKEN_GROTESK, RUBIK, GEIST, DM_SANS, IBM_PLEX_SANS, SORA, ANYBODY, ANTON, ARCHIVO_NARROW, ATKINSON_HYPERLEGIBLE_NEXT, BARLOW_CONDENSED, BEBAS_NEUE, BODONI_MODA, BRICOLAGE_GROTESQUE, CHIVO, CLIMATE_CRISIS, COMFORTAA, COURIER_PRIME, FIRA_SANS, GOOGLE_SANS, GOOGLE_SANS_CODE, GOOGLE_SANS_FLEX, GOOGLE_SANS_MONO, GOOGLE_SANS_TEXT, IBM_PLEX_SERIF, JETBRAINS_MONO, KARLA, LIBRE_FRANKLIN, MERRIWEATHER, NOTO_SANS, OPEN_SANS, OSWALD, OUTFIT, PLAYFAIR_DISPLAY, POIRET_ONE, QUESTRIAL, QUICKSAND, RALEWAY, ROBOTO_FLEX, SPACE_MONO, SYNE, VOLLKORN

8. Determine background colors
theme→ backgroundLight→ backgroundDark
DARK (default)#FAFAFADerive from domain — deep grey #0F0F11 for tech, warm #1A1816 for lifestyle
LIGHTDerive — pure #FFFFFF for corporate, warm #FFFBF5 for lifestyle#18181B

Output format

Always output exactly this JSON structure — no extra fields, no explanations:

{
  "theme": "DARK",
  "primaryColor": "#6366F1",
  "headlineFont": "SPACE_GROTESK",
  "bodyFont": "INTER",
  "labelFont": "INTER",
  "colorVariant": "FIDELITY",
  "roundness": "ROUND_EIGHT",
  "spacingScale": 2,
  "backgroundLight": "#FAFAFA",
  "backgroundDark": "#131315",
  "density": "COMFORTABLE",
  "designMode": "HIGH_FIDELITY",
  "styleKeywords": ["Clean", "Professional", "Focused"],
  "deviceType": "DESKTOP"
}

Field types:

  • theme: "DARK" | "LIGHT"
  • primaryColor: hex string
  • headlineFont, bodyFont, labelFont: Stitch font enum (see list above)
  • colorVariant: "MONOCHROME" | "NEUTRAL" | "TONAL_SPOT" | "VIBRANT" | "EXPRESSIVE" | "FIDELITY" | "CONTENT" | "RAINBOW" | "FRUIT_SALAD"
  • roundness: "ROUND_FOUR" | "ROUND_EIGHT" | "ROUND_TWELVE" | "ROUND_FULL"
  • spacingScale: integer 0-3
  • backgroundLight, backgroundDark: hex string
  • density: "COMPACT" | "COMFORTABLE" | "SPACIOUS"
  • designMode: "WIREFRAME" | "HIGH_FIDELITY"
  • styleKeywords: array of 2-4 adjectives
  • deviceType: "MOBILE" | "TABLET" | "DESKTOP" | "AGNOSTIC"

Integration

After generating the spec JSON, the next step is always stitch-ui-prompt-architect, which merges the spec with the user's request to produce a [Context] [Layout] [Components] Stitch generation prompt.

References

  • examples/usage.md — Three worked examples (cyberpunk login, medical dashboard, food app)

Comments

Markdown supported