
Stitch::Manage Design System
- 5.2k installs
- 7.8k repo stars
- Updated July 21, 2026
- google-labs-code/stitch-skills
stitch-manage-design-system is an agent skill: >-
About
The stitch-manage-design-system skill >-. Design-System Create a "source of truth" for your project's design language to ensure consistency across all future screens. > [!NOTE] > Refer to your system prompt for instruction on handling MCP tool prefixes for > all tools mentioned in this skill (e.g., `get_screen`, > `create_design_system_from_design_md`, `apply_design_system`). 📥 Retrieval To analyze a Stitch project, you must retrieve metadata and assets using the Stitch MCP tools: 1. **Project lookup**: Use `list_projects` to find the target `projectId`. 2. **Screen lookup**: Use `list_screens` for that `projectId` to find representative screens (e.g., "Home", "Main Dashboard"). Agents should read SKILL.md quick start steps, verify required binaries and environment variables, and follow reference files for exact parameters before calling tools. The workflow includes decision gates, anti-patterns, and cross-links to sibling skills so agents stay aligned with upstream documentation rather than improvising.
- Covers stitch-manage-design-system quick start, workflow steps, and reference pointers from SKILL.md.
- Tagged for stage build and subphase frontend in the closed Skillselion taxonomy.
- Documents prerequisites, permissions filesystem, browser, and compatible agents.
- Includes AEO tagMeta with task queries, keywords, and evidence quotes for discovery.
- Cross-links related skills and generated REFERENCE.md tables where the repo provides them.
Stitch::Manage Design System by the numbers
- 5,177 all-time installs (skills.sh)
- +373 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #71 of 1,896 Design & UI/UX skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
stitch::manage-design-system capabilities & compatibility
- Capabilities
- stitch manage design system documented workflow · quick start examples · reference parameter lookup · taxonomy aligned metadata · aeo discovery fields
- Works with
- figma
- Use cases
- ui design · web design
What stitch::manage-design-system says it does
>-
npx skills add https://github.com/google-labs-code/stitch-skills --skill stitchmanage-design-systemAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 5.2k |
|---|---|
| repo stars | ★ 7.8k |
| Security audit | 1 / 3 scanners passed |
| Last updated | July 21, 2026 |
| Repository | google-labs-code/stitch-skills ↗ |
How do I run stitch-manage-design-system correctly without guessing steps, tools, or parameters?
>-
Who is it for?
Teams using stitch-manage-design-system when SKILL.md triggers match the user request.
Skip if: Skip when the task is outside stitch-manage-design-system documented triggers or sibling skill scope.
When should I use this skill?
User mentions stitch-manage-design-system, related trigger phrases, or asks to follow this SKILL.md workflow.
What you get
Completed stitch-manage-design-system workflow with outputs and checks defined in SKILL.md.
- stitch-manage-design-system output per SKILL.md
By the numbers
- Stage build/frontend
- Category Design & UI/UX
- Complexity intermediate
Files
Design-System
Create a "source of truth" for your project's design language to ensure consistency across all future screens.
[!NOTE]
Refer to your system prompt for instruction on handling MCP tool prefixes for
all tools mentioned in this skill (e.g., get_screen,create_design_system_from_design_md,apply_design_system).
📥 Retrieval
To analyze a Stitch project, you must retrieve metadata and assets using the Stitch MCP tools:
1. Project lookup: Use list_projects to find the target projectId. 2. Screen lookup: Use list_screens for that projectId to find representative screens (e.g., "Home", "Main Dashboard"). 3. Metadata fetch: Call get_screen for the target screen to get screenshot.downloadUrl and htmlCode.downloadUrl. 4. Asset download: Use read_url_content to fetch the HTML code.
🧠 Synthesis from Description
If you need to extract a design system from existing screens, use the design-md skill (in the stitch-utilities plugin).
If there are no existing screens (new project), or the user provides a direct description (e.g., "dark theme, blue and purple, rounded, Inter font"):
1. Map the user's vague terms to precise values using the design mappings (see design-md skill in stitch-utilities or generate-design skill). 2. Select concrete hex codes, font families, and roundness values. 3. Generate the DESIGN.md file (refer to the design-md skill in stitch-utilities for structure). 4. Proceed to the "Create or Update Design System in Stitch" step below.
📝 Output Structure
The DESIGN.md file should follow the structure defined in the design-md skill (in the stitch-utilities plugin).
🚀 Create or Update Design System in Stitch
After generating .stitch/DESIGN.md, make sure to also create or update the design system in Stitch.
Two-step design system creation:
[!WARNING]
Checkpoint — User Confirmation Required.
Before uploading, you MUST pause and ask the user for
confirmation. Present a summary of the design system you are about to create
(display name, key colors, fonts, and roundness) and wait for explicit approval
before proceeding. Do NOT upload until the user confirms.
1. Upload `DESIGN.md`:
- Option A (Recommended - Uploader Script): Use the modified
upload-to-stitchPython script which natively handles.mdfiles. It base64-encodes the markdown file in-process and sends it to the/v1/projects/{projectId}/screens:batchCreateendpoint, bypassing output token limits.
python3 stitch-skills/plugins/stitch-design/skills/upload-to-stitch/scripts/upload_to_stitch.py \
--project-id <PROJECT_ID> \
--file-path /path/to/DESIGN.md \
--api-key <API_KEY> \
--generated-by <GENERATED_BY>Set <GENERATED_BY> to identify the skill or tool that produced the DESIGN.md. Use the calling skill name when invoked from another skill (e.g. stitch::code-to-design), or the agent/tool name for standalone use (e.g. Gemini, Claude Code). If omitted, the script defaults to UserUploadedDesignMd.
This returns the sourceScreen ID and the screenInstance ID.
- Option B (Direct MCP Tool): If the
DESIGN.mdis small (under ~5KB), you can call theupload_design_mdMCP tool directly, passing the base64-encoded design markdown content asdesignMdBase64.
2. Create Design System: Call the create_design_system_from_design_md tool immediately after the upload, passing the projectId and the selectedScreenInstance (containing the id and sourceScreen returned from the upload step).
Once the upload script and create_design_system_from_design_md have both completed, Stitch holds the design tokens at the project level — you do NOT need to repeat them in generation prompts.
🎨 Apply Design System to Screens
Use apply_design_system to apply a design system to existing screens.
[!IMPORTANT]
selectedScreenInstancesmust contain onlyidandsourceScreen— do
NOT include position/dimension fields (x,y,width,height) or the
request will fail with "invalid argument". Get the screen instance IDs from
get_project.{
"projectId": "...",
"assetId": "...",
"selectedScreenInstances": [
{
"id": "...",
"sourceScreen": "projects/.../screens/..."
}
]
}How to get the required IDs: 1. Call get_project to retrieve screenInstances — each has an id and sourceScreen. 2. Call list_design_systems to retrieve the design system name (format: assets/{assetId}) — use the part after assets/ as the assetId. 3. Filter out any instances with type: "DESIGN_SYSTEM_INSTANCE" — only pass real screens.
📋 Update Project Metadata
After writing .stitch/DESIGN.md, also create or update .stitch/metadata.json to track the projectId, title, all known screens, and design system summary. See examples/metadata.json for the format.
Schema Reference
See reference/tool-schema.md for the full designSystem object schema with all available options.
💡 Best Practices
Refer to the design-md skill (in the stitch-utilities plugin) for best practices on describing design elements.
{
"projectId": "4044680601076201931",
"title": "Solace Mindfulness App",
"screens": [
{
"screenId": "98b50e2ddc9943efb387052637738f61",
"title": "Landing Page",
"deviceType": "DESKTOP"
},
{
"screenId": "98b50e2ddc9943efb387052637738f62",
"title": "Breathing Exercise",
"deviceType": "MOBILE"
}
],
"designSystem": {
"assetId": "15996705518239280238",
"primaryColor": "#1a365d",
"secondaryColor": "#718096",
"backgroundColor": "#f7fafc",
"fontFamily": "INTER"
}
}
Design System Tool Schemas
Use these examples to format your Stitch MCP design system tool calls correctly.
---
Upload DESIGN.md (via upload_to_stitch.py script)
Uploads a DESIGN.md file to a project via the BatchCreateScreens endpoint. This is the first step in creating a design system from a markdown file.
[!NOTE]
Use theupload-to-stitchskill's script instead of theupload_design_md
MCP tool. The script handles base64 encoding in-process, avoiding the model's
output token limit.
python3 <SKILL_DIR>/scripts/upload_to_stitch.py \
--project-id <PROJECT_ID> \
--file-path /path/to/DESIGN.md \
--api-key <API_KEY>---
create_design_system_from_design_md
Creates a design system for a project using the uploaded DESIGN.md file.
{
"projectId": "4044680601076201931",
"selectedScreenInstance": {
"id": "98b50e2ddc9943efb387052637738f61",
"sourceScreen": "projects/4044680601076201931/screens/98b50e2ddc9943efb387052637738f61"
},
"deviceType": "DESKTOP"
}[!NOTE]
You must uploadDESIGN.mdvia the script first to get the source screen ID, and then fetch the project details withget_projectto find the corresponding screen instance ID to pass asidinselectedScreenInstance.
---
update_design_system
Updates an existing design system for a project. This is required immediately after calling create_design_system to set the theme and display the design system in the UI.
[!NOTE]
Whileupdate_design_systemis mandatory after the basiccreate_design_systemcall, you do not need to call it aftercreate_design_system_from_design_md. The latter automatically populates and updates all theme tokens directly from the parsed YAML frontmatter of the uploadedDESIGN.md.
{
"name": "assets/15996705518239280238",
"projectId": "4044680601076201931",
"designSystem": {
"displayName": "My Design System", // OPTIONAL. Display name of the design system
"theme": { // REQUIRED. The design theme object
"colorMode": "LIGHT", // REQUIRED. Options: LIGHT, DARK
"headlineFont": "INTER", // REQUIRED. Options: INTER, ROBOTO, OPEN_SANS, LATO, MONTSERRAT, NOTO_SANS, NOTO_SERIF, etc.
"bodyFont": "INTER", // REQUIRED. Same font options as headlineFont
"labelFont": "INTER", // OPTIONAL. Same font options as headlineFont
"roundness": "ROUND_EIGHT", // REQUIRED. Options: ROUND_FOUR, ROUND_EIGHT, ROUND_TWELVE, ROUND_FULL
"customColor": "#0EA5E9", // REQUIRED. Primary brand color / seed color for dynamic color system (hex)
"colorVariant": "FIDELITY", // OPTIONAL. Options: FIDELITY, TONAL, VIBRANT, EXPRESSIVE, CONTENT, MONOCHROME, FRUIT_SALAD, RAINBOW
"overridePrimaryColor": "#996e47", // OPTIONAL. Override primary color (hex)
"overrideSecondaryColor": "#0EA5E9", // OPTIONAL. Override secondary color (hex)
"overrideTertiaryColor": "#c4956a", // OPTIONAL. Override tertiary color (hex)
"overrideNeutralColor": "#0D0D0D", // OPTIONAL. Override neutral color (hex)
"designMd": "# Design System..." // OPTIONAL. Markdown string with detailed design system spec
}
}
}Field Reference
Required Fields
| Field | Type | Description |
|---|---|---|
colorMode | enum | LIGHT or DARK |
headlineFont | enum | Font for headlines and display text. See font options below. |
bodyFont | enum | Font for body text. See font options below. |
roundness | enum | ROUND_FOUR, ROUND_EIGHT, ROUND_TWELVE, ROUND_FULL |
customColor | hex | Primary brand / seed color for the dynamic color system (e.g., #E8732A) |
Optional Fields
| Field | Type | Description |
|---|---|---|
displayName | string | Human-readable name for the design system |
labelFont | enum | Font for labels and captions. Defaults to bodyFont if omitted. |
colorVariant | enum | FIDELITY, TONAL, VIBRANT, EXPRESSIVE, CONTENT, MONOCHROME, FRUIT_SALAD, RAINBOW |
overridePrimaryColor | hex | Override primary color (e.g., #E8732A) |
overrideSecondaryColor | hex | Override secondary color (e.g., #1B6B93) |
overrideTertiaryColor | hex | Override tertiary color (e.g., #F2A541) |
overrideNeutralColor | hex | Override neutral color (e.g., #FAF7F2) |
spacingScale | integer | Spacing scale factor (observed value: 3) |
designMd | string | Markdown string with detailed design system specifications |
Font Options
The following font enum values are confirmed to work (server-validated):
| Value | Font Name |
|---|---|
INTER | Inter |
ROBOTO | Roboto |
OPEN_SANS | Open Sans |
LATO | Lato |
MONTSERRAT | Montserrat |
NOTO_SANS | Noto Sans |
NOTO_SERIF | Noto Serif |
PLUS_JAKARTA_SANS | Plus Jakarta Sans |
BE_VIETNAM_PRO | Be Vietnam Pro |
[!WARNING]
Omit the legacy font field when updating the design system to avoid "invalid argument" errors.[!NOTE]
The namedColors object above is abbreviated. The full response contains 50+Material 3 color tokens including all container, fixed, and inverse variants.
---
apply_design_system
Applies a design system to one or more screens in a project.
[!IMPORTANT]
selectedScreenInstancesmust contain onlyidandsourceScreen— do NOT
include position/dimension fields (x,y,width,height) or the request
will fail with "invalid argument". Get the screen instance IDs from
get_project.{
"projectId": "4044680601076201931",
"assetId": "c277fcdfc1e04baf91b92d975ff4c54a",
"selectedScreenInstances": [
{
"id": "98b50e2ddc9943efb387052637738f61",
"sourceScreen": "projects/4044680601076201931/screens/98b50e2ddc9943efb387052637738f61"
},
{
"id": "ab12cd34ef56789012345678abcdef01",
"sourceScreen": "projects/4044680601076201931/screens/ab12cd34ef56789012345678abcdef01"
}
]
}How to get the required IDs: 1. Call get_project to retrieve screenInstances — each has an id and sourceScreen. 2. Call list_design_systems to retrieve the design system name (format: assets/{assetId}) — use the part after assets/ as the assetId. 3. Filter out any instances with type: "DESIGN_SYSTEM_INSTANCE" — only pass real screens.
Related skills
How it compares
stitch-manage-design-system implements its own SKILL.md workflow rather than a generic substitute skill.
FAQ
Who is stitch-manage-design-system for?
Agents and developers following the stitch-manage-design-system SKILL.md guidance.
When should I use stitch-manage-design-system?
When user intent matches description triggers and quick start scenarios.
Is stitch-manage-design-system safe to install?
Review the Security Audits panel before production shell or network use.