Upload local assets (images, mockups, HTML, and markdown files) to a Stitch project using the
provided upload script, which bypasses the MCP tool’s base64 output token limits.
[!NOTE]
The AI model cannot upload files via MCP tools directly because the base64
encoding of even a small file exceeds the model’s output token limit (~16K
tokens). This script reads the file and sends it directly over HTTP.
Locate your active MCP server configuration file and extract the API key:
Antigravity: .gemini/antigravity/mcp_config.json or .gemini/jetski/mcp_config.json
Gemini CLI: ~/.gemini/settings.json or ~/.gemini/extensions/Stitch/gemini-extension.json
Claude Code: ~/.claude.json
Extract:
API Key: From the X-Goog-Api-Key header or auth argument
MCP URL (optional): From the httpUrl or endpoint argument (defaults to
https://stitch.googleapis.com)
[!IMPORTANT]
If you cannot find the API key in any of these locations, or if you cannot access these files, you MUST ask the user to provide the Stitch API key. Do not proceed without a valid API key.
[!WARNING]
Checkpoint — User Confirmation Required.
Before running the upload script, you MUST pause and present the file(s)
to be uploaded (paths, sizes, and types) to the user and wait for explicit
approval. Do NOT execute the upload script until the user confirms.
[!TIP]
macOS / SSL Certificate Troubleshooting:
If the upload fails with ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificate, this means your Python installation does not have root certificate authorities configured.
The script automatically attempts to use the certifi package to load the CA bundle if it is installed in your python environment. If certifi is not installed, you can either install it (pip install certifi) or manually supply the SSL_CERT_FILE environment variable when running the script:
--file-path: Required. Path to the local file to upload.
--api-key: Required. API key for Stitch authorization.
--api-url: Optional. Base URL of the Stitch API. Defaults to https://stitch.googleapis.com.
--title: Optional. Title for the uploaded screen. When uploading extracted HTML from a web app, set this to the route path of the page (e.g., '/dashboard', '/settings/profile', '/inbox') so that the screen name/title in Stitch clearly identifies the route.
--generated-by: Optional. Specify how the uploaded file was generated (e.g., ‘stitch::extract-static-html’ skill, ‘Claude Code’, ‘Codex’, ‘Gemini’ etc.).
About this skill
Trigger
Upload local assets (images, mockups, extracted HTML, design markdown) to a Stitch project. ALWAYS use this skill when you need to upload visual assets, HTML pages, or design docs to Stitch, particularly when direct MCP tool calls fail or truncate due to base64 token limits.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
Apache-2.0 — the text of every skill is reproduced unmodified, frontmatter included, under the upstream licence.
Discovery
16 skills found by walking the repository tree for SKILL.md, not by matching a directory convention. 3 distinct layouts observed: plugins/stitch-build/skills/*/SKILL.md, plugins/stitch-design/skills/*/SKILL.md, plugins/stitch-utilities/skills/*/SKILL.md.
Issue colours
Resolved from a deterministic hash of the owner name. Two accent tones are generated per issue and each is proven against its own ground before it ships: a single accent that passes AA on both light and dark paper is arithmetically impossible.
Heading repairs
1 repair applied to this skill so the document has one h1 and no skipped levels:
Shifted “7 headings” from h1 to h2 so the skill title is the only h1.
Spec compliance
16 editorial notes across 8 of 16 skills. They are printed in the margin of each skill rather than as errors here.
Images inside a skill come from the upstream repository. Where the author gave no alternative text we mark the image decorative rather than inventing a description — a plausible caption we made up is worse than none for the reader who depends on it.
Marketplace
A plugin manifest is published at .agents/plugins/marketplace.json, declaring 3 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree.
Signal
Install counts come from skills.sh. They measure downloads, not quality, and an unranked repository is not an unread one.
Set by Skills Docs from the source repository. Body text is Literata at the reader’s chosen size and measure; code is Geist Mono. Nothing on this page was written by us except this paragraph.
Appendix 11.1
1 file · 7 KB
Everything this skill ships beside its prose. All of it is set here, as a subchapter of skill 11.