RunLocalModel.com

How to Use Stitch Skills

By the RunLocalModel editorial team · October 13, 2026

Reference: github.com/google-labs-code/stitch-skills

Short version Connect Google Stitch to your coding agent, install the three Stitch plugins, then describe the screen you want in chat. The agent opens the matching skill, calls Stitch, and saves the design in your project. You stay in the conversation. You do not click through Stitch's own tools.

Google Stitch turns a written description into UI screens. Stitch Skills is a library of Agent Skills that teach Cursor, Claude Code, Codex, Gemini CLI, and Antigravity how to do that work through the Stitch MCP server. Each skill is a folder with a SKILL.md file. The agent reads that file when your request matches it.

The repository is Apache-2.0. Its README says the project is not an officially supported Google product.

What you need

1. Create an API key

  1. Open Stitch Settings.
  2. Find the API Keys section.
  3. Click Create API Key.
  4. Copy the key into a private note. You will paste it once into your agent's config.

The Stitch MCP setup guide recommends an API key for Cursor, Antigravity, Gemini CLI, Claude Code, and VS Code. Keep the key out of git and out of any code that ships to a browser.

OAuth is the other sign-in method. Use it when the tool only offers a browser login, or when you cannot store a long-lived secret. Those access tokens usually last about an hour, and you refresh them by hand. The same setup page has that path.

2. Connect Stitch to your agent

Stitch's MCP server is remote. It lives at https://stitch.googleapis.com/mcp. Your agent sends the API key with each request.

Cursor

In the project you are designing for, create .cursor/mcp.json:

{
  "mcpServers": {
    "stitch": {
      "url": "https://stitch.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR-API-KEY"
      }
    }
  }
}

If that file sits in a git repository, add it to .gitignore, or put the same block in your user-level Cursor MCP config so the key stays on your machine. Then open Cursor Settings, find MCP, and confirm stitch is connected. A failed connection is usually the key or the URL.

Claude Code

This saves the server for your user account:

claude mcp add stitch --transport http https://stitch.googleapis.com/mcp --header "X-Goog-Api-Key: YOUR-API-KEY" -s user

Gemini CLI

gemini extensions install https://github.com/gemini-cli-extensions/stitch

Antigravity

In the Agent panel, open the three-dot menu, choose MCP Servers, then Manage MCP Servers, then View raw config. Antigravity uses serverUrl where Cursor uses url:

{
  "mcpServers": {
    "stitch": {
      "serverUrl": "https://stitch.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR-API-KEY"
      }
    }
  }
}

VS Code

Open the Command Palette, run MCP: Add Server, choose HTTP, enter https://stitch.googleapis.com/mcp, and name it stitch. Then add the X-Goog-Api-Key header in that mcp.json. The setup guide shows the full VS Code block, including "type": "http".

3. Install the skills

The library ships as three plugins. Install all three. Design skills call each other, and a partial install stops halfway through a job.

PluginWhat it is for
stitch-designMake screens, edit them, pull a design system out of code, and upload files into Stitch.
stitch-buildTurn those screens into React, React Native, a Vite dashboard, shadcn/ui, or a walkthrough video.
stitch-utilitiesRewrite a vague prompt, write DESIGN.md and SITE.md, and build a multi-page site one page at a time.

Cursor

From the project root. This installs into the current workspace:

npx plugins add google-labs-code/stitch-skills --scope workspace --target cursor

Claude Code

From the project root. This installs into the current project:

npx plugins add google-labs-code/stitch-skills --scope project --target claude-code

Codex

Register the marketplace, then install stitch-design, stitch-build, and stitch-utilities:

codex plugin marketplace add google-labs-code/stitch-skills --ref main \
  --sparse .agents/plugins \
  --sparse plugins/stitch-design \
  --sparse plugins/stitch-build \
  --sparse plugins/stitch-utilities

The --sparse flags only download those folders. Leave them off if you want the whole repository. In the Codex app, the same step is Settings → Plugin Marketplaces → Add, with source https://github.com/google-labs-code/stitch-skills and git ref main.

One skill at a time

Run npx skills add google-labs-code/stitch-skills and pick the folders you want. npx plugins --help and npx skills --help list the flags.

If you take this path, also install every skill that one names. stitch::code-to-design runs extract-static-html, extract-design-md, and upload-to-stitch in that order. stitch::generate-design calls manage-design-system when the project has no design system, and upload-to-stitch when you start from an image. stitch-loop expects a DESIGN.md and a SITE.md already written.

OpenCode

OpenCode does not use npx plugins. Copy the skill folders into the project:

mkdir -p .opencode/skills
cp -R plugins/stitch-design/skills/generate-design .opencode/skills/generate-design

Repeat for each skill under plugins/*/skills/. OpenCode also reads .claude/skills/ and .agents/skills/. Two extra rules: the name in SKILL.md must be lowercase kebab-case and must match the folder name, so a name like stitch::generate-design has to be renamed before OpenCode will load it. And the Stitch server goes in opencode.json as a remote MCP entry, using the URL from the setup guide.

4. Ask in plain language

Start a new chat after installing, so the agent sees the new folders. In Cursor you can also type / and pick the skill for that message. How to Use Skills in Cursor covers / and custom modes.

You describe the outcome. The skill's description tells the agent when to open the folder. The agent then calls Stitch tools such as list_projects, generate_screen_from_text, edit_screens, and generate_variants. You do not run those tools yourself.

A project id looks like projects/123456789. If you do not know it, say the project name. The agent looks it up. Screen targets are MOBILE, DESKTOP, or TABLET. Saying "mobile" or "desktop" in the prompt is enough.

A first session you can copy

Paste this as your first message, after the server is connected and the plugins are installed:

Create a Stitch project named Date Night. Make a mobile browse tab for romance and date-night ideas: a top bar, a short intro, and a card list. Each card has a title, a one-line description, and a save button.

What happens, in order:

  1. The agent searches your Stitch projects and creates Date Night if it is missing.
  2. It rewrites your sentence into a layout prompt: platform, then header, then the card list. When a design system already exists, colors and fonts stay out of that prompt. The design system owns them.
  3. Stitch returns the screen, plus a short description and suggestions. The agent should show you those notes.
  4. It saves the HTML and a screenshot under .stitch/designs/.

The first screen is a draft. Ask for a specific change:

On the browse screen, add a filter row for Tonight, This weekend, and At home, and make the save button blue.

Name the control and the change. An edit may include a color. A brand-new screen should describe layout and content, and leave the palette to the design system. If the layout itself is wrong, ask for a new screen. If it is close, keep editing.

Then lock the look, and tell the agent to wait for your approval before uploading:

Read the screens in this project, write .stitch/DESIGN.md, and apply that design system to every screen. Show me the colors and type before you upload anything.

When you want code in the repo:

Convert the screens in this Stitch project into React components in this repository.

Four jobs, and the skill that does each

Design a new screen

Use stitch::generate-design. It covers four cases. Say which one you want.

You wantSay this
A new screen from a description "Make a browse tab for a mobile app for romance and date night ideas."
A change to a screen that exists "Edit the login screen to add a Remember Me checkbox and change the button color to blue."
A screen from a screenshot or mockup "This image is a dashboard mockup. Recreate it in Stitch with a data table, a sidebar, and chart widgets." The agent uploads the image, then edits that screen.
Several directions from one screen "Generate 3 design variants of the home screen. Explore layout and color. Keep the same words."

Variants take a count from 1 to 5. The range is REFINE (small changes), EXPLORE (a balanced spread), or REIMAGINE (a different layout). You can limit the change to layout, color, images, type, or the words on the screen. "Explore layout and color" is enough. The agent fills in the tool fields.

If your sentence is still vague, ask for a rewrite first. enhance-prompt does not generate a screen. It hands you a prompt you can send next:

Enhance this prompt: make a settings page.

A strong prompt names the platform, the page type, and the sections in order. "Menu at the top" becomes "a navigation bar with a logo and menu items." Stitch's own prompting guide is the reference the skill tells the agent to read.

Bring an existing app into Stitch

Use stitch::code-to-design when the UI already exists in a repo. One request runs three skills: a static HTML snapshot, a DESIGN.md taken from the source, then an upload into a Stitch project.

Upload the frontend at this repo into a Stitch project named Dashboard-Migration-2026.

Have the app running, or have a built folder that contains index.html. The agent should stop and ask how to capture the page. For a local app with no login wall, the Puppeteer snapshot is the default: it opens the URL, inlines the CSS and images, and writes one HTML file. If someone must click, type, or sign in before the right screen appears, say so. That path uses the browser instead.

The agent should also stop before it uploads, and show you the files. On a Mac, an upload that fails with CERTIFICATE_VERIFY_FAILED is a Python certificate issue. pip install certifi gives the upload script a certificate bundle it can use.

Turn Stitch screens into code

Say the stack. The build plugin has a skill for each of these:

Build a multi-page site

Two files keep a long job from drifting. site-md writes .stitch/SITE.md: the name, the audience, the sitemap, and the backlog. design-md or taste-design writes .stitch/DESIGN.md. stitch-loop then builds one page, updates the site, and writes the next assignment into .stitch/next-prompt.md.

Write a SITE.md for a five-page portfolio: home, work, about, notes, and contact. Then build the site with Stitch, one page at a time.

design-md describes screens that already exist in a Stitch project. taste-design writes a stricter system for a new look: one accent color, no neon purple glow, and type rules the generator has to follow. stitch::manage-design-system is the step that uploads DESIGN.md and applies it to screens. It is written to show you the colors, fonts, and corner radius, and to wait for a yes.

Every skill, and a prompt that starts it

Skill names are what you can search for with /. The sentence in the middle column is a real request from the project, shortened only where a path or id is yours to fill in.

Design

SkillPromptYou get
stitch::generate-design "Make a browse tab for a mobile app for romance and date night ideas." A new screen, an edit, or up to five variants.
stitch::manage-design-system "Upload our design system from .stitch/DESIGN.md and apply it to all screens." That system stored in Stitch and applied to the screens.
stitch::extract-design-md "Scan src and extract the design system into .stitch/DESIGN.md." A DESIGN.md read from React, Vue, Svelte, Angular, or plain CSS.
stitch::extract-static-html "Extract a static HTML snapshot of http://localhost:3000/profile." One HTML file with CSS and images inlined.
stitch::upload-to-stitch "Upload .stitch/landing_page.html to Stitch project projects/987654321." That file as a screen. The agent asks before it uploads.
stitch::code-to-design "Upload the frontend at this repo into a Stitch project named Dashboard-Migration-2026." Snapshot, DESIGN.md, and both uploaded to Stitch.

Build

SkillPromptYou get
stitch::react-components "Convert all screens in Stitch project projects/123 to React components." Modular React components, or a sync when Stitch has changed.
stitch::react-native "Convert the Stitch design to React Native components with a theme and navigation." React Native components and StyleSheet code.
react-vite-dashboard "Build a dashboard from this Stitch screen using our DESIGN.md." A React + Vite + TypeScript dashboard using those tokens.
shadcn-ui "Set up shadcn/ui and build a data table with sorting and filtering." shadcn/ui components in your repo. Best with the shadcn MCP server.
remotion "Generate a walkthrough video of Stitch project projects/456." A Remotion video. You also need Remotion installed or connected.

Utilities

SkillPromptYou get
design-md "Analyze Stitch project projects/123 and generate a DESIGN.md." A DESIGN.md that describes the screens already in that project.
taste-design "Generate a premium DESIGN.md with strict typography and a single accent color." A DESIGN.md aimed at a more specific, less generic UI.
enhance-prompt "Enhance this prompt: make a settings page." A structured prompt. The screen is a separate request.
site-md "Write a SITE.md for a five-page portfolio: home, work, about, notes, and contact." .stitch/SITE.md, the plan the build loop reads.
stitch-loop "Build a 5-page portfolio website with Stitch." Pages, one at a time, with the next task left in .stitch/next-prompt.md.

Files the agent writes

These land in the project you have open. They are the memory for the next chat.

PathRole
.stitch/designs/HTML and PNG for each screen.
.stitch/DESIGN.mdColors, type, and component rules. Stitch reads this when it makes the next screen.
.stitch/SITE.mdSite name, sitemap, and backlog for a multi-page build.
.stitch/next-prompt.mdThe page the build loop will generate next.
.stitch/metadata.jsonProject id, screen ids, and device types, so the next run does not guess.

If a design file is already there, the agent is supposed to ask before it downloads a fresh copy over the top.

When the agent should stop and ask

Several skills are written to wait for you. If it skips ahead, tell it to stop and confirm.

If a request does nothing

Questions people ask first

Quick answers
Do I have to install every Stitch skill?
Install the three plugins if you can. Design skills call each other. If you install one skill, also install the skills named in its instructions.
Can I use Stitch without these skills?
Yes. Stitch works in the browser at stitch.withgoogle.com. These skills are for doing that work from a coding agent and saving the result in your repository.
How do I find a Stitch project id?
Ask the agent to list your Stitch projects. An id looks like projects/ followed by a long number. You can also name the project, and the agent will look it up.
Will the agent change my app code on its own?
Design skills write files under .stitch/. Build skills write components when you ask them to convert or sync a screen. Read the diff before you commit.
Is stitch-skills an official Google product?
Google Stitch is Google's design product. The stitch-skills repository says it is not an officially supported Google product. It is released under the Apache-2.0 license.

Related on this site