Skip to content
AI & Agents
Skill

/ios-development

Comprehensive iOS app development skill. Use this skill for ANY iOS-related task: writing Swift/SwiftUI/UIKit code, architecting apps, debugging crashes, setting up navigation, networking, data persistence, animations, performance optimization, App Store submission, Xcode

BOOST
From plugin
claude-code-config
21258 skills8 agents79 hooks
Install
$ npx -y skills add AnastasiyaW/codex-claude-code-config --skill ios-development --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ios-development

Context preview

The summary Claude sees to decide when to auto-load this skill.

Comprehensive iOS app development skill. Use this skill for ANY iOS-related task: writing Swift/SwiftUI/UIKit code, architecting apps, debugging crashes, setting up navigation, networking, data persistence, animations, performance optimization, App Store submission, Xcode

SKILL.md

ios-development.SKILL.md
name: ios-development
description: >
  Comprehensive iOS app development skill. Use this skill for ANY iOS-related task:
  writing Swift/SwiftUI/UIKit code, architecting apps, debugging crashes, setting up
  navigation, networking, data persistence, animations, performance optimization, App Store
  submission, Xcode configuration. Trigger when user mentions: iOS, Swift, SwiftUI, UIKit,
  Xcode, iPhone/iPad app, Combine, CoreData, SwiftData, MVVM, TCA, URLSession, async/await,
  @State/@Binding/@ObservableObject, NavigationStack, XCTest, TestFlight, provisioning profiles,
  or any Apple platform development. Always use this skill before writing iOS code or architecture.
  Do NOT use for web frontends (HTML/CSS/JS, React/Vue, browser UI) — even a WebView's page content
  is web work; use frontend-design for that. This skill is native Apple-platform code only.

iOS Development Skill

Quick orientation

Before anything else, identify: 1. **UI framework** → SwiftUI / UIKit / mixed? 2. **Architecture** → MVVM / TCA / VIPER / Clean / MVC? 3. **iOS target** → iOS 16 / 17 / 18? (affects API availability) 4. **Task type** → new feature / debug / refactor / architecture / performance / release? 5. **Graphics intensity** → стандартный UI / средняя 3D / тяжёлая графика / Metal?

Если задача связана с **Metal, GPU, рендерингом, шейдерами, TBDR, MetalFX, GPU profiling, frame pacing, PSO, heaps, ICB, MTLIO** → читать `references/metal-graphics.md` первым.

Then read the relevant reference file before writing code.

---

Reference files — read when needed

| Topic | File | When to read | |---|---|---| | SwiftUI pipeline | `references/swiftui.md` | SwiftUI views, state, bindings, modifiers, animations | | UIKit pipeline | `references/uikit.md` | UIViewController, Auto Layout, delegates, storyboards | | Architecture | `references/architecture.md` | MVVM, TCA, VIPER, Clean, Coordinator | | Networking | `references/networking.md` | URLSession, async/await, REST/GraphQL, auth | | Data persistence | `references/data.md` | CoreData, SwiftData, UserDefaults, Keychain, FileManager | | Navigation | `references/navigation.md` | NavigationStack, Coordinator, deep links, sheets | | Performance | `references/performance.md` | Instruments, memory, launch time, rendering | | **Metal & Heavy Graphics** | `references/metal-graphics.md` | Metal, GPU рендер, TBDR, PSO/heaps/argument buffers, ICB, MTLIO, MetalFX, терморегуляция, профилирование GPU |

---

iOS version matrix (API availability)

| Feature | Min iOS | |---|---| | SwiftUI | iOS 13 | | `async/await` | iOS 15 | | NavigationStack | iOS 16 | | SwiftData | iOS 17 | | `@Observable` macro | iOS 17 | | RippleEffect, ScrollView phases | iOS 18 |

Always check target before using newer APIs. Use `#available` guards for backward compatibility:

if #available(iOS 17, *) {
    // SwiftData or @Observable
} else {
    // fallback
}

---

Core Swift patterns (always apply)

Concurrency — async/await first

// Prefer this
func loadUser() async throws -> User {
    let data = try await URLSession.shared.data(from: url).0
    return try JSONDecoder().decode(User.self, from: data)
}

// Call site
Task {
    do {
        user = try await loadUser()
    } catch {
        errorMessage = error.localizedDescription
    }
}

Error handling — typed errors

enum AppError: LocalizedError {
    case networkUnavailable
    case decodingFailed(String)
    case unauthorized
    
    var errorDescription: String? {
        switch self {
        case .networkUnavailable: return "No internet connection"
        case .decodingFailed(let detail): return "Data error: \(detail)"
        case .unauthorized: return "Please sign in again"
        }
    }
}

Value types first

Prefer `struct` over `class` unless you need reference semantics, inheritance, or `@Observable`.

---

Architecture decision tree

Is the screen purely data-display with simple interaction?
  YES → MVC / simple SwiftUI View with @State is fine
  NO ↓

Is business logic testable without UI?
  Required → use ViewModel (MVVM) or Store (TCA)

Is navigation/routing complex (deep links, coordinator)?
  YES → read references/navigation.md → Coordinator pattern

Is the team large or is this a long-lived product?
  YES → Clean Architecture or TCA → read references/architecture.md

Default for most apps: MVVM + Coordinator

---

State management quick reference

SwiftUI state hierarchy

Local transient state       → @State
Passed from parent          → @Binding
Shared across views         → @StateObject / @ObservedObject (iOS 16-)
                            → @State with @Observable class (iOS 17+)
App-wide environment        → @EnvironmentObject / @Environment

iOS 17+ preferred (@Observable)

@Observable
class UserStore {
    var users: [User] = []
    var isLoading = false
}

// In View — no property wrapper needed
struct UserListView: View {
    var store: UserStore  // just pass it
    var body: some View {
        List(store.users) { Text($0.name) }
    }
}

iOS 16 and below (ObservableObject)

class UserViewModel: ObservableObject {
    @Published var users: [User] = []
    @Published var isLoading = false
}

struct UserListView: View {
    @StateObject private var vm = UserViewModel()
}

---

Xcode & project setup checklist

**New project:**

  • [ ] Set deployment target explicitly
  • [ ] Enable Swift strict concurrency warnings (`SWIFT_STRICT_CONCURRENCY = complete`)
  • [ ] Add `.gitignore` for Xcode (xcuserdata, DerivedData)
  • [ ] Configure signing (automatic vs manual)
  • [ ] Set bundle ID and version/build numbers

**Capabilities to enable when needed:**

  • Push Notifications → add `Push Notifications` capability
  • Background fetch → `Background Modes`
  • iCloud/CloudKit → `iCloud`
  • Sign in with Apple → `Sign In with Apple`

---

Testing baseline

// Unit test — ViewModel
@MainActor
final class U
Read more
Ships withclaude-code-config

A practical configuration kit for Claude Code, Codex, and other coding agents. It contains architectural principles, enforcement hooks, skills, drop-in rules, starter templates, and dynamic-workflow commands.

Get the whole plugin

Other skills on claude-code-config.

diffusion-engineering
Skill

diffusion-engineering

Практическая инженерия диффузионных моделей: архитектуры, обучение, инференс, оптимизация памяти. Использовать при любых задачах…