agentsclimarketplace

Stitch ui design spec generator

Skill gabelul/stitch-kit/skills/stitch-ui-design-spec-generator

Translates a user request or PRD document into a structured Design Spec JSON — theme, color, typography, density, and device type. Call this before building Stitch generation prompts.From its SKILL.md

Install
npx -y skills add gabelul/stitch-kit --skill stitch-ui-design-spec-generator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

8.9 KB, ~2.7k tokens by cl100k_base, as published. Nobody here has run it

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)

What ships with it: 1 file

1.8 KB alongside SKILL.md

examples/

Gives 0 of the 12 instructions most plan spec skills give in ~2.7k tokens

Counted across 1,360 of the 2,617 authors here whose files we hold, read 2026-09-06

  • Ask one question at a timein 73 of 1360
  • Write the spec using the templatein 22 of 1360
  • Ask clarifying questions if neededin 19 of 1360, across 18 files
  • Wait for user confirmation before proceedingin 19 of 1360
  • Save plans to the plans directoryin 17 of 1360, across 13 files
  • Check for product marketing context firstin 16 of 1360, across 5 files
  • Read the plan file completelyin 16 of 1360
  • Order tasks by dependencyin 16 of 1360
  • Gather context from the conversationin 15 of 1360, across 9 files
  • Explore the codebase instead of askingin 15 of 1360, across 13 files
  • Wait for explicit user approvalin 14 of 1360, across 13 files
  • Quiz the user on the breakdownin 13 of 1360, across 7 files

Said here and by no other author read

  • Analyze tone to derive style keywords
  • Determine device type from request
  • Determine design mode from request
  • Determine roundness from style keywords
  • Determine density and spacing scale
  • Determine color variant based on domain

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.