mcpField
H
hinge

hinge

github.com/artemnovichkovテスト・品質4045 回インストール1 週間前に更新
リポジトリ

hinge について

hingeは、起動中の折りたたみ式iPhone Simulatorのヒンジ角度を設定・取得するコマンドラインスキルです。デバイスの姿勢やアクティブなディスプレイを確認し、その画面のスクリーンショットも撮影できます。

主な機能

  1. 01角度と折りたたみ状態の設定
  2. 02角度、向き、姿勢の取得
  3. 03アクティブなディスプレイの表示
  4. 04sweepによる角度変更のアニメーション
  5. 05アクティブなディスプレイの撮影

活用シーン

  1. 01角度別のレイアウトテスト
  2. 02UIが表示される画面の確認
  3. 03折りたたみ後のスクリーンショット撮影
  4. 04シミュレーターテストでのヒンジ操作の自動化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/artemnovichkov/hinge --skill hinge

インストール後、Claude Code で/hingeを入力して読み込まれたか確認します。

同梱ファイルscripts/hingescripts/hinge_helper.m

詳細

hinge

コマンドラインから、起動中の折りたたみ式 iPhone Simulator のヒンジ角度を設定および読み取ります。Xcode の Device Hub にある非表示のヒンジスライダー(Option キーを押しながら操作)と同じ HID イベントを送信します。

このスキルのディレクトリを基準に、バンドルされているスクリプト scripts/hinge を実行してください。PATH 上の hinge も、hinge -v が scripts/hinge -v と同じバージョンを表示する場合は使用できます。古いバージョンには screenshot と --json がありません。

コマンド

scripts/hinge 120                # set angle: 0 = closed, 180 = flat
scripts/hinge open               # 180°
scripts/hinge close              # 0°
scripts/hinge half               # 90°
scripts/hinge sweep 180 0 2      # animate from 180° to 0° over 2 seconds
scripts/hinge get                # print current angle, e.g. 130.0
scripts/hinge posture            # angle, orientation, and which integrated display is active
scripts/hinge posture --json     # the same as JSON; also works with get, orientation, screenshot
scripts/hinge screenshot out.png # capture the display that hosts the UI
scripts/hinge rotate left        # rotate 90°, like Device Hub's Controls > Rotate Left; prints the new orientation
scripts/hinge rotate right
scripts/hinge orient landscape-left  # portrait, landscape-left, landscape-right, or portrait-upside-down
scripts/hinge orientation        # print current orientation, e.g. landscape-left
scripts/hinge -d "iPhone Duo" 90 # target a simulator by name or UDID (default: $HINGE_DEVICE, else the only booted iPhone Duo)
scripts/hinge -t 0 90            # set without waiting for the angle to be confirmed

open、close、half は、unfolded/flat、closed/folded、half-open も受け付けます。

ワークフロー

  1. 折りたたみ式シミュレーターが起動していることを確認します:xcrun simctl list devices booted。-d を指定しない場合、hinge は起動中の iPhone Duo が 1 台だけならそれを選択します。複数ある場合は一覧を表示して終了するため、推測せずに -d <udid> を渡すか、代わりに HINGE_DEVICE を設定してください。
  2. 角度を設定します。シミュレーターが新しい角度を報告するとコマンドは終了するため、終了コードが 0 以外の場合は折りたたみが行われていません。確認のために get をポーリングしないでください。
  3. スクリーンショットを撮影したり UI を読み取ったりする前に、ディスプレイが切り替わるのを待ちます。角度が変わってから 1~2.5 秒かかります。
  4. 折りたたみ後に UI がどのディスプレイに表示されているかは、scripts/hinge posture で active として確認できます。解析する場合は --json を使用してください。activeDisplay がそのディスプレイを示します。
  5. scripts/hinge screenshot out.png でスクリーンショットを撮影します。アクティブなディスプレイを撮影するため、手順 3 の待ち時間が必要です。折りたたみ式デバイスで通常の simctl io … screenshot を実行すると、--display=LCD(カバー)または --display=LCD-1(内側)が指定されていない限り、Invalid argument で失敗します。

注意事項

  • シミュレーター専用です。実機では動作しません。
  • 初回実行時に、Xcode の clang で小さなヘルパーをコンパイルし、~/.cache/hinge にキャッシュします。数秒かかります。
  • sweep は 1 つのプロセス内で 60 Hz で実行されます。滑らかなアニメーションには、複数回の set 呼び出しではなく、これを使用してください。最終角度の確認は行いません。
  • 角度の設定はディスプレイの切り替えと同じではありません。角度は確認されますが、ディスプレイの切り替えはシミュレーターに委ねられます。0° と 180° では通常切り替わりますが、中間の角度ではヒンジがたどった経路によって異なります(ゆっくりした sweep では、終了まで前のディスプレイが維持されることがあります)。また、シミュレーターが新しい角度を報告しながら、ヒンジにまったく追従しなくなることもあります。決めつけずに必ず posture で確認してください。ヒンジに追従しなくなったシミュレーターでも角度は正しく報告されますが、シャットダウンして起動し直すと解消されます。
  • UI が表示されているディスプレイはバックライトではなく active で確認します。折りたたまれた Duo ではカバーが inactiveOn になります。また、バックライトの切り替えは折りたたみから最大 3 秒遅れることがあります。
  • 0~180 の範囲外の角度は拒否されます。ヒンジのないシミュレーターでは "this simulator reports no hinge" というエラーが発生します。
  • orient、orientation、rotate は、インターフェイスの向きではなくデバイスの向き(devicectl の名称)を使用します。デバイスが landscape-right の場合、インターフェイスは landscape-left で表示されます。
  • 折りたたみ式デバイスの向きは、Device Hub 独自のイベントにのみ追従します。xcrun devicectl device orientation set は成功を報告しますが、設定は元に戻されます。rotate/orient は Device Hub のイベントを送信し、それを無視するシミュレーターでは devicectl にフォールバックします。
  • これは非公開の未文書化プロトコルを使用しています。Xcode 27.1 および 27.2、iOS 27.1 で検証済みですが、ほかのバージョンでは動作しなくなる可能性があります。角度の設定が "the hinge angle did not reach ..." で失敗する場合は、プロトコルが変更された可能性が高いことを報告してください。

コメント