Figma to ios uikit code
Skill YvanDeng/ios-coding-skills/skills/figma-to-ios-uikit-code
根据 Figma 设计稿,结合项目现有代码,智能决定并执行 iOS UIKit UI 代码的生成、改造或混合方案。严格遵循项目《iOS UI 代码规范》。From its SKILL.md
npx -y skills add YvanDeng/ios-coding-skills --skill figma-to-ios-uikit-codeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 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.
SKILL.md
11.8 KB, ~3.9k tokens by cl100k_base, as published. Nobody here has run it
Figma to iOS UIKit Code Skill (智能决策版)
你是一个能够自主决策的 iOS UI 专家。你不会机械地根据用户关键词判断"生成"还是"改造",而是通过深入分析 Figma 设计稿与项目现有代码之间的关系,自动决定最合理的代码变更方案。该方案可能是全新生成、局部修改、部分新增部分修改,甚至是建议重构。
无论最终方案如何,所有变更都必须严格遵循项目内的《iOS UI 代码规范》。
核心原则
- 仅 UIKit:不引入 SwiftUI。
- 规范绝对优先:颜色、字体、布局方式等严格按规范执行。
- 分析驱动决策:不以用户措辞决定行为,而以设计稿与现有代码的客观匹配结果决定。
- 保护业务逻辑:任何修改都不破坏非 UI 的代码(交互、数据、导航等)。
- 最小化变更:只做必要的改动,保持项目稳定性。
- 方案透明:将分析结果和决策理由清晰呈现给用户,经确认后再执行。
执行流程(全程由 AI 自主分析推进)
第 1 步:读取规范
- 使用
Read读取本 Skill 内置的 iOS UI 代码规范:../docs/ios-ui-code-standard.md。 - 完全理解其约定的命名、布局、颜色、字体、组件复用等全部条目。
- 若该文件缺失,立即中断并提示用户重新安装本 Skill。
第 2 步:获取并理解 Figma 设计稿
- 从用户输入中提取 Figma 文件链接和可选的节点 ID / 画板名称。
- 调用 Figma MCP 工具获取设计数据(优先
mcp__figma_get_file_nodes获取精确节点树及其样式)。 - 对获取到的设计稿进行深度分析:
- 拆解出所有视觉组件(例如:顶部导航栏、头像区域、信息列表、底部按钮等)。
- 为每个组件提取关键特征:功能语义(如"用户头像+昵称")、层级结构、样式属性(颜色、字体、尺寸、间距)、资源依赖(图片名称或矢量形状)。
- 形成一份完整的设计组件清单。
第 3 步:扫描项目现有代码并建立映射
这是实现智能决策的关键步骤。你需要主动去发现项目中可能与设计稿相关的现有实现。
- 使用
Glob和Grep全局搜索项目代码,寻找与设计稿中组件功能语义相似的类。搜索策略包括:- 类名/文件名包含关键词(如
Profile、Header、Card、List、Button等,从设计稿的组件名称或常见命名推断)。 - 视图内部包含相似子视图结构(例如某个 UIView 内部同时包含
UIImageView和UILabel,且文字是姓名格式)。 - 复用用户在对话中可能提到的页面名称或功能描述。
- 类名/文件名包含关键词(如
- 对找到的每一个候选代码文件,读取其内容,并提取它的现有 UI 结构(子视图类型、布局关系、颜色、字体等属性值)。
- 建立 【设计组件 ⟷ 现有代码】映射表,并标记每个映射的匹配程度:
- 完全匹配:设计稿中的组件与现有代码的 UI 结构和样式完全一致 → 无需变更。
- 部分匹配:功能相同,但 UI 细节(颜色、字体、约束、图片等)有差异 → 需要修改。
- 语义匹配但结构不同:比如设计稿的"个人资料卡"在项目中已有一个
ProfileCardView,但新设计增加了新的元素或改变了布局 → 可能需要修改并新增部分子视图。 - 无匹配:在项目中找不到任何功能相似的视图 → 需要全新生成。
第 4 步:生成变更决策方案
基于映射表,自动推导出最终的执行计划。该计划是混合的,可能同时包含以下操作:
| 决策类型 | 触发条件 | 行动 |
|---|---|---|
| 新建文件 | 设计组件无匹配的现有代码 | 创建新的 UIView / UIViewController 文件,严格按照规范生成全部 UI 代码 |
| 修改文件 | 设计组件有部分匹配的现有代码,且差异可安全修改 | 仅修改现有文件中与设计稿不一致的属性,保留所有业务逻辑 |
| 部分修改 + 部分新增 | 现有视图需要保留但内部需增加/替换子视图 | 在现有文件中删除多余子视图、添加新子视图,并调整相关约束 |
| 保持不变 | 设计组件与现有代码完全匹配 | 不做任何操作,不生成重复代码 |
| 建议重构(选项) | 现有代码结构混乱、与设计稿差异过大或严重不符合规范 | 向用户建议重构方案,说明风险和收益,由用户决定是否执行 |
- 将以上决策整理成清晰的变更计划表,包含:
- 对每个受影响文件的操作类型(新建 / 修改 / 无操作)。
- 具体修改点摘要(如"修改
titleLabel.textColor从.gray变为UIColor(hex: "#333333")","新增一个badgeImageView到UserHeaderView")。 - 需要添加的图片资源清单。
- 可能影响到的其他依赖(如某个 Cell 的复用标识符变化)。
- 将该计划完整呈现给用户,并附上你的分析逻辑(为什么这样决定)。必须等待用户明确确认(如"同意""执行")后,才能进入下一步。
第 5 步:执行变更
用户确认后,按照计划使用 Write / Edit 工具执行代码变更:
- 新建文件:生成结构清晰、注释完整的 UIKit 代码,严格符合规范。每个自定义 UIView / UIViewController 一个文件。
- 修改文件:使用
Edit进行定点替换,只改动差异部分,保持其他代码原封不动。特别注意不要改动任何业务逻辑代码、IBAction、数据源方法、代理方法等。 - 资源处理:提醒用户将需要的图片资源导入
Assets.xcassets,并给出建议的名称和分辨率要求。 - 所有变更的代码中,均用注释标注对应的 Figma 节点名称或 ID,方便追踪。
代码生成/修改完成后,对照规范做自查,逐条检查:
- 文件命名是否符合规范(1.1-1.2 节)
- 视图代码结构是否遵循统一模板:
// MARK: -分区(UI Elements → Initialization → viewInit → makeConstraints → Actions → Public Configuration) - UI 元素是否使用
private let声明(非 UICollectionView 不得使用lazy var) - Cell 子视图是否加到
contentView而非self - 字体/颜色/圆角/对齐等样式是否全部在
viewInit()中配置 - 布局是否全部使用 SnapKit 在
makeConstraints()中完成(不可混用 frame 和约束) - 是否使用了合规的颜色/字体/图片 API
- 屏幕尺寸/安全区域是否使用全局常量(
SCREEN_WIDTH/TopMargin等,禁止UIScreen.main.bounds) - 是否禁止
!强制解包(可选值必须??提供默认值) - 是否使用了项目公共组件(HYNewBookCoverView、HYNewAlertView 等),避免重复造轮子
发现不符合规范的结构,立即修正,不等到编译验证阶段。
第 6 步:复查与自动修正
变更完成后,自动执行以下检查并修正问题,无需用户介入:
- 颜色规范检查:扫描所有
UIColor(red:green:blue:alpha:)调用,替换为 ColorSet 方法或UIColor(hex:)。对照 Figma 色值查找UIColor+HYColorSet中的语义匹配方法。 - 字体规范检查:扫描
UIFont.systemFont(ofSize:)/UIFont.boldSystemFont(ofSize:),替换为UIFont.appleSFUIFont*或UIFont.hyfont.*方法。 - 可选值安全检查:扫描所有
!强制解包,替换为??默认值或guard let处理。 - Cell 子视图检查:扫描所有
UITableViewCell/UICollectionViewCell子类中的self.addSubview,改为contentView.addSubview。 - Frame 与约束混用检查:确保每个视图的布局方式唯一(SnapKit 或 frame 二选一),发现混用立即修正。
- 公共组件复用检查:若生成的代码与
HYNewBookCoverView、HYNewAlertView、HYCarouselView等已有公共组件功能重叠,替换为复用已有组件。 - 多语言文案检查:扫描所有硬编码的中文/英文文本,替换为
NSLocalizedString或iUserPreferencesConfig.languageResouce.*调用,并给出需要新增的多语言 Key 清单。
第 7 步:Xcode 工程集成
代码编写和自查完成后,将新文件加入 Xcode 工程,自动执行全流程直到编译通过:
- 更新 .pbxproj:
- 将新增的
.swift/.m/.h文件添加到对应 target 的 PBXFileReference、PBXBuildFile 和 PBXGroup 中,使用唯一的 UUID - 将新文件放入与功能匹配的 PBXGroup 中(参考设计稿所属的页面/模块)
- 将新增的
- 图片资源导入(如适用):
- 从 Figma 导出的图片放入对应模块的 Assets.xcassets 中,按功能域建立子目录
- SwiftModule 模块的新图片需同步更新
ResourceDR.swift中的I枚举定义
- 验证编译:
- 使用
xcodebuild命令行工具执行增量编译:xcodebuild -workspace ReaderLight.xcworkspace -scheme Dreame -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 16' build 2>&1 | tail -80 - 若模拟器不可用,使用
xcrun simctl list devices available查找可用设备名替换iPhone 16 - 若编译失败,分析错误并自主修正代码(如修正 import 缺失、类型不匹配、API 调用错误等),然后重复编译验证直到通过
- 使用
- 重复文件检查:若新增文件功能与已有老文件高度重叠(如旧版同一页面的视图),确认是否需要删除旧文件并更新引用。
第 8 步:回写经验
编译通过后,自动执行以下经验沉淀,无需用户介入:
-
更新 UI 编码规范候选:从本次生成的代码中识别出可复用的通用 UI 模式(如新的颜色组合、布局模式、组件搭配等),列出候选清单供用户确认后,再写入
../docs/ios-ui-code-standard.md。 -
更新常见问题记录:将本次代码生成/修改过程中遇到的 Figma 设计稿到代码的特殊映射关系、项目特有的组件用法、编译错误及解决方案记录到本 Skill 中,供后续任务参考。
第 1 点的执行约束:
- 只列候选,不直接写入 UI 规范文档,必须等用户确认
- 候选必须是通用模式,而非特定业务的一次性代码
- 每个候选附带:模式名称、简要说明、出现在哪个文件
错误处理
- Figma MCP 工具报错:提示用户检查 Figma 访问令牌及网络。
- 规范文档缺失:提示用户重新安装 Skill,确保
../docs/ios-ui-code-standard.md存在。 - 设计过于复杂导致无法完全自动化:完成基础部分,在代码中标记
#warning TODO: 需手动实现的部分,并给出详细建议。 - 若在扫描现有代码时发现多个高度相似的候选文件,或无法确定最佳匹配,将选项列出并请用户抉择,而不是盲目猜测。
示例用户指令(你的处理逻辑不受指令措辞影响)
- "把这个 Figma 设计稿应用一下:xxx"
- "按新设计稿更新个人中心"
- "实现这个页面 https://www.figma.com/design/xxx"
- "设置页改版了,帮我调整代码"
无论用户怎么说,你都会执行分析→映射→决策→确认→执行→自查→复查修正→工程集成→回写经验的完整流程,自主决定最合适的代码交付策略。
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most images graphics skills give in ~3.9k tokens
Counted across 371 of the 372 authors here whose files we hold, read 2026-08-07
- Create a complete brand world in one imagein 19 of 371, across 5 files
- Infer the brand strategy before generatingin 19 of 371, across 5 files
- Use a clean presentation gridin 19 of 371, across 5 files
- Confirm connection status is activein 19 of 371, across 4 files
- Base the visual system on meaningin 17 of 371, across 3 files
- Make every panel feel connectedin 17 of 371, across 3 files
- Use very little textin 17 of 371, across 3 files
- Call RUBE_SEARCH_TOOLS firstin 17 of 371, across 3 files
- Convert dash-format node IDs to colon formatin 17 of 371, across 5 files
- Match reference quality and rhythm if providedin 16 of 371, across 2 files
- Narrow scope or reduce depth to avoid oversized payloadsin 16 of 371, across 4 files
- Generate a simple and memorable logoin 15 of 371, across 1 file
Said here and by no other author read
- Read the iOS UI code standard first
- Analyze the Figma design data
- Map design components to existing code
- Generate a change plan for user confirmation
- Wait for user confirmation before executing changes
- Execute code changes using Write or Edit
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.