Round Trip: Gallery → Live
The best way to understand how Layout's surfaces fit together is to follow one component all the way through: grab a design system from the Gallery, tweak a real component in your running app with Layout Live, and hand the structural work off to Claude Code, staying on-brand the whole way, with every change written to committable source.
At a glance
Gallery (pick a kit) → CLI install <slug> --live → start dev server → open Live → click & scrub → edit a token → hand off to Claude Code → commit.
1Find a kit in the Gallery
Open the Kit Gallery and pick a design system to build against, say the linear-lite kit. On the kit page you can preview it live (palette, type, spacing, components rendered in its own tokens), browse the full token set, and read the generated layout.md. Every kit page shows two ways in: Import to Studio and a CLI install command.
For the Live workflow we want the kit on disk in our project, so we use the CLI command, but importing to Studio first is handy if you want to tweak the tokens or generate components before you start.
2Install the kit and prepare the project for Live
From your project root, install the kit straight into a local .layout/ directory and wire up the MCP server. Use the install command shown on the kit page:
npx @layoutdesign/context install linear-lite --liveThe kit slug pulls the design system; the --live flag also prepares the project for Layout Live. In one command this:
- writes the kit's tokens and
layout.mdinto.layout/ - registers the Layout MCP server with Claude Code / Cursor / Windsurf
- detects your framework and adds the Layout build plugin so the dev server tags every element with its source location
- creates
.layout/live/(edit log, lock state, config) and a managed CLAUDE.md block
npx @layoutdesign/context install --live keeps your existing .layout/ and only adds the Live plumbing. Re-running is safe and idempotent.3Start your dev server
Run your app the way you always do. Note the URL it serves on:
npm run dev
# Next.js → http://localhost:3000
# Vite → http://localhost:5173Live never runs or restarts your dev server. It edits source files; your own server hot-reloads them. Keep this terminal running.
4Open Layout Live and point it at the app
Launch the Layout Live desktop app and enter your dev URL in the top bar (http://localhost:3000). Your app loads in an embedded Chromium view. Sign in with your Layout account so Live can resolve the linear-lite tokens you just installed, that is what powers the token-aware pickers and the compliance score.
5Click an element and tweak it
Click a button in your running app. The overlay highlights it and the inspector fills with its real Tailwind classes. Now make it on-brand against the Linear kit:
- Scrub the padding.Drag the padding grip up a notch. Values snap to the kit's spacing scale, so you land on a real token (
px-4→px-5), not an arbitrary value. - Change the colour. Open the background picker, it is seeded with the Linear palette. Pick the accent token; the class updates to the token-backed utility.
- Round the corners.Nudge the radius to the kit's pill value.
Each change writes back to source immediately and your dev server hot-reloads it. Watch the file update in your editor as you scrub. The compliance score in the panel stays green because every value came from the kit.
6Edit a token once, cascade everywhere
Decide the kit's accent is a touch too blue for your product? Open the Tokensoverlay and edit the accent token directly. Live writes the change through Layout's update-tokens API, so it cascades to every class that references it, and the web Studio picks up the same change next time you open the project. One edit, consistent everywhere.
7Hand off to Claude Code for the structural change
You have the button looking right, but now you want a loading state with a spinner, that is logic, not a tweak. With the button still selected, click Hand off to AI. Live writes a paste-ready prompt (and a .layout/live/handoff.md file) describing the selected element and your recent edits.
In Claude Code, the Layout MCP server already exposes the live context. Just ask:
Add a loading state to the button I just selected in Live ,
spinner + disabled, using the existing accent token.Claude calls get-selected-element to find the exact file and line, and get-recent-visual-edits to see the padding, colour and radius you just changed, so it builds the loading state on top of your tweaks instead of reverting them. It calls lock-file before writing so it doesn't collide with Live, then unlock-file when done. Back in Live, a diff banner shows what Claude changed, with Reload and Undo on hand.
8Commit, it's all real code
Nothing here is a throwaway mock. Every Live tweak and every Claude edit landed in your actual source files as Tailwind classes and token changes. Review the diff and commit:
git add -A
git commit -m "feat(ui): on-brand button with loading state"Why this loop matters
The visual tweaks, padding, colour, radius, never cost a prompt and never drifted off-brand, because the kit's tokens were the only values on offer. The one change that genuinely needed reasoning, the loading state, went to Claude Code, which had perfect context on what you'd already done. Studio defined the system, the Gallery distributed it, Live applied it, and the MCP server kept your agent in sync. That is the whole point of Layout: design system as the single source of truth, shared across every surface.
Next steps
- Layout Live overview , the full interface and editing model.
- Kit Gallery , browsing, importing, and publishing kits.
- CLI & MCP Server , the install command, the Live MCP tools, and the rest of the toolset.