Get started

Figma Make design system: define context and verify generated UI

A persuasive prompt isn't enough to establish a Figma Make design system. Declare one source of authority, record exactly which context Make received, and keep generated output and local exceptions downstream of that source. Then inspect representative screens, states, modes, and viewports before accepting the result. Generation produces a proposal. Your evidence record determines whether it's consistent enough to use.

Updated September 11, 2026

Start with the current capability boundary

The official Figma material frozen on August 6, 2026 presents Make as a prompt-driven tool for producing and iterating on code-backed interfaces. The dedicated Make page names several ways design context may enter the workflow, including Make kits, npm packages, attached frames or PDFs, codebases, and design assets. This supports a context-governance workflow. It doesn't establish that every source has the same authority, maps to the same generated properties, or remains synchronized after generation.

Feature status needs the same caution. The captured Make material labels a local-codebase workflow as coming soon, so don't write a project plan that treats the route as already available. Before running a real project, check Figma's current documentation and interface for plan requirements, controls, supported inputs, and release status.

Context isn't compatibility evidence

A page that names a package, frame, PDF, codebase, or design asset as context doesn't prove that Make will ingest your particular artifact correctly. Nor does it prove token mapping, component reuse, synchronization, generated-code quality, or rendered parity.

Observed boundarySafe project conclusionStill unresolved
Figma Make generationMake generates and supports iteration on code-backed UI.Generated output can be recorded as a downstream artifact.Whether the output follows a particular system.
Named context mechanismsThe captured page names kits, packages, frames, PDFs, codebases, and design assets.Each supplied item belongs in a versioned context register.Exact ingestion, precedence, mapping, and propagation.
Local-codebase workflowThe captured material labels this workflow as coming soon.Do not make it a required current step.Release status and behavior in the live product.
Visual editingGenerated results can be iterated on visually.Edits must be recorded if they create project-local exceptions.Whether an edit updates any upstream source or related screen.
What the frozen evidence supports and what remains project-specific

Inventory the context before generation

A useful context record answers a simple forensic question: what did Make actually receive for this generation? List the artifact itself, not a vague category such as "our design system." Give it an owner and a version. State which decisions it may make, and mark every missing decision explicitly.

Create separate entries for separate artifacts. A frame may demonstrate composition, while a package may expose components or tokens. A PDF may explain intent. A codebase may contain the current implementation. None should silently inherit authority from another simply because both were attached to the same project.

Context package ID: FM-DS-2026-08-06-01
Generation ID or link: [record after creation]
Prepared by: [name]
Prepared at: [date and time]

Source item: [Make kit | npm package | frame | PDF | codebase | design asset]
Name: [exact artifact name]
Owner: [person or team]
Version or immutable reference: [version, revision, commit, or dated snapshot]
Authority: [authoritative | derived | reference-only]
Intended use: [tokens, components, composition, behavior, imagery, or guidance]
Decisions it may override: [explicit list or none]
Known omissions: [explicit list]
Evidence status: [documented | supplied | mapped | observed | unresolved]

Conflict rule: [which source wins and who decides]
Project-local exceptions: [IDs or none]
Protected surfaces: [surfaces generation must not change]
Copyable Figma Make context-source register

Use immutable references where possible

A package name without a version, or a frame without a revision, turns later diagnosis into guesswork. Record the exact input used for the generation even if the team also maintains a moving latest version.

Map the five layers of authority

Consistency problems become expensive when a team patches the visible screen before locating the decision that produced it. Five layers keep cause and symptom separate. One layer may supply evidence about another, but that doesn't automatically make it authoritative.

Layer responsibilityContentsCorrection owner
1. Authoritative design decisionsOwns approved system policy.Semantic roles, typography, spacing, layout, component rules, motifs, modes, and prohibitions.Design-system owner or named product design authority.
2. Supplied Make contextOwns the bounded package given to Make.Exact kits, packages, frames, PDFs, codebase references, assets, prompt constraints, versions, and omissions.Person preparing and validating the Make context package.
3. Generated UI or codeOwns the produced implementation.Make's screens, components, styles, code, and initial behavior.Implementation owner, with regeneration when the defect originates upstream.
4. Project-local exceptionsOwns deliberate deviations from the general rule.Approved differences required by a specific product, surface, viewport, or behavior.Product and design owner who approved the exception.
5. Rendered observationsOwns evidence about what happened.Screenshots, recordings, interaction results, viewport checks, state checks, and unchanged-surface checks.Reviewer who captured the evidence; correction routes to layers 1 through 4.
Five-layer responsibility map

Set a fixed precedence rule for disagreements between layers. An explicit approved exception may override the general source within its named scope. Everywhere else, the authoritative design decision wins. Generated output and rendered appearance don't become policy merely because they exist.

Generation is a proposal. Acceptance is an evidence-backed decision.
Identity Forge editorial guidance

Write the context contract before prompting

The context register records what Make received. The context contract defines what the generation must preserve. Write both before generation so a plausible first screen can't redefine success after the fact.

  • Allowed components and variants, including whether new components may be invented.
  • Semantic color roles for backgrounds, text, controls, borders, focus, status, and data display in each required mode.
  • Typography families, roles, available weights, scale, line-height rules, and prohibited treatments.
  • Spacing and layout constraints, including density, container behavior, alignment, and responsive priorities.
  • Required interaction states such as default, hover, focus, disabled, loading, empty, and error.
  • Protected surfaces that must remain unchanged during the generation or revision.
  • Approved local exceptions, each with scope, reason, owner, and review condition.
  • Non-goals, including features, redesigns, data changes, or visual directions outside this generation.
  • Evidence owner and the conditions for accept, revise, or block.
Context contract ID: FM-CONTRACT-01
Authoritative source: [name and version]

Allowed components: [list]
Allowed variants: [list]
Semantic roles and modes: [reference or bounded list]
Typography contract: [families, roles, weights, scale]
Spacing and layout: [constraints]
Required states: [list]
Responsive conditions: [representative widths and expected adaptations]
Protected surfaces: [list]
Approved exceptions: [IDs or none]
Non-goals: [list]

Accept when: [observable conditions]
Revise when: [correctable failures with known owner]
Block when: [missing authority, critical task failure, or unsafe unresolved change]
Evidence owner: [name]
Decision owner: [name]
Pre-generation context contract

Use Ambient Sage only as an upstream record

Ambient Sage is a concrete example of what the source side can contain. Its public kit page records DESIGN.md guidance, semantic light and dark roles, typography, layout direction, motifs, and implementation exports. The published typography assigns Plus Jakarta Sans to heading and body roles and JetBrains Mono to technical strings. Its visual direction uses warm sage surfaces, restrained saturated yellow, generous rounding, and a compact product-oriented type scale.

Token specimen · real values

Ambient Sage

Live render

Ambient Sage's actual tokens — the same values its exports use.

Color tokensSemantic roles with HEX / HSL / CMYK

Color tokens

Ambient Sage
light · HEX · HSL · CMYK

Core

#F3F4EF

background

H 72 · C0, 0, 2, 4

#1A1C17

foreground

H 84 · C7, 0, 18, 89

#E5E6E0

card

H 70 · C0, 0, 3, 10

#ECEEE8

muted

H 80 · C1, 0, 3, 7

#D8D9D2

border

H 68.57 · C0, 0, 3, 15

Brand

#FEE951

primary

H 52.72 · C0, 8, 68, 0

#1A1C17

primary-fg

H 84 · C7, 0, 18, 89

#E5E6E0

secondary

H 70 · C0, 0, 3, 10

#F7E464

accent

H 52.24 · C0, 8, 60, 3

#FEE951

ring

H 52.72 · C0, 8, 68, 0

Semantic

#C0392B

destructive

H 5.64 · C0, 70, 78, 25

#FFFFFF

destructive-fg

H 0 · C0, 0, 0, 0

#2D7238

success

H 129.57 · C61, 0, 51, 55

#C97D12

warning

H 35.08 · C0, 38, 91, 21

#545651

muted-fg

H 84 · C2, 0, 6, 66

Charts

#FEE951

chart-1

H 52.72 · C0, 8, 68, 0

#4A8FD4

chart-2

H 210 · C65, 33, 0, 17

#6BBF8A

chart-3

H 142.14 · C44, 0, 28, 25

#E07498

chart-4

H 340 · C0, 48, 32, 12

#E8A24B

chart-5

H 33.25 · C0, 30, 68, 9

Type scaleHeading, body, and mono in the kit's fonts

Typography

Ambient Sage

Scale: compact-product

Density: balanced

Heading · Plus Jakarta Sans · 1.875rem

Ship beautiful product faster

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

400500600700

Aa

Plus Jakarta Sans · Body

400500600700

ABCDEFGHIJKLM NOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 & @ # % →

Radius & spacingCorner radius, elevation, and spacing steps

Tokens

Ambient Sage primitives
density: balanced

Radius scale

sm · 0.375rem
md · 0.75rem
lg · 1.25rem
xl · 1.75rem

Component radius

button
card
input

Elevation

level 1
level 2
level 3
level 4

Spacing · base 4px

1x
2x
3x
4x
6x
8x
Ambient Sage illustrates upstream decisions a context record can reference. This specimen doesn't show that Figma Make ingested or reproduced them.

For this example, a bounded source entry can identify Ambient Sage version 1 as authoritative for the proposed visual direction and note that its public artifacts are available for inspection. Every Make-specific field stays unresolved until someone runs and records the workflow.

Source item: Identity Forge Ambient Sage
Version: v1, public page updated July 30, 2026
Authority: proposed upstream design direction
Documented contents: DESIGN.md guidance; semantic light and dark roles; typography; spacing and layout direction; motifs; implementation exports

Figma Make ingestion: unresolved
Destination mapping: unresolved
Component compatibility: unresolved
Mode propagation: unresolved
Synchronization after change: unresolved
Generated-code quality: unresolved
Rendered parity: unresolved
Evidence-bounded Ambient Sage source entry

Inspect the source before testing the handoff

The Ambient Sage public kit lets you inspect the token roles, typography, spacing, and written guidance that would sit upstream of a Make experiment. Leave the Make-specific mapping fields unresolved until you have real project evidence.

Record generated output and exceptions separately

After generation, freeze the output under review. Record its generation identifier, time, input package, prompt or instruction revision, and any manual edits. If someone changes a button color, responsive rule, or component afterward, put that change in the exception record. It shouldn't quietly rewrite the context contract.

Keep each exception narrowly scoped. "Mobile is different" is too vague to review. "Checkout summary uses a stacked layout at the agreed compact viewport because the price breakdown cannot fit without truncation" names a testable difference. Record who approved it and which general rule it overrides.

Exception ID: EX-04
Surface: [screen and component]
Condition: [state, mode, viewport, or product condition]
General rule overridden: [contract reference]
Replacement decision: [exact behavior or visual rule]
Reason: [project-specific need]
Approved by: [owner]
Evidence required: [observation]
Status: [proposed | approved | rejected | superseded]
Project-local exception record

A local fix can be legitimate

Exceptions aren't inherently a problem. An unrecorded exception may later look like accidental drift, while an accidental deviation may later be defended as intentional.

Verify representative generated UI

Don't review every screen with equal depth, but don't approve the system from one polished default state either. Select representatives that expose different failure types: a dense screen, a form, a navigation surface, a destructive or high-risk action, a narrow layout, and any screen where light and dark behavior diverge.

Coverage targetEvidence to captureDecision rule
Representative screensCore task, dense surface, form, and navigation or shell.Rendered evidence tied to the frozen output and expected source rules.Accept only if each in-scope task completes and the intended system is traceable.
Component statesDefault, hover, focus, disabled, loading, empty, and error where relevant.Images, recordings, or test results showing the required states.Revise if a required state is missing, locally invented, or inconsistent with the contract.
Light and dark modesThe same semantic roles and representative components in every required mode.Paired observations for each required mode.Block if a required mode is absent or critical content and controls become unusable.
Responsive conditionsWide, intermediate, and compact conditions chosen for meaningful layout changes.Observed adaptations at the recorded viewport conditions.Revise local layout defects; route missing responsive policy to the authoritative layer.
Protected surfacesScreens or components declared outside the generation scope.Before and after evidence for each protected surface.Block unexpected changes until their cause and reach are known.
Generated artifactThe exact output under review.Immutable output reference plus recorded manual edits and exceptions.Do not accept an artifact that cannot be tied to the reviewed context package.
Generated-UI acceptance matrix

For every cell you inspect, record an observation rather than a judgment alone. "Looks inconsistent" is difficult to route. "Compact checkout uses a raw gray value for secondary text instead of the registered muted text role" identifies the surface, condition, observed value, expected rule, and likely ownership layer.

Observation ID: OBS-12
Screen or flow: [name]
Component or region: [name]
State: [default, hover, focus, disabled, loading, empty, error]
Mode: [light or dark]
Viewport condition: [wide, intermediate, compact, or exact width]
Expected source rule: [contract reference]
Observed result: [specific result]
Evidence: [screenshot, recording, code reference, or test result]
Protected surface affected: [yes or no]
Likely owning layer: [1, 2, 3, or 4]
Correction owner: [name]
Disposition: [pass | revise | block]
One row of the acceptance record

Route failures to the responsible layer

Start diagnosis at the earliest layer capable of producing the symptom. If the authoritative source never defines an error state, another prompt can't reliably repair the policy gap. If the source is clear but the context package omitted the rule, fix the package. If Make received the rule and generated a conflicting local value, correct or regenerate the output. When an approved exception applies, update the evidence and keep its scope narrow.

Observed failureCheck firstCorrect at
No rule exists for a required stateA required state has no declared expected result.Authoritative design decisions and the named owner.Layer 1: define and approve the missing decision.
A valid rule was absent from the supplied packageThe source contains the rule, but Make did not receive it.Context register, versions, omissions, and selected artifacts.Layer 2: rebuild the bounded context package.
Generated output contradicts supplied contextThe frozen context is clear, but the produced UI differs.Generated artifact, local literals, component selection, and code.Layer 3: revise or regenerate the implementation.
One surface intentionally differsA product-specific need may justify a bounded deviation.Exception ID, scope, reason, approval, and evidence condition.Layer 4: approve, narrow, reject, or supersede the exception.
A screen looks wrong but the cause is unknownA visible symptom has not yet been traced.Observation tied to state, mode, viewport, and expected rule.Layer 5 records evidence, then routes correction to layers 1 through 4.
Protected content changedAn out-of-scope surface differs after generation.Generation scope, output diff, and before and after evidence.Block until the responsible upstream or generated layer is identified.
Failure-routing table

Don't repair every symptom in the prompt

Revise the prompt when the supplied context is incomplete or ambiguous. Doing so is wasteful when the authoritative source lacks a decision, and risky when a local implementation or exception masks an otherwise clear rule.

Finish with accept, revise, or block

The final disposition applies to the frozen output and evidence set. It isn't a permanent judgment about Figma Make or the design system. A later generation, source revision, or exception creates a new review subject.

  • Accept when the in-scope tasks work, required states and modes have representative evidence, observed results trace to the declared source or approved exceptions, and protected surfaces remain unchanged.
  • Revise when the failure is material but bounded, the correction owner and layer are known, and the artifact can be rechecked without redefining the contract.
  • Block when authority is missing, a critical task or required mode fails, protected surfaces changed unexpectedly, the reviewed artifact cannot be tied to its inputs, or a material inconsistency has no owner.
Decision record ID: FM-DECISION-01
Reviewed output: [immutable generation or artifact reference]
Context package: [ID and version]
Context contract: [ID and version]
Evidence set: [observation IDs]
Approved exceptions: [IDs or none]
Unresolved material findings: [IDs or none]
Protected-surface result: [unchanged | changed | not verified]

Disposition: [ACCEPT | REVISE | BLOCK]
Reason: [specific evidence-backed statement]
Required corrections: [finding, layer, owner]
Recheck scope: [screens, states, modes, viewports, protected surfaces]
Decision owner: [name]
Decision date: [date]
Final Figma Make generated-UI decision record

For the first real run, choose one representative flow and complete every record from source to decision. Don't begin by expanding the prompt. First name the authoritative source, freeze the supplied context, and define the evidence required to accept the result.

Figma Make design-system questions

Can Figma Make use a design system?

The frozen official Make material names several design-context mechanisms, including Make kits, packages, frames, PDFs, codebases, and design assets. This supports supplying design-system context, but a real project must still verify availability, ingestion, mapping, precedence, and generated behavior.

Should the generated Figma Make UI become the source of truth?

No. Treat it as a downstream artifact unless your team explicitly reviews and promotes a decision into the authoritative system. A generated value or visual edit shouldn't become policy merely because it appears in the output.

Can I import an Identity Forge kit directly into Figma Make?

This dossier contains no executed Identity Forge-to-Figma Make workflow. Ambient Sage can populate the upstream source record, but ingestion, token mapping, component compatibility, synchronization, generated-code quality, and rendered parity remain unresolved.

Does a good first screen prove the design system worked?

No. Check representative tasks, component states, required modes, responsive conditions, and protected surfaces. The first default screen is only one observation.

When should the result be blocked instead of revised?

Block when a critical task or required mode fails, authority is missing, protected surfaces changed unexpectedly, the output cannot be tied to its inputs, or a material issue has no correction owner.

Sources

  • Figma Make: Create with AI-Powered Design Tools: The captured official page presents Figma Make as a prompt-driven, code-backed generation and iteration surface. It also names several forms of design context, including Make kits, packages, frames, documents, codebases, and design assets.
  • Figma: The collaborative canvas for design, code, and AI: Figma's captured homepage connects shared design context with consistent building across design, code, and AI workflows.
  • What is Figma?: The official help article places Figma Make within the broader Figma product family and describes its role in creating functional prototypes, web apps, and interactive interfaces.
  • Figma Design: The captured official Design page establishes Figma Design as an upstream surface for interface design, prototyping, design-system work, collaboration, and handoff.
  • Figma UI design tool: The captured official UI-design page describes interface design, prototyping, libraries, collaboration, and handoff as relevant parts of the wider workflow.
  • Ambient Sage Design Kit: The public Ambient Sage page documents a free kit with DESIGN.md guidance, Plus Jakarta Sans and JetBrains Mono roles, a 31-color palette, and 28 semantic light and dark tokens.