| name | design-handoff |
| description | Use when preparing design specifications for engineering handoff and quality assurance. |
Design-to-Development Handoff
Prepare comprehensive design specifications for engineering. Ensure design fidelity by documenting all states, tokens, interactions, edge cases, and accessibility requirements.
Announce at start: "I'm using the design-handoff skill to prepare specifications for development."
Checklist
You MUST create a task for each of these items and complete them in order:
- Audit design states — Every component must define all states
- Document design tokens — Colors, typography, spacing as variables
- Specify interactions — Animations, transitions, gestures
- Document accessibility — ARIA labels, focus order, contrast ratios
- Cover edge cases — Long text, empty states, RTL, viewport extremes
- Prepare asset exports — Icons, images in correct formats
- Create design QA checklist — What to verify after development
- Link designs to stories — Connect Figma files to specific user stories
- Review with engineering — Get feasibility feedback before development starts
Step 1: Audit Design States
Every interactive component must specify all applicable states. Missing states are the #1 cause of design drift.
| State | When It Applies | What to Specify |
|---|
| Default | Component at rest | Visual appearance, layout |
| Hover | Cursor over element (desktop) | Color shift, underline, scale |
| Active/Pressed | Click/tap in progress | Darker color, scale down |
| Focus | Keyboard navigation reached element | Focus ring style, offset |
| Disabled | Element not interactive | Opacity, cursor, tooltip |
| Loading | Data being fetched | Skeleton, spinner, progress bar |
| Empty | No data to display | Illustration, message, CTA |
| Error | Something went wrong | Error message, retry action |
| Success | Action completed | Confirmation, auto-dismiss timing |
| Read-only | Data displayed, not editable | Visual distinction from editable |
Step 2: Document Design Tokens
Document as named variables, never raw hex values. Every visual property should reference a token.
| Category | What to Define |
|---|
| Colors | Primary, neutral, error, success palettes with tints/shades (e.g. color-primary-500, color-primary-600 for hover) |
| Typography | Font family, size scale (heading-lg/md, body, caption), weights, line-heights |
| Spacing | Scale in rem (xs: 0.25, sm: 0.5, md: 1, lg: 1.5, xl: 2, 2xl: 3) |
| Radii | sm, md, lg, full |
| Shadows | sm, md, lg (specify rgba values) |
| Breakpoints | mobile (375px), tablet (768px), desktop (1024px), wide (1440px) |
Step 3: Specify Interactions
Document how things move. Use a consistent animation scale (100ms, 200ms, 300ms).
Component: [Name]
Trigger: [What starts the interaction]
Duration: [ms]
Easing: [cubic-bezier or named curve]
Outcome: [What the user sees happen]
Step 4: Document Accessibility
Accessibility is not optional. Document per component:
Step 5: Cover Edge Cases
| Edge Case | What to Specify |
|---|
| Long text | Truncation? Line clamping? How does layout handle 3x expected length? |
| No text | What shows when a field is empty? |
| Many items | 1,000+ items in a list — pagination? Virtual scrolling? |
| Very long names | "Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr." |
| RTL languages | Layout in Arabic, Hebrew |
| Small viewport | 320px width |
| Large viewport | 2560px width |
| No internet / slow connection | Offline state, 5+ second API calls |
| First-time user | Before any data exists |
| Power user | 10,000+ items, high-frequency usage |
| Permission-restricted | Limited permissions view |
Step 6: Prepare Asset Exports
Step 7: Design QA Checklist
Create a checklist for reviewing built UI against design:
Visual Fidelity: spacing, typography, colors, border radius, shadows, icon sizes match design. No hardcoded hex values.
Responsive: Mobile (375px), tablet (768px), desktop (1024px) layouts match. No horizontal overflow at any breakpoint.
States: All states implemented (default, hover, focus, active, disabled, loading, empty, error). Loading states have skeleton/spinner. Empty states have illustration + guidance. Error states show actionable messages.
Interactions: Animations match specified duration/easing. Transitions are smooth. Gestures work on mobile.
Accessibility: Keyboard navigation works. Focus indicators visible. Screen reader announces content correctly. Contrast meets WCAG AA.
Data Variability: Layout works with 1 character, 500+ characters, no content, and many items (stress test).
Step 8: Link Designs to Stories
| User Story | Design File | Version | Status |
|---|
| Sign up with email | [Figma link] | v3 (approved May 20) | Ready for dev |
| Dashboard overview | [Figma link] | v1 (approved May 22) | Ready for dev |
| Settings page | [Figma link] | v2 (draft May 25) | In review |
Step 9: Review with Engineering
Before development starts:
Key Principles
- Design with tokens, not values — Hex codes become variables. Spacing uses a scale.
- All states, always — Missing states = rework. Design every state before handoff.
- Handoff is a conversation — Not a one-time documentation dump. Ongoing dialogue.
- Accessibility is not optional — Document it explicitly, test it rigorously.
- Link designs to code — Every story should know which design version it implements.
- Design QA is a required step — Budget time for it. Not optional.
Common Mistakes
- Missing states in designs (especially error, loading, empty)
- Static designs that don't account for dynamic content lengths
- No design system, leading to inconsistent implementations
- Handoff treated as "throw it over the wall" rather than collaboration
- Hex values instead of design tokens (hard to maintain, hard to theme)
- Accessibility left to engineering to figure out
- Designs not version-linked to code, no design QA process
Key References
- Brad Frost, "Atomic Design"
- "Design Systems" by Alla Khmelnitsky
- Figma Dev Mode documentation
- Storybook documentation
- WCAG 2.1 Accessibility Guidelines