mcpField
A
axiom-ios-ui

axiom-ios-ui

github.com/charleswiltgenデザイン・UI1.2k213 回インストール今日更新
リポジトリ

axiom-ios-ui について

axiom-ios-uiは、SwiftUI、UIKit、デザイン、アクセシビリティ、テストに関するiOS UI作業を案内するスキルです。問題に応じて適切なスキルや監査エージェントを選べます。

主な機能

  1. 01SwiftUIとUIKitの問題を振り分け
  2. 02レイアウト、ナビゲーション、アニメーションに対応
  3. 03デザインとアクセシビリティの案内
  4. 04自動監査エージェントを提示

活用シーン

  1. 01SwiftUIのレイアウト問題の解決策探し
  2. 02UIKitブリッジ関連スキルの選択
  3. 03ナビゲーションやアクセシビリティの監査

インストール

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

$npx skills add https://github.com/charleswiltgen/axiom --skill axiom-ios-ui

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

詳細

iOS UI ルーター

SwiftUI、UIKit、レイアウト、ナビゲーション、アニメーション、デザインなど、iOS の UI に関する作業では必ずこのスキルを使用してください。

使用するタイミング

次の作業でこのルーターを使用してください:

  • SwiftUI のビュー、状態、バインディング
  • UIKit のビューと制約
  • レイアウトの問題(Auto Layout、SwiftUI のレイアウト)
  • ナビゲーション(NavigationStack、ディープリンク)
  • アニメーションとトランジション
  • Liquid Glass のデザイン(iOS 26 以降)
  • Apple Human Interface Guidelines
  • UI アーキテクチャとパターン
  • アクセシビリティに関する UI の問題

優先順位の決定

ios-ui と ios-performance:UI の動作が遅い場合(例:「SwiftUI List が遅い」):

  1. まず ios-ui を試してください — ドメイン固有の対処(LazyVStack、ビューの ID、@State の最適化)で、5 分以内に UI のパフォーマンスが改善することがよくあります
  2. ドメイン固有の対処で改善しない場合に限り、ios-performance を使用してください — プロファイリングには時間がかかり、ドメインの知識でわかっていることを確認するだけになる場合があります

理由:既知の SwiftUI パターンで修正できるのに Instruments を使うと、時間を無駄にします。先にドメイン固有の対処を試し、その後にプロファイリングを行ってください。

ルーティングのロジック

SwiftUI の問題

ビューが更新されない → /skill axiom-swiftui-debugging ナビゲーションの問題 → /skill axiom-swiftui-nav パフォーマンス/遅延 → /skill axiom-swiftui-performance レイアウトの問題 → /skill axiom-swiftui-layout スタック/グリッド/アウトライン → /skill axiom-swiftui-containers-ref アニメーションの問題 → /skill axiom-swiftui-animation-ref ジェスチャーの競合 → /skill axiom-swiftui-gestures ドラッグ&ドロップ、コピー&ペースト、共有 → /skill axiom-transferable-ref アーキテクチャ/テスト容易性 → /skill axiom-swiftui-architecture アプリレベルの構成 → /skill axiom-app-composition 検索の実装 → /skill axiom-swiftui-search-ref iOS 26 の機能 → /skill axiom-swiftui-26-ref UIKit とのブリッジ(Representable、HostingController) → /skill axiom-uikit-bridging

UIKit の問題

Auto Layout の競合 → /skill axiom-auto-layout-debugging アニメーションのタイミングの問題 → /skill axiom-uikit-animation-debugging SwiftUI の埋め込み(HostingController、HostingConfiguration) → /skill axiom-uikit-bridging

デザインとガイドライン

Liquid Glass の採用 → /skill axiom-liquid-glass SF Symbols(エフェクト、レンダリング、カスタム) → /skill axiom-sf-symbols デザイン上の判断 → /skill axiom-hig タイポグラフィ → /skill axiom-typography-ref TextKit/リッチテキスト → /skill axiom-textkit-ref

tvOS

Focus Engine、リモート入力、TVUIKit、テキスト入力 → /skill axiom-tvos

アクセシビリティ

VoiceOver、Dynamic Type → /skill axiom-accessibility-diag

テスト

UI テストの不安定さ → /skill axiom-ui-testing

自動スキャン

アーキテクチャ監査 → swiftui-architecture-auditor エージェントを起動します(関心の分離、ビュー内のロジック、テスト容易性) パフォーマンススキャン → swiftui-performance-analyzer エージェントまたは /axiom:audit swiftui-performance を起動します(ビュー本体内の負荷の高い処理、不要な更新) ナビゲーション監査 → swiftui-nav-auditor エージェントまたは /axiom:audit swiftui-nav を起動します(ディープリンクの不足、状態復元、誤ったコンテナ) レイアウト監査 → swiftui-layout-auditor エージェントまたは /axiom:audit swiftui-layout を起動します(GeometryReader の誤用、適応性の不足、ブレークポイントのハードコード、ID の喪失) UX フロー監査 → ux-flow-auditor エージェントまたは /axiom:audit ux-flow を起動します(行き止まり、閉じる操作の罠、見つけにくい CTA、空/読み込み中/エラー状態の不足) Liquid Glass スキャン → liquid-glass-auditor エージェントまたは /axiom:audit liquid-glass を起動します(採用の機会、ツールバーの改善) TextKit スキャン → textkit-auditor エージェントまたは /axiom:audit textkit を起動します(TextKit 1 へのフォールバック、非推奨のグリフ API、Writing Tools)

意思決定ツリー

digraph ios_ui {
    start [label="UI issue" shape=ellipse];
    is_tvos [label="tvOS?" shape=diamond];
    is_swiftui [label="SwiftUI?" shape=diamond];
    is_uikit [label="UIKit?" shape=diamond];
    is_design [label="Design/guidelines?" shape=diamond];

    start -> is_tvos;
    is_tvos -> "axiom-tvos" [label="focus, remote, TVUIKit, text input, storage"];
    is_tvos -> is_swiftui [label="no"];
    is_swiftui -> swiftui_type [label="yes"];
    is_swiftui -> is_uikit [label="no"];
    is_uikit -> uikit_type [label="yes"];
    is_uikit -> is_design [label="no"];
    is_design -> design_type [label="yes"];
    is_design -> "accessibility-diag" [label="accessibility"];

    swiftui_type [label="What's wrong?" shape=diamond];
    swiftui_type -> "swiftui-debugging" [label="view not updating"];
    swiftui_type -> "swiftui-nav" [label="navigation"];
    swiftui_type -> "swiftui-performance" [label="slow/lag"];
    swiftui_type -> "swiftui-layout" [label="adaptive layout"];
    swiftui_type -> "swiftui-containers-ref" [label="stacks/grids/outlines"];
    swiftui_type -> "swiftui-architecture" [label="feature architecture"];
    swiftui_type -> "app-composition" [label="app-level (root, auth, scenes)"];
    swiftui_type -> "swiftui-animation-ref" [label="animations"];
    swiftui_type -> "swiftui-gestures" [label="gestures"];
    swiftui_type -> "transferable-ref" [label="drag/drop, sharing, copy/paste"];
    swiftui_type -> "swiftui-search-ref" [label="search"];
    swiftui_type -> "swiftui-26-ref" [label="iOS 26 features"];
    swiftui_type -> "uikit-bridging" [label="UIKit interop"];
    swiftui_type -> "ux-flow-audit" [label="UX dead ends, dismiss traps"];

    uikit_type [label="UIKit issue?" shape=diamond];
    uikit_type -> "auto-layout-debugging" [label="Auto Layout"];
    uikit_type -> "uikit-animation-debugging" [label="animations"];
    uikit_type -> "uikit-bridging" [label="SwiftUI embedding"];
    uikit_type -> "ux-flow-audit" [label="UX dead ends, dismiss traps"];

    design_type [label="Design topic?" shape=diamond];
    design_type -> "liquid-glass" [label="Liquid Glass"];
    design_type -> "sf-symbols" [label="SF Symbols"];
    design_type -> "hig" [label="HIG compliance"];
    design_type -> "typography-ref" [label="typography"];
    design_type -> "textkit-ref" [label="TextKit/rich text"];
}

自動スキャンエージェント:

  • アーキテクチャ監査(関心の分離、テスト容易性)が必要ですか? → swiftui-architecture-auditor(エージェント)
  • SwiftUI のパフォーマンススキャン(ビュー本体の処理、不要な更新)が必要ですか? → swiftui-performance-analyzer(エージェント)
  • ナビゲーション監査(ディープリンク、状態の復元)が必要ですか? → swiftui-nav-auditor(エージェント)
  • レイアウト監査(GeometryReader、適応性、ハードコードされたサイズ)が必要ですか? → swiftui-layout-auditor(エージェント)
  • UX フロー監査(行き止まり、閉じる操作の罠、状態の欠落)が必要ですか? → ux-flow-auditor(エージェント)
  • Liquid Glass の導入状況をスキャンしますか? → liquid-glass-auditor(エージェント)
  • TextKit のスキャン(Writing Tools、非推奨 API)が必要ですか? → textkit-auditor(エージェント)

不合理な正当化を避ける

考え実際
「シンプルな SwiftUI レイアウトだから、レイアウトスキルは不要」SwiftUI のレイアウトには 12 個の落とし穴があります。swiftui-layout はそのすべてを扱います。
「NavigationStack の仕組みは分かっている」ナビゲーションには状態の復元、ディープリンク、アイデンティティに関する落とし穴があります。swiftui-nav を使えば、2 時間のデバッグを防げます。
「ビューが更新されないだけだから、自分でデバッグする」ビューの更新失敗には 4 つの根本原因があります。swiftui-debugging は 5 分で診断します。
「とりあえず .animation() を追加して、後で直そう」アニメーションの問題は積み重なります。swiftui-animation-ref には正しいパターンが記載されています。
「この UI はシンプルだから、アーキテクチャは不要」小さな機能でも、関心の分離は役立ちます。swiftui-architecture はリファクタリングの負債を防ぎます。
「UX の問題は仕上げにすぎないから、後で直そう」行き止まりや閉じる操作の罠は、星 1 つのレビューにつながります。ux-flow-audit は数分でそれらを見つけます。
「.searchable の仕組みは分かっている」検索には 6 つの落とし穴があります(ナビゲーションコンテナー、isSearching の階層、候補の確定など)。swiftui-search-ref はそのすべてを扱います。
「SF Symbols は分かっている。単に Image(systemName:) を使うだけ」4 つのレンダリングモード、12 種類以上のエフェクト、3 つの Draw 再生モード、カスタムシンボルの作成があります。sf-symbols にはそのすべての判断ツリーがあります。
「ドラッグ&ドロップは .draggable と .dropDestination を使うだけ」UTType の宣言、表現の順序付け、ファイルのライフサイクル、アプリ間転送の落とし穴があります。transferable-ref はそのすべてを扱います。
「この UIView をさっとラップするだけ」UIViewRepresentable にはライフサイクル、コーディネーター、サイズ調整、メモリに関する落とし穴があります。uikit-bridging は 1~2 時間のデバッグセッションを防ぎます。
「tvOS はテレビ向けの iOS にすぎない」tvOS には永続ストレージも WebView もなく、2 種類のフォーカスシステムと 2 世代のリモコンがあります。axiom-tvos はそのすべての落とし穴を扱います。

呼び出し例

ユーザー:「モデルを変更しても SwiftUI のビューが更新されません」 → 呼び出し:/skill axiom-swiftui-debugging

ユーザー:「ツールバーに Liquid Glass を実装するにはどうすればよいですか?」 → 呼び出し:/skill axiom-liquid-glass

ユーザー:「NavigationStack が予期せず戻ってしまいます」 → 呼び出し:/skill axiom-swiftui-nav

ユーザー:「この SwiftUI アプリに MVVM を使うべきですか?」 → 呼び出し:/skill axiom-swiftui-architecture

ユーザー:「ログイン画面とメイン画面を切り替えるにはどうすればよいですか?」 → 呼び出し:/skill axiom-app-composition

ユーザー:「アプリの認証状態はどこに保持すべきですか?」 → 呼び出し:/skill axiom-app-composition

ユーザー:「LazyVGrid でグリッドレイアウトを作成するにはどうすればよいですか?」 → 呼び出し:/skill axiom-swiftui-containers-ref

ユーザー:「VStack と LazyVStack の違いは何ですか?」 → 呼び出し:/skill axiom-swiftui-containers-ref

ユーザー:「OutlineGroup で階層データを表示するにはどうすればよいですか?」 → 呼び出し:/skill axiom-swiftui-containers-ref

ユーザー:「SwiftUI のリストに検索を追加するにはどうすればよいですか?」 → 呼び出し:/skill axiom-swiftui-search-ref

ユーザー:「検索候補が機能しません」 → 呼び出し:/skill axiom-swiftui-search-ref

ユーザー:「タップ時に SF Symbol をアニメーションさせるにはどうすればよいですか?」 → 呼び出し:/skill axiom-sf-symbols

ユーザー:「カスタムシンボルで SF Symbol の Draw アニメーションが機能しません」 → 呼び出し:/skill axiom-sf-symbols

ユーザー:「ツールバーのアイコンにはどのレンダリングモードを使えばよいですか?」 → 呼び出し:/skill axiom-sf-symbols

ユーザー:「SwiftUI でモデルをドラッグ可能にするにはどうすればよいですか?」 → 呼び出し:/skill axiom-transferable-ref

ユーザー:「カスタムプレビュー付きの ShareLink を追加するにはどうすればよいですか?」 → 呼び出し:/skill axiom-transferable-ref

ユーザー:「SwiftUI で UIKit のビューをラップするにはどうすればよいですか?」 → 呼び出し:/skill axiom-uikit-bridging

ユーザー:「UIKit アプリに SwiftUI を埋め込むにはどうすればよいですか?」 → 呼び出し:/skill axiom-uikit-bridging

ユーザー:「UIViewRepresentable が正しく更新されません」 → 呼び出し:/skill axiom-uikit-bridging

ユーザー:「コレクションビューのセルに UIHostingConfiguration を使うにはどうすればよいですか?」 → 呼び出し:/skill axiom-uikit-bridging

ユーザー:「tvOS アプリを開発していますが、フォーカスナビゲーションが機能しません」 → 呼び出し:/skill axiom-tvos

ユーザー:「tvOS でテキスト入力を処理するにはどうすればよいですか?」 → 呼び出し:/skill axiom-tvos

ユーザー:「アプリの UX 上の行き止まりや、閉じられない画面を確認してください」 → 呼び出し:ux-flow-auditor エージェント

ユーザー:「SwiftUI のアーキテクチャで関心事が適切に分離されているか確認してください」 → 呼び出し:swiftui-architecture-auditor エージェント

ユーザー:「SwiftUI のビューをスキャンしてパフォーマンスの問題を確認してください」 → 呼び出し:swiftui-performance-analyzer エージェント

ユーザー:「ナビゲーションを監査して、ディープリンクの不足がないか確認してください」 → 呼び出し:swiftui-nav-auditor エージェント

ユーザー:「iPad とマルチタスクでレイアウトに問題がないか確認してください」 → 呼び出し:swiftui-layout-auditor エージェント

ユーザー:「アプリで Liquid Glass を活用できる箇所がないか確認してください」 → 呼び出し:liquid-glass-auditor エージェント

ユーザー:「テキストビューに Writing Tools が表示されないのはなぜですか?」 → 呼び出し:textkit-auditor エージェント

コメント