Choose the source before creating the system
Decide where the approved visual decisions live before generating anything. Replit documents prompt-led creation and extraction from a mockup. Its broader design tools also accept material such as Figma sources, websites, screenshots, code, reference images, brand assets, briefs, and existing DESIGN.md. These inputs serve different purposes. A screenshot may show a treatment without explaining its rules. A DESIGN.md may explain intent without containing the exact application mapping. A prompt is useful precisely when no approved system exists yet.
| Prompt-led creation | Approved mockup extraction | Existing-system intake | |
|---|---|---|---|
| Use when | Important visual choices are still unresolved. | A reviewed mockup is the intended visual reference. | A maintained design system or brand source already governs the product. |
| Starting authority | The approved brief, constraints, and answers supplied during creation. | The identified mockup revision plus any separate rules it cannot show. | The versioned system, such as approved guidelines, token files, assets, or DESIGN.md. |
| What Replit may generate | A proposed system that resolves open visual choices. | A reusable interpretation of visible patterns in the mockup. | A translated or generated representation for use in Replit. |
| Main translation risk | Taste fills gaps that the brief did not settle. | A visual sample is mistaken for a complete rule set. | The generated copy diverges from the maintained source or loses unsupported decisions. |
| Required review | Review every consequential generated decision. | Check extracted rules against the approved mockup and its known exceptions. | Compare every required decision with the source revision and keep unsupported fields unresolved. |
| Regeneration rule | Regenerate when the brief or an approved decision changes. | Regenerate when the governing mockup revision changes. | Regenerate when the canonical source changes, unless a documented local exception applies. |
Do not promote output by accident
A generated Replit system can be useful without becoming canonical. Record whether it's a proposal, a maintained derivative, or the approved authority. Without that decision, the next regeneration could overwrite a deliberate correction or preserve a stale translation.
Map the artifacts from source to screen
Replit documents creation, saved-system use, and stored artifacts on separate pages. For implementation work, connect them as one chain. Each layer has its own authority and gives a decision another place to change before it reaches the screen.
| What it establishes | What it does not prove | |
|---|---|---|
| Approved source | Which visual decisions are legitimate and who may change them. | That Replit received or preserved those decisions. |
| Saved Replit system | Reusable visual context is available for later work. | That the selected project uses the intended revision. |
| Living style guide and DESIGN.md | Generated guidance and system intent are present in the project. | That every exact value or component rule is mapped correctly. |
| tokens.json | Named token values or references exist in the generated artifact. | That the project emits or loads the intended CSS variables. |
| CSS variables or project mapping | The application can resolve reusable values. | That components consume them rather than local values. |
| Component implementation | A component maps properties and states to the project styling layer. | That the named screen uses this component without an override. |
| Local override or exception | A deliberate or accidental divergence changes a narrower consumer. | That the exception is approved, current, or safe in every condition. |
| Rendered observation | A recorded app, component, state, mode, and viewport produced an observed result. | That untested screens or future regenerations behave the same way. |
Suppose the approved source assigns a semantic primary action role. The saved system may describe that role, tokens.json may carry its value, CSS may expose it as a variable, and a button may consume it. A screen-level class can still replace the button color. The final screenshot tells you the result is wrong. The chain shows where it first went wrong.
Copy a source and authority record
Write this record before you create or regenerate the system. It gives designers, developers, and reviewers a shared boundary. Mark unknown fields as "unresolved" so the generator doesn't make an invisible policy decision.
DESIGN SYSTEM SOURCE RECORD
Record ID:
Recorded on:
Owner:
Named consumer: [exact Replit app and project]
SOURCE
Source type: [brief | approved mockup | Figma | website | code | screenshot | assets | DESIGN.md | other]
Source identity:
Source revision or date:
Canonical authority: [source name and owner]
Supporting references:
DECISIONS
Approved decisions:
Unresolved decisions:
Replit may propose:
Replit must preserve:
Out of scope:
EXPECTED REPLIT OUTPUT
Saved system name:
Expected DESIGN.md or guidance:
Expected tokens.json roles:
Expected CSS or project mapping:
Expected example components or assets:
PRECEDENCE
If source and generated output disagree:
If tokens and guidance disagree:
Local overrides allowed when:
Approved exception owner:
Exception review date:
VERIFICATION
Representative components:
Required states:
Required modes:
Viewports:
Font-loading conditions:
Expected results:
Evidence location:
Reviewer:
RETEST TRIGGERS
Source revision changes:
System regeneration:
Token or CSS mapping changes:
Component changes:
Local override changes:
Font-delivery changes:
Viewport or mode behavior changes:
FINAL DISPOSITION
[adopt | revise | block]
Reason:
Open findings and owners:Name the consumer precisely
"The app" is too vague. Record the Replit project, screen, component, state, mode, and viewport. A result observed on a wide dashboard in light mode tells you nothing about a narrow form in dark mode.
Use the workflow that matches the source
Route 1: create from a brief
Use this route when the brand or product direction exists as intent but the visual system remains open. Supply the audience, product character, approved assets, constraints, required surfaces, prohibited treatments, and named app. Separate fixed decisions from choices Replit may propose. After generation, treat colors, typography, token roles, spacing, component examples, and guidance as proposals. Approve or revise them before using the saved system as reusable context.
- 1
Freeze the brief
Record approved constraints, unresolved choices, the named app, and the person who may approve generated decisions.
- 2
Generate a proposal
Use Replit's current creation workflow, referring to its documentation for current controls and platform behavior.
- 3
Review the system, not only the sample screen
Inspect the generated roles, typography, tokens, assets, guidance, and representative components. A polished sample screen can hide missing states or vague mappings.
- 4
Save only the reviewed revision
Record the saved-system identity and the decisions accepted, revised, or left unresolved.
- 5
Verify the named app
Trace representative decisions into the project and record rendered observations before broader reuse.
Route 2: extract from an approved mockup
Use extraction when a particular mockup has already been approved as the visual reference. Record its exact revision and the surfaces it covers. Then list what it cannot establish. One desktop screen rarely defines narrow layouts, focus states, validation, loading, empty content, dark mode, typography fallback, or the behavior of components absent from the sample.
Review the extracted system against two lists: decisions visibly supported by the mockup and decisions inferred beyond it. The first group still needs accurate translation. The second needs explicit approval. If the generated system assigns a rule to a state the mockup never showed, label it as a proposal instead of claiming it was extracted.
Route 3: seed from an existing design system
Use external-system intake when approved guidelines, tokens, assets, code, or DESIGN.md already govern the product. Record the canonical revision and expected Replit artifacts. Treat Replit's generated files as downstream representations unless the system owner deliberately transfers authority. Compare the generated output with the source, paying close attention to renamed roles, omitted modes, substituted fonts, flattened aliases, and rules that exist only in prose.
Need a structured upstream source?
Explore a published Identity Forge kit to see typography roles, semantic tokens, spacing, and usage guidance in one source. Use it as source material, then perform the Replit mapping and app verification described here.
Bounded example: Ambient Sage as upstream intake
Ambient Sage is a concrete source record, not a compatibility result. Its public kit uses Plus Jakarta Sans for heading and body roles at weights 400, 500, 600, and 700. JetBrains Mono supplies the mono role at weights 400, 500, and 700. The published system has a compact-product typography scale and 28 semantic color tokens across light and dark modes.
Token specimen · real values
Ambient Sage
Live renderAmbient Sage's actual tokens — the same values its exports use.
| Ambient Sage evidence | Status | |
|---|---|---|
| Available upstream | Public typography roles and weights, compact-product scale, and 28 semantic light and dark tokens. | Recorded from the published kit. |
| Supplied to Replit | The exact source artifact and revision selected for intake. | Unexecuted in this example. |
| Generated in Replit | Saved system, guidance or DESIGN.md, tokens.json, assets, and examples produced by the chosen workflow. | Unexecuted in this example. |
| Mapped by the project | Font resources, CSS variables, token roles, components, and modes connected to the named app. | Unexecuted in this example. |
| Observed in the app | Rendered components inspected under recorded states, modes, viewports, and loading conditions. | Unexecuted in this example. |
What this example proves
It proves that a bounded, public upstream record exists. It doesn't prove that Replit imports Identity Forge directly, maps the kit automatically, preserves every role, renders the fonts, meets accessibility requirements, or produces a compatible app.
Trace one decision before reviewing the whole app
Start with one decision that crosses several layers, such as the primary action treatment or heading typography. Write the expected result before inspecting the generated app. Then work from the approved source toward the screen. This order stops a plausible rendering from retroactively defining what the system was supposed to do.
- 1
Confirm the approved source
Find the exact decision, revision, applicable mode, and owner. If the source is silent, stop calling the decision approved.
- 2
Inspect the saved Replit system
Check whether the intended decision appears in the saved visual context and whether the selected revision is identifiable.
- 3
Inspect the generated artifacts
Find the corresponding guidance and token entry. Record renaming, translation, omission, or fallback rather than assuming equivalence.
- 4
Inspect the project mapping
Confirm which CSS variable, font resource, theme value, or other project-level mechanism carries the decision.
- 5
Inspect component adoption
Check whether the named component consumes the intended mapping in the required state and mode.
- 6
Inspect exceptions and overrides
Identify narrower styles, wrappers, breakpoint rules, or approved exceptions that can change the result.
- 7
Record the rendered observation
Capture what happened for the named screen, component, state, mode, viewport, content, and font-loading condition.
If the source and generated token agree but the component uses a local color, the first divergence is component adoption. Editing the upstream token might fix the screenshot, but it would also change unrelated consumers. The narrower fix belongs where the divergence began.
Verify a named Replit app
Saving or selecting a design system confirms configuration. Verification asks whether the intended decisions reached the actual interface. Choose a small, representative set instead of inspecting only the most polished default screen. A useful first pass might include a primary button, text input, card, navigation item, heading, and data value.
| What to record | Example or allowed state | |
|---|---|---|
| Consumer | Exact Replit project, route or screen, and component. | Example: Account settings, email input. |
| Source expectation | Approved role, value, rule, mode, and revision. | Example: input surface and focus treatment from source revision R3. |
| Generated state | Whether the required rule appears in the saved system and generated artifacts. | generated | missing | divergent | unresolved |
| Mapped state | Whether the project resolves the expected CSS variable, font, asset, or other mapping. | mapped | missing | divergent | unresolved |
| Adopted state | Whether the named component consumes the mapping without an unapproved substitute. | adopted | overridden | detached | unresolved |
| Conditions | State, mode, viewport, content, font status, input method, and relevant environment. | Example: focus, dark mode, 390 px, keyboard, fonts loaded. |
| Expected result | A falsifiable statement written before observation. | Example: visible focus treatment uses the recorded role without clipping. |
| Observed result | What actually rendered, with evidence tied to this revision and condition. | pass | fail | not run, plus evidence location |
| Owner and disposition | Who resolves a mismatch and what happens next. | adopt | revise | block |
Include default, hover, focus, disabled, and error states where they apply. Check light and dark modes if both are in scope. Use narrow and wide viewports, with realistic content rather than short labels chosen to fit. For typography, inspect loaded-font and fallback behavior separately. For overrides, record whether each difference is approved, accidental, or unresolved.
Accessibility stays a separate evidence track
Correct token mapping doesn't establish accessibility. Component and product checks still need the relevant keyboard, focus, contrast, zoom, text-spacing, content, and assistive-technology evidence. Attach those results to the exact consumer and conditions tested.
Find the first divergent layer
When a screen looks wrong, inspect the chain in order. Stop at the first layer where the recorded expectation and actual state differ. Later differences may be consequences rather than causes.
- Approved source: Is the decision explicit, current, approved, and applicable to this condition?
- Saved Replit system: Does the selected system carry the intended decision and revision?
- Generated artifact: Do DESIGN.md, tokens.json, assets, and examples preserve or correctly translate it?
- Project mapping: Does the app load and expose the intended value, font, asset, or rule?
- Component implementation: Does the component use the mapping for this variant and state?
- Application override: Does a local class, wrapper, breakpoint rule, or exception replace it?
- Rendered observation: Under the recorded mode, viewport, content, and loading conditions, does the result match the expectation?
Fix the earliest layer that owns the mismatch. Revise the source only when its decision is wrong. Regenerate when the derivative is stale or mistranslated. Correct the project mapping when the right artifact exists but isn't connected. Change the component or local override when the divergence begins there.
Finish with adopt, revise, or block
Adopt the system for the named scope when you can trace the required source decisions, the expected artifacts exist, representative components use the intended mappings, and recorded observations match expectations. Revise when the route is sound but a bounded mismatch has an owner and a clear correction. Block when authority is unknown, required decisions disappeared during translation, the app uses a different system, or evidence required for the named scope is missing.
Keep the completed source record with the system revision. When the source, generated artifacts, component implementation, override, font delivery, mode behavior, or viewport behavior changes, rerun the affected cases. Next, choose one named Replit app and complete one acceptance row from approved source to rendered observation before approving the system more broadly.
Sources
- Create a design system - Replit Docs: Replit documents creating a design system from a prompt or extracting one from a mockup, followed by review and saving.
- Use a design system - Replit Docs: Replit describes a saved design system as reusable visual context for colors, typography, spacing, components, and later visual work.
- Design system contents and DESIGN.md - Replit Docs: Replit documents design-system contents and a storage chain in which tokens.json feeds CSS variables consumed by components, and it identifies existing DESIGN.md as possible source material.
- Design systems, explained - Replit Docs: Replit describes design systems as capturing tokens, colors, typography, components, and supplied brand assets, with several possible creation sources.
- AI Design Tool - Replit: The Replit Design page presents prompt, URL, Figma, screenshot, and design-system starting routes alongside its interactive design experience.
- Ambient Sage Design Kit: The public Ambient Sage kit provides Plus Jakarta Sans for heading and body roles, JetBrains Mono for technical strings, a compact product-oriented treatment, and 28 semantic light and dark tokens.