What DESIGN.md controls, and what it does not prove
Google describes DESIGN.md as a portable way to import and export design rules. It can hold shared decisions about color roles, typography, spacing, layout principles, component treatment, and visual constraints. That portability matters: the rules can travel between projects and platforms instead of living only in one conversation.
The file has a narrower job. It states rules. It doesn't prove that every generated screen followed them, that a prompt didn't override them, or that exported code preserved them. Nor does it certify task completeness, accessibility, responsive behavior, generated-code quality, or production readiness. Those need separate checks.
No dedicated Identity Forge integration is established
Identity Forge produces DESIGN.md and implementation artifacts, but the frozen evidence contains no successful Identity Forge-to-Stitch import or export test. So this guide uses Ambient Sage as an intake example, not as proof of compatibility or consistent generation.
Label the evidence before choosing a workflow
Stitch changes quickly, and search results mix product documentation, tutorials, and user reports. Label each workflow claim by evidence class. This keeps a confident tutorial or isolated failure report from becoming an accidental product contract.
| What it supports | What it cannot establish | |
|---|---|---|
| First-party documentation | Portable DESIGN.md rules, AI-assisted interface creation, iteration, and developer-delivery paths | Perfect rule adherence in your project or parity in a particular export |
| Third-party walkthrough | A practitioner's described extraction, multi-page, iteration, or export workflow | Current universal availability, official guarantees, or results in your account |
| Community report | A reachable failure pattern worth testing, such as changed icons, navigation, or color mode | Failure frequency, root cause, or behavior across all projects |
| Your project record | Observed behavior for named screens, prompts, rules, and exported artifacts | Quality outside the screens, states, and changes you actually checked |
For any capability that matters to the handoff, use current first-party documentation to establish availability and your own recorded observations to establish behavior. Keep third-party instructions provisional until you've reproduced them. Community reports are test ideas, not forecasts.
Consistency gets expensive when several artifacts look authoritative at once. A reference site suggests one type scale, DESIGN.md names another, a generated screen introduces a third, and someone manually corrects the exported code. Without a precedence record, the latest visible result tends to win even when it shouldn't.
| Authority and precedence | Owner | |
|---|---|---|
| Input source | Approved brand decisions, existing product evidence, or a documented reference. It provides facts but does not silently outrank an approved project rule. | Designer or product owner |
| Stitch DESIGN.md | The default authority for shared visual rules. It turns source material into explicit instructions that apply across screens. | Design-system owner |
| Approved screen exceptions | Narrow deviations with a reason, scope, and expiry or review condition. They outrank the shared rule only for the named screen or state. | Designer and feature owner |
| Exported code | A downstream implementation. It must preserve governing rules and approved exceptions, but it does not become the design source merely because it runs. | Developer |
For each unresolved conflict, record the competing values, the owning layer, the person who decides, and the evidence they need. Don't settle it by copying whichever value appeared in the newest generation.
Freeze invariants and representative screens
Before asking Stitch to generate more screens, write down the decisions that must stay stable. Use observable language. "Keep it cohesive" isn't testable. "Use the same primary navigation structure on the account, billing, and analytics screens" is.
- Navigation: structure, placement, selected state, collapse behavior, and permitted variations.
- Icons: source style, stroke or fill treatment, size rules, and where text labels are required.
- Color mode: allowed modes, the default mode, semantic roles, and whether a screen may switch independently.
- Typography: family by role, available weights, scale, line-height intent, and treatment of data or code.
- Spacing and layout: container widths, gutters, section rhythm, grid behavior, and density.
- Components: shared button, input, card, table, feedback, and focus treatments.
- Exceptions: the exact screen, state, reason, approver, and limit of each deviation.
Don't check only the most polished screen. Choose a representative set that includes the main shell, a dense data screen, a form, a destructive or error state, and any screen with an approved exception. If mobile or dark mode is in scope, include those states explicitly.
Consistency check · No dark-mode parity
The same plan card, built two ways in Ambient Sage.
Pricing
Everything a small team needs to ship a branded UI.
Pricing
Everything a small team needs to ship a branded UI.
Inspect a real source artifact before writing the authority record
Ambient Sage provides a public design kit and DESIGN.md-backed handoff. Use it to see how documented tokens and prose rules remain distinct before you assume any Stitch-specific behavior.
Route drift to the layer that owns it
When two screens diverge, find the first point where their evidence differs. Regenerating every screen immediately can hide the cause and introduce fresh changes.
- 1
Check whether the governing rule is complete
Find the relevant DESIGN.md rule. If it only says "use consistent navigation," it doesn't define structure, states, or exceptions. Revise the rule at its owning layer before correcting screens.
- 2
Compare the prompts and accepted suggestions
Record the original prompt, follow-up instructions, and any automatic or manual suggestions. A screen-specific instruction may have overridden the shared rule. Remove or narrow that override, then retry only the affected case.
- 3
Check for an approved exception
A legitimate difference isn't drift when its screen, state, reason, and scope were approved. If the exception is undocumented, pause and get an ownership decision instead of normalizing it after the fact.
- 4
Locate the first divergent artifact
Compare representative Stitch screens before you inspect downstream code. If the screens agree but the export differs, route the finding to the export or implementation boundary. If the screens already disagree, keep the fix upstream.
- 5
Change one owner-controlled variable
Apply one narrow rule change, such as the default color mode or navigation selection treatment. Don't bundle typography, spacing, and component revisions into the same test.
- 6
Assign a disposition
Pass when the intended change appears where expected with no material unrelated drift. Revise when the governing rule or prompt is incomplete. Block when ownership, evidence, or downstream parity remains unresolved.
Keep prompts in the evidence record
The community response recommends explicit prompting and protecting selected elements. That may improve control, but a prompt can still override the shared rules. Save the exact instruction with the result so someone else can reproduce or challenge the decision.
Run one controlled-change check
A controlled change tests whether a declared rule reaches the places it should. It's narrower than a general visual review. Pick one rule with an observable result, name the screens and export surface in scope, then capture both the intended and unintended effects.
Controlled change
Project:
Observed date:
Reviewer:
Governing layer:
Rule identifier:
Current rule:
Proposed rule:
Reason for change:
Owner and approver:
Representative screens:
- Screen / state:
Expected change:
Actual observation:
Evidence reference:
- Screen / state:
Expected change:
Actual observation:
Evidence reference:
Approved exceptions:
- Screen / state:
Exception and reason:
Expected to remain unchanged: yes / no
Exported artifact:
Artifact and version:
Expected change:
Actual observation:
Evidence reference:
Unrelated drift:
- Navigation:
- Icons:
- Color mode:
- Typography:
- Spacing and layout:
- Component treatment:
Unresolved conflicts:
Owner:
Next evidence required:
Disposition: pass / revise / block
Disposition reason:"No unrelated drift observed" is valid only for the named screens and artifact. It doesn't mean the entire project is consistent. Where your workflow permits, attach references to screenshots, screen versions, prompt text, DESIGN.md revisions, and exported commits or archives.
Use Ambient Sage as an intake record, not a compatibility claim
This intake record shows how to bring a bounded source into the process without inventing Stitch results. Ambient Sage is a free, published Identity Forge kit. Its documented typography uses Plus Jakarta Sans for body and heading roles at weights 400, 500, 600, and 700, plus JetBrains Mono for the mono role at weights 400, 500, and 700. The published scale is compact-product.
Token specimen · real values
Ambient Sage
Live renderAmbient Sage's actual tokens — the same values its exports use.
Color tokens
Ambient Sage
Core
background
H 72 · C0, 0, 2, 4
foreground
H 84 · C7, 0, 18, 89
card
H 70 · C0, 0, 3, 10
muted
H 80 · C1, 0, 3, 7
border
H 69 · C0, 0, 3, 15
Brand
primary
H 53 · C0, 8, 68, 0
primary-fg
H 84 · C7, 0, 18, 89
secondary
H 70 · C0, 0, 3, 10
accent
H 52 · C0, 8, 60, 3
ring
H 53 · C0, 8, 68, 0
Semantic
destructive
H 6 · C0, 70, 78, 25
destructive-fg
H 0 · C0, 0, 0, 0
success
H 130 · C61, 0, 51, 55
warning
H 35 · C0, 38, 91, 21
muted-fg
H 84 · C2, 0, 6, 66
Charts
chart-1
H 53 · C0, 8, 68, 0
chart-2
H 210 · C65, 33, 0, 17
chart-3
H 142 · C44, 0, 28, 25
chart-4
H 340 · C0, 48, 32, 12
chart-5
H 33 · C0, 30, 68, 9
Typography
Ambient Sage
Scale: compact-product
Density: balanced
Heading · Plus Jakarta Sans · 1.875rem
Sample headline
Subheading · Plus Jakarta Sans · 1.375rem
A warm-sage neutral-surface mobile kit with a single vivid yellow accent, flat tonal cards, and oversized display numerals.
Body · Plus Jakarta Sans · 1rem
Ambient Sage uses a near-white warm-sage canvas (#f3f4ef) with card panels distinguished only by a tonal shift to #e5e6e0, never by shadows or borders. A single vivid yellow (#fee951) is the only saturated color and appears sparingly at component scale as orbs, button fills, and focus rings. Primary data values render as oversized bold hero numerals with a small superscript unit. Typography is a friendly rounded geometric (Plus Jakarta Sans) with no uppercase and no tight tracking, while JetBrains Mono is reserved for hex codes and technical strings. Generous rounding and luminance-only contrast give the whole system a calm, minimal feel.
Mono · JetBrains Mono · 0.8125rem
npx shadcn add ambientsage.json
Aa
Plus Jakarta Sans · Heading
Aa
Plus Jakarta Sans · Body
ABCDEFGHIJKLM NOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 & @ # % →
Tokens
Ambient Sage primitives
Radius scale
Component radius
Elevation
Spacing · base 4px
Artifact intake: Ambient Sage
Source state
- Public kit page: documented
- Kit access: free and published
- Typography roles: documented
- Body and heading family: Plus Jakarta Sans
- Body and heading weights: 400, 500, 600, 700
- Mono family: JetBrains Mono
- Mono weights: 400, 500, 700
- Typography scale: compact-product
- DESIGN.md: available
- Semantic light and dark tokens: available
- Delivery formats: shadcn, Tailwind, CSS, and DTCG
Stitch evidence state
- DESIGN.md imported into Stitch: not tested
- Import warnings or transformations: not tested
- Generated-screen adherence: not tested
- Navigation consistency: not tested
- Icon consistency: not tested
- Light and dark mode behavior: not tested
- Typography and spacing parity: not tested
- Exported-artifact parity: not tested
- Controlled-change result: not tested
Handoff disposition
- Status: block pending evidence
- Reason: the source artifact is documented, but no Stitch-specific behavior or source-to-export parity has been observed
- Next action: import through the currently documented Stitch workflow, capture any transformation, then run one controlled change across representative screens and the chosen exportWhy the record starts as blocked
"Not tested" is useful information, not a failure. It prevents a complete source kit from being mistaken for evidence that another product imported, applied, and exported it faithfully.
Hand off without promoting the export to source of truth
Hand over the governing DESIGN.md, machine-readable tokens or implementation artifacts, exception register, controlled-change record, and exported code together. Give each item a version or stable evidence reference. The developer should be able to trace a visible value to a semantic role or written rule and see which differences were approved.
- Name the DESIGN.md revision and token artifact used for generation.
- List representative screens and their recorded states.
- Include exact approved exceptions and unresolved conflicts.
- Record the export method and resulting artifact version.
- Separate verified parity from areas that weren't tested.
- Route downstream corrections back to the owning rule when they represent shared design decisions.
If a developer changes a shared color, spacing value, or component treatment only in exported code, treat it as downstream drift until the governing source accepts the change. If it's an implementation detail with no design-system consequence, keep it in code and explain why it doesn't need to travel upstream.
Consistency is only one acceptance track
This procedure doesn't certify accessibility, task completion, responsive correctness, generated-code quality, security, or production readiness. Review each of those against its own requirements and evidence.
Choose pass, revise, or block
Pass the design-system handoff when the governing rule and owner are clear, representative screens show the expected result, approved exceptions stay bounded, the exported artifact preserves the checked change, and no material unrelated drift appears in scope.
Choose revise when the evidence points to an incomplete DESIGN.md rule, a broad prompt override, or a poorly defined exception that the current owner can correct. Choose block when sources conflict without an owner, Stitch-specific behavior hasn't been observed, the exported artifact breaks a governing rule, or the evidence record is too weak to reproduce the decision.
For a new project, fill in the four-layer authority record before generating another screen. For an existing project, pick one visible inconsistency, route it to its owning layer, and run the controlled-change worksheet before you accept or regenerate the rest.
Sources
- Stitch's DESIGN.md format is now open-source so you can use it across platforms: Google documents DESIGN.md as a portable format for importing and exporting design rules between projects and platforms.
- Introducing "vibe design" with Stitch: Google describes the current Stitch workflow as combining an AI-native canvas, a design agent, DESIGN.md support, iteration, and developer-delivery surfaces.
- From idea to app: Introducing Stitch, a new way to design UIs: Google's launch article documents generation from text or images, interactive refinement, transfer to Figma, and frontend-code export.
- Design system or design guideline on Stitch project: A community thread reports inconsistent icons, navigation, and color mode across generated screens. A Google-tagged response recommends more explicit prompts and protecting selected elements.
- How to Use Google Stitch to Build a Website Design System in Minutes: This third-party tutorial describes URL extraction, multi-page prototype generation, iteration, and export, but its claims aren't a first-party product contract.
- Ambient Sage Design Kit: The public Ambient Sage kit provides a source-bounded design example with DESIGN.md, machine-readable delivery artifacts, documented typography roles, and a compact product-oriented visual system.
- AI UI review checklist: test generated interfaces before you ship: Identity Forge's published review checklist separates design-system conformance from broader readiness and uses representative states, controlled changes, evidence records, and explicit dispositions.