AAgentic Design School
Module 3 of 7
45–55 minutes

Claude Code for Designers

From Mockup to Code

The core skill: giving the agent a mockup, a screenshot, or a reference and getting back working front-end code that respects the design — plus the review habits that catch where it does not.

Duration45–55 minutes

Slides13 slides with notes and narration

Learning objectives

  • Brief a mockup-to-code task with constraints, components, and review criteria.
  • Use screenshots and references as inputs without expecting pixel telepathy.
  • Review generated code visually and structurally, even without writing code yourself.
  • Run a parity check between the mockup and the implementation.
Slide deck

Work through the module

Each slide is shown in its 16:9 frame, exactly as it appears in the video version. Open the notes under any slide for the longer explanation, and the narration if you prefer to read along.

Slide 1 of 1316:9

From Mockup to Code

Claude Code for Designers · Module 3 of 7

  • The artifact you already have is the input: screenshots, mockups, references
  • Briefing the conversion so constraints do the work, not adjectives
  • Reading the output as a designer — without writing code
  • The parity check: side-by-side screenshots as evidence

This is the module the course is named for: a design you already made, turned into code you can actually review.

Slide notes

Module 2 ended with a configured setup and a read-only first session. This module is the payoff: the central, repeatable workflow of giving Claude Code something visual you already have — a screenshot of a mockup, an exported frame, a reference page — and getting back working front-end code. Everything later in the course (prototypes, design systems, automation) is a variation on the loop taught here.

Set expectations early about what conversion means. The promise is not pixel telepathy. A screenshot does not carry responsive behaviour, interaction states, accessibility semantics, or the product rules behind the visible layout. The promise is that the agent can do the structural and syntactic work — markup, layout, components, tokens — while the designer supplies interpretation and judgment, and verifies the result with evidence rather than a glance.

If participants did the Module 2 exercise, they already have a project open and five questions answered about it. Encourage them to use a section from that same project for this module's exercise rather than a toy example, because the review habits only become real against work they care about.

Narration for this slide

Welcome to Module 3 — the one this course is named for. You already have the input: a mockup, a screenshot, a reference you admire. This module is about handing that artifact to Claude Code and getting back working front-end code that respects the design. We will cover what the agent can actually read, how to brief the conversion so constraints do the work instead of adjectives, how to review the output as a designer without writing code yourself, and how to run a parity check that gives you evidence instead of a feeling. Let's start with the inputs.

Slide 2 of 1316:9

What the agent can read

Claude Code is not limited to text prompts. Most of what you already produce as a designer is a usable input.

  • Images — paste a screenshot into the prompt (Ctrl+V in the CLI), drag a file in, or reference it by path
  • Files in the project — existing components, token files, stylesheets, referenced with @ mentions
  • Design rules — a CLAUDE.md or DESIGN.md describing tokens, components, and banned patterns
  • URLs and live pages — a deployed page or a local preview the agent can open with the browser connection
  • Real copy and data — pasted directly, so the agent does not have to invent it

The richer the evidence you supply, the less the agent fills gaps with the most generic answer it knows.

Slide notes

Walk the input types in the order designers will actually use them. Screenshots and exported frames come first because every designer has them: Anthropic's own documentation treats image-to-code as a first-class workflow, with prompts like 'what HTML structure would recreate this component?'. In the CLI, images are pasted with Ctrl+V rather than Cmd+V on macOS — a small detail that trips people up on day one — and they can also be dragged in or referenced by file path. In VS Code and Desktop, attaching an image is more conventional.

The second category is the project itself. The agent can read existing components, token files, and stylesheets, and the @ mention syntax pulls a specific file or folder into context deliberately. This matters for conversion quality more than the image does: an agent that can see your Button component and your spacing tokens will reuse them, while an agent that cannot will invent its own. The instruction file from Module 2 — CLAUDE.md, optionally a DESIGN.md — is where rules that apply to every conversion belong.

The last two categories are the ones people forget. A URL or a local preview gives the agent something it can open and inspect when the browser connection is set up. And real copy and data pasted into the brief prevents the most common conversion failure of all: confident, plausible, invented content. As of June 2026 all of these input paths are standard Claude Code behaviour, not extensions.

Narration for this slide

First, what can the agent actually read? More than you might think. You can paste a screenshot straight into the prompt — control-V in the terminal, not command-V — drag an image in, or point at a file by path. You can reference files already in the project: existing components, token files, stylesheets. You can give it design rules in your CLAUDE.md or a DESIGN.md. You can point it at a URL or a local preview. And you can paste real copy and real data, so it never has to make content up. The pattern is simple: the more evidence you supply, the less it fills the gaps with the most generic thing it knows.

Slide 3 of 1316:9

A screenshot is evidence, not a specification

A screenshot shows what the design looks like. It does not say why, what changes, or what must not change.

  • What it carries: hierarchy, density, rhythm, copy, component relationships
  • What it omits: responsive behaviour, interaction states, accessibility semantics, data edge cases
  • Visual traits can be inferred from the image; product rules must never be invented from it
  • Your job is the interpretation layer: what matters, what can change, what must not change

Treat the screenshot as evidence the agent interprets, not a picture it copies. The interpretation is where the design survives.

Slide notes

This distinction carries the whole module, so spend time on it. A screenshot is genuinely powerful evidence — it communicates hierarchy, density, rhythm, and component relationships better than a paragraph of description ever will. But it is structurally incomplete. It cannot show what happens at 390 pixels wide, what the empty state looks like, which elements are interactive, what the focus order should be, or why the design made a particular trade-off.

The sharpest version of the distinction is visual traits versus product rules. The agent can reasonably infer visual traits from the image: this table uses compact rows, this cancellation link is deliberately quiet, this summary sits above the payment method. It must not invent product rules: who is allowed to cancel, what confirmation is required, what happens when billing data has not synced. If the screenshot shows a cancellation link, the implementation still needs the rules behind it — and if you do not supply them, the agent will guess, confidently.

The practical consequence is that the designer's job in this workflow is the interpretation layer around the image: stating what matters, what can change, what must not change, how unknown states should be handled, and how the result will be judged. That interpretation is exactly what the briefing and annotation steps on the next slides capture.

Narration for this slide

Before we brief anything, one idea that carries the whole module: a screenshot is evidence, not a specification. It shows hierarchy, density, rhythm, and copy beautifully. It shows nothing about responsive behaviour, interaction states, accessibility, or the product rules behind the layout. So separate two kinds of information. Visual traits — spacing, hierarchy, density — the agent can read from the image. Product rules — who can do what, what needs confirmation, what happens when data is missing — it must never invent. Your job is the interpretation layer around the image: what matters, what can change, what must not change. That interpretation is where the design survives the conversion.

Slide 4 of 1316:9

Briefing the conversion: constraints beat adjectives

The same request run two ways. The difference is not length — it is whether the prompt carries decisions the agent can act on.

Vague requestConstrained brief
The ask"Recreate this screenshot, make it look modern"Names the user job, the components and tokens to reuse, the states required, and what not to invent
What comes backA polished approximation: right shapes, invented content, its own coloursA plan first, then a section built from existing components with real states
Token auditDozens of hardcoded colours is typical for unconstrained runsClean when the brief points at existing tokens
IterationsSeveral rounds aimed at symptomsFewer rounds, aimed at named mismatches
Residual riskThe decision problem is untouchedOnly the decisions you forgot to state

Whatever you leave unstated, the agent resolves with the most common answer it knows. The brief is where you take those decisions back.

Slide notes

This slide compresses the school's published prompt teardown, where the same pricing-page request was actually executed twice against an identical scratch target. The vague 26-word version produced the genre average — gradient hero, three interchangeable cards, invented prices — and failed a token audit with 33 hardcoded-colour violations across three correction rounds. The 87-word constrained version asked for decision criteria before building, reused restrained styling, and passed the audit in two rounds. Quote those numbers as what happened in those specific runs, not as a benchmark.

The lesson for mockup conversion is that the brief should carry constraints and decisions, not adjectives. Useful constraints for a conversion brief: which existing components and tokens to use, which states are required (loading, empty, error, disabled, focus), what the section must do on mobile, what content is real and what may not be invented, and what you will check before accepting it. Adjectives like clean, modern, or pixel-perfect carry no decisions and produce the agent's idea of those words, not yours.

Also name the layering point so people do not write 300-word prompts forever: rules that apply to every conversion — token discipline, banned gradients, component reuse — belong in CLAUDE.md or DESIGN.md from Module 2, not retyped per request. The prompt should carry only what is specific to this section: this screenshot, this user job, these states, this content.

Narration for this slide

Here is the same kind of request run two ways, and this comparison comes from runs that were actually executed, not imagined. The vague version — recreate this screenshot, make it look modern — comes back polished and useless: right shapes, invented content, its own colours, dozens of hardcoded values. The constrained version names the user job, the components and tokens to reuse, the states that must exist, and what the agent is not allowed to invent. It comes back with a plan first and needs fewer, sharper corrections. The principle: whatever you leave unstated, the agent fills with the most common answer it knows. Constraints beat adjectives, every time.

Slide 5 of 1316:9

The mockup-to-code pipeline

Seven steps from reference to accepted section. The agent does the analysis, generation, and evidence; you hold the gates.

Pipeline diagram of the mockup-to-code workflow. The designer supplies a reference screenshot or mockup plus tokens and components, the agent analyses the structure and returns an annotation, which passes a human annotation gate before any code exists. The agent then generates the section against existing components and tokens, runs a parity check by capturing screenshots and comparing them to the reference, and the designer reviews the result. Mismatches return to the agent as a new run via a dashed line, and the section is accepted only by a final human decision. Reference, the annotation gate, designer review, and accept are marked human-led; structure analysis, generate, and the parity check are marked agent-run.
Reference in, the annotation gate, designer review, and the decision to accept are human-led. Structure analysis, generation, and the parity check are agent-run. The dashed lines are the cheap loops: corrections at the gate before code exists, and mismatch lists going back as a new run.

The annotation gate is the cheapest correction point in the pipeline — nothing has been built, so a wrong reading costs a sentence to fix.

Slide notes

Walk the diagram left to right and name who owns each step. Reference in is human: the screenshot or mockup, plus the things the screenshot cannot carry — tokens, components, design rules, real content — and the explicit instruction to annotate first rather than build. Structure analysis is agent-run and read-only: it describes the layout regions, the hierarchy, the components it would map each region to, the states it thinks are required, and the unknowns it cannot infer. The annotation gate is human: you correct the reading while it is still words. If the agent has misread the hierarchy or mapped a region to the wrong component, fixing it here costs a sentence; fixing it after generation costs a round.

Generate is the agent building the section against existing components and tokens, with real states and no invented content. The parity check is also agent-run: it captures screenshots of the built section at the relevant widths and compares them against the reference, listing mismatches and likely causes. Designer review is the human gate where judgment happens — hierarchy, spacing, density, states — and where feedback gets phrased as named mismatches the agent can act on. Accept is a human decision, and the packet of reference, annotation, and QA notes is kept so the next run does not rediscover the same context.

The most common way people collapse this pipeline is skipping straight from screenshot to generate. It feels faster and usually is not, because every misreading that the annotation gate would have caught for free comes back as a correction round after the code exists.

Narration for this slide

Here is the whole workflow in one picture. You supply the reference — the screenshot or mockup — plus the things the image cannot carry: tokens, components, real content. The agent analyses the structure and describes what it sees: regions, hierarchy, components, states, unknowns. You correct that reading at the annotation gate, while it is still words and costs nothing. Then the agent generates the section against your existing components, runs a parity check with side-by-side screenshots, and you review. Mismatches go back as a new run; the decision to accept stays with you. The agent does the analysis and the evidence. You hold the gates.

Slide 6 of 1316:9

First run: a single section from screenshot to component

Start with one section, not a page. A bounded first run teaches the loop without burying you in output to review.

Conversion brief for one section (excerpt)
[attach: hero-reference.png]

Implement this hero section as a single self-contained HTML file, hero.html.

Before writing code, list: visible regions, hierarchy, the states
this section needs, and anything you cannot infer from the image.

Rules:
- Use the colours and type sizes from the reference; list each value you read from it
- All CSS inline in a <style> tag, no frameworks, no external dependencies
- Include the hover and focus states for the call-to-action
- Use the exact heading and button copy I pasted below — do not invent copy

After building, take a screenshot, compare it to the reference,
and list every visible difference.

One section, one file, opened in a browser: small enough to review completely, real enough to teach the whole loop.

Slide notes

This traced run follows the first-prototype chapter of the book: a single hero section, generated as one self-contained HTML file with inline CSS, no frameworks and no build step, opened directly in the browser with a single command. That shape is deliberate. It removes every piece of setup friction — no npm, no dev server unless you want auto-refresh — and it produces an artifact small enough that a designer can review all of it.

Walk what happens when this brief runs. The annotation request comes back first: the regions, the hierarchy, the states, and usually one or two honest unknowns, such as what the section should do at narrow widths. The generation that follows is markedly better than an unbriefed run because the constraints are doing work: the copy is yours, the values are read from the reference and listed so you can check them, and hover and focus states exist because they were asked for. The closing line — screenshot, compare, list differences — is lifted almost verbatim from Anthropic's own best-practice guidance, which calls giving Claude a way to verify its work the single highest-leverage thing you can do.

Viewing the result is part of the run, not an afterthought. The simplest path is opening the file directly; the exclamation-mark prefix in the CLI runs a shell command like open hero.html without leaving the session. A Live Server style auto-refresh setup is worth adding once iteration starts, and the Chrome connection from Module 2 lets the agent see the rendered result itself. In a real product codebase the same brief points at an existing component and the project's tokens instead of inline CSS — the shape of the brief does not change, only the materials.

Narration for this slide

Let's trace a first run. Keep it to one section — a hero, a card, a settings panel — not a whole page. The brief attaches the reference image, asks the agent to describe what it sees before writing any code, and sets the rules: use the values from the reference and list them, include hover and focus states, use the copy I pasted, do not invent any. Then the closing instruction that matters most: after building, take a screenshot, compare it to the reference, and list every difference. The output is one file you open in a browser. Small enough to review completely, real enough to teach you the entire loop.

Slide 7 of 1316:9

Reading the output as a designer

You do not need to write code to review it. You need to know what to look at, in what order.

  • Structure — does the markup mirror the design's hierarchy, or is it one undifferentiated stack of boxes?
  • Tokens — are colours and spacing references to your system, or hardcoded hex values and magic numbers?
  • Components — did it reuse what already exists, or quietly invent local lookalikes?
  • Spacing and density — do the rhythm and gaps match the reference, or has everything become a bit more comfortable?
  • States — can you find empty, loading, error, disabled, hover, and focus, or only the happy path?

Reading code is pattern recognition, not programming. Five questions, asked in the same order every time, catch most of what matters.

Slide notes

This slide is the literacy designers actually need, and it is reading rather than writing. The five checks are deliberately ordered from cheapest to hardest. Structure first: even without knowing the framework, you can see whether the markup has the same shape as the design — distinct regions, headings where headings belong, a list rendered as a list — or whether everything is an anonymous stack of div elements. Semantic structure is also where accessibility starts, so this check pays twice.

Tokens and components are the system checks. Scan for hardcoded hex values and pixel numbers where your project has named tokens, and for new component files that duplicate something the system already provides. You do not need to judge the code quality of either; you only need to notice that they exist and ask the agent why. Spacing and density are visual checks done in the browser against the reference, and the specific drift to watch for is everything becoming slightly more generous than the design — agents tend toward comfortable defaults.

States are the check most often skipped because the happy path renders beautifully. Ask to see the empty state, the error state, the loading state, and keyboard focus, by name. The diff view in VS Code, or asking the agent to summarise its own changes file by file, makes all five checks easier; reviewing a diff is a skill designers pick up in days, not months.

Narration for this slide

Now the part people assume requires an engineering degree: reviewing the output. It does not. It requires five questions, asked in the same order every time. Structure: does the markup mirror the design's hierarchy, or is it one big stack of boxes? Tokens: are colours and spacing pulled from your system, or hardcoded? Components: did it reuse what exists, or invent lookalikes? Spacing and density: open it next to the reference — has everything become a little more comfortable than you designed? And states: can you actually find empty, loading, error, and focus, or only the happy path? That is pattern recognition, not programming. You can do it this week.

Slide 8 of 1316:9

Where conversions fail

The failures are predictable, which means they are checkable. These five account for most of the gap between mockup and implementation.

  • Spacing drift — paddings, row heights, and gaps relax until the design loses its density
  • Fake data — invented copy, prices, names, and labels that read as plausible and are wrong
  • Missing states — empty, loading, error, disabled, and focus quietly do not exist
  • System drift — local one-off components and hardcoded values instead of the design system
  • Responsive drift — mobile stacks blocks in code order rather than task order

None of these announce themselves. The output looks finished — that is exactly why the parity check on the next slide exists.

Slide notes

Each of these failure modes is common because each is the path of least resistance for the agent. Spacing drift happens because comfortable, evenly padded layouts dominate the agent's training distribution; your deliberately dense table reads to it like something to fix. Fake data happens whenever real content is missing from the brief — the agent will not leave a gap, it will fill it, and the filled version reads confidently enough to survive a stakeholder review before anyone notices the prices are fictional.

Missing states happen because the screenshot only ever shows one state. System drift happens when the agent cannot see the design system, or can see it but was not told to use it; the result is a parallel set of lookalike components that work today and rot immediately. Responsive drift is the subtlest: the mobile layout often preserves the visual stacking of the desktop DOM rather than the priority order of the user's task, which is a design decision the agent cannot make because nobody stated it.

The meta-point to land: every one of these is invisible in a quick glance at a rendered desktop view, which is the only review most people do. That is the argument for the structured review on the previous slide and the evidence-based parity check on the next one. It is also the argument for putting the recurring rules — token discipline, component reuse, required states — into the harness file so they stop depending on your memory.

Narration for this slide

Conversions fail in predictable ways, and predictable means checkable. Spacing drift: everything relaxes a little until your dense design becomes comfortable and ordinary. Fake data: invented copy and prices that read as plausible — which is exactly what makes them dangerous. Missing states: the screenshot showed the happy path, so that is all that got built. System drift: lookalike components and hardcoded values instead of your actual system. And responsive drift: mobile stacks things in code order, not in the order your user needs them. None of these announce themselves. The output looks finished. That is precisely why the next step is a parity check rather than a glance.

Slide 9 of 1316:9

The parity check: side-by-side screenshots as evidence

Do not ask whether it looks right. Ask the agent to produce the comparison, then judge the evidence yourself.

  • Agent captures screenshots of the built section at desktop and mobile widths
  • Reference and implementation go side by side — mismatches listed, with likely causes
  • Compare structure and intent, not just pixels: hierarchy, density, states, task order, system fit
  • Separate objective mismatches from polish opinions before sending anything back
  • Keep the QA notes with the reference and annotation, in the project
Parity check prompt
Capture screenshots of the built section at 1440px and 390px.
Place them beside the reference images.

Report, in order:
1. structural mismatches (regions, hierarchy, reading order)
2. spacing and density differences, with the values involved
3. states present in the reference or brief but missing in the build
4. tokens or components used that are not from the system

For each item: likely cause, and the smallest safe fix.
Do not change any code yet.

Parity is evidence for your decision, not the decision itself. A clean comparison still goes through your judgment before it ships anywhere.

Slide notes

The parity check converts review from impression to evidence. Anthropic's guidance for visual work is blunt about this pattern: paste the design, implement it, take a screenshot of the result, compare it to the original, list the differences, and fix them. With the browser connection from Module 2 — or a screenshot script in the project — the agent can do the capture and comparison itself, which means the evidence costs you a request rather than an afternoon.

The prompt on the slide encodes three habits worth naming. First, it asks for capture at two widths, because responsive drift never shows up in a single desktop screenshot. Second, it orders the report by what matters: structure before spacing before polish, and it explicitly asks about missing states and non-system tokens, which a purely visual diff would not surface. Third, it ends with do not change any code yet — the agent reports, the designer prioritises, and only then does a fix round start. Letting the agent fix everything it finds, unprioritised, is how a tidy section gains twenty unrequested changes.

Keep the output. The reference, the annotation, and the QA report together form a small packet that lives in the project, and the published screenshot-to-implementation workflow this slide draws on treats that packet as the deliverable alongside the code: the next run, by you or by someone else, starts from recorded decisions instead of rediscovering them.

Narration for this slide

Here is how you check the result without trusting your eyes at five in the afternoon. Ask the agent to capture screenshots of what it built — desktop and mobile — put them beside the reference, and report the mismatches in order: structure first, then spacing, then missing states, then anything that is not from your system. For each one, the likely cause and the smallest safe fix — and no code changes yet. You read the evidence, separate real mismatches from matters of taste, and decide what goes back. Parity output is evidence for your decision. It is not the decision. That stays with you.

Slide 10 of 1316:9

Iterating: feedback the agent can act on

Revision quality depends on the feedback, not on the agent trying harder. Name the mismatch, the user impact, and the direction.

  • Weak: "make it less generic", "tighten it up", "closer to the mockup please"
  • Strong: "the invoice rows are 56px in the build and 40px in the reference — match the reference density"
  • Strong: "at 390px show the plan summary before the payment method; the task order matters more than the visual order"
  • After two failed corrections on the same issue: stop, /clear, and rewrite the brief with what you learned
  • Use the rewind checkpoint when a round makes things worse — every edit is reversible

If the same correction keeps appearing across tasks, it has earned a permanent place in CLAUDE.md or DESIGN.md — stop typing it.

Slide notes

Iteration is where most of the session time goes, so the quality of the feedback determines the cost of the workflow. The weak revision prompts on the slide fail for the same reason the vague brief failed: they name a feeling, not a mismatch. The strong ones name what is different, why it matters to the user, and what direction to move — which is exactly the kind of critique designers already give human collaborators, just written down with values where values exist.

Two mechanical habits keep iteration from degrading. The first is the two-corrections rule from Anthropic's best-practice guidance: if you have corrected the same issue more than twice in a session, the context is cluttered with failed approaches; clear the session and start fresh with a better brief that incorporates what you learned. Designers can think of /clear as a new artboard. The second is the checkpoint system: Claude Code snapshots files before editing them, so a round that made things worse can be rewound rather than argued with — Escape twice or the rewind control in VS Code.

Close the loop with the harness point. Feedback that recurs across different tasks — stop hardcoding colours, always include the empty state, never invent copy — is not feedback anymore, it is a rule, and rules belong in CLAUDE.md or DESIGN.md where every future run reads them. That observation is also the bridge to the design-systems and automation modules later in the course.

Narration for this slide

Iteration is where the time goes, so make the feedback worth acting on. Make it less generic gives the agent nothing. The invoice rows are fifty-six pixels in the build and forty in the reference — match the reference density: that, it can act on. Name the mismatch, the user impact, and the direction. Two more habits: if you have corrected the same thing twice and it is still wrong, stop patching — clear the session and rewrite the brief with what you learned. And if a round makes things worse, rewind it; every edit is checkpointed. Finally, feedback you keep repeating across tasks is not feedback. It is a rule. Put it in your CLAUDE.md and stop typing it.

Slide 11 of 1316:9

Keep the packet in the project

The screenshots, the annotation, and the QA notes are not scraps — they are the context the next run would otherwise have to rediscover.

  • Reference screenshots at the widths that matter, named so they can be found again
  • The annotation file: regions, states, component map, and the unknowns you flagged
  • The QA report from the parity check, including what was deliberately left unresolved
  • Stored in the repository where the agent can read them — not in a chat history or your downloads folder
Screenshot implementation packet
examples/screenshots/
  billing-reference-desktop.png
  billing-reference-mobile.png
  billing-reference-annotations.md
  billing-unknowns.md
agent-workflows/screenshot-implementation/
  brief.md
  component-map.md
  qa-report.md

A conversion that leaves a packet behind makes the next conversion cheaper. One that leaves nothing behind starts from zero every time.

Slide notes

This slide is short but it changes the economics of the workflow. The first conversion of a screen costs real effort: writing the brief, correcting the annotation, running the parity check, deciding what was acceptable to leave unresolved. If those artifacts evaporate into a chat history, the second conversion — a revision next sprint, the same pattern on a sibling screen, a colleague picking up the work — pays the full cost again, and may repeat the same mistakes.

The packet is deliberately boring: the reference images, an annotations file recording how the screenshot was interpreted, an unknowns file recording what the screenshot could not define, the brief, the component map, and the QA report. The exact folder names matter less than two properties: the files live in the repository where any future agent run can read them with an @ mention, and they record decisions rather than just outputs — including the things deliberately not fixed, so nobody refixes or relitigates them by accident.

This is also the first appearance of a theme that grows through the rest of the course: the difference between a one-off win and a repeatable capability is almost always a small amount of recorded context. Module 6 turns this packet idea into skills and scheduled runs; here it is just a folder and a habit.

Narration for this slide

One habit that quietly changes the economics of all this: keep the packet. The reference screenshots, the annotation that recorded how you interpreted them, the unknowns you flagged, the QA report from the parity check — put them in the project, in folders the agent can read, not in your chat history or your downloads. The first conversion of a screen costs real effort. Whether the second one is cheap depends entirely on whether that context survived. A conversion that leaves a packet behind makes the next run faster and more consistent. One that leaves nothing starts from zero, every single time.

Slide 12 of 1316:9

Exercise: convert one section of your own design

Use the project you opened in Module 2 and a design you actually made. One section, the full pipeline, no shortcuts.

  • Pick one bounded section from a current design — a card, a panel, a hero, a settings group
  • Export or screenshot it, and gather the real copy, tokens, and any components it should reuse
  • Write the conversion brief: constraints, components, required states, what may not be invented, review criteria
  • Ask for the annotation first; correct at least one thing in it before approving generation
  • Run the parity check, send back one round of named-mismatch feedback, then decide: accept, hold, or another round

Keep the brief, the annotation, and the QA report. Module 4 starts from this section and grows it into a multi-screen prototype.

Slide notes

The exercise runs the entire pipeline once, on real work, at the smallest scale that is still honest. Steer participants away from two failure modes when choosing the section: too big — a whole page or a whole flow buries them in review and the exercise becomes about stamina — and too synthetic, because converting a tutorial mockup teaches nothing about their own tokens, their own components, or their own product rules.

The step people will be tempted to skip is correcting the annotation, especially if the agent's first reading looks broadly right. Insist on it: finding at least one thing to correct — a hierarchy call, a state it missed, a component mapping — is what makes the gate real rather than ceremonial, and it is the moment most participants discover the agent had quietly misread something they would otherwise have found three rounds later. The other discipline is limiting iteration to one named-mismatch round within the exercise; the goal is to practise the shape of the loop, not to reach perfection today.

If participants kept the planning page from the Agentic Design Fundamentals course or the Module 2 exercise from this course, this is the moment those connect: same project, now with code coming back. Collect or discuss the QA reports if running this live — the recurring mismatches across a group are a preview of what belongs in a shared harness, which is where the design-systems module picks up.

Narration for this slide

Now it is your turn, on your own work. Pick one bounded section from a design you actually made — a card, a panel, a hero. Screenshot it, gather the real copy and the components it should reuse, and write the brief: constraints, required states, what the agent may not invent, and what you will check at the end. Ask for the annotation first, and correct at least one thing in it before you approve — that correction is the whole point of the gate. Generate, run the parity check, send back one round of named mismatches, then decide: accept, hold, or go again. Keep everything you produced. Module 4 grows this exact section into a prototype.

Slide 13 of 1316:9

Summary, and what comes next

  • The agent reads more than prompts: screenshots, project files, tokens, URLs, and real content
  • A screenshot is evidence to interpret, not a specification — visual traits can be inferred, product rules must be supplied
  • Brief with constraints and decisions, ask for the annotation before code, and correct it at the gate
  • Review structure, tokens, components, spacing, and states — then demand parity evidence, not impressions
  • Feedback names the mismatch; recurring feedback becomes a harness rule; the packet stays in the project

Module 4 scales this from one section to a working prototype: multi-screen flows, realistic data, and the discipline of staying honest about what a prototype is.

Slide notes

Recap by walking the pipeline rather than the slides: evidence in, structure analysis, the annotation gate, generation against the system, the parity check, designer review, and a human decision to accept — with the two cheap loops, correcting the reading before code exists and sending named mismatches back as a new run. The skills that made it work are all designer skills: supplying interpretation, writing constraints, reading structure, and judging evidence.

Be explicit about what was deliberately small in this module. One section, one file or one component, one round of iteration. That boundedness is what made every step reviewable, and it is the unit the next module composes from: a prototype is not one giant prompt, it is a sequence of runs shaped exactly like the one practised here, plus realistic data and navigation between screens, plus honesty about the line between prototype and production.

If participants finished the exercise, their section, brief, annotation, and QA packet are the starting materials for Module 4's first activity — say so, so the artifacts do not get discarded as homework. If they did not finish, the minimum to carry forward is the chosen section and the screenshot; the rest can be rebuilt in the first part of the next module.

Narration for this slide

Let's close. The input was never the problem — you already had it. The agent can read your screenshots, your files, your tokens, and your real content; what it cannot do is invent the product rules a screenshot does not carry, so you supply the interpretation. Brief with constraints, get the annotation before any code, and correct it while it is cheap. Review structure, tokens, spacing, and states, then ask for parity evidence instead of trusting a glance. Name your mismatches, promote recurring feedback into your harness, and keep the packet. In Module 4 we scale this from one section to a working prototype — multiple screens, realistic data, and the honesty about what a prototype is. See you there.

Module transcript
Module 3, narrated slide by slide

Slide 1From Mockup to Code

Welcome to Module 3 — the one this course is named for. You already have the input: a mockup, a screenshot, a reference you admire. This module is about handing that artifact to Claude Code and getting back working front-end code that respects the design. We will cover what the agent can actually read, how to brief the conversion so constraints do the work instead of adjectives, how to review the output as a designer without writing code yourself, and how to run a parity check that gives you evidence instead of a feeling. Let's start with the inputs.

Slide 2What the agent can read

First, what can the agent actually read? More than you might think. You can paste a screenshot straight into the prompt — control-V in the terminal, not command-V — drag an image in, or point at a file by path. You can reference files already in the project: existing components, token files, stylesheets. You can give it design rules in your CLAUDE.md or a DESIGN.md. You can point it at a URL or a local preview. And you can paste real copy and real data, so it never has to make content up. The pattern is simple: the more evidence you supply, the less it fills the gaps with the most generic thing it knows.

Slide 3A screenshot is evidence, not a specification

Before we brief anything, one idea that carries the whole module: a screenshot is evidence, not a specification. It shows hierarchy, density, rhythm, and copy beautifully. It shows nothing about responsive behaviour, interaction states, accessibility, or the product rules behind the layout. So separate two kinds of information. Visual traits — spacing, hierarchy, density — the agent can read from the image. Product rules — who can do what, what needs confirmation, what happens when data is missing — it must never invent. Your job is the interpretation layer around the image: what matters, what can change, what must not change. That interpretation is where the design survives the conversion.

Slide 4Briefing the conversion: constraints beat adjectives

Here is the same kind of request run two ways, and this comparison comes from runs that were actually executed, not imagined. The vague version — recreate this screenshot, make it look modern — comes back polished and useless: right shapes, invented content, its own colours, dozens of hardcoded values. The constrained version names the user job, the components and tokens to reuse, the states that must exist, and what the agent is not allowed to invent. It comes back with a plan first and needs fewer, sharper corrections. The principle: whatever you leave unstated, the agent fills with the most common answer it knows. Constraints beat adjectives, every time.

Slide 5The mockup-to-code pipeline

Here is the whole workflow in one picture. You supply the reference — the screenshot or mockup — plus the things the image cannot carry: tokens, components, real content. The agent analyses the structure and describes what it sees: regions, hierarchy, components, states, unknowns. You correct that reading at the annotation gate, while it is still words and costs nothing. Then the agent generates the section against your existing components, runs a parity check with side-by-side screenshots, and you review. Mismatches go back as a new run; the decision to accept stays with you. The agent does the analysis and the evidence. You hold the gates.

Slide 6First run: a single section from screenshot to component

Let's trace a first run. Keep it to one section — a hero, a card, a settings panel — not a whole page. The brief attaches the reference image, asks the agent to describe what it sees before writing any code, and sets the rules: use the values from the reference and list them, include hover and focus states, use the copy I pasted, do not invent any. Then the closing instruction that matters most: after building, take a screenshot, compare it to the reference, and list every difference. The output is one file you open in a browser. Small enough to review completely, real enough to teach you the entire loop.

Slide 7Reading the output as a designer

Now the part people assume requires an engineering degree: reviewing the output. It does not. It requires five questions, asked in the same order every time. Structure: does the markup mirror the design's hierarchy, or is it one big stack of boxes? Tokens: are colours and spacing pulled from your system, or hardcoded? Components: did it reuse what exists, or invent lookalikes? Spacing and density: open it next to the reference — has everything become a little more comfortable than you designed? And states: can you actually find empty, loading, error, and focus, or only the happy path? That is pattern recognition, not programming. You can do it this week.

Slide 8Where conversions fail

Conversions fail in predictable ways, and predictable means checkable. Spacing drift: everything relaxes a little until your dense design becomes comfortable and ordinary. Fake data: invented copy and prices that read as plausible — which is exactly what makes them dangerous. Missing states: the screenshot showed the happy path, so that is all that got built. System drift: lookalike components and hardcoded values instead of your actual system. And responsive drift: mobile stacks things in code order, not in the order your user needs them. None of these announce themselves. The output looks finished. That is precisely why the next step is a parity check rather than a glance.

Slide 9The parity check: side-by-side screenshots as evidence

Here is how you check the result without trusting your eyes at five in the afternoon. Ask the agent to capture screenshots of what it built — desktop and mobile — put them beside the reference, and report the mismatches in order: structure first, then spacing, then missing states, then anything that is not from your system. For each one, the likely cause and the smallest safe fix — and no code changes yet. You read the evidence, separate real mismatches from matters of taste, and decide what goes back. Parity output is evidence for your decision. It is not the decision. That stays with you.

Slide 10Iterating: feedback the agent can act on

Iteration is where the time goes, so make the feedback worth acting on. Make it less generic gives the agent nothing. The invoice rows are fifty-six pixels in the build and forty in the reference — match the reference density: that, it can act on. Name the mismatch, the user impact, and the direction. Two more habits: if you have corrected the same thing twice and it is still wrong, stop patching — clear the session and rewrite the brief with what you learned. And if a round makes things worse, rewind it; every edit is checkpointed. Finally, feedback you keep repeating across tasks is not feedback. It is a rule. Put it in your CLAUDE.md and stop typing it.

Slide 11Keep the packet in the project

One habit that quietly changes the economics of all this: keep the packet. The reference screenshots, the annotation that recorded how you interpreted them, the unknowns you flagged, the QA report from the parity check — put them in the project, in folders the agent can read, not in your chat history or your downloads. The first conversion of a screen costs real effort. Whether the second one is cheap depends entirely on whether that context survived. A conversion that leaves a packet behind makes the next run faster and more consistent. One that leaves nothing starts from zero, every single time.

Slide 12Exercise: convert one section of your own design

Now it is your turn, on your own work. Pick one bounded section from a design you actually made — a card, a panel, a hero. Screenshot it, gather the real copy and the components it should reuse, and write the brief: constraints, required states, what the agent may not invent, and what you will check at the end. Ask for the annotation first, and correct at least one thing in it before you approve — that correction is the whole point of the gate. Generate, run the parity check, send back one round of named mismatches, then decide: accept, hold, or go again. Keep everything you produced. Module 4 grows this exact section into a prototype.

Slide 13Summary, and what comes next

Let's close. The input was never the problem — you already had it. The agent can read your screenshots, your files, your tokens, and your real content; what it cannot do is invent the product rules a screenshot does not carry, so you supply the interpretation. Brief with constraints, get the annotation before any code, and correct it while it is cheap. Review structure, tokens, spacing, and states, then ask for parity evidence instead of trusting a glance. Name your mismatches, promote recurring feedback into your harness, and keep the packet. In Module 4 we scale this from one section to a working prototype — multiple screens, realistic data, and the honesty about what a prototype is. See you there.