axiom-swift について
axiom-swift は Claude Code 向けの Swift スキルです。言語イディオム、所有権、共有、デバッグ用ディープリンク、tvOS のガイドを案内し、並行処理や性能の担当範囲も区別します。
主な機能
- 01現代的な Swift イディオムのリファレンス
- 02所有権と非コピー型のガイド
- 03Transferable、共有、UTType のパターン
- 04デバッグ用ディープリンクの手法
- 05tvOS 開発ガイド
活用シーン
- 01現代的な Swift イディオムのコードレビュー
- 02borrowing と consuming パラメーターの適用
- 03ドラッグ、ドロップ、共有の実装
- 04デバッグリンクによるシミュレーター画面への移動
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-swiftインストール後、Claude Code で/axiom-swiftを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skills/deep-link-debugging.mdownership-conventions.mdswift-modern.mdswift-simplifier.mdtransferable-ref.mdtvos.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"];
}
- 古い Swift のパターン/最新 API への置き換え/Claude の幻覚? ->
skills/swift-modern.md - ~Copyable/borrowing/consuming/InlineArray/Span? ->
skills/ownership-conventions.md - ドラッグ&ドロップ/コピー&ペースト/ShareLink/Transferable/UTType? ->
skills/transferable-ref.md - デバッグ用ディープリンク/シミュレーターでのナビゲーション/スクリーンショットの自動化? ->
skills/deep-link-debugging.md - tvOS 開発/Focus Engine/Siri Remote/ストレージ/AVPlayer? ->
skills/tvos.md - Swift の並行処理(async/await、actors、Sendable) ->
/skill axiom-concurrency - Swift のパフォーマンス(COW、ARC、ジェネリクスの最適化) -> axiom-performance を参照(skills/swift-performance.md)
- Codable のパターン(JSON、CodingKeys、enum のシリアライズ) -> axiom-data を参照(skills/codable.md)
- 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を参照