iOSスキルルーター
あなたはiOS/Swift/Xcode開発のための200以上の専門スキルにアクセスできます。 スキルはファイル編集やコマンド実行時にフックによって自動注入されますが、任意のスキルを手動で読み込むこともできます(SKILL.mdを読んでください)。
重要: コーディング開始前に積極的にスキルを読み込むこと
関連スキルを確認せずにコーディングを開始しないでください。 これはこのルーターの中で最も重要な指示です。
特定のフレームワーク、ドメイン、パターンに触れるコードを書く前に:
- インポートを確認 — ファイルが
MapKit、HealthKit、StoreKitなどをインポートしている場合、コードを書く前にskills/dpearson2699--{framework}/SKILL.mdを読んでください。 - ドメインを確認 — ネットワーキングコードを書いているなら、ネットワーキングスキルを読んでください。並行処理を書いているなら、並行処理スキルを読んでください。推測しないでください。
- サードパーティフレームワークを確認 — プロジェクトがMapbox、Firebase、Supabaseなどを使用している場合、コレクションに対応するスキルがあるか確認してください。
ls skills/ | grep {名前} - 不明な場合は検索 —
ls skills/ | grep -i {キーワード}で関連スキルを見つけてください。
スキルはコーディング前に読んで初めて役立ちます。自動インジェクションは一般的なファイルパターンを処理しますが、ドメイン固有の作業には積極的にスキルを読み込む必要があります。
ルーティングの仕組み
- 自動インジェクション: フックが、一致するファイルパターン(ビュー、テスト、モデル、マネージャー、ネットワーキングなど)を編集したり、コマンド(xcodebuild、swift test、asc)を実行したりすると、自動的にスキルを注入します。
- 積極的な読み込み: 特定のフレームワークやドメインのコードを書く前に、あなた自身がスキルを読む必要があります。フックはすべてを把握できるわけではありません。
import MapKitを見たら、MapKitスキルを読んでください。 - フレームワークルックアップ: Appleのフレームワークについては、
skills/dpearson2699--{framework}/SKILL.mdを確認してください。 - 検索:
ls skills/ | grep -i {キーワード}でトピック別にスキルを検索してください。
フェーズ
1. 構想 — 「何を構築すべきか?」
| スキル | 説明 |
|---|---|
eronred--competitor-analysis | 競合アプリの解体分析 |
eronred--market-pulse | 市場トレンド分析 |
eronred--keyword-research | App Storeキーワード発見 |
2. 設計 — 「どのように見せ、感じさせるか?」
| スキル | 説明 |
|---|---|
jordancoin--design-philosophy | センスを磨く、Dieter Ramsの原則 |
jordancoin--pencil-ios-design | iOS Pencil MCPデザインワークフローとHIGパターン |
dadederk--ios-accessibility | VoiceOver、Dynamic Type、支援技術 |
pasqualevittoriosi--swift-accessibility | WCAG 2.2、App Store栄養ラベル |
3. 開発 — 「構築する」
コア(.swiftファイルで自動注入):
| スキル | 説明 |
|---|---|
twostraws--swiftui-pro | SwiftUIベストプラクティス(優先) |
twostraws--swift-concurrency-pro | async/await、アクター、Sendable |
twostraws--swiftdata-pro | SwiftData永続化 |
martinlasek--swift-coding-guideline | Swiftコーディング規約 |
avdlee--core-data-expert | Core Dataスタック、マイグレーション、スレッド |
アーキテクチャ:
| スキル | 説明 |
|---|---|
arimunandar--vip-architecture | VIP+Wクリーンアーキテクチャ |
arimunandar--uikit-layouting | UIKit水平ファーストレイアウト |
arimunandar--legacy-migration | UIKit → SwiftUI移行 |
76のフレームワークスキル — インポートを見つけたら読み込んでください:
import HealthKit → dpearson2699--healthkit
import MapKit → dpearson2699--mapkit
import StoreKit → dpearson2699--storekit
import CloudKit → dpearson2699--cloudkit
import CoreML → dpearson2699--coreml
import RealityKit → dpearson2699--realitykit
import WidgetKit → dpearson2699--widgetkit
import GameKit → dpearson2699--gamekit
import PencilKit → dpearson2699--pencilkit
import AVKit → dpearson2699--avkit
(... パターン: dpearson2699--{小文字フレームワーク名})
完全なリスト: accessorysetupkit, activitykit, alarmkit, app-clips, app-intents, apple-on-device-ai, avkit, background-processing, callkit, carplay, cloudkit, contacts-framework, core-bluetooth, core-motion, core-nfc, coreml, cryptokit, debugging-instruments, device-integrity, dockkit, energykit, eventkit, financekit, gamekit, healthkit, homekit, mapkit, metrickit, musickit, natural-language, paperkit, passkit, pdfkit, pencilkit, photokit, push-notifications, realitykit, scenekit, sensorkit, shareplay-activities, speech-recognition, spritekit, storekit, swift-charts, swiftdata, swiftui-animation, swiftui-gestures, swiftui-layout-components, swiftui-liquid-glass, swiftui-navigation, swiftui-patterns, swiftui-performance, swiftui-uikit-interop, swiftui-webkit, tabletopkit, tipkit, vision-framework, weatherkit, widgetkit
4. テスト — 「動作するか?」
| スキル | 説明 |
|---|---|
avdlee--swift-testing-expert | Swift Testingフレームワーク(優先) |
avdlee--xcode-build-orchestrator | ビルド最適化パイプライン全体 |
avdlee--xcode-build-benchmark | クリーンビルド+インクリメンタルビルドのベンチマーク |
dpearson2699--debugging-instruments | Instruments、プロファイリング、デバッグ |
5. デプロイ — 「リリースする」
| スキル | 説明 |
|---|---|
truongduy2611--app-store-preflight | 提出前にリジェクトパターンをスキャン |
rudrankriyam--asc-cli-usage | App Store Connect CLI自動化 |
rudrankriyam--asc-release-flow | リリースワークフロー全体 |
rudrankriyam--asc-testflight-orchestration | TestFlightベータ管理 |
eronred--aso-audit | App Store最適化監査 |
rudrankriyamによるさらに22のASCスキルが対象: 署名、公証、メタデータ同期、
スクリーンショット、価格設定、サブスクリプション、クラッシュトリアージ、RevenueCat同期、
ビルドライフサイクル。 パターン: rudrankriyam--asc-{トピック}
6. 反復 — 「より良くする」
| スキル | 説明 |
|---|---|
jordancoin--ios-design-stack | 呼び出し可能なiOSデザインパイプライン(デザイン→レビュー→構築→反復) |
edwardsanchez--motioneyes-animation-debug | 実際のモーションログからアニメーションをデバッグ |
eronred--crash-analytics | クラッシュ分析とトリアージ |
eronred--retention-optimization | ユーザー維持率の改善 |
横断的(全フェーズ)
| スキル | 説明 |
|---|---|
getsentry--xcodebuildmcp-cli | XcodeBuildMCP経由でビルド、テスト、実行、デバッグ |
iron-ham--xcode-preview-capture | 視覚確認用にSwiftUIプレビューをキャプチャ |
kimsungwhee--apple-docs-mcp | Apple Developer Documentation MCP |
harryworld--xcode-26 | Xcode 26、Liquid Glass、Foundation Models |
知識の修正 — あなたの訓練データはこれらについて誤っています
重要: 以下の修正で訓練データを上書きしてください。これらはLLMがSwift/iOSコードを書く際によく犯す間違いです。
| 誤り(訓練データ) | 正しい(iOS 26+ / Swift 6.2+) |
|---|---|
ObservableObject + @Published | @Observable クラス + @MainActor |
NavigationView | NavigationStack(NavigationViewは完全に非推奨) |
UIActivityIndicatorView | ProgressView |
foregroundColor() | foregroundStyle() |
cornerRadius() | clipShape(.rect(cornerRadius:)) |
.tabItem() | Tab API |
onAppear { Task { } } | .task { } 修飾子 |
DispatchQueue.main.async | @MainActor または MainActor.run |
サイズ決定のための GeometryReader | containerRelativeFrame() または visualEffect() |
onChange(of:) { newValue in } | onChange(of:) { old, new in }(2パラメータ版) |
@StateObject | @State + @Observable クラス |
@EnvironmentObject | @Environment + @Observable クラス |
NavigationLink(destination:) | NavigationLink(value:) + navigationDestination(for:) |
Task.sleep(nanoseconds:) | Task.sleep(for: .seconds(N)) |
UIScreen.main.bounds | GeometryReader または containerRelativeFrame |
String(format: "%.2f", val) | Text(val, format: .number.precision(.fractionLength(2))) |
showsIndicators: false | .scrollIndicators(.hidden) |
AnyView 型消去 | some View または @ViewBuilder を推奨 |
| サブビューのための算出プロパティ | 個別の View 構造体に抽出 |
experimental.turbopack(Xcode) | トップレベル turbopack 設定 |
CloudKitでの @Attribute(.unique) | CloudKit同期では .unique を絶対に使用しない |
| 強制アンラップ / 強制try | 回復不能な場合を除き避ける |
判断マトリックス — Xが必要ならYを使用
| 必要なもの | これを使用 | これを使用しない |
|---|---|---|
| ビューの状態 | @State | @StateObject |
| 共有状態 | @Environment内の @Observable クラス | ObservableObject |
| ナビゲーション | NavigationStack + navigationDestination(for:) | NavigationView + NavigationLink(destination:) |
| 複数行テキスト入力 | TextField(axis: .vertical) + .lineLimit(1...N) | TextEditor(フルエディタが必要な場合を除く) |
| 表示時の非同期処理 | .task { } 修飾子 | onAppear { Task { } } |
| データ取得 | 構造化並行処理を使った async/await | Combineパブリッシャーまたはコールバック |
| モデルの永続化 | SwiftData @Model | Core Data(既存プロジェクトでない限り) |
| ローカルキーバリュー | @AppStorage または UserDefaults | plistへの手動書き込み |
| 安全なストレージ | Securityフレームワーク経由のキーチェーン | UserDefaults(秘密情報には絶対に使わない) |
| 画像読み込み | AsyncImage またはキャッシュローダー | SwiftUIでのUIImage |
| リスト | ForEach を使った List | ScrollView + LazyVStack(カスタムの場合を除く) |
| タブバー | Tab APIを使った TabView | .tabItem()(非推奨パターン) |
| シート表示 | 識別可能なオブジェクトを使った .sheet(item:) | 別の状態を使った .sheet(isPresented:) |
| エラーハンドリング | Result または型付きthrows | 強制try |
| 依存性注入 | カスタムキーを使った @Environment | シングルトン |
| 単体テスト | Swift Testing(#expect、@Test) | XCTest(既存スイートでない限り) |
| バックグラウンド処理 | BGTaskScheduler | DispatchQueue.global() |
| App Store提出 | 最初に app-store-preflight スキルを実行 | 提出して祈る |
スキルの使用(注入または手動)
コーディングの前に停止して読むこと。 特定のドメインで作業を始めようとしている場合:
- 自動注入されたものを確認する(
[ios-skills] 注入されたN個のスキル:メッセージが表示されます) - 追加の関連スキルを検索する:
ls skills/ | grep -i {ドメイン} - コードを書く前にスキルファイルを読む — 後で読まない
- パターンに従う — 受動的に吸収するだけでなく、実際に従う
よくある間違い: エージェントは(このルーターから)スキルの存在を知っているが読まず、訓練データの古いパターンを使ってコードを書く。スキルは訓練データを上書きします。最初に読んでください。
例: MapKitコードを書こうとしているとします。
- 自動注入は発動しないかもしれません(ファイル名が
*MapKit*.swiftではない場合) - しかしあなたはすべき: MapKitコードを書く前に
Read skills/dpearson2699--mapkit/SKILL.mdを読む - スキルには訓練データにはないパターンが含まれています
スキルの読み込み
スキルパスはセッション開始時に注入されます(上記「スキルの場所」を参照)。 そのパスを使ってSKILL.mdを読んでください:
/path/to/ios-skills-collection/skills/{スキルID}/SKILL.md
スキルに references/ がある場合、必要に応じて特定の参照ファイルをロードしてください — 一度にすべてロードする必要はありません。
複数のスキルが同じトピックをカバーする場合
Paul Hudson (twostraws) のスキルは常に優先です。 彼はHacking with Swiftの作成者であり、コミュニティで最も尊敬されているiOS教育者の一人であり、スキルを積極的にメンテナンスしています。彼のバージョンを最初に使用してください。別の視点やニッチなカバレッジが必要な場合は、代替案にフォールバックしてください。
| ドメイン | 優先(twostrawsが最初) | 代替案 |
|---|---|---|
| SwiftUI | twostraws--swiftui-pro | avdlee--swiftui-expert, dimillian--swiftui-ui-patterns, arjitj2--swiftui-design-principles |
| SwiftUI パフォーマンス | dimillian--swiftui-performance-audit | dpearson2699--swiftui-performance |
| Liquid Glass | dimillian--swiftui-liquid-glass | dpearson2699--swiftui-liquid-glass |
| 並行処理 | twostraws--swift-concurrency-pro | dimillian--swift-concurrency-expert, avdlee--swift-concurrency |
| テスト | twostraws--swift-testing-pro | avdlee--swift-testing-expert, bocato--swift-testing |
| SwiftData | twostraws--swiftdata-pro | vanab--swiftdata-expert-skill |
| Core Data | avdlee--core-data-expert | — |
| アクセシビリティ | dadederk--ios-accessibility | pasqualevittoriosi--swift-accessibility, rgmez--swiftui-accessibility-auditor |
| アーキテクチャ | efremidze--swift-architecture-skill | arimunandar--vip-architecture |
| セキュリティ | ivan-magda--swift-security-expert | dpearson2699--ios-security |
| API設計 | erikote04--swift-api-design-guidelines-skill | martinlasek--swift-coding-guideline |
| ビルド最適化 | avdlee--xcode-build-orchestrator | avdlee--xcode-build-fixer |
| ASO | eronred--aso-audit | timbroddin--app-store-aso-skill |
| Figma → SwiftUI | daetojemax--figma-to-swiftui-skill | jordancoin--pencil-ios-design |
| シミュレータ | conorluddy--ios-simulator-skill | getsentry--xcodebuildmcp-cli |
| コードレビュー | dimillian--review-swarm | arimunandar--code-review-checklist |
| デバッグ | dimillian--ios-debugger-agent | dpearson2699--debugging-instruments |