feat(cli): launch-design-implement — build a Claude Design canvas true to the prototype - #70
Merged
Merged
Conversation
…e to the prototype (design-fidelity-build) Adds a user-typed skill that builds one named canvas of a committed docs/design/<slug>/ handoff package under a written fidelity protocol: the state inventory and the token, component, and data maps go into fidelity.md before any product code; the product is built from the prototype's own markup and styles state by state; and every state is compared side by side with the running prototype at the designed viewport until each row is a match or an accepted deviation. - launch-design-implement/SKILL.md — the door; fidelity.md — the protocol and record template shared by the handoff, the implementer, and the browser smoke - launch-design-handoff names the canvases in an export, inventories an interactive prototype with the protocol, and offers the faithful-build route; launch, workflow.md, launch-ralph-implement, and launch-browser-smoke route to or reuse the protocol - ADR 2026-09-17-design-fidelity-build (amends 0018 and 0024, extends 0034); registry index regenerated; skills test pins five user-typed skills; README and getting-started document the command - examples/hello-launchrail regenerated from the built CLI Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UCzoFemkzM6yMcHJifsa9P
…ckaged on the way The user drops the export, names the canvas, and types the command; nothing runs before it. The skill composes launch-design-handoff to make the package (the on-ramp keeps ownership of docs/design/<slug>/ and returns without sizing or routing), and its documenting questions join the build's one interview. Conductor, workflow contract, README, getting-started, and the ADR describe the single invocation; the example project is regenerated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UCzoFemkzM6yMcHJifsa9P
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A new user-typed skill,
launch-design-implement, that takes a Claude Design export to a built page in one invocation — drop the zip, name the canvas, type the command — and builds it true to the prototype under a written fidelity protocol.The existing on-ramp (
launch-design-handoff, ADR-0024) files a design and routes it onto the rail but deliberately never builds. The build half was unowned, so "take this canvas and implement it" happened ad hoc and missed the mark in six repeatable ways: values read off screenshots instead of the prototype's code; only the first render built, the states behind clicks skipped; the design normalized toward existing components and tokens; no side-by-side at the viewport the design was approved at; the wrong canvas picked from an export that holds several; data the prototype shows dropped or faked silently. Each now has a rule against it.How it works
/launch-design-implement "<canvas>"with the export dropped in the session (or a package already committed underdocs/design/<slug>/):launch-design-handoff, which unpacks in scratch, names every canvas in the export by title, inventories the prototype, commitsdocs/design/<slug>/(prototype verbatim plushandoff.md), and returns without sizing or routing. Its documenting questions and the build's blocking questions form one interview under the interaction contract.docs/design/<slug>/fidelity.md: every reachable state (found by reading the prototype's script and driving it in a browser), the token/component/data maps, every rowpending, committed before the build so nothing is narrowed quietly.agent-browser get styles/get boxon the running prototype where indirect), replacing the design it supersedes in the same change; real data or a recorded decision, never sample data in product code.agent-browsersessions at the same viewport, the prototype from its committed.dc.htmland the product fromlaunchrail dev, each state captured on both sides and looked at, verdictsmatch/deviation/accepted(with a concrete reason) /unverifiedrecorded per row. Captures under.launchrail/state/design/<slug>/, gitignored and regenerable.verify --fast, fullverify,launch-code-review, the record committed with the build, a PR of its own, evidence reported (matched / accepted / unverified) with the rail banner.Changes
launch-design-implement/SKILL.md(user-typed,disable-model-invocation) andfidelity.md— the protocol and record template, referenced by name from the other skills rather than paraphrased.launch-design-handoff— names the canvases in an export (one.dc.htmlper canvas; only the named one is the subject), inventories an interactive prototype with the protocol's state inventory, records the designed viewport, offers the faithful build route beside tweak / feature / redesign, and returns without routing when the build skill calls it to package a drop. It remains a command of its own only for the sized paths.launch(design-first paragraph, keywords),launch/workflow.md(the † user-typed list, a Returning from Claude Design paragraph),launch-ralph-implement(a ticket that names a package follows the protocol),launch-browser-smoke(the named design comparison is the protocol's side-by-side).2026-09-17-design-fidelity-build— amends 0018 (a second user-typed build command, for a different input; the ticket door is unchanged) and 0024, extends 0034; a two-invocation flow is a recorded rejected alternative; registry index regenerated withadr index.skills.test.tspins the user-typed set at five; README and getting-started document the command;examples/hello-launchrailregenerated from the built CLI (also picks up the 1.17.0 version line, the heal-ADR-guidance migration entry, and the managed minting contract that the last release added).Verification
pnpm buildandpnpm test: 20 files, 256 tests passing.node packages/cli/dist/index.js adr indexregenerated the registry;doctoron the regenerated example reports healthy (17 checks, the usual package-manager warning).🤖 Generated with Claude Code
https://claude.ai/code/session_01UCzoFemkzM6yMcHJifsa9P