Skip to main content
Design/client-prototype

Client Prototype

You need a prototype aligned to a client brand.

Use this when pairing with a client and you need a prototype that uses the client company's brand identity instead of the default brand. This skill handles brand discovery first, then builds the prototype.

Process

Phase 1: Brand discovery

Ask the user:

How should I get the client's brand information? A) I'll tell you — I'll provide the colors, fonts, and style details B) Pull from Figma — extract brand tokens from a client Figma file C) Pull from their website — extract colors and fonts from the client's site


Path A: Interactive brand gathering

Walk through the questionnaire at reference/brand-gathering-template.md. At minimum, gather:

  1. Client name
  2. Primary color (hex) — main brand color for CTAs, headers
  3. Secondary color (hex) — supporting accent
  4. Background color (hex) — page/card background (default: #FFFFFF)
  5. Text color (hex) — primary body text (default: #1A1A1A)
  6. Heading font — font family for headings (default: system sans-serif)
  7. Body font — font family for body text (default: system sans-serif)
  8. Logo — file path or URL (optional)
  9. Style notes — rounded vs. sharp corners, dense vs. spacious, any other visual preferences

Store the gathered info as a Client Brand Token block (see format below).

Path B: Figma brand extraction

  1. Ask for the client's Figma file URL
  2. Extract the fileKey and nodeId from the URL
  3. Use Figma MCP tools:
    • get_variable_defs (with the fileKey and nodeId) — extract design tokens (colors, spacing, typography)
    • get_design_context — understand component patterns and code
    • get_screenshot — capture visual reference for style matching
  4. Parse the extracted variables into the Client Brand Token format
  5. Confirm with the user before proceeding — show the extracted tokens and ask if they look right

Path C: Website brand extraction

  1. Ask for the client's website URL
  2. Use WebFetch to get the page content
  3. Look for:
    • CSS custom properties and color definitions
    • Font imports (Google Fonts, Adobe Fonts, @font-face declarations)
    • Meta theme-color tags
    • Dominant colors in the stylesheet
  4. Parse into the Client Brand Token format
  5. Confirm with the user — website extraction is approximate, so verify the values

Client Brand Token format

After gathering brand info from any source, structure it as:

## Client Brand Tokens: (Client Name)

### Colors
| Role            | Hex       |
|----------------|-----------|
| Primary         | (hex)     |
| Secondary       | (hex)     |
| Background      | (hex)     |
| Surface         | (hex)     |
| Text            | (hex)     |
| Text Secondary  | (hex)     |
| Accent          | (hex)     |
| Border          | (hex)     |

### Typography
| Role     | Font Family | Weight | Notes      |
|----------|-------------|--------|------------|
| Heading  | (name)      | (wt)   | (style)    |
| Body     | (name)      | (wt)   | (style)    |

### Style notes
- Corner radius: (sharp / slightly rounded / rounded / pill)
- Spacing density: (compact / default / spacious)
- Other: (any additional style notes)

Fallback behavior: If the user cannot provide complete brand info, use these sensible defaults and clearly mark which tokens are assumed vs. confirmed:

  • Background: #FFFFFF
  • Surface: #F8F9FA
  • Text: #1A1A1A
  • Text Secondary: #6B7280
  • Border: #E5E7EB
  • Fonts: system sans-serif (-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif)
  • Corner radius: 8px
  • Spacing: default

Phase 2: Prototype generation

Consider the builder: If the client team includes non-technical stakeholders who want to iterate on prototypes independently, consider recommending a prompt-to-app tool (Lovable, v0, bolt.new) instead of or alongside this skill. Those tools let PMs and designers build and iterate without developer pairing. Use /ai-prototype-guide to help them choose the right one. This skill is best when Kate is pairing directly and needs client branding applied to an HTML prototype.

Ask the user:

Which prototype approach do you want? A) HTML/CSS prototype — interactive, runs in browser with live preview B) Figma design spec — design specifications using client brand tokens

HTML prototype

Follow the same approach as /artium-prototype (HTML path), but:

  1. Replace the Tailwind config colors with the client brand tokens instead of the default tokens
  2. Replace font imports with the client's fonts (add Google Fonts link if applicable)
  3. Replace the .apex-heading style with the client's heading style (or omit if not applicable)
  4. Use the client's color roles for components: primary for CTAs, secondary for accents, etc.

Generate ./prototypes/(client-name)-(prototype-name)/index.html.

Figma design spec

Follow the same approach as /artium-prototype (Figma path), but use client brand tokens instead of the default tokens for all specifications.

Accessible component checklist

After generating any prototype (HTML or Figma spec), verify:

  • Semantic HTML -- buttons use <button>, links use <a>, navigation uses <nav>, main content uses <main>
  • Keyboard navigation -- all interactive elements reachable via tab, activatable via Enter/Space
  • Focus indicators -- visible focus styles on all interactive elements (don't remove browser defaults without replacing them)
  • ARIA labels -- custom components have accessible names (aria-label or aria-labelledby). Icon-only buttons have text alternatives.
  • Color contrast -- text meets 4.5:1 ratio, UI components meet 3:1 ratio against background
  • Form labels -- all inputs have visible, associated labels (not just placeholders)
  • Skip navigation -- if the prototype has repeated navigation, include a skip link to main content
  • Heading hierarchy -- h1-h6 levels follow logical order without skipping

This checklist applies to communication prototypes, not production code. The goal is ensuring the prototype demonstrates accessible patterns the engineering team should implement.


Output location

All client prototypes go in ./prototypes/(client-name)-(prototype-name)/. Create this directory if it doesn't exist.

Example Output

Input

  • Client: Meridian Health Partners, a mid-sized regional health system
  • Prototype request: Patient appointment scheduling flow — search for a provider, select a time slot, and confirm booking
  • Brand path: C (website extraction from meridianhealth.org)
  • Prototype type: HTML/CSS prototype

Output

Client Brand Tokens: Meridian Health Partners

Extracted from meridianhealth.org — confirmed by user

Colors

RoleHexStatus
Primary#006B8FConfirmed
Secondary#4CAF8AConfirmed
Background#FFFFFFConfirmed
Surface#F0F6F9Confirmed
Text#1C2B36Confirmed
Text Secondary#5A7382Confirmed
Accent#E8F4F8Confirmed
Border#C9DDE6Confirmed

Typography

RoleFont FamilyWeightNotes
HeadingMerriweather700Serif, pulled from Google Fonts import
BodyInter400/500Sans-serif, pulled from Google Fonts import

Style notes

  • Corner radius: slightly rounded (6px buttons, 8px cards)
  • Spacing density: spacious
  • Other: Strong trust signals expected (badges, icons); muted teal palette throughout

HTML Prototype: Patient Appointment Scheduling

Output file: ./prototypes/meridian-appointment-scheduling/index.html


Key sections generated:

1. Provider Search

<main id="main-content">
  <section class="search-hero">
    <h1>Find a Provider</h1>
    <form role="search" aria-label="Provider search">
      <label for="specialty">Specialty or condition</label>
      <input id="specialty" type="text" placeholder="e.g., Cardiology, Annual Exam" />
      <label for="location">Location or ZIP code</label>
      <input id="location" type="text" placeholder="e.g., 94103" />
      <button type="submit" class="btn-primary">Search Providers</button>
    </form>
  </section>

Applied tokens: #006B8F for the Search button, #F0F6F9 surface for the hero band, Merriweather h1.


2. Provider Results Card

Each card shows: provider photo placeholder, name, specialty, distance, next available slot, and a "Book Now" CTA.

ElementToken applied
Card backgroundSurface #F0F6F9
Card borderBorder #C9DDE6
"Book Now" btnPrimary #006B8F
Availability tagSecondary #4CAF8A
Provider nameHeading font, Text #1C2B36
Distance/specialtyText Secondary #5A7382

3. Time Slot Selector

A week-view calendar strip with available 30-minute slots rendered as toggle buttons.

<fieldset>
  <legend>Select an appointment time</legend>
  <div class="slot-grid" role="group" aria-label="Available times for Dr. Patel">
    <button class="slot available" aria-pressed="false">9:00 AM</button>
    <button class="slot available" aria-pressed="false">10:30 AM</button>
    <button class="slot unavailable" disabled aria-disabled="true">12:00 PM</button>
    <button class="slot available" aria-pressed="true" aria-label="2:00 PM, selected">2:00 PM</button>
  </div>
</fieldset>

Selected state uses #006B8F fill with white text (contrast ratio 5.8:1 ✓).


4. Booking Confirmation Screen

  • Summary card: provider, date/time, visit type, location
  • "Confirm Appointment" primary button + "Back" ghost button
  • Inline success banner on submit using Secondary #4CAF8A with icon + text alternative

Accessible Component Checklist

  • Semantic HTML<main>, <nav>, <form>, <fieldset>, <legend> used throughout
  • Keyboard navigation — slot buttons, form inputs, and CTAs all tab-reachable; Enter/Space activate
  • Focus indicators — custom outline: 2px solid #006B8F; outline-offset: 3px on all interactive elements
  • ARIA labels — search form has role="search", slot group has aria-label, selected slot uses aria-pressed
  • Color contrast — Primary #006B8F on white = 5.8:1 ✓; Text #1C2B36 on white = 14.2:1 ✓
  • Form labels — all inputs have explicit <label for> associations; placeholders are supplementary only
  • Skip navigation<a href="#main-content" class="skip-link">Skip to main content</a> at top of <body>
  • Heading hierarchy — h1 (Find a Provider) → h2 (Search Results) → h3 (provider names) — no levels skipped

Note for stakeholders: The Meridian team's clinical operations lead mentioned wanting to iterate on the slot-selection UI without developer pairing. Consider pointing her to v0.dev with these brand tokens pre-loaded — run /ai-prototype-guide to help her choose the right tool.