neo-swift について
neo-swiftは、Swiftコードの作成、デバッグ、リファクタリング、レビューを支援するスキルです。対象のSwiftバージョンとプラットフォームに合わせ、最新機能、並行処理の安全性、メモリ管理を考慮した提案を行います。
主な機能
- 01Swiftのバージョン、環境、依存関係の把握
- 02最新のSwift構文と並行処理の活用
- 03メモリのライフサイクルと安全性の確認
- 04対象バージョンに応じたコードと移行案
活用シーン
- 01構造化並行処理を用いた旧コードの更新
- 02Swift 6の並行処理安全性とデータ競合の確認
- 03SwiftUI、UIKit、サーバーサイドSwiftのコード作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ benknightdark/ neo-skills --skill neo-swiftインストール後、Claude Code で/neo-swiftを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/anti-patterns.mdcoding-style.mdpatterns.md詳細
モダン Swift(5.0 以降)エキスパートスキル
トリガー条件
- ユーザーが Swift コードの作成、デバッグ、リファクタリング、レビューを依頼した場合。
- プロジェクトディレクトリに
*.swift、Package.swift、または*.xcodeprojが含まれている場合。 - iOS(SwiftUI/UIKit)、macOS、またはサーバーサイド Swift(Vapor)の開発に関わる場合。
- コードのモダナイズが必要な場合(例:Structured Concurrency または Swift 6 言語モードへの移行)。
ワークフロー
- 把握(バージョンの確認):
- Swift のバージョンを特定します(例:
Package.swiftまたはビルド設定を確認します)。 - プラットフォームを判別します(SwiftUI と UIKit、サーバーとアプリ)。
- 依存関係の管理方法を確認します(Swift Package Manager、CocoaPods)。
- Swift のバージョンを特定します(例:
- 検討(計画フェーズ):
- モダンな構文の使用を評価します(例:
async/await、Result、@propertyWrapper)。 - メモリ管理の方針を決めます(ARC、
weak/unowned)。 - UI に関する作業では、モダンなアプリには SwiftUI、レガシーサポートには UIKit を優先します。
- モダンな構文の使用を評価します(例:
- 実行(実装フェーズ):
- Apple の API 設計ガイドラインに従い、Swift らしい簡潔なコードを記述します。
- 型安全でプロトコル指向のソリューションを実装します。
- 非同期処理には Structured Concurrency(
Task、async let)を活用します。
- 検証(標準検証):
- キャプチャリストを使ってメモリリーク(循環参照)がないか確認します。
- Swift 6 の並行処理安全性(データ競合の検出)を検証します。
- メンバーには標準の
lowercamelCase、型にはPascalCaseの命名規則が使われていることを確認します。
機能ロードマップ(Swift 5.0 - 6+)
Swift 5.0 - 5.4(基礎)
- Result 型:エラー処理を標準化します。
- プロパティラッパー:プロパティのロジックをカプセル化します(例:
@Published)。 - 不透明型:実装の詳細を隠します(
some View)。 - Result Builder:SwiftUI の DSL をサポートします。
Swift 5.5 - 5.10(モダンな並行処理)
- Async/Await:直線的に記述できる非同期コードです。
- アクター:スレッドセーフな状態の分離を実現します。
- 分散アクター:プロセス間の通信を可能にします。
- 非コピー可能型:オブジェクトの所有権を明示的に制御します。
Swift 6+(安全性とパフォーマンス)
- 完全なデータ分離:コンパイル時にデータ競合を防止します。
- 型付き throws:エラー型を明示的に定義します。
- Embedded Swift:制約のある環境で Swift を実行します。
コーディング規約
- 簡潔さ:適切な場合は、末尾クロージャと省略形式の引数名を使用します。
- 安全性:強制アンラップ(
!)よりもif letまたはguard letを優先します。 - 純粋性:データモデルには
class(参照型)よりもstruct(値型)を優先します。 - 並行処理:
Thread.sleepや旧式の完了ハンドラーを避け、構造化並行処理を使用します。
提供内容
- バージョンに最適化されたコード:対象の Swift バージョンで利用できる最適な機能を使ったコードを提供します。
- SwiftUI/UIKit の知見:使用する UI フレームワークに応じたパターンを提案します。
- 並行処理の移行:Swift 6 の厳格な並行処理チェックへ移行するための方針を提示します。
検証
- 対象の Swift バージョンで、警告なしにコードがコンパイルできることを確認します。
- クロージャのキャプチャリストがオブジェクトのライフサイクルを適切に処理していることを検証します。
- エラー処理で
do-catchまたはthrowsのパターンが正しく使われていることを確認します。
ドキュメント
公式リファレンス
内部リファレンス
コメント
Markdown 対応