Part 2 · Workflows

User Interface
Development

Building screens people actually want to use. AI can generate layouts fast — but good interfaces come from knowing what experience you're designing toward, not just what pixels look right.

Core Approach

Start with the feeling, not the frame

Describe experience, not layout

Don't open with "make a nav bar with a logo on the left." Open with "this feels like a calm, professional tool — minimal color, generous whitespace." Layout follows feel. Specifying pixels first produces generic work.

One component at a time

Build a button. Get it right. Build a card. Get it right. Assemble them. Asking AI to "build the whole page" produces something that technically works but rarely fits your vision — too many decisions made at once to evaluate clearly.

Evaluate through Norman's lens

After each generation, run three questions: Does it feel right? (visceral). Is it easy to use? (behavioral). Does it say something worth saying? (reflective). AI doesn't know what level matters most for your project — you do.

Norman's Three Levels — UI Evaluation Guide
Visceral

Immediate sensory response to color, type, spacing, motion.

"Does it feel right before they do anything?"
Behavioral

The pleasure (or friction) of actually using it — clicks, flows, feedback.

"Can they figure it out without thinking?"
Reflective

What the interface says about them or the world after they've used it.

"What does this communicate about who made it?"
Tools

Where UI development happens

screenshot placeholder

Claude

Freemium

Best for iterating on components with natural language feedback. Paste your current HTML, describe what's wrong, and get targeted fixes. Excellent at explaining why something looks off and what to change.

Primary — generate & debug
screenshot placeholder

v0 by Vercel

Freemium

Generates React/Tailwind components from prompts with a live preview. Strong starting point for complex UI patterns — forms, data tables, dashboards. Export clean code and adapt it.

Rapid component generation
screenshot placeholder

Bolt.new

Freemium

Full-stack in-browser environment. Good when your UI needs backend logic (forms that submit, data that persists) and you want everything in one place. Generates and runs the project instantly.

Full-stack prototypes
screenshot placeholder

Browser DevTools

Built-in

Your first debugging stop. Inspect any element, live-edit CSS, see what's actually rendering. Open with F12 or right-click → Inspect. Screenshot the Elements panel and paste it to Claude for targeted fixes.

Inspect & live-edit
screenshot placeholder

CodePen

Free

Build and test isolated components in a sandboxed environment without a local setup. Paste AI-generated HTML/CSS/JS here to verify it works before adding it to your project. Easy to share for feedback.

Isolated component testing
screenshot placeholder

Figma

Freemium

Design-side reference. Use it to establish visual intent — color palette, type scale, spacing — before generating code. Screenshots from Figma give AI a concrete visual target to hit, dramatically improving output quality.

Visual spec & reference
Workflow

Seven steps from blank page to working interface

Before any session — write your Design Intent Document (DID)

Paste this at the top of your first AI message. It anchors every generation to your actual project.

Project: [Name of your installation or project] Experience goal: [What should users feel when they interact with this?] Audience: [Who is this for? Age, context, prior experience] Technical constraints: [What are you running this on? Browser? Raspberry Pi? Screen size?] Visual reference: [One sentence describing the aesthetic — dark/minimal, playful/colorful, etc.] What I have so far: [Describe existing components, colors in use, or attach a screenshot]
1

Establish visual intent before writing a line

Decide on three things: the dominant color palette (write the hex codes), the typeface family (serif / sans / mono), and the overall density (spacious / packed / in between). Write these into your DID before generating anything. AI will produce wildly inconsistent results across sessions if you don't anchor it.

2

Generate one component — describe the experience

Start small. Ask for a single card, button, or nav bar. Lead with the experience: "This should feel sturdy and deliberate — not playful. Users should feel confident they're clicking the right thing." Then give the specs: size, colors, behavior.

Paste your DID before the component request in every new session
3

Open in browser, evaluate against Norman's three levels

Open the generated HTML directly in a browser. Ask the three questions: Does it feel right? Is it usable? What does it say? Take notes before you prompt again. Don't iterate until you know what specifically isn't working and why.

4

Screenshot → describe → ask for one change

Take a screenshot of what you see. Paste it into Claude with a specific description: "The button text is too small and looks timid — I want it to feel more decisive. Increase font size to 16px and add 4px letter-spacing." One change per prompt. Don't ask for five things at once.

5

Ask AI to explain any CSS you don't understand before accepting

Before copying code into your project, ask: "Explain what this CSS rule does and why you used it." If you can't explain what's in your own project, you can't debug it when something breaks. AI will often use shorthand or newer properties that aren't universally supported.

6

Compose — then test the full layout

Once individual components work, assemble them. Often things that look fine in isolation fight each other at full page scale — margins collapse, colors clash, hierarchy disappears. Send a screenshot of the full page and ask: "What's competing for attention that shouldn't be?"

7

Document your style decisions in a comment block

Before you finish a session, ask Claude to add a CSS comment block at the top of your file documenting the color palette, type scale, and any design decisions. This becomes the next session's DID and ensures consistency even if you switch tools.

Ask: "Add a comment at the top of my CSS summarizing the design system we've built"
Prompt Patterns

How to phrase it

Pattern 01

Opening a new UI session

I'm building a UI for [project name]. Here's my Design Intent Document: [Paste DID here] Here is my current HTML/CSS file: [Paste code here — or "I'm starting from scratch"] The component I want to build next is [name]. Here's what it needs to do: [function]. Here's how it should feel: [visceral description — e.g., "heavy, deliberate, minimal color"]. Here's who will use it: [audience context]. Please generate this component as a self-contained HTML + CSS block I can paste into my file.
Pasting the DID and existing code every session costs a few seconds but saves many minutes of off-target generation.
Pattern 02

Adjusting visual feel with a screenshot

Here's a screenshot of what I have right now. [attach image] The layout is mostly correct, but the feel is off. Specifically: — The typography feels too thin and digital — I want something warmer and more substantial — The card background blends into the page background — needs more contrast without adding bright color — The spacing between items feels rushed — increase vertical breathing room Please revise the CSS only (don't change the HTML structure). Show me just the changed rules.
Asking for CSS-only changes keeps the HTML stable. "Show me just the changed rules" prevents Claude from rewriting the whole file.
Pattern 03

Debugging a layout problem with DevTools

I'm having a layout issue. Here's what's happening: [describe the visual bug — e.g., "my flex container items wrap at 3 columns but I want 2, and on mobile they overlap instead of stacking"]. Here's the relevant HTML structure: [paste the element] Here's the CSS currently applied (from DevTools Elements panel): [paste computed styles or screenshot] What's causing this and what's the minimal fix? Explain the root cause before giving me the code.
Asking for root cause explanation first prevents cargo-cult fixes. You learn the underlying model, not just a patch.
Common Pitfalls

What goes wrong and why

Prompting with aesthetics references without a DID

"Make it look like Apple.com" produces generic minimalism that has nothing to do with your project's actual intent. AI anchors to the reference image, not your design goals.

Write a DID first. Use reference images only to illustrate specific properties ("the whitespace density I want") — not as an overall target to copy.

Accepting the first generation without evaluating

The first result will almost always work technically. It rarely captures the exact experience you want. Accepting it and moving on locks in a baseline that compounds — every subsequent component inherits its visual DNA.

Evaluate against Norman's three levels before building on top of any generated component. Note what's right and what isn't before prompting again.

Asking for five changes in one prompt

AI will try to make all five changes at once. Some will land, some won't. You won't know which change fixed which problem, and you can't easily undo one without the others.

One change per prompt during visual iteration. When you've stabilized a component, batch structural changes (padding, margin, spacing) in one go — but evaluate behavior changes one at a time.

Skipping mobile and different screen sizes

AI generates for whatever viewport is implied in the prompt. If you don't mention a screen size, you'll often get a desktop layout that breaks completely on mobile — and a lot of MicroArtistry projects run on tablets or embedded displays.

Add your target screen size to the DID. If your project needs to run on a specific display (tablet, 1080p kiosk, phone), state the exact dimensions: "This will run on a 10-inch tablet in landscape at 1280×800."

Pasting generated CSS on top of existing CSS without reconciling

Each generation session produces its own class names and variable definitions. Paste four sessions' outputs into one file and you'll have four competing definitions of --primary-color, duplicate class names, and cascading conflicts no one can untangle.

Maintain one CSS file. At the start of each session, paste your current file and ask Claude to reconcile any new rules with what's already there before appending.