ios-pack

Implements native iOS features with SwiftUI, async/await, SwiftData, SPM, and XCTest.

Updated Jun 13, 2026
One-click install
npx skills add https://github.com/22Teikk/22Teikk-Agent-Skills-Hub --skill ios-pack-22teikk
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ios-pack
Source: https://github.com/22Teikk/22Teikk-Agent-Skills-Hub/tree/main/packs/ios
Command: npx skills add https://github.com/22Teikk/22Teikk-Agent-Skills-Hub --skill ios-pack-22teikk

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? It gives AI coding agents a complete, opinionated workflow for native iOS development, replacing ad-hoc Swift code generation with structured guidance across UI, data, build configuration, and testing. ## Core Features & Use Cases - SwiftUI UI Engineering: Build screens with @Observable view models, type-safe NavigationStack routing, .task lifecycle management, and accessibility-first design. - Data & Concurrency: Structure repositories around async/await, actors, AsyncSequence/AsyncStream, SwiftData persistence, and configured URLSession networking. - DI, Build & CI: Wire dependencies via initializer injection, pin SPM packages, configure SwiftLint and .xcconfig environments, and automate CI with Xcode Cloud or GitHub Actions. - Testing & Benchmarking: Write XCTest async throws unit tests, in-memory SwiftData tests, URLProtocol network stubs, XCUITest flows, and XCTMetric performance benchmarks. - Use Case: When a project declares platform: ios, route a feature slice like "add a task list screen backed by SwiftData with tests" through the swift-expert persona, which reads the UI, data, DI, and testing skills in order before writing code. ## Quick Start Ask the agent to set up iOS support by running the teikk-ios-setup workflow, then request a SwiftUI feature such as a task list screen with a SwiftData-backed repository and unit tests.

Frequently Asked Questions about ios-pack

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure a SwiftUI screen with a view model?▼

Use an @Observable @MainActor class as the view model holding a single UI state struct, and keep the SwiftUI view stateless by passing state down and events up. Start async work with the .task modifier so it cancels when the view disappears.

How do I test URLSession networking code in Swift?▼

Stub network responses by subclassing URLProtocol and injecting it via URLSessionConfiguration.protocolClasses into a custom URLSession. This gives deterministic, hermetic tests without hitting staging servers.

Should I use async/await or Combine for new iOS code?▼

New code should use async/await with structured concurrency via Task, TaskGroup, and async let. Combine remains acceptable for legacy publisher chains, but async/await provides cancellation and interop with SwiftData and URLSession.

Does this pack support Android or cross-platform Swift?▼

No. The pack is strictly for native iOS 17+ targets using SwiftUI and Apple frameworks. It explicitly forbids Kotlin Multiplatform, Flutter, server-side Swift, and transliterated Android patterns like Dispatchers or Flow-only APIs.

Why must SwiftData tests use an in-memory ModelContainer?▼

Mocked repository tests are tautological and never touch SQLite, so wrong column types or broken migrations ship undetected. An in-memory ModelContainer runs the real SwiftData stack while staying fast and isolated.

How should money values be stored in SwiftData models?▼

Store money as Int64 minor units (cents) or Decimal, never Double, because floating-point aggregation drifts. Prove exactness with an in-memory SwiftData test that inserts values and asserts the exact summed total.