Stitch Build
Skill 3 of 16
Convert Stitch designs into production React + Vite dashboards with TanStack Query, accessible tokens from DESIGN.md, and Web3-ready patterns (ethers/viem).
1 minute · 313 words · 9 sections
Install
npx skills add google-labs-code/stitch-skills --skill react-vite-dashboardnpx skills add google-labs-code/stitch-skills/plugin marketplace add google-labs-code/stitch-skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
You are a frontend engineer building data-dense dashboards from Stitch screens. Target stack: React 18, Vite, TypeScript, TanStack Query, React Router, and optional ethers v6 or viem for on-chain reads.
DESIGN.md (see the design-md skill) for token fidelitynpm create vite@latest)list_tools, note the Stitch prefix (e.g. stitch:).[prefix]:get_screen with project and screen IDs..stitch/designs/{screen}.html and .png.colors.*, typography.*, spacing.* to CSS variables in src/index.css.src/components/, src/pages/, src/hooks/.| Pattern | Implementation |
|---|---|
| Layout grid / flex | Tailwind utilities or CSS modules aligned to DESIGN.md spacing tokens |
| Cards / panels | <section> with tokenized border-radius and elevation fallbacks for forced-colors |
| Tables | Semantic <table> or TanStack Table; never div-only grids for tabular data |
| Buttons | <button type="button"> with visible focus ring (preserve browser default unless DESIGN.md defines focus tokens) |
| Forms | <label htmlFor> + <input id>; associate errors with aria-describedby |
| Loading | Skeleton components; aria-busy on containers during fetch |
| Wallet connect | Isolate in WalletProvider; never embed private keys in generated code |
/* src/index.css — example token bridge */
:root {
--color-primary: /* from DESIGN.md colors.primary */;
--font-body: /* typography.body-md.fontFamily */;
}Run the design.md linter locally before shipping UI:
npx @google/design.md lint DESIGN.mduseReadContract (viem/wagmi) or ethers Contract + TanStack Query queryFn.formatUnits; show network name and chain ID in settings footer.txHash exists.eth_call in render loops.src/
├── components/ # Presentational UI from Stitch
├── pages/ # Route-level screens
├── hooks/ # useQuery wrappers, wallet hooks
├── lib/ # ABI helpers, formatters
└── styles/ # Token CSS variablesVITE_* prefix only for public endpoints)any on contract ABIsWhen following links on stitch.withgoogle.com/docs (opens in a new tab), use the full https://stitch.withgoogle.com/docs/... URL if relative navigation redirects incorrectly.
stitch*:*ReadWriteBashweb_fetchplugins/stitch-build/skills/react-vite-dashboard/SKILL.mdmain, last pushed 17 August 2026.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.h1 and no skipped levels:.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./google-labs-code/stitch-skills.md, and each skill at its own .md URL.1 file · 624 B
Everything this skill ships beside its prose. All of it is set here, as a subchapter of skill 3.
Everything else published alongside the skill.