mcpField
S
solid-swift

solid-swift

github.com/fusengine開発3441 回インストール2 週間前に更新
リポジトリ

solid-swift について

solid-swiftは、Swift 6およびSwiftUIプロジェクト向けのコード構成・実装ガイドスキルです。機能別ディレクトリ、並行処理の規約、コードテンプレートを通じてSOLIDとDRYの実践を促します。

主な機能

  1. 01機能別のモジュールディレクトリ構成
  2. 02単一責任のファイルとプロトコル分離
  3. 03@ObservableのViewModelとSendableモデル
  4. 04すべてのViewに#Previewを必須化
  5. 05SOLID、並行処理、アンチパターンの資料

活用シーン

  1. 01SwiftUIプロジェクトの機能別構成
  2. 02SOLIDとDRYに沿ったコードの確認
  3. 03ViewModel、サービス、モデルの一貫した作成

インストール

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

$npx skills add https://github.com/fusengine/claude-plugins --skill solid-swift

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

詳細

Swift 6 および SwiftUI(iOS 27 以降)プロジェクトで SOLID と DRY の原則を徹底します。必須の `Features/[Feature]/` モジュール型ディレクトリ構造(フラットな `Sources/` 構成は禁止)、1 ファイルにつき責務は 1 つとし、行数制限はフックの上限(`FUSE_SOLID_MAX_LINES`)のみとします。プロトコルは専用の `Protocols/` ディレクトリに分離し、ViewModel には @Observable と @MainActor を、モデルには Sendable 構造体を使用し、すべての View に #Preview を必須とします。

5 つすべての SOLID 原則を専用のリファレンス(SRP、OCP、LSP、ISP、DIP)で解説し、並行処理のパターン(actor、@MainActor、Sendable)、アンチパターンの一覧、View、ViewModel、サービス、プロトコル、モデルのコードテンプレートを掲載します。

新しいコードを書く前に、再利用可能なプロトコルやサービスがないかコードベースを grep することを必須とします。また、2 つ以上の機能で使用するロジックを重複させないよう、共有の場所(Core/Extensions/、Core/Utilities/、Core/Protocols/)を確認します。

SOLID Swift - Apple のベストプラクティス 2026

エージェントのワークフロー(必須)

実装の前に、name を指定して、それぞれ 1 回の Agent 呼び出しで 3 つのエージェントを並列で起動します。

  1. fuse-ai-pilot:explore-codebase - 既存のアーキテクチャを分析
  2. fuse-ai-pilot:research-expert - Apple Docs MCP と Context7 を使って Swift/Apple のドキュメントを確認
  3. XcodeBuildMCP - コード変更後のビルド検証。その後、fuse-ai-pilot:sniper を実行します。

DRY - 作成する前に再利用する(必須)

新しいコードを書く前に必ず:

  1. コードベースを grep して、類似するプロトコル、サービス、ロジックを探します
  2. 共有の場所を確認します:Core/Extensions/、Core/Utilities/、Core/Protocols/
  3. 類似するコードがある場合 -> 重複させずに拡張/再利用します
  4. 2 つ以上の機能で使用するコードの場合 -> 直接 Core/ に作成します

アーキテクチャ(Features モジュール型を必須とする)

層場所
ViewsFeatures/[Feature]/Views/
ViewModelsFeatures/[Feature]/ViewModels/
ServicesFeatures/[Feature]/Services/
ProtocolsFeatures/[Feature]/Protocols/
SharedCore/{Models,Protocols,Services,Extensions,Utilities}/

ファイルサイズ:行数制限はフックの上限(FUSE_SOLID_MAX_LINES)のみです。上限に達する前に責務ごとに適切に分割してください。正当な修正が上限内に収まらない場合は報告し、フックを回避してはいけません。

フラットな Sources/ 構成は絶対に使用せず、必ず Features/[Feature]/ を使用してください。


重要なルール(必須)

ルール値
ファイル制限フックの上限 FUSE_SOLID_MAX_LINES のみ。1 ファイルにつき責務は 1 つ
ViewModel@MainActor @Observable
プロトコルFeatures/[Feature]/Protocols/ または Core/Protocols/ のみ
モデルSendable 構造体
ドキュメントすべての公開 API に /// を付ける
プレビューすべての View に #Preview を必ず付ける

リファレンスガイド

概念
トピックリファレンス参照するタイミング
SOLID の概要solid-principles.mdすべての原則のクイックリファレンス
SRPsingle-responsibility.md肥大化した View/VM、ファイルの分割
OCPopen-closed.mdプロバイダーの追加、拡張性
LSPliskov-substitution.mdプロトコルの契約、テスト
ISPinterface-segregation.md肥大化したプロトコル、分割
DIPdependency-inversion.md注入、テスト、モック
並行処理concurrency-patterns.mdactor、@MainActor、Sendable
アンチパターンanti-patterns.mdコードの不吉な兆候の検出
テンプレート
テンプレート使用する場面
view.mdサブビューと #Preview を含む SwiftUI View
viewmodel.md@MainActor を使用する @Observable ViewModel
service.mdAPI Service、Mock、Cache actor
protocol.mdService protocol、CQRS、Auth
model.mdModel、DTO、Error、Enum

禁止事項

アンチパターン対処法
複数の責務を持つファイル、またはフックの上限によりブロックされるファイル責務ごとに分割する
impl ファイル内の ProtocolProtocols/ ディレクトリに移動する
ObservableObject@Observable を使用する
Completion handlerasync/await を使用する
#Preview がないすべての View にプレビューを追加する
async 内での非 Sendablelet を持つ struct を使用する
フラットな Sources/ 構成Features/[Feature]/ を使用する

コメント