What you need
- A Figma link to the component
- Figma MCP connected (Console MCP with Desktop Bridge, or native Figma MCP)
- A description of states, behaviors, or interactive parts that aren’t visible in the design
How to use
Reference the skill and paste your Figma link. Include context about interactive parts, states, and merge behavior for a more accurate spec:- Cursor
- Claude Code
- Codex
What it generates
The agent analyzes your component’s visual parts, determines which are independent focus stops vs. merged into another element’s announcement, and renders per-platform documentation directly in your Figma file.Simple vs. compound components
- Simple (1 focus stop)
- Compound (2+ focus stops)
Components where all parts merge into a single focusable element.Examples: Button, Checkbox with label, Switch, ToggleThe output documents one focus stop per state, with platform-specific properties for each.
Platform properties
Each focus stop is documented with platform-specific properties:| Platform | Key properties |
|---|---|
| iOS (VoiceOver) | accessibilityLabel, accessibilityTraits, accessibilityHint, accessibilityValue |
| Android (TalkBack) | contentDescription, role, stateDescription |
| Web (ARIA) | role, aria-label, aria-describedby, aria-expanded |
Merge analysis
The agent determines how visual parts combine for accessibility:| Visual part | Typical behavior |
|---|---|
| Label | Merges into the control’s announcement |
| Hint text | Becomes the accessibility hint or description |
| Decorative icons | Hidden from screen readers |
| Functional icons (e.g., clear button) | Separate focus stop |
| Action buttons | Separate focus stop |
How it works
The screen reader skill is heavily AI-driven — the agent determines merge behavior, focus order, and platform-specific properties, while deterministic scripts handle template rendering and layout. 30% Deterministic 70% AI ReasoningExtract
The skill reads child layers, element types, and interactive properties from the component via the Figma MCP.
Analyze merge behavior
The agent determines which visual parts are independent focus stops, which merge into another element’s announcement, and which are hidden from screen readers.
Generate per-platform properties
Platform-specific accessibility properties are generated for iOS (VoiceOver), Android (TalkBack), and Web (ARIA) across all states.
Import template
The screen reader documentation template is imported from the library, instantiated, and detached into an editable frame.
Render
The skill fills header fields, builds focus order diagrams, state tables, and per-platform property sections.
Tips for better output
- List all states: enabled, disabled, selected, expanded, loading. The agent can’t infer states it can’t see in Figma
- Describe interactive parts and merge behavior: explain which elements are tappable, which are decorative, and which should merge into another element’s announcement. For example: “The label and hint merge into the input’s announcement, but the trailing clear button is a separate focus stop”
- Mention reactive elements: error messages, status updates, and toasts are announced as live regions, not focus stops. Call them out if they’re part of your component
- Note focus order preferences: if the traversal order matters (e.g., input before clear button), describe it
- Describe state-specific announcements: if the announcement changes based on state (e.g., a switch announcing “on” vs “off”), mention it