SuperAPI AI 工具集

apple-ui-from-spec

前端与建站

查看项目

更新于 10-16 06:40

技能介绍

用途

apple-ui-from-spec 用于在给定一份覆盖多个屏幕或对话框的 Apple 平台 UI 规格(macOS、iOS 或 iPadOS)时,产出两类成果:一是可直接放入真实应用的纯 SwiftUI 视图,二是每个屏幕状态的 PNG 快照。核心原则是视图必须是诚实的生产代码——fixture 和渲染工具位于视图层之外,视图可原样搬入真实应用。

主要能力

  • 将规格拆解为扁平的屏幕清单,写入 docs/screens.md,每行对应一个 artifact-state-theme 组合,包含 name、platform、kind、chrome、size、state 字段。
  • 使用 Swift Package 组织两个 target:库 target AppleUIScreens(纯视图、组件、模型、令牌)与可执行 target SnapshotTool(导入库、装配 fixture、渲染 PNG)。应用本身从不构建或启动,swift run SnapshotTool 产出所有 PNG。
  • 提供两条离屏渲染路径,均不运行应用:chrome=view(默认)通过 NSHostingView / UIHostingController 加 cacheDisplay / drawHierarchy 捕获真实 SwiftUI 内容;chrome=window(可选,仅 macOS)通过无头 NSWindow 加 NSHostingController 捕获真实窗口标题栏、交通灯和窗口级 NSToolbar。
  • 要求至少一次使用 frontend-design 子技能针对 PNG 进行设计评审迭代。

使用方式

规格是前提:规格即用户随技能提供的任何内容——粘贴文本、文件路径或链接。开始前须完整阅读;若缺失则询问,不得虚构屏幕。若未指明平台,根据词汇推断:window、sidebar、menu bar、traffic lights 指向 macOS;tab bar、navigation bar、modal screen、iPhone 尺寸指向 iOS;split view on iPad、popover from a bar button 指向 iPadOS;信号混杂则先询问用户。

工作流包括:先拆解规格写 docs/screens.md;搭建 Swift Package 与 hosting-view 快照工具;保持干净架构使视图可集成;在 SnapshotTool/Fixtures.swift 中放置真实感 fixture 数据;采用渲染友好的组合方式;通过 hosting view 渲染每个屏幕;最后进行设计评审。

集成契约不可协商:视图是纯的,每个视图为 struct ___View: View,输入为 init 参数和绑定;无 @StateObject 包装假存储、无静态 fixture 引用、视图文件内无 #Preview 块;模型是普通 struct;组件消费令牌(如 Spacing.medium 而非 12);每个视图仅凭声明的输入即可独立渲染;回调为带 no-op 默认值的闭包。验证 grep 必须零命中。

适用场景

  • 规格列出 macOS、iOS 或 iPadOS 的多个窗口、屏幕、sheet 或状态。
  • 视图代码意在集成进真实应用,而非评审后丢弃。
  • 要求或隐含 Apple HIG 美学。

限制

不适用于:无屏幕级上下文的单一孤立组件;Web/React UI(本技能专用于 SwiftUI);实际不使用 SwiftUI 的跨平台应用。

渲染限制:窗口级 .toolbar、.sheet(isPresented:)、Scene 修饰符、.background(.regularMaterial) 等 vibrancy、macOS 窗口失焦 chrome、:hover、动画/弹簧过渡、实时 .popover / .alert / .fullScreenCover 在离屏时无法捕获,需按技能给出的替代规则处理。chrome=window 不捕获 sheet、popover、alert、vibrancy 或动画;Sheet 加 chrome=window 被禁止,调度器必须拒绝。iOS / iPadOS 始终使用 chrome=view,调度器拒绝 (iOS|iPadOS, .window) 行。

其他事实(如收费、价格、平台支持细节)暂未提供。