Figma to ios ui
Public Figma-to-iOS design-to-code skills for UIKit, XIB, and SwiftUI
npx -y skills add AmrMohamad/figma-to-ios-ui --skill figma-to-ios-uiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Translate Figma MCP design data into production iOS UI implementations in either UIKit/XIB or SwiftUI. Use when implementing, auditing, or repairing iOS UI from Figma, especially when the result must match both the design evidence and the target codebase's existing UI patterns, design system, and integration seams.
SKILL.md
8.8 KB, as published. Nobody here has run it
Figma to iOS UI
Core Role
Load figma-mcp first. This skill is the iOS implementation layer that consumes the extracted Figma design data and routes work into the correct implementation lane.
Keep the split strict:
figma-mcpowns target resolution, MCP calls, extraction quality, screenshot verification, anddesign_specfigma-to-ios-uiowns lane selection, project adaptation, implementation guidance, and shared UIKit/XIB component hardening
Do not bypass figma-mcp when design data is incomplete.
Public-Skill Rule
This package is intentionally public-facing and generic.
- Keep project-specific knowledge out of the base skill.
- Learn repo patterns at task time instead of baking static overlays into the skill.
- Prefer the target project's existing implementation seams, design system, and shared components over generic examples from the skill.
Workflow
- Confirm
figma-mcphas already produced:- node hierarchy and IDs
- token map
- layout/style intent
- screenshot
design_spec
- Read
references/lane-selection.md. - Route into exactly one implementation lane:
- UIKit/XIB lane:
references/ios-uikit-xib-lane.md - SwiftUI lane: read
references/swiftui-design-spec-consumption.md, thenreferences/swiftui-lane-overview.md
- UIKit/XIB lane:
- If SwiftUI is selected and project UI patterns are not already clear, load
subskills/project-ui-pattern-memory/SKILL.mdand build or refresh a project UI memory brief. - Load only the task-relevant reference files for the selected lane.
- If UIKit/XIB work touches a shared cell, row, card, section, or nib-backed reusable component, also load:
references/shared-uikit-component-hardening.mdreferences/component-spec-sheet-template.mdreferences/token-verification-workflow.md
- After implementation or repair, run
references/post-implementation-validation-and-learning.md. - Emit final guidance only after the lane, project adaptation layer, and validation pass are fixed.
Lane Selection
Use UIKit/XIB when the touched feature already follows BaseVC + Presenter + XIB, outlets/actions, or legacy reusable UIKit views.
Use SwiftUI when the touched feature already uses SwiftUI roots, SwiftUI-owned feature seams, hosted SwiftUI screens, or shared SwiftUI primitives and modifiers.
Use existing hybrid seams when the host screen mixes both. Do not migrate a host shell just because the new design is modern.
For hybrid screens:
- preserve the current root shell
- extend the matching child seam
- keep navigation, presentation, and state ownership where the repo already keeps them
Project Pattern Memory
Static per-project SwiftUI overlays are intentionally not part of this public skill.
When the repo needs project-specific adaptation:
- load the general SwiftUI lane references
- run
subskills/project-ui-pattern-memory/SKILL.md - build or refresh a project UI memory brief from the live codebase
- use that brief as the task-local adaptation layer
Treat the resulting brief as working memory for the active repo, not as hard-coded skill doctrine.
Output Contract
Always state:
- which lane was selected
- whether a project UI memory brief was built or reused
- which shared project primitives or existing components were reused
- what design-system or token mapping strategy was used
- what assumptions remain unresolved by design alone
- what validations were run or must still be run
- whether a validation brief or learning delta was produced
For UIKit/XIB work, preserve the XIB audit/runtime-diagnosis workflow and the merged shared-component hardening contract.
For SwiftUI work, include:
- target node or frame identity used
- state ownership choice
- navigation or presentation ownership choice
- component extraction plan
- consumed
design_specevidence:- structure source
- token source
- interaction source
- unresolved assumptions source
- modern API and availability choices
- token mapping plan
- accessibility and motion checks
- performance and update-risk checks
- whether the design evidence was sufficient or whether re-extraction is required
- whether platform chrome was filtered
- whether any interaction or behavior remains low-confidence
- screenshot parity checks
- whether the task is generation or audit/repair
- what the project UI memory brief learned or confirmed after validation
Senior UIKit/XIB Interpretation Heuristics
Use these when the selected lane is UIKit/XIB and the design is a reused list row, card row, checkout option row, or any component with repeating siblings.
- Identify the component family before editing.
- Decide whether the design is:
- one reusable component with multiple content variants
- multiple separate components
- Do not split a reused row into separate implementations unless the object anatomy truly changes.
- Separate the primary lane from the secondary lane.
- Primary lane usually contains:
- selection affordance
- identity icon/chip
- semantic text block
- Secondary lane usually contains:
- trailing logos
- accessory actions
- disclosure metadata
- Many first-pass UIKit mistakes come from treating the secondary lane as part of the text block instead of a separate sibling lane.
- Distinguish design intent from legacy implementation intent.
- If an existing shared component already ships in production, ask:
- what old design goal was it optimizing for
- what is actually broken now
- what can be improved without rewriting the whole component
- Prefer the smallest patch that fixes the unstable lane before replacing the component skeleton.
- Extract the extreme variants, not only the parent frame.
- For repeated rows, always inspect at least:
- the compact variant
- the multiline or densest variant
- a variant with optional trailing disclosure/logos if present
- This catches geometry issues that full-frame extraction and token-only audits often miss.
- Treat runtime screenshots as first-class evidence.
- Figma gives ideal anatomy.
- Runtime screenshots reveal:
- data-driven combinations
- resolver-driven icon/logo choices
- truncation patterns
- RTL or real-device density issues
- If screenshots conflict with the first implementation theory, update the theory before editing again.
- Keep behavior ownership stable.
- In reused UIKit/XIB components, preserve:
- presenter/view-model ownership
- parent selection/navigation ownership
- resolver/business contracts
- UI revamps should not silently move business logic into the view layer.
- Localize state styling to the smallest object that changed in Figma.
- If selected state only changes the radio, do not redesign the full row as selected.
- If helper copy only changes text rhythm, do not redesign the entire row spacing model.
- This prevents over-correcting beyond the actual design evidence.
References
references/lane-selection.mdreferences/ios-uikit-xib-lane.mdreferences/shared-uikit-component-hardening.mdreferences/component-spec-sheet-template.mdreferences/token-verification-workflow.mdreferences/post-implementation-validation-and-learning.mdreferences/swiftui-design-spec-consumption.mdreferences/swiftui-lane-overview.mdreferences/swiftui-state-and-data-flow.mdreferences/swiftui-view-structure-and-layout.mdreferences/swiftui-navigation-sheets-and-routing.mdreferences/swiftui-scroll-list-and-identity.mdreferences/swiftui-design-system-and-token-mapping.mdreferences/swiftui-modern-api-and-availability.mdreferences/swiftui-accessibility-and-inclusive-design.mdreferences/swiftui-performance-and-update-hygiene.mdreferences/swiftui-animation-and-motion.mdreferences/swiftui-fidelity-validation.mdreferences/swiftui-audit-and-repair.mdsubskills/project-ui-pattern-memory/SKILL.mdtemplates/ui_validation_brief.template.md
Validation Gates
Before closing an iOS design-to-code task, verify:
- the correct lane was chosen from existing implementation seams
- the output matches project conventions, not raw MCP React/Tailwind
- no extraction rules were duplicated locally instead of referenced from
figma-mcp - the active repo was adapted through live codebase evidence rather than a stale baked-in overlay
- interactive elements, dynamic regions, and visual fidelity checks are covered
- post-implementation validation was run at the smallest scope that can prove the result
- newly learned repo-specific rules were captured as deltas instead of forcing a full relearn
- the final guidance is implementation-ready for the selected framework