Figma Spec Synthesizer
Role
Turn live Figma design or planning nodes into standalone implementation specs. The output should be detailed enough for a developer to implement ordinary cases without reopening Figma.
This skill is for Figma-first synthesis. Keep static file parsing in design-asset-parser.
Boundaries
Use this skill for:
- Figma design URLs or node IDs
- Figma planning/spec boards
- screenshot-based interpretation of Figma frames
- adding new Figma cases to an existing UI or planning spec
- separating design facts from planning/policy facts
Do not use this skill for:
- generic PDF/CSS/HTML export parsing without live Figma context; use
design-asset-parser
- visual polish or frontend implementation; use
frontend-design
- full idea-to-PRD-to-plan workflow; use
product-orchestrator
When Figma MCP tools require a plugin skill such as figma-use, load that tool-specific skill before calling the tool.
Input Handling
For each Figma URL:
- Extract
fileKey from /design/<fileKey>/....
- Extract
node-id=123-456.
- Convert node IDs to Figma API format:
123:456.
- Preserve the original URL and converted node ID in the final spec evidence.
Before writing, inspect:
- the user request and target scope
- existing spec files that should be updated
- nearby repo document conventions
- current code/data models when the design depends on fields or API shape
Evidence Workflow
Do not rely only on generated code, metadata, or text layers. Image analysis is mandatory.
Confirm the node
- Use metadata to verify node name and scope when available.
- Use design context for hierarchy/style hints when useful.
- For planning boards, text-layer extraction can help reading order but is only a supplement.
Capture visual evidence
- Use
get_screenshot for the target node.
- Use high
maxDimension for wide planning boards.
- Use
contentsOnly=false when labels, surrounding board context, or annotations matter.
- If Figma MCP hits view-seat/quota limits, use an authenticated browser session and viewport screenshots.
- If screenshot URL download is blocked by sandbox/network limits, rerun with approved network access or fall back to browser screenshots.
Segment large boards
- Split wide or dense screenshots into semantic or coordinate-based crops.
- Read left-to-right and top-to-bottom unless the board explicitly shows another flow.
- Make additional zoom crops for small text, policy tables, alert copy, and annotations.
- Track enough source detail to cite the Figma node and board section in the spec.
Reconcile sources
- Treat visible UI/copy as primary evidence.
- Use text layers to reduce transcription errors, not to skip image inspection.
- Use code/data model checks only to mark implementation assumptions or gaps.
Synthesis Rules
Separate output by concern:
- UI design spec: screen map, layout, components, variants, copy, interaction states, responsive assumptions, UI data dependencies, QA checklist.
- Planning/policy spec: goal, entry paths, business rules, validation policy, state/exposure rules, cache/refresh rules, API/data requirements, open decisions.
When both concerns are present, write separate docs and cross-link them.
Prefer updating the existing spec when the user says a case was added or asks to update a prior artifact. Patch the relevant state matrix, copy table, policy section, and QA checklist instead of appending an isolated note.
Mark each statement as one of:
- confirmed from Figma
- inferred from surrounding design
- implementation assumption from repo/code
- open question
Required Coverage
Cover all visible states and variants, including:
- empty, loading, error, success, disabled
- selected/unselected tabs
- own content versus another user's content
- rated versus unrated or partial-rating states
- content exists versus missing content
- first item/first contribution states
- list, detail, popup/modal, and external entry paths when visible
Capture exact visible copy for:
- labels
- CTA buttons
- empty states
- alerts
- toasts
- validation messages
- tab names
Double-check numeric and unit-sensitive rules. Common mistakes include confusing:
- characters versus lines
- minimum versus maximum
- visible truncation versus source copy
- score presence versus recommendation text presence
UI Spec Template
# <Feature> UI Spec
## Source Evidence
| Source | Node | Board/Frame section | Notes |
|--------|------|---------------------|-------|
## Implementation Scope
- Included:
- Excluded:
- Assumptions:
## Screen Map
| Surface | Entry path | Purpose |
|---------|------------|---------|
## UI Structure
### <Screen or Component>
- Layout:
- Main elements:
- Data dependencies:
## State Matrix
| State | Trigger/Data | UI result | Actions | Notes |
|-------|--------------|-----------|---------|-------|
## Copy and Messages
| Context | Exact copy | Condition |
|---------|------------|-----------|
## Interaction Rules
| Action | Enabled when | Result | Error/empty/loading |
|--------|--------------|--------|---------------------|
## Implementation Notes
- Components:
- API/data assumptions:
- QA checklist:
## Open Questions
Planning Spec Template
# <Feature> Planning Spec
## Source Evidence
| Source | Node | Board section | Notes |
|--------|------|---------------|-------|
## Goal and User Flow
- Goal:
- Primary users:
- Entry paths:
## Policy Summary
| Area | Rule | Impact |
|------|------|--------|
## State and Exposure Rules
| Scenario | Condition | User-visible behavior | Data/API implication |
|----------|-----------|-----------------------|----------------------|
## Validation and Messaging
| Input/Action | Rule | Message/Toast | Notes |
|--------------|------|---------------|-------|
## Data/API Requirements
| Requirement | Needed fields | Producer/consumer | Open issue |
|-------------|---------------|-------------------|------------|
## Cross-Spec Links
- Related UI spec:
- Related implementation files:
## Development Checklist
## Open Questions
Final Check
Before final response:
- Re-read modified spec files.
- Verify every provided Figma node was visually inspected.
- Verify added cases are integrated into existing sections.
- Recheck exact Korean copy and numeric limits against screenshots.
- State whether tests/builds were skipped because the change was documentation only.
1---2name: figma-spec-synthesizer3description: Synthesize implementation-ready UI design specs and planning/policy specs from live Figma files, Figma URLs, node IDs, screenshots, or large Figma planning boards. Use when a user asks to organize Figma design specs, planning specs, product policy specs, interaction states, screen behavior, or update an existing spec from added Figma cases.4---56# Figma Spec Synthesizer78## Role910Turn live Figma design or planning nodes into standalone implementation specs. The output should be detailed enough for a developer to implement ordinary cases without reopening Figma.1112This skill is for Figma-first synthesis. Keep static file parsing in `design-asset-parser`.1314## Boundaries1516Use this skill for:17- Figma design URLs or node IDs18- Figma planning/spec boards19- screenshot-based interpretation of Figma frames20- adding new Figma cases to an existing UI or planning spec21- separating design facts from planning/policy facts2223Do not use this skill for:24- generic PDF/CSS/HTML export parsing without live Figma context; use `design-asset-parser`25- visual polish or frontend implementation; use `frontend-design`26- full idea-to-PRD-to-plan workflow; use `product-orchestrator`2728When Figma MCP tools require a plugin skill such as `figma-use`, load that tool-specific skill before calling the tool.2930## Input Handling3132For each Figma URL:331. Extract `fileKey` from `/design/<fileKey>/...`.342. Extract `node-id=123-456`.353. Convert node IDs to Figma API format: `123:456`.364. Preserve the original URL and converted node ID in the final spec evidence.3738Before writing, inspect:39- the user request and target scope40- existing spec files that should be updated41- nearby repo document conventions42- current code/data models when the design depends on fields or API shape4344## Evidence Workflow4546Do not rely only on generated code, metadata, or text layers. Image analysis is mandatory.47481. Confirm the node49 - Use metadata to verify node name and scope when available.50 - Use design context for hierarchy/style hints when useful.51 - For planning boards, text-layer extraction can help reading order but is only a supplement.52532. Capture visual evidence54 - Use `get_screenshot` for the target node.55 - Use high `maxDimension` for wide planning boards.56 - Use `contentsOnly=false` when labels, surrounding board context, or annotations matter.57 - If Figma MCP hits view-seat/quota limits, use an authenticated browser session and viewport screenshots.58 - If screenshot URL download is blocked by sandbox/network limits, rerun with approved network access or fall back to browser screenshots.59603. Segment large boards61 - Split wide or dense screenshots into semantic or coordinate-based crops.62 - Read left-to-right and top-to-bottom unless the board explicitly shows another flow.63 - Make additional zoom crops for small text, policy tables, alert copy, and annotations.64 - Track enough source detail to cite the Figma node and board section in the spec.65664. Reconcile sources67 - Treat visible UI/copy as primary evidence.68 - Use text layers to reduce transcription errors, not to skip image inspection.69 - Use code/data model checks only to mark implementation assumptions or gaps.7071## Synthesis Rules7273Separate output by concern:74- UI design spec: screen map, layout, components, variants, copy, interaction states, responsive assumptions, UI data dependencies, QA checklist.75- Planning/policy spec: goal, entry paths, business rules, validation policy, state/exposure rules, cache/refresh rules, API/data requirements, open decisions.7677When both concerns are present, write separate docs and cross-link them.7879Prefer updating the existing spec when the user says a case was added or asks to update a prior artifact. Patch the relevant state matrix, copy table, policy section, and QA checklist instead of appending an isolated note.8081Mark each statement as one of:82- confirmed from Figma83- inferred from surrounding design84- implementation assumption from repo/code85- open question8687## Required Coverage8889Cover all visible states and variants, including:90- empty, loading, error, success, disabled91- selected/unselected tabs92- own content versus another user's content93- rated versus unrated or partial-rating states94- content exists versus missing content95- first item/first contribution states96- list, detail, popup/modal, and external entry paths when visible9798Capture exact visible copy for:99- labels100- CTA buttons101- empty states102- alerts103- toasts104- validation messages105- tab names106107Double-check numeric and unit-sensitive rules. Common mistakes include confusing:108- characters versus lines109- minimum versus maximum110- visible truncation versus source copy111- score presence versus recommendation text presence112113## UI Spec Template114115```markdown116# <Feature> UI Spec117118## Source Evidence119| Source | Node | Board/Frame section | Notes |120|--------|------|---------------------|-------|121122## Implementation Scope123- Included:124- Excluded:125- Assumptions:126127## Screen Map128| Surface | Entry path | Purpose |129|---------|------------|---------|130131## UI Structure132### <Screen or Component>133- Layout:134- Main elements:135- Data dependencies:136137## State Matrix138| State | Trigger/Data | UI result | Actions | Notes |139|-------|--------------|-----------|---------|-------|140141## Copy and Messages142| Context | Exact copy | Condition |143|---------|------------|-----------|144145## Interaction Rules146| Action | Enabled when | Result | Error/empty/loading |147|--------|--------------|--------|---------------------|148149## Implementation Notes150- Components:151- API/data assumptions:152- QA checklist:153154## Open Questions155```156157## Planning Spec Template158159```markdown160# <Feature> Planning Spec161162## Source Evidence163| Source | Node | Board section | Notes |164|--------|------|---------------|-------|165166## Goal and User Flow167- Goal:168- Primary users:169- Entry paths:170171## Policy Summary172| Area | Rule | Impact |173|------|------|--------|174175## State and Exposure Rules176| Scenario | Condition | User-visible behavior | Data/API implication |177|----------|-----------|-----------------------|----------------------|178179## Validation and Messaging180| Input/Action | Rule | Message/Toast | Notes |181|--------------|------|---------------|-------|182183## Data/API Requirements184| Requirement | Needed fields | Producer/consumer | Open issue |185|-------------|---------------|-------------------|------------|186187## Cross-Spec Links188- Related UI spec:189- Related implementation files:190191## Development Checklist192193## Open Questions194```195196## Final Check197198Before final response:1991. Re-read modified spec files.2002. Verify every provided Figma node was visually inspected.2013. Verify added cases are integrated into existing sections.2024. Recheck exact Korean copy and numeric limits against screenshots.2035. State whether tests/builds were skipped because the change was documentation only.