swiftui-expert-skill について
swiftui-expert-skill は、SwiftUI コードのレビュー、改善、新規実装を行うエージェント向けのガイドです。API の確認やテーマ別の参照資料、正確性のルールを備え、特定のアーキテクチャは強制しません。
主な機能
- 01現行 API と非推奨 API の確認
- 02テーマ別の参照ファイル案内
- 03SwiftUI の実装とレビューの指針
- 04状態・識別子・利用可能性の確認
- 05アクセシビリティ・アニメーション・性能の扱い
活用シーン
- 01SwiftUI コードの非推奨 API の確認
- 02バージョン別フォールバック付き機能の実装
- 03状態フローとビュー構成の監査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ expo/ agent-templates --skill swiftui-expert-skillインストール後、Claude Code で/swiftui-expert-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/accessibility-patterns.mdanimation-advanced.mdanimation-basics.mdanimation-transitions.mdcharts-accessibility.mdcharts.mdimage-optimization.mdlatest-apis.mdlayout-best-practices.mdliquid-glass.mdlist-patterns.mdmacos-scenes.mdmacos-views.mdmacos-window-styling.mdperformance-patterns.mdscroll-patterns.mdsheet-navigation-patterns.mdstate-management.mdview-structure.md詳細
SwiftUI エキスパートスキル
運用ルール
- 非推奨 API の使用を避けるため、各タスクの開始時に
references/latest-apis.mdを確認します - ブリッジが必要な場合を除き、UIKit/AppKit とのブリッジより SwiftUI のネイティブ API を優先します
- 正確性とパフォーマンスを重視し、特定のアーキテクチャ(MVVM、VIPER など)を強制しません
- テスト容易性のため、ビジネスロジックとビューを分離することを推奨しますが、その方法は指定しません
- Apple のヒューマンインターフェイスガイドラインと API 設計パターンに従います
- ユーザーから明示的に依頼された場合に限り、Liquid Glass を採用します(
references/liquid-glass.mdを参照) - パフォーマンス最適化は必須事項ではなく、提案として提示します
- バージョン固有の API には
#availableによるゲートを設け、適切なフォールバックを用意します
タスクのワークフロー
既存の SwiftUI コードをレビューする
- レビュー対象のコードを読み、該当するトピックを特定します
- 非推奨 API を指摘します(
references/latest-apis.mdと照合) - 関連するトピックごとに、以下のトピックルーターを実行します
- iOS 26 以降の機能について、
#availableによるゲートとフォールバックの経路を検証します
既存の SwiftUI コードを改善する
- トピックルーターの各トピックに照らして、現在の実装を監査します
- 非推奨 API を
references/latest-apis.mdにある最新の代替 API に置き換えます - ホットパスをリファクタリングし、不要な状態更新を減らします
- 複雑なビュー本体を個別のサブビューに切り出します
UIImage(data:)が使われている場合は、画像のダウンサンプリングを提案します(任意の最適化です。references/image-optimization.mdを参照)
新しい SwiftUI 機能を実装する
- まずデータフローを設計します。所有する状態と注入される状態を特定します
- 最適な差分検出ができるようにビューを構成します(早い段階でサブビューを切り出します)
- 適切なアニメーションパターン(暗黙的アニメーションと明示的アニメーション、トランジション)を適用します
- タップ可能な要素にはすべて
Buttonを使い、アクセシビリティのグループ化とラベルを追加します - バージョン固有の API には
#availableによるゲートを設け、フォールバックを用意します
トピックルーター
現在のタスクに関連する各トピックについて、参照ファイルを確認します。
| トピック | 参照先 |
|---|---|
| 状態管理 | references/state-management.md |
| ビューの構成 | references/view-structure.md |
| パフォーマンス | references/performance-patterns.md |
| リストと ForEach | references/list-patterns.md |
| レイアウト | references/layout-best-practices.md |
| シートとナビゲーション | references/sheet-navigation-patterns.md |
| ScrollView | references/scroll-patterns.md |
| アニメーション(基本) | references/animation-basics.md |
| アニメーション(トランジション) | references/animation-transitions.md |
| アニメーション(応用) | references/animation-advanced.md |
| アクセシビリティ | references/accessibility-patterns.md |
| Swift Charts | references/charts.md |
| Charts のアクセシビリティ | references/charts-accessibility.md |
| 画像の最適化 | references/image-optimization.md |
| Liquid Glass(iOS 26 以降) | references/liquid-glass.md |
| macOS シーン | references/macos-scenes.md |
| macOS ウィンドウのスタイル設定 | references/macos-window-styling.md |
| macOS ビュー | references/macos-views.md |
| 非推奨 API の確認 | references/latest-apis.md |
正確性チェックリスト
以下は必須ルールです。違反は常にバグです。
-
@Stateプロパティはprivateにする - 子ビューが親の状態を変更する場合に限り、
@Bindingを使う - 渡された値を
@Stateや@StateObjectとして宣言しない(更新が反映されません) - ビューが所有するオブジェクトには
@StateObject、注入されるオブジェクトには@ObservedObjectを使う - iOS 17 以降:
@Observableには@Stateを使い、バインディングが必要な注入済み Observable には@Bindableを使う -
ForEachでは安定した識別子を使う(動的なコンテンツで.indicesは使わない) -
ForEachの各要素が生成するビューの数を一定にする -
.animation(_:value:)には必ずvalueパラメーターを含める - iOS 26 以降の API には
#availableによるゲートを設け、フォールバックを用意する - チャートの型を使用するファイルには
import Chartsを含める
参考資料
references/latest-apis.md-- すべてのタスクで最初にお読みください。 非推奨 API から最新 API への移行(iOS 15+ から iOS 26+)references/state-management.md-- プロパティラッパー、データフロー、@Observableへの移行references/view-structure.md-- ビューの抽出、コンテナパターン、@ViewBuilderreferences/performance-patterns.md-- ホットパスの最適化、更新制御、_logChanges()references/list-patterns.md-- ForEach の識別性、Table(iOS 16+)、インラインフィルタリングの注意点references/layout-best-practices.md-- レイアウトパターン、GeometryReader の代替手段references/accessibility-patterns.md-- VoiceOver、Dynamic Type、グループ化、特性references/animation-basics.md-- 暗黙的/明示的なアニメーション、タイミング、パフォーマンスreferences/animation-transitions.md-- ビューのトランジション、matchedGeometryEffect、Animatablereferences/animation-advanced.md-- フェーズ/キーフレームアニメーション(iOS 17+)、@Animatableマクロ(iOS 26+)references/charts.md-- Swift Charts のマーク、軸、選択、スタイル設定、Chart3D(iOS 26+)references/charts-accessibility.md-- Charts の VoiceOver、Audio Graph、代替手段references/sheet-navigation-patterns.md-- シート、NavigationSplitView、インスペクターreferences/scroll-patterns.md-- ScrollViewReader、プログラムによるスクロールreferences/image-optimization.md-- AsyncImage、ダウンサンプリング、キャッシュreferences/liquid-glass.md-- iOS 26+ の Liquid Glass エフェクトと代替パターンreferences/macos-scenes.md-- 設定、MenuBarExtra、WindowGroup、マルチウィンドウreferences/macos-window-styling.md-- ツールバースタイル、ウィンドウサイズ、Commandsreferences/macos-views.md-- HSplitView、Table、PasteButton、AppKit との連携
コメント
Markdown 対応