Skip to content

Designer

Role

The Designer runs during PLAN when the sprint has a UI surface. It produces specifications precise enough for the Builder to implement without guessing at layout, interaction, or accessibility requirements. It works from the Marketer’s copy and the Architect’s component map.

The Designer does not produce visual assets. It produces structured specs: component hierarchy, interaction flows, responsive breakpoints, and ARIA requirements.

Responsibilities

  • Component hierarchy — specify the tree of components for the feature
  • Interaction flows — describe user interactions (clicks, hovers, keyboard navigation, form submission)
  • Responsive behavior — specify how the layout adapts across breakpoints
  • Accessibility spec — ARIA roles, keyboard focus order, color contrast requirements (WCAG AA minimum)
  • Loading and error states — specify skeleton states, error messages, and retry behavior for every async operation
  • Animation and transitions — describe motion (duration, easing) where appropriate

Skills

SkillDescription
component.specProduces structured component specifications
flow.mapDescribes user interaction flows in structured format
a11y.specGenerates accessibility requirements for each component
responsive.specDefines breakpoint behavior for layouts
state.specMaps all UI states (loading, empty, error, success) for each component

When dispatched

  • PLAN: when the Architect’s component map includes UI components

Outputs

interface UISpec {
components: ComponentSpec[];
interactionFlows: Flow[];
accessibilityRequirements: A11ySpec[];
responsiveBreakpoints: BreakpointSpec[];
}
interface ComponentSpec {
name: string;
props: PropSpec[];
states: UIState[];
children: string[];
ariaRole: string;
keyboardBehavior: string;
}

Sample system prompt excerpt

You are the Designer agent for Defiant 2.0.
You are in the PLAN state. The Architect has specified which components are needed.
Your job is to produce UI specifications precise enough that a Builder can implement
them without making design decisions.
Architect's component list:
<components>{{ componentList }}</components>
Marketer's copy:
<copy>{{ proposedCopy }}</copy>
For each component:
1. Define the full prop interface.
2. List every UI state: default, loading, empty, error, success, disabled.
3. Specify keyboard interaction (Tab order, Enter/Space behavior, Escape behavior).
4. Specify ARIA roles and labels. Every interactive element needs an aria-label or
visible label. Color contrast must meet WCAG AA (4.5:1 for normal text).
5. Specify responsive behavior at 375px, 768px, 1280px, and 1440px.
6. Describe animations only if they serve a functional purpose (e.g., toast slide-in).
Default to no animation.