mcpField
I
ios-simulator-browser

ios-simulator-browser

github.com/openai开发7.6k54 次安装3 周前更新
代码仓库

关于 ios-simulator-browser

用于在应用内浏览器查看 iOS Simulator 页面和 SwiftUI 包预览的技能。它管理模拟器镜像,并通过截图提供验证证据;包代码修改可热重载到生成的预览宿主中。

主要功能

  1. 01在应用内浏览器镜像模拟器
  2. 02启动 SwiftUI 包预览
  3. 03热重载包预览修改
  4. 04筛选要显示的预览变体
  5. 05截取截图作为 QA 证据

适用场景

  1. 01检查 iOS Simulator 中的本地页面
  2. 02查看包中的 SwiftUI 预览
  3. 03验证源码修改后的预览更新

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openai/plugins --skill ios-simulator-browser

安装后在 Claude Code 中输入/ios-simulator-browser确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
scripts/
swiftui-preview-browser.mjs
scripts/lib/
xcode-project.mjs
scripts/templates/
FocusedPreviewApp.swift
FocusedPreviewHotReloadRuntime.swift
PreviewBrowserEntries.swift

详细介绍

iOS 模拟器浏览器

浏览器工作流

  1. 从现有 iOS 构建/运行工作流中获取明确的模拟器 UDID,或使用 xcrun simctl list devices available 获取。

  2. 在一个长期运行且固定到该模拟器的终端中启动 serve-sim。启动前,清理该模拟器对应的任何已跟踪旧辅助进程,并安装一个陷阱,以便在此终端退出时清理辅助进程:

    SIM="<simulator-udid>"
    cleanup_serve_sim() {
      npx --yes serve-sim@latest --kill "$SIM" >/dev/null 2>&1 || true
    }
    trap cleanup_serve_sim EXIT INT TERM HUP
    cleanup_serve_sim
    npx --yes serve-sim@latest "$SIM"
    
  3. 在 Codex 应用内浏览器中打开 serve-sim 打印的确切本地预览 URL。

  4. 报告成功前,先确认真实画面正在渲染。页面加载完成本身并不能证明模拟器流正常。

  • 使用浏览器镜像期间,请保持终端运行。完成后,停止终端并等待其退出,以便触发陷阱。
  • 如果终端已消失或未正常退出,请在为该模拟器启动另一个镜像前运行 npx --yes serve-sim@latest --kill "$SIM"。
  • 切勿运行不带范围限定的 serve-sim --kill;其他线程可能正在使用不同模拟器的镜像。

SwiftUI 预览工作流

如果所需预览位于可导入的 Swift 包中,请使用捆绑的启动器。将其指向包清单,并选择要显示预览的目标。它会在用户源代码树之外生成一个临时宿主项目,在模拟器中安装并启动该宿主,同时监视包的修改。

node <skill-root>/scripts/swiftui-preview-browser.mjs \
  /absolute/path/to/Package.swift \
  --package-target "<target>" \
  --device "<simulator-udid>"
  • 默认启用监视模式。修改 Swift 包源文件后,启动器会重新构建生成的 dylib,并将其热替换到正在运行的宿主中,而无需重新启动应用。
  • 生成的宿主会显示在所选 Swift Package 目标中发现的所有预览变体,并提供模拟器内页面控件。若只显示部分预览,请传入 --preview-filter <regex[, ...]>;该参数会匹配显示名称和代码标识符,例如 StatusRowView_Previews。
  • 启动器打印所选模拟器的 UDID 后,请为同一 UDID 启动 serve-sim,并在应用内浏览器中打开它打印的 URL。

支持范围

  • 通过生成的宿主支持由 Swift Package 提供的 PreviewProvider 和 #Preview 声明。
  • 不要修改用户的 .xcodeproj、.xcworkspace、Package.swift、方案或构建设置来强行支持预览。

验证依据

对于浏览器或预览 QA,请截取一张显示模拟器画面的浏览器截图。对于热重载 QA,还需报告启动器输出的 hot reloaded package preview ... in pid ...,并展示编辑后发生变化的画面。

评论

支持 Markdown