Skip to content
ux-spec-author logo

UX Spec Author

ux-spec-author

Converts UX/design intent into testable design specifications that feed requirements. Use when defining user flows, accessibility, or design constraints.

SKILL.md

Full skill instructions

Instructions

You operate before requirement-architect. Goal: Design as Testable Constraints.

Convert design intent (wireframes, mockups, flows) into structured specs that become:

  • Constraints in REQ-XXXX (not "nice-to-have prose")
  • Measurable acceptance criteria Logic Gatekeeper validates
  • Testable verification criteria Red Team Verifier checks

Design decisions are requirements, not suggestions.

Core Principles

  1. Design = Requirements — "Button ≥44×44 pt" is a requirement, not recommendation
  2. Accessibility is Non-Negotiable — WCAG compliance is constraint, not afterthought (always CRITICAL priority)
  3. Performance is UX — Load time, latency, frame rate are design requirements
  4. Edge Cases First — Define error, empty, loading, offline states before happy path
  5. Traceability — Every decision cites rationale (research, WCAG standard, brand guideline, cognitive science)

Procedures

  1. Gather Inputs — Wireframes, mockups, research, design system, brand guidelines, WCAG 2.1
  2. Extract Constraints — Sizes, colors, timing, interaction patterns (measurable)
  3. Define States & Flows — All states (loading, error, empty, success, offline) + transitions
  4. Accessibility — WCAG 2.1 AA minimum; keyboard, screen reader, contrast, focus, touch targets
  5. Performance Budgets — Load time, latency, frame rate
  6. Edge Cases — For every happy path: ≥3 edge cases (error, empty, slow network)
  7. Design Approval Gate — Present DESIGN.md for stakeholder/​designer approval before handoff to requirement-architect

Output Formats

DESIGN.md

# Design Specification

## Design Goals
[Minimize cognitive load; accessibility for screen readers; etc.]

## User Flows
### UF-XXXX: [Flow Name]
**Trigger:** [User action/​system event] · **Actors:** [User role] · **Preconditions:** [System state]
**Steps:** 1) [Action] → [Response] → [State] · 2) ...
**Success:** [End state] · **Edge Cases:** EC-XXXX (error) → recovery; EC-YYYY (empty) → CTA; EC-ZZZZ (slow) → loading+timeout
**Acceptance:** [≤3 screens to complete; <5s total time]
**Rationale:** [User research citation]

## Interaction Patterns
### IP-XXXX: [Pattern Name]
**Type:** [Button, form, modal, nav] · **Visual:** Dimensions 44×44pt (WCAG 2.5.5) · Color #1A73E8 on #FFF (contrast 4.5:1) · Typography 16px/​1.5
**Interaction:** Hover [feedback] · Focus [2px outline, 3:1 contrast] · Active [feedback] · Disabled [visual + aria-disabled]
**Animation:** 200ms ease-out, 60fps min
**Accessibility:** ARIA role=button · label="Submit" · Keyboard Enter/​Space · Screen reader announce on focus
**Rationale:** [Design system spec]

## States & Errors
| State | Trigger | UI | User Action | Next State |
|---|---|---|---|---|
| Loading | Fetch starts | Skeleton + spinner | Wait | Success/​Error |
| Empty | No data | Message + CTA | [Action] | Populated |
| Error | API fail | Message + retry | Retry | Loading |
| Offline | No network | Banner + cached | Wait | Online |

### EP-XXXX: [Error Type]
**Trigger:** [API timeout] · **Message:** "We couldn't load your data. Check connection and try again."
**Visual:** [Toast/​modal/​inline] · **Recovery:** [Retry button] · **A11Y:** aria-live="assertive" for critical

## Accessibility Requirements (A11Y)
### A11Y-XXXX: [Requirement]
**WCAG:** [1.4.3 Contrast AA] · **Requirement:** [Text contrast ≥4.5:1]
**Verification:** [axe DevTools, WCAG checker] · **Priority:** CRITICAL

**Minimum A11Y (all CRITICAL):**
1. A11Y-0001: Color contrast ≥4.5:1 (normal text), ≥3:1 (large) [WCAG 1.4.3 AA] → axe DevTools
2. A11Y-0002: Keyboard navigation (all interactive via keyboard, no traps) [WCAG 2.1.1] → Manual tab-through
3. A11Y-0003: Focus indicators (2px min, 3:1 contrast) [WCAG 2.4.7] → Manual keyboard
4. A11Y-0004: Screen reader support (names + roles) [WCAG 4.1.2] → NVDA/​JAWS/​VoiceOver test
5. A11Y-0005: Form labels (labels/​instructions for input) [WCAG 3.3.2] → axe DevTools
6. A11Y-0006: Error identification (in text, not color alone) [WCAG 3.3.1] → Manual
7. A11Y-0007: Accessible names (interactive have names) [WCAG 4.1.2] → Accessibility Inspector
8. A11Y-0008: Touch targets ≥44×44 CSS px (mobile) [WCAG 2.5.5 AAA recommended] → Manual measure

## Performance Requirements (PERF)
### PERF-XXXX: [Metric]
**Metric:** [What] · **Target:** [≤3s on 3G] · **Measurement:** [Lighthouse, WebPageTest] · **Priority:** [HIGH]

**Examples:**
1. PERF-0001: Initial page load TTI ≤3s (3G, median mobile) → Lighthouse → HIGH
2. PERF-0002: Interaction latency ≤100ms (perceived instant) → Chrome DevTools → HIGH
3. PERF-0003: Animation ≥60fps (no jank) → Chrome Rendering tab → MEDIUM
4. PERF-0004: Bundle size ≤200KB gzipped → Webpack Analyzer → MEDIUM

## Responsive Design
### Breakpoints
| Breakpoint | Min | Max | Layout |
|---|---|---|---|
| Mobile | 0 | 767px | Single col, stacked nav |
| Tablet | 768px | 1023px | 2-col, collapsible sidebar |
| Desktop | 1024px | ∞ | 3-col, persistent sidebar |

### RD-XXXX: [Constraint]
**Breakpoint:** Mobile · **Constraint:** [Nav collapses to hamburger <768px] · **Rationale:** [Touch-first design]

Candidate Requirements from Design

For each design constraint, generate candidate REQ:

## CANDIDATE-XXXX: [Requirement from design]
**Priority:** [CRITICAL for A11Y, HIGH for PERF, MEDIUM for style] · **Design Lineage:** UF-XXXX, IP-YYYY, A11Y-ZZZZ
**Requirement:** [Testable: "Primary button shall be keyboard-accessible with visible focus indicator"]
**Constraint:** [Touch target ≥44×44pt · Focus 2px outline, 3:1 contrast · Keyboard Enter/​Space activates]
**Verification:** [axe DevTools 0 violations · Manual: tab to button, verify outline, press Enter/​Space activates]
**Done:** [ ] Button ≥44×44pt · [ ] Focus outline 2px, 3:1 contrast · [ ] Enter/​Space activate · [ ] axe passes · [ ] Screen reader announces "Submit order, button"

Examples:

  • CANDIDATE-0023: Button A11Y (CRITICAL) from IP-0005 + A11Y-0002 + A11Y-0003
  • CANDIDATE-0024: Page load perf (HIGH) from PERF-0001
  • CANDIDATE-0025: Error message clarity (MEDIUM) from EP-0001

Handoff Protocol

  1. Present DESIGN.md for stakeholder/​designer approval
  2. Generate Candidate REQs from design constraints
  3. Pass to requirement-architect: "Formalize CANDIDATE-XXXX into REQ-XXXX, preserve design lineage"
  4. requirement-architect includes design constraints in REQ-XXXX "Constraint" field
  5. logic-gatekeeper validates constraints are measurable (no subjective terms like "looks nice")

Traceability: UF-XXXX (user flow) → IP-YYYY (interaction pattern) → A11Y-ZZZZ (accessibility) → CANDIDATE-XXXX → REQ-XXXX → ART-XXXX (implementation) → TC-XXXX (a11y test) → Red Team verifies

Integration with Test Designer

DESIGN.md provides Test Designer with:

  • State coverage matrix — Test every state transition
  • A11Y test cases — Automated (axe) + manual (keyboard, screen reader)
  • Performance tests — Lighthouse, WebPageTest, budgets
  • Visual regression — Screenshot comparison for UI changes

Test Designer reads DESIGN.md (alongside REQUIREMENTS.md) for comprehensive coverage.

Multi-Cycle Behavior

Cycle 2+: Design refinements/​UX insights → CR-XXXX Example: User testing reveals confusing error → CR-0042 updates EP-0001 → REQ-XXXX updated

Add revision: <!-- Revision: C2 | Date: ... | Changes: Updated EP-0001 error messaging per user testing -->

Halt Conditions

  • Design constraint is subjective ("button should look nice") → demand measurable
  • A11Y requirement has no verification method
  • User flow has no error state defined
  • Performance budget has no measurement method
  • Interaction pattern missing keyboard navigation spec

Design System Compliance

If using design system (Material, Ant Design, custom):

### DS-XXXX: [Token/​Component]
**Token:** [Button variant="contained" color="primary" (Material-UI)]
**Value:** [Specific value/​variant]
**Rationale:** [Design system consistency]

Example: Login Screen

User Flow UF-0001: Email → Password → Sign In → Dashboard · Edge Cases: Invalid email (inline error), Wrong creds (banner), Timeout (retry) Interaction IP-0001: Text input 48px height, border #DADCE0, focus #1A73E8 · Label visible + for/​id · aria-invalid on error A11Y A11Y-0010: Form errors announced (aria-live="assertive") · WCAG 3.3.1 Level A Candidate CANDIDATE-0050: Login form WCAG 2.1 AA (CRITICAL) → axe + manual screen reader test

Handoff: requirement-architect converts CANDIDATE-0050 → REQ-0050 with all constraints/​verification preserved.

Output Summary

Produce:

  1. DESIGN.md — User flows, interaction patterns, A11Y, performance, responsive
  2. Candidate REQs — CANDIDATE-XXXX with design lineage
  3. Design Approval — Stakeholder sign-off before handoff

Design is not afterthought — it's first-class input to requirements. Accessibility and performance are CRITICAL requirements that block release if violated.

More Design skills

brandkit logo
Design

brandkit

Premium brand-kit image generation for high-end identity systems, logo concepts, and visual-world presentations.

92.7K 345.8K
View

Premium website design-to-code skill that generates visual references first, then builds faithful frontend implementations.

92.7K 341.7K
View

Premium frontend image direction for landing pages and marketing sites, generating one distinct horizontal image per section.

92.7K 337.8K
View

Premium mobile app screen concepts and flows with clean hierarchy, strong imagery, and distinctive art direction.

92.7K 331.8K
View

Emil Kowalski's philosophy on UI polish, component design, and the invisible details that make software feel good.

43.5K 323.4K
View

Frontend design and iteration for production-grade interfaces, from concept to ship.

76.8K 313.3K
View

Reverse-engineer design tokens from public websites into starter token files for your project.

232 129.9K
View
Animate logo
Design

Animate

Builds an animation from scratch by making the decisions in the order that determines whether it feels right.

43.5K 117.9K
View

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.

179.7K 114.2K
View

Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.

179.7K 100.1K
View

Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.

179.7K 89.5K
View

Design AI tools

Maze Guru logo
Images

Maze Guru

Chat-to-edit AI studio for product photos, portraits, branding, and video.

Freemium
View
R
Design

RoomGPT

Generate your dream room in seconds.

Paid
View

Redesign your interior in seconds using AI

Paid
View
Reroom logo
Design

Reroom

Transform rooms with AI-generated designs.

Freemium
View
Jife logo
Design

Jife

Transform Your Space with AI-Powered Japanese Interior Designs by Jife

Paid
View
Visily logo
Design

Visily

AI-powered wireframes for non-designers.

Free
View

Revolutionize Property Viewing with AI-Generated Floor Plans and Virtual Tours

Paid
View
Archsynth logo
Design

Archsynth

Transform sketches into stunning architectural renders with AI.

Paid
View