mcpField
I
ios-simulator-browser

ios-simulator-browser

github.com/openai開発7.6k54 回インストール3 週間前に更新
リポジトリ

ios-simulator-browser について

iOS Simulator のブラウザープレビューと SwiftUI パッケージのプレビューをアプリ内ブラウザーで確認するスキルです。シミュレーターのミラーリングを管理し、スクリーンショットで検証結果を示します。パッケージの編集は生成されたプレビュー用ホストにホットリロードできます。

主な機能

  1. 01アプリ内ブラウザーでシミュレーターをミラーリング
  2. 02SwiftUI パッケージのプレビューを起動
  3. 03パッケージプレビューの編集をホットリロード
  4. 04表示するプレビューの絞り込み
  5. 05QA 証跡としてスクリーンショットを取得

活用シーン

  1. 01iOS 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 Simulator ブラウザー

ブラウザーワークフロー

  1. 既存の iOS ビルド/実行ワークフロー、または xcrun simctl list devices available から、明示的な Simulator UDID を取得します。

  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. serve-sim が出力した正確なローカルプレビュー URL を Codex のアプリ内ブラウザーで開きます。

  4. 成功を報告する前に、実際のフレームが描画されていることを確認します。ページが読み込まれただけでは、シミュレーターのストリームが正常である証拠にはなりません。

  • ブラウザーミラーを使用している間は、ターミナルを起動したままにします。作業が終わったらターミナルを停止し、トラップが実行されるよう終了を待ちます。
  • ターミナルが消えていた場合、または正常に終了しなかった場合は、そのシミュレーター用の別のミラーを開始する前に npx --yes serve-sim@latest --kill "$SIM" を実行します。
  • スコープを指定せずに serve-sim --kill を実行しないでください。別のスレッドが別のシミュレーターミラーを所有している場合があります。

SwiftUI プレビューのワークフロー

要求されたプレビューがインポート可能な Swift パッケージにある場合は、同梱のランチャーを使用します。パッケージのマニフェストを指定し、表示するプレビューのターゲットを選択します。ランチャーは、ユーザーのソースツリー外に使い捨てのホストプロジェクトを生成し、そのホストを Simulator にインストールして起動し、パッケージの編集を監視します。

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 のような表示名やコード識別子に一致します。
  • ランチャーが選択した Simulator UDID を出力したら、同じ UDID に対して serve-sim を起動し、出力された URL をアプリ内ブラウザーで開きます。

サポート範囲

  • 生成されたホストを通じて、Swift Package に基づく PreviewProvider および #Preview 宣言をサポートします。
  • プレビューを無理にサポートさせるために、ユーザーの .xcodeproj、.xcworkspace、Package.swift、スキーム、またはビルド設定を編集しないでください。

証拠

ブラウザーまたはプレビューの QA では、シミュレーターフレームが写ったブラウザーのスクリーンショットを撮影します。ホットリロードの QA では、ランチャーの hot reloaded package preview ... in pid ... という出力も報告し、編集後に変更されたフレームを表示します。

コメント