Help us improve
Share bugs, ideas, or general feedback.
From ios-architecture
iOSアプリのSPMパッケージ構成・レイヤー依存関係・設計原則を定義。iOS機能実装・コードレビュー時に参照。no problem製SPMパッケージの使用指針を含む。
npx claudepluginhub no-problem-dev/claude-code-plugins --plugin ios-architectureHow this skill is triggered — by the user, by Claude, or both
Slash command
/ios-architecture:ios-clean-architectureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
iOSアプリのクリーンアーキテクチャに基づくパッケージ構成と設計原則。
Selects and applies Swift architecture playbooks (MVVM, TCA, Clean Architecture, VIPER, etc.) for SwiftUI/UIKit codebases. Guides new features, refactors, and migrations with fit checks and incremental plans.
Helps select, implement, or migrate between Apple platform architecture patterns (MV, MVVM, MVI, TCA, Clean Architecture, VIPER, Coordinator) for SwiftUI and UIKit apps, including a decision framework and review checklist.
SOLID principles for Swift 6 and SwiftUI (iOS 26+). Files < 100 lines, protocols separated, @Observable, actors, Preview-driven development. Features Modular MANDATORY.
Share bugs, ideas, or general feedback.
iOSアプリのクリーンアーキテクチャに基づくパッケージ構成と設計原則。
┌─────────────────┐
│ Presentation │ SwiftUI Views, Components
└────────┬────────┘
│
┌───────────┬────────────┼────────────┬───────────┐
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐
│ State │ │UseCases│ │Repository│ │ Services │ │ External │
│ │ │ │ │ │ │ │ │ SPM (4) │
└────┬───┘ └────┬───┘ └────┬─────┘ └────┬─────┘ └──────────────┘
│ │ ↘ │ ↙ │
│ └─────┬────┴──────┬─────┘
│ ▼ │
│ ┌──────────────┐ │
└──────►│ Domain │◄────┘
└──────────────┘
注: UseCasesはRepository・Servicesの両方に依存可能。ServicesはDomainのみに依存。
| パッケージ | 責務 | 依存先 |
|---|---|---|
| Domain | ドメインモデル・値オブジェクト・列挙型 | なし |
| Services | 再利用可能なアプリケーションサービス(外部SDK連携等) | Domain のみ |
| Repository | API通信・データ永続化 | Domain, APIClient |
| State | @Observable状態管理 | Domain, Authentication |
| UseCases | ビジネスロジック(Protocol定義) | Domain, Repository, Services |
| Presentation | SwiftUI View・コンポーネント | 全て |
| パッケージ | モジュール名 | 用途 | 使用レイヤー |
|---|---|---|---|
swift-design-system | DesignSystem | テーマ・色・スペーシング・UIコンポーネント | Presentation |
swift-authentication | Authentication | Firebase Auth統合(Google/Apple Sign-In) | State, Presentation |
swift-ui-routing | UIRouting | 型安全ナビゲーション(Router, TabPresenter) | Presentation |
swift-api-client | APIClient | HTTP通信クライアント | Repository |
// ✅ Presentation → 全て(最上層)
import Domain
import State
import UseCases
import Repository
import DesignSystem
import UIRouting
import Authentication
// ✅ UseCases → Domain + Repository + Services
import Domain
import Repository
import Services
// ✅ State → Domain + Authentication
import Domain
import Authentication
// ✅ Repository → Domain + APIClient
import Domain
import APIClient
// ✅ Services → Domain(外部サービス連携)
import Domain
// ✅ Domain → なし(最下層)
// 外部依存ゼロ(Foundationのみ許可)
// ❌ Domain層での外部import
import Foundation // ✅ OK(標準ライブラリ)
import UIKit // ❌ 禁止
import SwiftUI // ❌ 禁止
import DesignSystem // ❌ 禁止
// ❌ 下位レイヤーから上位への参照
import Presentation // ❌ 循環依存
// ❌ UseCases → State
import State // ❌ 状態管理は上位レイヤーの責務
// ❌ Services → Repository(Servicesは独立性を保つ)
import Repository // ❌ ServicesはDomainのみに依存
実装前に確認:
詳細は REFERENCE.md を参照。