name: figma-annotation-guide
description: "Generate structured developer handoff annotations for a Figma screen or component. Use when asked to write Figma annotations, create dev handoff notes, document a Figma design for developers, or write specs for a screen. Produces a complete annotation set covering interactions, states, spacing, accessibility, and edge cases."
Figma Annotation Guide Skill
Produces a complete set of developer handoff annotations for a Figma screen or component — the notes that turn a visual design into a buildable spec.
Required Inputs
- Screen or component description (describe or summarise what was designed)
- Platform (iOS / Android / Web / React Native)
- Interaction type (static / interactive / animated / form)
- Developer audience (mobile / frontend / full-stack)
Programmatic Helper
Contrast ratios cannot be eyeballed. The AA line sits at 4.5:1, and #777777
on white is 4.478 (fails) while #767676 is 4.54 (passes) — no amount of
looking at a screenshot separates those. Compute them:
npx --yes notugly fix "#8ab4f8" "#ffffff" # ratio, APCA, and the nearest passing colour
npx --yes notugly onepager <url> --out review.html # every pairing, printable
npx --yes notugly vision # which colours merge for colour-blind viewers
notugly fix returns the ratio, the APCA lightness contrast, and the closest
colour to the one already chosen that passes — same hue, same chroma. Paste
those numbers into the tables below rather than estimating them.
Deterministic, zero dependencies, and no model call — so it costs nothing to
run and gives the same answer every time.
Contrast annotations should carry the computed ratio and the target, e.g.
"4.52:1 — passes AA for body text". An annotation that says "check contrast" is
a task, not an annotation.
Output Structure
1. Screen/Component Overview
Name, purpose, entry points, exit points.
2. Interaction Annotations
[Element name]
- Default state: [Visual description]
- On tap/click: [Exact action — API call, state change, navigation]
- Loading state: [Description]
- Success state: [What happens after]
- Error state: [What error looks like and user options]
- Disabled condition: [When and why]
3. State Inventory
| Element | States Required |
|---|
| [Element] | Default, Hover, Active, Disabled, Loading, Error, Empty |
Flag missing designs: "Warning: Error state not designed — needed before build"
4. Spacing and Layout Notes
Fixed vs fluid elements, scroll behaviour, breakpoints, safe areas.
5. Content and Copy Rules
Character limits, dynamic vs static content, truncation rules, empty states.
6. Accessibility Annotations
Touch targets, screen reader labels, focus order, colour contrast, motion preferences.
7. Edge Cases and Developer Questions
Quality Checks
Anti-Patterns
Example Trigger Phrases
- "Write dev annotations for this Figma screen"
- "Create developer handoff notes for [screen/component]"
- "Document this design for the engineering team"
- "Write the Figma spec for [feature]"
- "What should I annotate before handing off this design?"