Build Primitive
Use this skill to create, revise, or specify one reusable component primitive.
For Figma Design, focus on component anatomy, variants, states, variables, styles, visible accessibility notes, and usage guidance.
For Figma Make, also specify or implement behavior, keyboard interaction, validation, and state transitions when they are part of the requested prototype.
Output Mode
Choose the output mode from the user's request:
- If the user asks to
build, create, revise, or update a primitive in Figma, apply the change and then summarize the component spec.
- If the user asks to
spec, plan, define, or review a primitive, return the component spec without modifying the design.
- If the request is ambiguous, return the component spec first and ask whether to build it.
Do not build complex composite primitives until the spec is confirmed unless the user explicitly asks for immediate implementation.
Decision Gate
Before designing from scratch, check:
- Does an existing component, library component, or variant already cover this primitive?
- Can the need be solved by extending an existing component?
- Is the primitive presentational, action-oriented, form-related, overlay-based, or a complex composite?
Prefer reuse over invention when a connected library or local component exists.
If the requested primitive duplicates an existing system component, propose a variant or wrapper instead of creating a separate component.
Classify The Primitive
Use one category:
Presentational: avatar, badge, card, skeleton, separator, empty-state block.
Action: button, icon button, menu item, pagination, breadcrumb, disclosure.
Form: input, select, checkbox, radio, switch, tag input, file upload, date picker.
Overlay: dialog, popover, toast, tooltip, command palette.
Composite: table, tree view, calendar, carousel, stepper, kanban, data grid.
The category determines required states, variants, and accessibility expectations.
Complexity Rule
For Composite primitives, produce a spec before building unless the user explicitly asks to build now.
A composite spec must define:
- data or content model
- navigation model
- selection model when applicable
- empty, loading, error, and overflow behavior
- keyboard expectations for Figma Make
- responsive behavior
- variant boundaries
If these decisions are missing, ask the smallest number of clarifying questions or make plainly labeled assumptions.
Component Spec
Use this structure for the spec or summary:
## Primitive Spec
- Name:
- Category:
- Purpose:
- Reuse existing:
- Anatomy:
- Variants:
- States:
- Content rules:
- Accessibility expectations:
- Responsive behavior:
- Figma Design notes:
- Figma Make behavior:
- Non-goals:
Required Coverage
Anatomy
Name each visible part and its role:
- root/container
- label
- supporting text
- icon or media
- control surface
- value/content area
- status/error area
- affordance indicator
Include only parts the primitive truly needs.
Variants
Define variants by role, not decoration:
- size
- emphasis
- status
- density
- selected/current state
- destructive or warning role
- disabled or read-only state
- with or without leading/trailing content
Avoid multiplying variants for one-off styling preferences.
States
Include applicable states:
- default
- hover
- focus
- active/pressed
- selected/current
- disabled
- loading
- error
- success
- empty
- expanded/collapsed
For non-interactive primitives, state explicitly that interaction states are not required.
Accessibility Expectations
Specify visible and testable requirements, not hidden guarantees:
- readable text contrast
- visible focus state for interactive primitives
- touch target expectations for touch contexts
- non-color cues for status
- clear label, helper, and error relationships for form controls
- keyboard expectations for Figma Make prototypes when behavior is part of the output
Do not claim full WCAG or ARIA compliance unless the relevant behavior and semantics are implemented or explicitly specified.
Figma Design Notes
- Use existing variables, styles, and components when available.
- Name component parts and variants clearly.
- Keep component anatomy stable across variants.
- Show realistic content examples and long-content behavior.
- Add visible usage notes or annotations only when they help future designers use the primitive correctly.
Figma Make Behavior
For interactive or app primitives, specify:
- controlled states
- keyboard behavior
- validation behavior
- loading and error handling
- reduced-motion expectations
- what happens on submit, dismiss, select, clear, or retry
If behavior is not part of the request, state that Figma Make behavior is not specified.
Non-Goals
- Do not create a whole design system from one primitive request.
- Do not redesign unrelated components or screens.
- Do not create duplicate primitives when an existing component can be extended.
- Do not overbuild composite behavior without a confirmed spec.
- Do not invent hidden Figma features, external scripts, or unsupported automation.
Quality Check
Before finishing:
- The primitive has one clear purpose.
- The output mode matched the user's request.
- Reuse was considered before invention.
- The anatomy is stable.
- Required states are covered.
- Variants are meaningful and limited.
- Accessibility expectations are visible and actionable.
- Figma Design and Figma Make expectations are separated.
1---2name: build-primitive3description: Design, revise, or specify a reusable Figma component primitive for Figma Design or Figma Make, including anatomy, variants, states, accessibility expectations, content rules, and behavior when relevant. Use for buttons, inputs, dialogs, menus, tabs, cards, tables, pickers, uploaders, steppers, and other foundational UI primitives.4---56# Build Primitive78Use this skill to create, revise, or specify one reusable component primitive.910For Figma Design, focus on component anatomy, variants, states, variables, styles, visible accessibility notes, and usage guidance.1112For Figma Make, also specify or implement behavior, keyboard interaction, validation, and state transitions when they are part of the requested prototype.1314## Output Mode1516Choose the output mode from the user's request:1718- If the user asks to `build`, `create`, `revise`, or `update` a primitive in Figma, apply the change and then summarize the component spec.19- If the user asks to `spec`, `plan`, `define`, or `review` a primitive, return the component spec without modifying the design.20- If the request is ambiguous, return the component spec first and ask whether to build it.2122Do not build complex composite primitives until the spec is confirmed unless the user explicitly asks for immediate implementation.2324## Decision Gate2526Before designing from scratch, check:2728- Does an existing component, library component, or variant already cover this primitive?29- Can the need be solved by extending an existing component?30- Is the primitive presentational, action-oriented, form-related, overlay-based, or a complex composite?3132Prefer reuse over invention when a connected library or local component exists.3334If the requested primitive duplicates an existing system component, propose a variant or wrapper instead of creating a separate component.3536## Classify The Primitive3738Use one category:3940- `Presentational`: avatar, badge, card, skeleton, separator, empty-state block.41- `Action`: button, icon button, menu item, pagination, breadcrumb, disclosure.42- `Form`: input, select, checkbox, radio, switch, tag input, file upload, date picker.43- `Overlay`: dialog, popover, toast, tooltip, command palette.44- `Composite`: table, tree view, calendar, carousel, stepper, kanban, data grid.4546The category determines required states, variants, and accessibility expectations.4748## Complexity Rule4950For `Composite` primitives, produce a spec before building unless the user explicitly asks to build now.5152A composite spec must define:5354- data or content model55- navigation model56- selection model when applicable57- empty, loading, error, and overflow behavior58- keyboard expectations for Figma Make59- responsive behavior60- variant boundaries6162If these decisions are missing, ask the smallest number of clarifying questions or make plainly labeled assumptions.6364## Component Spec6566Use this structure for the spec or summary:6768```markdown69## Primitive Spec70- Name:71- Category:72- Purpose:73- Reuse existing:74- Anatomy:75- Variants:76- States:77- Content rules:78- Accessibility expectations:79- Responsive behavior:80- Figma Design notes:81- Figma Make behavior:82- Non-goals:83```8485## Required Coverage8687### Anatomy8889Name each visible part and its role:9091- root/container92- label93- supporting text94- icon or media95- control surface96- value/content area97- status/error area98- affordance indicator99100Include only parts the primitive truly needs.101102### Variants103104Define variants by role, not decoration:105106- size107- emphasis108- status109- density110- selected/current state111- destructive or warning role112- disabled or read-only state113- with or without leading/trailing content114115Avoid multiplying variants for one-off styling preferences.116117### States118119Include applicable states:120121- default122- hover123- focus124- active/pressed125- selected/current126- disabled127- loading128- error129- success130- empty131- expanded/collapsed132133For non-interactive primitives, state explicitly that interaction states are not required.134135### Accessibility Expectations136137Specify visible and testable requirements, not hidden guarantees:138139- readable text contrast140- visible focus state for interactive primitives141- touch target expectations for touch contexts142- non-color cues for status143- clear label, helper, and error relationships for form controls144- keyboard expectations for Figma Make prototypes when behavior is part of the output145146Do not claim full WCAG or ARIA compliance unless the relevant behavior and semantics are implemented or explicitly specified.147148### Figma Design Notes149150- Use existing variables, styles, and components when available.151- Name component parts and variants clearly.152- Keep component anatomy stable across variants.153- Show realistic content examples and long-content behavior.154- Add visible usage notes or annotations only when they help future designers use the primitive correctly.155156### Figma Make Behavior157158For interactive or app primitives, specify:159160- controlled states161- keyboard behavior162- validation behavior163- loading and error handling164- reduced-motion expectations165- what happens on submit, dismiss, select, clear, or retry166167If behavior is not part of the request, state that Figma Make behavior is not specified.168169## Non-Goals170171- Do not create a whole design system from one primitive request.172- Do not redesign unrelated components or screens.173- Do not create duplicate primitives when an existing component can be extended.174- Do not overbuild composite behavior without a confirmed spec.175- Do not invent hidden Figma features, external scripts, or unsupported automation.176177## Quality Check178179Before finishing:180181- The primitive has one clear purpose.182- The output mode matched the user's request.183- Reuse was considered before invention.184- The anatomy is stable.185- Required states are covered.186- Variants are meaningful and limited.187- Accessibility expectations are visible and actionable.188- Figma Design and Figma Make expectations are separated.