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:
- Client name
- Primary color (hex) — main brand color for CTAs, headers
- Secondary color (hex) — supporting accent
- Background color (hex) — page/card background (default:
#FFFFFF) - Text color (hex) — primary body text (default:
#1A1A1A) - Heading font — font family for headings (default: system sans-serif)
- Body font — font family for body text (default: system sans-serif)
- Logo — file path or URL (optional)
- 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
- Ask for the client's Figma file URL
- Extract the fileKey and nodeId from the URL
- 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 codeget_screenshot— capture visual reference for style matching
- Parse the extracted variables into the Client Brand Token format
- Confirm with the user before proceeding — show the extracted tokens and ask if they look right
Path C: Website brand extraction
- Ask for the client's website URL
- Use WebFetch to get the page content
- Look for:
- CSS custom properties and color definitions
- Font imports (Google Fonts, Adobe Fonts,
@font-facedeclarations) - Meta theme-color tags
- Dominant colors in the stylesheet
- Parse into the Client Brand Token format
- 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-guideto 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:
- Replace the Tailwind config colors with the client brand tokens instead of the default tokens
- Replace font imports with the client's fonts (add Google Fonts link if applicable)
- Replace the
.apex-headingstyle with the client's heading style (or omit if not applicable) - 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
| Role | Hex | Status |
|---|---|---|
| Primary | #006B8F | Confirmed |
| Secondary | #4CAF8A | Confirmed |
| Background | #FFFFFF | Confirmed |
| Surface | #F0F6F9 | Confirmed |
| Text | #1C2B36 | Confirmed |
| Text Secondary | #5A7382 | Confirmed |
| Accent | #E8F4F8 | Confirmed |
| Border | #C9DDE6 | Confirmed |
Typography
| Role | Font Family | Weight | Notes |
|---|---|---|---|
| Heading | Merriweather | 700 | Serif, pulled from Google Fonts import |
| Body | Inter | 400/500 | Sans-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.
| Element | Token applied |
|---|---|
| Card background | Surface #F0F6F9 |
| Card border | Border #C9DDE6 |
| "Book Now" btn | Primary #006B8F |
| Availability tag | Secondary #4CAF8A |
| Provider name | Heading font, Text #1C2B36 |
| Distance/specialty | Text 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
#4CAF8Awith 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: 3pxon all interactive elements - ARIA labels — search form has
role="search", slot group hasaria-label, selected slot usesaria-pressed - Color contrast — Primary
#006B8Fon white = 5.8:1 ✓; Text#1C2B36on 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-guideto help her choose the right tool.