Skip to content

feat(cli): launch-design-implement — build a Claude Design canvas true to the prototype - #70

Merged
4lgn merged 2 commits into
masterfrom
claude/ecstatic-curie-nimtij
Sep 17, 2026
Merged

4lgn merged 2 commits into
masterfrom
claude/ecstatic-curie-nimtij

Conversation

@4lgn

@4lgn 4lgn commented Sep 17, 2026

Copy link
Copy Markdown
Member

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 under docs/design/<slug>/):

  1. Package on the way — the skill composes launch-design-handoff, which unpacks in scratch, names every canvas in the export by title, inventories the prototype, commits docs/design/<slug>/ (prototype verbatim plus handoff.md), and returns without sizing or routing. Its documenting questions and the build's blocking questions form one interview under the interaction contract.
  2. Resolve and echo — the canvas (matched to the user's words, asked when ambiguous), the designed viewport ("1080p" = 1920×1080), the product mapping, the branch — echoed once before any code.
  3. Write the contract firstdocs/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 row pending, committed before the build so nothing is narrowed quietly.
  4. Build state by state from the prototype's own markup and styles (agent-browser get styles / get box on 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.
  5. Verify side by side — two agent-browser sessions at the same viewport, the prototype from its committed .dc.html and the product from launchrail dev, each state captured on both sides and looked at, verdicts match / deviation / accepted (with a concrete reason) / unverified recorded per row. Captures under .launchrail/state/design/<slug>/, gitignored and regenerable.
  6. Gate and closeverify --fast, full verify, 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) and fidelity.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.html per 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).
  • ADR 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 with adr index.
  • skills.test.ts pins the user-typed set at five; README and getting-started document the command; examples/hello-launchrail regenerated 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 build and pnpm test: 20 files, 256 tests passing.
  • node packages/cli/dist/index.js adr index regenerated the registry; doctor on the regenerated example reports healthy (17 checks, the usual package-manager warning).

🤖 Generated with Claude Code

https://claude.ai/code/session_01UCzoFemkzM6yMcHJifsa9P

…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
@4lgn
4lgn merged commit ee54168 into master Sep 17, 2026
2 checks passed
@4lgn
4lgn deleted the claude/ecstatic-curie-nimtij branch September 17, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants