Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 64 additions & 1 deletion docs/mcp-schemas/create_design_system.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,70 @@
"backgroundLight": { "description": "Light mode background (hex).", "type": "string" },
"backgroundDark": { "description": "Dark mode background (hex).", "type": "string" },
"preset": { "type": "string" },
"description": { "type": "string" }
"description": { "type": "string" },
"colorVariant": {
"enum": [
"COLOR_VARIANT_UNSPECIFIED", "MONOCHROME", "NEUTRAL", "TONAL_SPOT",
"VIBRANT", "EXPRESSIVE", "FIDELITY", "CONTENT", "RAINBOW", "FRUIT_SALAD"
],
"type": "string"
},
"headlineFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"bodyFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"labelFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"namedColors": {
"type": "object",
"description": "Semantic color map (40+ tokens like primary, on_primary, surface, etc.)"
},
"spacingScale": {
"format": "int32",
"type": "integer",
"description": "0=minimal, 1=compact, 2=normal, 3=spacious"
},
"designMd": {
"type": "string",
"description": "Auto-generated markdown design system document"
},
"overridePrimaryColor": { "type": "string", "description": "Hex override for primary color" },
"overrideSecondaryColor": { "type": "string" },
"overrideTertiaryColor": { "type": "string" },
"overrideNeutralColor": { "type": "string" }
},
"type": "object"
}
Expand Down
4 changes: 2 additions & 2 deletions docs/mcp-schemas/edit_screens.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
"type": "string"
},
"modelId": {
"description": "Optional. GEMINI_3_PRO for complex edits, GEMINI_3_FLASH for simple changes.",
"enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH"],
"description": "Optional. GEMINI_3_1_PRO = latest Thinking model. GEMINI_3_PRO = deprecated (use 3_1_PRO). GEMINI_3_FLASH for simple changes.",
"enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH", "GEMINI_3_1_PRO"],
"type": "string"
}
},
Expand Down
70 changes: 67 additions & 3 deletions docs/mcp-schemas/generate_screen_from_text.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@
"type": "string"
},
"modelId": {
"description": "Optional. GEMINI_3_PRO = Thinking model (higher quality, slower). GEMINI_3_FLASH = default (faster).",
"description": "Optional. GEMINI_3_1_PRO = latest Thinking model. GEMINI_3_PRO = deprecated (use 3_1_PRO). GEMINI_3_FLASH = default (faster).",
"enum": [
"MODEL_ID_UNSPECIFIED",
"GEMINI_3_PRO",
"GEMINI_3_FLASH"
"GEMINI_3_FLASH",
"GEMINI_3_1_PRO"
],
"type": "string"
},
Expand Down Expand Up @@ -225,7 +226,70 @@
"description": "Color saturation 1–4. Higher = more vivid.",
"format": "int32",
"type": "integer"
}
},
"colorVariant": {
"enum": [
"COLOR_VARIANT_UNSPECIFIED", "MONOCHROME", "NEUTRAL", "TONAL_SPOT",
"VIBRANT", "EXPRESSIVE", "FIDELITY", "CONTENT", "RAINBOW", "FRUIT_SALAD"
],
"type": "string"
},
"headlineFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"bodyFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"labelFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"namedColors": {
"type": "object",
"description": "Semantic color map (40+ tokens like primary, on_primary, surface, etc.)"
},
"spacingScale": {
"format": "int32",
"type": "integer",
"description": "0=minimal, 1=compact, 2=normal, 3=spacious"
},
"designMd": {
"type": "string",
"description": "Auto-generated markdown design system document"
},
"overridePrimaryColor": { "type": "string", "description": "Hex override for primary color" },
"overrideSecondaryColor": { "type": "string" },
"overrideTertiaryColor": { "type": "string" },
"overrideNeutralColor": { "type": "string" }
},
"type": "object"
},
Expand Down
4 changes: 2 additions & 2 deletions docs/mcp-schemas/generate_variants.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
"type": "string"
},
"modelId": {
"description": "Optional. GEMINI_3_PRO for higher quality, GEMINI_3_FLASH for speed.",
"enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH"],
"description": "Optional. GEMINI_3_1_PRO = latest Thinking model. GEMINI_3_PRO = deprecated (use 3_1_PRO). GEMINI_3_FLASH for speed.",
"enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH", "GEMINI_3_1_PRO"],
"type": "string"
}
},
Expand Down
69 changes: 68 additions & 1 deletion docs/mcp-schemas/get_project.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,70 @@
"enum": ["ROUNDNESS_UNSPECIFIED", "ROUND_TWO", "ROUND_FOUR", "ROUND_EIGHT", "ROUND_TWELVE", "ROUND_FULL"],
"type": "string"
},
"saturation": { "description": "1–4", "format": "int32", "type": "integer" }
"saturation": { "description": "1–4", "format": "int32", "type": "integer" },
"colorVariant": {
"enum": [
"COLOR_VARIANT_UNSPECIFIED", "MONOCHROME", "NEUTRAL", "TONAL_SPOT",
"VIBRANT", "EXPRESSIVE", "FIDELITY", "CONTENT", "RAINBOW", "FRUIT_SALAD"
],
"type": "string"
},
"headlineFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"bodyFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"labelFont": {
"enum": [
"FONT_UNSPECIFIED",
"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_FOUR",
"MONTSERRAT", "METROPOLIS", "SOURCE_SANS_THREE", "NUNITO_SANS",
"ARIMO", "HANKEN_GROTESK", "RUBIK", "GEIST", "DM_SANS",
"IBM_PLEX_SANS", "SORA"
],
"type": "string"
},
"namedColors": {
"type": "object",
"description": "Semantic color map (40+ tokens like primary, on_primary, surface, etc.)"
},
"spacingScale": {
"format": "int32",
"type": "integer",
"description": "0=minimal, 1=compact, 2=normal, 3=spacious"
},
"designMd": {
"type": "string",
"description": "Auto-generated markdown design system document"
},
"overridePrimaryColor": { "type": "string", "description": "Hex override for primary color" },
"overrideSecondaryColor": { "type": "string" },
"overrideTertiaryColor": { "type": "string" },
"overrideNeutralColor": { "type": "string" }
},
"type": "object"
},
Expand Down Expand Up @@ -124,6 +187,10 @@
"id": { "type": "string" },
"label": { "type": "string" },
"sourceScreen": { "description": "Format: projects/{project}/screens/{screen}", "type": "string" },
"type": {
"enum": ["SCREEN_INSTANCE_TYPE_UNSPECIFIED", "SCREEN_INSTANCE", "DESIGN_SYSTEM_INSTANCE", "GROUP_INSTANCE"],
"type": "string"
},
"variantScreenInstance": { "$ref": "#/$defs/ScreenInstance" },
"width": { "format": "int32", "type": "integer" },
"x": { "format": "int32", "type": "integer" },
Expand Down
20 changes: 17 additions & 3 deletions skills/stitch-design-md/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,12 @@ If the user pastes a Stitch design URL like `https://stitch.withgoogle.com/proje
2. Call `[prefix]:list_projects` with `filter: "view=owned"` → select project by title → extract numeric ID
3. Call `[prefix]:list_screens` with `projects/[projectId]` → pick the representative screen
4. Call `[prefix]:get_screen` with numeric `projectId` and `screenId`
5. Call `[prefix]:get_project` with `projects/[projectId]` → get `designTheme` (font, roundness, customColor, colorMode)
5. Call `[prefix]:get_project` with `projects/[projectId]` → get full `designTheme` including:
- Core: `colorMode`, `customColor`, `colorVariant`, `roundness`, `spacingScale`
- Fonts: `headlineFont`, `bodyFont`, `labelFont`
- Colors: `namedColors` (40+ semantic tokens), override colors
- Documentation: `designMd` (auto-generated design system — if present, use as foundation for DESIGN.md)
- Backgrounds: `backgroundLight`, `backgroundDark`

### Download the assets

Expand All @@ -70,17 +75,26 @@ Work through these layers systematically:
### 2.1 Project identity
- Project title and numeric ID (from `name` field)
- `deviceType` (MOBILE / DESKTOP / TABLET / AGNOSTIC)
- `designTheme.font`, `designTheme.roundness`, `designTheme.colorMode` from `get_project`
- `designTheme.headlineFont`, `designTheme.bodyFont`, `designTheme.labelFont` (font roles)
- `designTheme.roundness`, `designTheme.colorMode`, `designTheme.colorVariant`
- `designTheme.spacingScale` (0=minimal, 1=compact, 2=normal, 3=spacious)

### 2.2 Visual atmosphere
Describe the aesthetic in 2–3 sentences. Go beyond generic adjectives — what does it feel like? What editorial or product category does it evoke?
If `designTheme.description` exists, use it as the starting point. If `designTheme.designMd` exists, it contains a full design system document — extract the creative direction, do's/don'ts, and component philosophy from it.

Then describe the aesthetic in 2–3 sentences. Go beyond generic adjectives — what does it feel like? What editorial or product category does it evoke?

Examples:
- "Sophisticated minimalist sanctuary — gallery-like spaciousness, photography-first, Scandinavian calm"
- "High-density productivity tool — information-first, sharp edges, focused contrast"
- "Warm artisanal brand — handcrafted feel, organic textures, generous breathing room"

### 2.3 Color palette

**If `namedColors` is available from `get_project`:** Use it as the authoritative color source. It provides 40+ semantic tokens (primary, secondary, tertiary, surface hierarchy, error states, inverse variants). Map these directly to palette documentation instead of guessing from HTML.

**If `backgroundLight`/`backgroundDark` are available:** Use them as the canonical background colors for light/dark modes.

For each key color, write:
```
[Descriptive name] ([hex]) — [functional role]
Expand Down
Loading
Loading