AI Skill Report Card
Building Design System Components
Quick Start15 / 15
NEW COMPONENT CHECKLIST:
□ Base component designed in Figma
□ Variants mapped to props system
□ Documentation written (usage, do/don't, a11y)
□ Code Connect mapping configured
□ Storybook stories created
□ Version impact assessed
□ QA approval obtained
FIGMA STRUCTURE:
Button (Base) → Primary/Secondary (Variants) → Login Button (Instance)
Recommendation▾
Reduce repetition between 'Best Practices' and earlier sections - merge overlapping content
Workflow15 / 15
Phase 1: Figma Foundation
- Create base component with core functionality
- Define variant structure (size, state, type)
- Set up component properties (boolean, enum, text, instance swap)
- Test all variant combinations work correctly
Phase 2: Props System Design
PROP TYPES:
- Boolean: enabled/disabled, loading, full-width
- Enum: size (sm/md/lg), variant (primary/secondary)
- Text: label, placeholder, helper text
- Instance Swap: icon, avatar, nested components
Phase 3: Documentation
- Write usage guidelines with context
- Create do/don't examples with visuals
- Document accessibility requirements (ARIA, keyboard nav)
- Specify responsive behavior
Phase 4: Code Integration
- Configure Figma Code Connect mapping
- Create Storybook stories for all variants
- Set up interactive controls for props testing
- Validate design-code parity
Phase 5: Release Management
- Assess version impact (patch/minor/major)
- Update migration guide if breaking
- Communicate changes to team
- Monitor adoption metrics
Recommendation▾
The Figma Code Connect example could be more concrete with actual component names/URLs
Examples18 / 20
Example 1: Button Component Input: Need a flexible button for web app Output:
FIGMA STRUCTURE:
├── Button (Base)
├── Primary (Variant)
├── Secondary (Variant)
├── Ghost (Variant)
└── Destructive (Variant)
PROPS:
- size: enum (sm, md, lg)
- disabled: boolean
- loading: boolean
- icon: instance swap
- label: text
DOCUMENTATION:
Usage: Primary for main actions, Secondary for supporting actions
Do: Use consistent sizing within action groups
Don't: Mix button variants randomly in same context
A11y: Min 44px touch target, focus indicators, loading states
Example 2: Code Connect Mapping Input: Button component ready for code connection Output:
JavaScript// figma.connect.tsx figma.connect(Button, "https://figma.com/button-component", { props: { variant: figma.enum("Type", { Primary: "primary", Secondary: "secondary" }), size: figma.enum("Size", { Small: "sm", Medium: "md", Large: "lg" }), disabled: figma.boolean("Disabled"), children: figma.string("Label") }, example: ({ variant, size, disabled, children }) => ( <Button variant={variant} size={size} disabled={disabled}> {children} </Button> ) })
Recommendation▾
Consider condensing the Common Pitfalls section to focus on the most critical issues only
Best Practices
Component Architecture:
- Start with atomic components, build up to molecules/organisms
- Use consistent naming: Base → Variant → Instance
- Limit variants to essential differences (avoid variant explosion)
Props System:
- Prefer enums over booleans for multi-state properties
- Use instance swap for flexible content slots
- Keep text overrides specific (label vs generic "text")
Documentation Standards:
- Include real use cases, not just feature descriptions
- Show component in context, not isolation
- Update docs when component behavior changes
- Link to code examples and Storybook stories
Code Integration:
- Map Figma properties 1:1 with code props when possible
- Use semantic prop names that match design language
- Test Code Connect with actual component updates
Common Pitfalls
Design Issues:
- Creating too many variants (leads to maintenance burden)
- Inconsistent component hierarchy (breaks auto-layout)
- Missing edge cases in variant coverage
Documentation Gaps:
- Generic usage descriptions ("use for buttons")
- Missing accessibility specifications
- No guidance on when NOT to use component
Integration Problems:
- Figma-code prop mismatches (different naming/types)
- Outdated Code Connect mappings after component changes
- Missing Storybook controls for new props
Process Failures:
- Skipping definition-of-done checklist
- Adding components without version impact assessment
- No communication plan for breaking changes