mcpField
A
axiom-swift

axiom-swift

github.com/charleswiltgen開発1.2k1.3k 回インストール今日更新
リポジトリ

axiom-swift について

axiom-swift は Claude Code 向けの Swift スキルです。言語イディオム、所有権、共有、デバッグ用ディープリンク、tvOS のガイドを案内し、並行処理や性能の担当範囲も区別します。

主な機能

  1. 01現代的な Swift イディオムのリファレンス
  2. 02所有権と非コピー型のガイド
  3. 03Transferable、共有、UTType のパターン
  4. 04デバッグ用ディープリンクの手法
  5. 05tvOS 開発ガイド

活用シーン

  1. 01現代的な Swift イディオムのコードレビュー
  2. 02borrowing と consuming パラメーターの適用
  3. 03ドラッグ、ドロップ、共有の実装
  4. 04デバッグリンクによるシミュレーター画面への移動

インストール

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

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

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

skills/
deep-link-debugging.md
ownership-conventions.md
swift-modern.md
swift-simplifier.md
transferable-ref.md
tvos.md

詳細

Swift 言語とプラットフォーム

Swift のイディオムのレビュー、所有権/非コピー可能型、Transferable/ドラッグ&ドロップ、デバッグ用ディープリンク、または tvOS 開発には、必ずこのスキルを使用してください。

Axiom エージェントを起動できませんか? このルーターからエージェントに案内された場合は、その手順を直接実行してください。MCP 経由では axiom_get_agent がエージェントを返します。それ以外の場合は、以下のファイルを読み込んでください。必要なのはファイルの検索と読み込みだけです。

ここで利用可能:skills/swift-simplifier.md。

ほかのエージェントについても、MCP 経由では axiom_get_agent がエージェントを返します。axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_* ツールを使って、エージェントの xclog、xcsym、xcprof の手順を実行してください。それ以外の場合は、Axiom のスキルから skills/<agent>.md を検索してください。見つからなければ、このスイートのスキルを使い、PATH 上にある Axiom のツールを利用して自分で作業してください。

クイックリファレンス

症状/タスクリファレンス
古い Swift のパターン(Date()、CGFloat、DateFormatter)skills/swift-modern.md を参照
Foundation の最新化(FormatStyle、URL.documentsDirectory)skills/swift-modern.md を参照
Swift コードでよくある Claude の幻覚skills/swift-modern.md を参照
Swift 6.4 のイディオム — anyAppleOS、weak let、~Sendable(OS27)skills/swift-modern.md を参照
非コピー可能型(~Copyable)skills/ownership-conventions.md を参照
borrowing/consuming パラメーターの所有権skills/ownership-conventions.md を参照
InlineArray、Span、値ジェネリクス、Swift 6.4 の borrow/mutate アクセサー(OS27)skills/ownership-conventions.md を参照
ARC のオーバーヘッド削減skills/ownership-conventions.md を参照
ドラッグ&ドロップ(.draggable、.dropDestination)skills/transferable-ref.md を参照
コピー/ペースト(.copyable、PasteButton)skills/transferable-ref.md を参照
ShareLink、コンテンツ共有skills/transferable-ref.md を参照
カスタム UTType 宣言skills/transferable-ref.md を参照
TransferRepresentation の選択skills/transferable-ref.md を参照
シミュレーターのテスト用デバッグ専用ディープリンクskills/deep-link-debugging.md を参照
スクリーンショット用に特定の画面へ移動skills/deep-link-debugging.md を参照
tvOS Focus Engine、Siri Remote 入力skills/tvos.md を参照
tvOS のストレージ制約(ローカルストレージの永続性は保証されません)skills/tvos.md を参照
tvOS のテキスト入力、AVPlayer の調整skills/tvos.md を参照
TVUIKit コンポーネントskills/tvos.md を参照
Swift を明快にするための簡素化(動作を維持するクリーンアップ)swift-simplifier エージェント — /axiom:audit swift-simplify

判断ツリー

digraph swift {
    start [label="Swift task" shape=ellipse];
    what [label="What do you need?" shape=diamond];

    start -> what;
    what -> "skills/swift-modern.md" [label="modern idioms,\noutdated patterns,\nFoundation APIs"];
    what -> "skills/ownership-conventions.md" [label="~Copyable, borrowing,\nconsuming, InlineArray,\nSpan, ARC reduction"];
    what -> "skills/transferable-ref.md" [label="drag & drop, copy/paste,\nShareLink, UTTypes,\nTransferable conformance"];
    what -> "skills/deep-link-debugging.md" [label="debug deep links,\nsimulator navigation,\nscreenshot automation"];
    what -> "skills/tvos.md" [label="tvOS app,\nFocus Engine,\nSiri Remote, storage"];
}
  1. 古い Swift のパターン/最新 API への置き換え/Claude の幻覚? -> skills/swift-modern.md
  2. ~Copyable/borrowing/consuming/InlineArray/Span? -> skills/ownership-conventions.md
  3. ドラッグ&ドロップ/コピー&ペースト/ShareLink/Transferable/UTType? -> skills/transferable-ref.md
  4. デバッグ用ディープリンク/シミュレーターでのナビゲーション/スクリーンショットの自動化? -> skills/deep-link-debugging.md
  5. tvOS 開発/Focus Engine/Siri Remote/ストレージ/AVPlayer? -> skills/tvos.md
  6. Swift の並行処理(async/await、actors、Sendable) -> /skill axiom-concurrency
  7. Swift のパフォーマンス(COW、ARC、ジェネリクスの最適化) -> axiom-performance を参照(skills/swift-performance.md)
  8. Codable のパターン(JSON、CodingKeys、enum のシリアライズ) -> axiom-data を参照(skills/codable.md)
  9. Swift を明快にするための簡素化(guard/optional のクリーンアップ、if/switch 式、ボイラープレート)? -> swift-simplifier エージェント(/axiom:audit swift-simplify)

競合の解決

swift と concurrency:Swift 6 の並行処理エラーが発生した場合:

  • swift ではなく concurrency を使ってください — 並行処理エラーは、アクター分離または Sendable に関する問題です。skills/swift-modern.md では並行処理の基本方針(デフォルト設定)を扱っていますが、詳細なパターンは axiom-concurrency にあります。

swift と performance:Swift コードを最適化する場合:

  • 所有権に関する質問(borrowing/consuming/~Copyable/InlineArray/Span)なら swift を使ってください → skills/ownership-conventions.md
  • COW、ARC のプロファイリング、ジェネリックの特殊化、または Instruments のワークフローに関する質問なら performance を使ってください → axiom-performance

swift と swiftui:ドラッグ&ドロップまたはコピー/ペーストを実装する場合:

  • Transferable への準拠、表現の選択、UTType の宣言には swift を使ってください → skills/transferable-ref.md
  • ビュー単位のモディファイア(.draggable、.dropDestination のスタイル設定、アニメーション)には swiftui を使ってください

swift と integration:コンテンツを共有する場合:

  • ShareLink + Transferable → swift を使ってください(skills/transferable-ref.md)
  • UIActivityViewController のカスタマイズ、共有拡張機能 → integration を使ってください

swift と axiom-build:tvOS のビルドに失敗する場合:

  • 環境/Xcode の問題 → まず axiom-build を使ってください
  • tvOS 固有のコードの問題(Focus Engine、ストレージ、WebView がないこと)→ swift を使ってください(skills/tvos.md)

重要なパターン

最新の Swift イディオム(skills/swift-modern.md):

  • Claude がデフォルトで使う、古くなったパターン 12 個以上(Date()、CGFloat、DateFormatter、DispatchQueue.main.async)
  • Foundation の最新化(FormatStyle、URL.documentsDirectory、.replacing())
  • Claude が見落とす SwiftUI の便利な API(ContentUnavailableView.search、LabeledContent)
  • Swift 6.4 の並行処理に関するデフォルトの基本方針
  • Claude によくある 12 個以上のハルシネーションと、その修正方法

所有権と非コピー可能型(skills/ownership-conventions.md):

  • 7 つのパターンによる borrowing/consuming パラメータ修飾子
  • ~Copyable 型:FileHandle のパターン、制限事項の表、よくあるコンパイラエラー
  • InlineArray:値ジェネリクスを使った固定サイズのスタック割り当て配列
  • Span ファミリー:UnsafeBufferPointer に代わる、安全な連続メモリアクセス
  • 所有権修飾子が役立つ場合と省略すべき場合の判断ツリー

Transferable と共有(skills/transferable-ref.md):

  • CodableRepresentation、DataRepresentation、FileRepresentation、ProxyRepresentation の判断ツリー
  • SwiftUI API を網羅したドラッグ&ドロップ、コピー/ペースト、ShareLink
  • カスタム UTType の宣言(Swift + Info.plist の両方が必須)
  • よくある 7 つのエラーと修正方法(表現の順序、Info.plist の不足、ヒットテスト)
  • NSItemProvider による UIKit ブリッジ

ディープリンクのデバッグ(skills/deep-link-debugging.md):

  • シミュレーター内のナビゲーション用のデバッグ専用 URL スキーム
  • 堅牢なルーティングを実現する NavigationPath との統合
  • 状態設定リンク(エラー状態、空の状態)
  • /axiom:screenshot および simulator-tester エージェントとの統合
  • 視覚的な検証により、反復作業を 60~75% 高速化

tvOS 開発(skills/tvos.md):

  • デュアルフォーカスシステム(UIKit Focus Engine + SwiftUI @FocusState)
  • Siri Remote の入力(2 世代、3 つの入力レイヤー)
  • ストレージの制約(永続性が保証されたローカルストレージはなく、iCloud が必須)
  • WebView は使用不可(JavaScriptCore のみ、DOM なし)
  • AVPlayer の調整、Menu ボタンのステートマシン
  • TVUIKit コンポーネント

合理化への反論

考え実際のところ
「Date()で問題ない。誰もが使っている」Date.nowはSwift 5.6以降の標準的なパターンです。skills/swift-modern.mdには、Claudeが間違えやすいパターンが12個以上記載されています。
「所有権修飾子は必要ない」ほとんどのコードではそのとおりです。ただし、~Copyable型には必須であり、ホットパスにある大きな値型では、測定可能な効果が得られます。
「Transferableはドラッグ&ドロップ用のCodableにすぎない」Transferableには4種類の表現型、順序のルール、Info.plistの要件があります。間違えると、アプリ間の連携が何も通知されないまま失敗します。
「tvOSでもiOSと同じコードを使えばいい」tvOSには永続性が保証されたローカルストレージも、WebViewもありません。また、二重のフォーカスシステムと、世代の異なる2種類のリモコンがあります。コンパイルは問題なく通りますが、実行時に失敗します。
「デバッグ用ディープリンクはやりすぎだ」手動での画面遷移には1回の反復ごとに2~3分かかります。ディープリンクを使えば45秒に短縮できます。デバッグセッション全体では、何時間もの節約になります。
「CGFloatはSwiftUIで使われる型だ」Swift 5.5以降では、DoubleとCGFloatの間で暗黙のブリッジ変換が行われます。オプショナル、inout、ObjCブリッジ対象のAPIを除き、どこでもDoubleを使ってください。
「Info.plistのエントリーは後で追加しよう」カスタムUTTypeはInfo.plistがなくてもアプリ内では動作しますが、アプリ間では何も通知されないまま失敗します。これはTransferableで「開発環境では動くのに、本番環境では動かない」となる最大の原因です。
「FormatStyleは冗長すぎる」val.formatted(.number.precision(.fractionLength(2)))は型安全で、ローカライズにも対応しています。String(format:)はどちらにも該当しません。

使用例

ユーザー:「このSwiftコードは最新のパターンを使っていますか?」 -> 読む:skills/swift-modern.md

ユーザー:「borrowingとconsumingの使い方を教えてください」 -> 読む:skills/ownership-conventions.md

ユーザー:「モデルをドラッグできるようにするにはどうすればよいですか?」 -> 読む:skills/transferable-ref.md

ユーザー:「カスタムプレビュー付きでShareLinkを実装するにはどうすればよいですか?」 -> 読む:skills/transferable-ref.md

ユーザー:「シミュレーターのテスト用にデバッグディープリンクが必要です」 -> 読む:skills/deep-link-debugging.md

ユーザー:「tvOSアプリを開発していますが、フォーカス移動が機能しません」 -> 読む:skills/tvos.md

ユーザー:「InlineArrayとは何ですか?いつ使えばよいですか?」 -> 読む:skills/ownership-conventions.md

ユーザー:「ドラッグ&ドロップがアプリ内では動きますが、アプリ間では動きません」 -> 読む:skills/transferable-ref.md

ユーザー:「tvOSで保存したデータが何度も失われます」 -> 読む:skills/tvos.md

ユーザー:「大きな構造体の受け渡しを最適化するにはどうすればよいですか?」 -> 読む:skills/ownership-conventions.md

ユーザー:「async/awaitのコードを修正する必要があります」 -> /skill axiom-concurrencyを参照

ユーザー:「コードにSwift 6の並行処理に関する問題がないか確認してください」 -> /skill axiom-concurrencyを参照

コメント