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.

New to Live? Read the Layout Live overview first for the interface and concepts. This page is the end-to-end worked example.

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:

bash
npx @layoutdesign/context install linear-lite --live

The 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.md into .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
Already had a kit installed? Just add the flag: 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:

bash
npm run dev
# Next.js  → http://localhost:3000
# Vite     → http://localhost:5173

Live 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.

Point Live at the sameproject your dev server is running. If the URL in Live resolves to a different copy or a stray dev server, your edits write to files you can't see change. Live shows a mismatch banner when it detects this.

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-4px-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:

text
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:

bash
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