Skip to content
Back to skills

Ios Architecture

ASecurity

Apply MVVM, Coordinators, and Clean Architecture (VIP/VIPER) in iOS apps. Use when applying MVVM, Coordinators, or VIP/VIPER architecture in iOS apps.

  • 549 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
developmentswift

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill ios-architecture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ios Architecture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ios Architecture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-ios-architecture/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-ios-architecture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ios-architecture
description: Apply MVVM, Coordinators, and Clean Architecture (VIP/VIPER) in iOS apps. Use when applying MVVM, Coordinators, or VIP/VIPER architecture in iOS apps.
metadata:
  triggers:
    files:
    - '**/*ViewModel.swift'
    - '**/*Coordinator.swift'
    - '**/*ViewController.swift'
    keywords:
    - MVVM
    - Coordinator
    - ViewState
    - Output
    - Input
---
# iOS Architecture Standards

## **Priority: P0 (CRITICAL)**

## Implementation Guidelines

### MVVM (Model-View-ViewModel)

- **ViewModel Responsibility**: Handle business logic, formatting, and state. No UIKit imports (except for platform types like `UIImage` if strictly necessary).
- **ViewState**: Use single state object or discrete `@Published` properties for UI updates. **Expose state as `private(set)` or using publishers**.
- **Inputs/Outputs**: Define explicit protocols or nested types for inputs (events from View) and outputs (state for View).

### Coordinator Pattern

- **Navigation Logic**: Decouple ViewControllers from navigation logic. **Coordinator handles instantiation and push/present**. ** NOT use `navigationController` directly in ViewController for screen transitions.**
- **Dependency Injection**: **Pass dependencies** (Services, Repositories) through **Coordinator into ViewModels**.
- **Child Coordinators**: Maintain hierarchy; **correctly remove child coordinators** from parent's collection when their flow finished.

### Clean Architecture (VIP/VIPER)

- **VIP (Clean Swift)**: Use Interactor for logic, Presenter for UI formatting, and ViewController for display.
- **Unidirectional Flow**: Data flows: **View -> Interactor -> Presenter -> View**.
- **VIPER**: (View, Interactor, Presenter, Entity, Router) — another common architectural pattern for iOS apps.

## Anti-Patterns

- **No Logic in VC**: Move business logic to ViewModel/Interactor.
- **No Public ViewModel State**: Keep state **private(set)** or using publishers.
- **No Direct Navigation**: Use Coordinator for screen transitions. Never use `navigationController` directly.

## Verification Checklist (Mandatory)

- [ ] **Pure ViewModel**: ViewModel any `UIKit` imports? (Prohibited)
- [ ] **Navigation**: `navigationController` used directly in VC for transitions? (Use Coordinator)
- [ ] **State Access**: ViewModel state exposed as `public var`? (Use `private(set)` or publishers)
- [ ] **Deallocation**: child coordinators correctly removed from parent's collection on finish?
- [ ] **VIP Unidirection**: data flow unidirectional (View -> Interactor -> Presenter -> View)?

## References

- [MVVM-C & VIP Implementation](references/implementation.md)

Files in this skill

  • SKILL.md2.6 KB
  • evals/evals.json1.9 KB
  • references/implementation.md1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.