Back to Skills

ios-sdk-code-review

verified

Comprehensive iOS SDK code review for Payoo iOS Frameworks. Checks Clean Architecture patterns, MVVM implementation, UseCase patterns, memory management, naming conventions, API design, and Swift best practices. Use when "review code", "check code", "code review", "review PR", or analyzing Swift files in this project.

View on GitHub

Marketplace

py-claude-marketplace

daispacy/py-claude-marketplace

Plugin

py-plugin

Repository

daispacy/py-claude-marketplace

py-plugin/skills/ios-sdk-code-review/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/daispacy/py-claude-marketplace/blob/main/py-plugin/skills/ios-sdk-code-review/SKILL.md -a claude-code --skill ios-sdk-code-review

Installation paths:

Claude
.claude/skills/ios-sdk-code-review/
Powered by add-skill CLI

Instructions

# iOS SDK Code Review

Perform comprehensive code reviews for Payoo iOS Frameworks following Clean Architecture, MVVM, and iOS SDK best practices.

## When to Activate

- "review code", "code review", "check this code"
- "review PR", "review pull request", "review MR"
- "check iOS code", "review Swift code"
- User asks about code quality or best practices
- Reviewing ViewModels, ViewControllers, UseCases, or DataSources

## Review Process

### 1. Identify Code Context

Determine what's being reviewed:
- **File type**: ViewModel, ViewController, UseCase, DataSource, Model, Service
- **Framework**: PayooCore, PayooEwallet, PayooPayment, etc.
- **Layer**: Presentation (Scenes), Domain (UseCase), Data (DataSources/Services)

### 2. Architecture Review

**Clean Architecture Compliance:**
- ✓ Proper layer separation (Presentation/Domain/Data)
- ✓ Dependencies point inward (Presentation → Domain → Data)
- ✓ ViewModels don't directly access Services (must use UseCases)
- ✓ Models in correct layer (Domain models vs Data models)

**MVVM Pattern:**
- ✓ ViewModel has protocol definition (`{Feature}ViewModelType`)
- ✓ Delegate protocol exists (`{Feature}ViewModelDelegate`)
- ✓ ViewController implements delegate
- ✓ ViewModel is testable (no UIKit dependencies)
- ✓ View state managed through delegate callbacks

**UseCase Pattern:**
- ✓ Business logic in UseCases, not ViewModels
- ✓ Single responsibility per UseCase
- ✓ UseCases injected into ViewModels
- ✓ UseCases coordinate repositories/services

### 3. Memory Management Review

**Retain Cycles:**
- ✓ Delegates marked `weak`
- ✓ Closures use `[weak self]` or `[unowned self]` appropriately
- ✓ No strong reference cycles in ViewModels
- ✓ Timer/observer cleanup in `deinit`

**Example issues:**
```swift
// ❌ BAD: Strong delegate reference
var delegate: SomeDelegate?

// ✅ GOOD: Weak delegate reference
weak var delegate: SomeDelegate?

// ❌ BAD: Strong self in closure
viewModel.loadData { data in
    self.updateUI(data)
}

// ✅ GOO

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
7971 chars