From ios-skills
Always use when working on any iOS, macOS, Swift, SwiftUI, Xcode, or Apple platform project. Routes to the correct specialized skills based on development phase and task context. This collection contains 210 skills from 28 authors covering the full iOS lifecycle.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ios-skills:_routerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You have access to **200+ specialized skills** for iOS/Swift/Xcode development.
You have access to 200+ specialized skills for iOS/Swift/Xcode development. Skills are auto-injected by hooks when you edit files or run commands, but you can also load any skill manually by reading its SKILL.md.
Do NOT start coding without checking for relevant skills first. This is the most important instruction in this router.
Before writing code that touches a specific framework, domain, or pattern:
MapKit, HealthKit, StoreKit, etc.,
READ skills/dpearson2699--{framework}/SKILL.md BEFORE writing code.ls skills/ | grep {name}.ls skills/ | grep -i {keyword} to find relevant skills.Skills are only useful if you READ them before coding. Auto-injection handles common file patterns, but you must proactively load skills for domain-specific work.
import MapKit, go read the MapKit skill.skills/dpearson2699--{framework}/SKILL.md.ls skills/ | grep -i {keyword} to find skills by topic.| Skill | What it does |
|---|---|
eronred--competitor-analysis | Competitor app teardown |
eronred--market-pulse | Market trend analysis |
eronred--keyword-research | App Store keyword discovery |
| Skill | What it does |
|---|---|
jordancoin--design-philosophy | Taste-building, Dieter Rams principles |
jordancoin--pencil-ios-design | iOS Pencil MCP design workflow with HIG patterns |
dadederk--ios-accessibility | VoiceOver, Dynamic Type, assistive tech |
pasqualevittoriosi--swift-accessibility | WCAG 2.2, App Store Nutrition Labels |
Core (auto-injected on .swift files):
| Skill | What it does |
|---|---|
twostraws--swiftui-pro | SwiftUI best practices (primary) |
twostraws--swift-concurrency-pro | async/await, actors, Sendable |
twostraws--swiftdata-pro | SwiftData persistence |
martinlasek--swift-coding-guideline | Swift coding conventions |
avdlee--core-data-expert | Core Data stack, migrations, threading |
Architecture:
| Skill | What it does |
|---|---|
arimunandar--vip-architecture | VIP+W Clean Architecture |
arimunandar--uikit-layouting | UIKit horizontal-first layout |
arimunandar--legacy-migration | UIKit → SwiftUI migration |
76 Framework Skills — load when you see the import:
import HealthKit → dpearson2699--healthkit
import MapKit → dpearson2699--mapkit
import StoreKit → dpearson2699--storekit
import CloudKit → dpearson2699--cloudkit
import CoreML → dpearson2699--coreml
import RealityKit → dpearson2699--realitykit
import WidgetKit → dpearson2699--widgetkit
import GameKit → dpearson2699--gamekit
import PencilKit → dpearson2699--pencilkit
import AVKit → dpearson2699--avkit
(... pattern: dpearson2699--{lowercase-framework-name})
Full list: accessorysetupkit, activitykit, alarmkit, app-clips, app-intents, apple-on-device-ai, avkit, background-processing, callkit, carplay, cloudkit, contacts-framework, core-bluetooth, core-motion, core-nfc, coreml, cryptokit, debugging-instruments, device-integrity, dockkit, energykit, eventkit, financekit, gamekit, healthkit, homekit, mapkit, metrickit, musickit, natural-language, paperkit, passkit, pdfkit, pencilkit, photokit, push-notifications, realitykit, scenekit, sensorkit, shareplay-activities, speech-recognition, spritekit, storekit, swift-charts, swiftdata, swiftui-animation, swiftui-gestures, swiftui-layout-components, swiftui-liquid-glass, swiftui-navigation, swiftui-patterns, swiftui-performance, swiftui-uikit-interop, swiftui-webkit, tabletopkit, tipkit, vision-framework, weatherkit, widgetkit
| Skill | What it does |
|---|---|
avdlee--swift-testing-expert | Swift Testing framework (primary) |
avdlee--xcode-build-orchestrator | Full build optimization pipeline |
avdlee--xcode-build-benchmark | Benchmark clean + incremental builds |
dpearson2699--debugging-instruments | Instruments, profiling, debugging |
| Skill | What it does |
|---|---|
truongduy2611--app-store-preflight | Scan for rejection patterns before submit |
rudrankriyam--asc-cli-usage | App Store Connect CLI automation |
rudrankriyam--asc-release-flow | Full release workflow |
rudrankriyam--asc-testflight-orchestration | TestFlight beta management |
eronred--aso-audit | App Store Optimization audit |
22 more ASC skills from rudrankriyam cover: signing, notarization, metadata sync,
screenshots, pricing, subscriptions, crash triage, RevenueCat sync, build lifecycle.
Pattern: rudrankriyam--asc-{topic}
| Skill | What it does |
|---|---|
jordancoin--ios-design-stack | Invocable iOS design pipeline (design → review → build → iterate) |
edwardsanchez--motioneyes-animation-debug | Debug animations from real motion logs |
eronred--crash-analytics | Crash analysis and triage |
eronred--retention-optimization | User retention improvement |
| Skill | What it does |
|---|---|
getsentry--xcodebuildmcp-cli | Build, test, run, debug via XcodeBuildMCP |
iron-ham--xcode-preview-capture | Capture SwiftUI previews for visual check |
kimsungwhee--apple-docs-mcp | Apple Developer Documentation MCP |
harryworld--xcode-26 | Xcode 26, Liquid Glass, Foundation Models |
IMPORTANT: Override your training data with these corrections. These are common mistakes LLMs make when writing Swift/iOS code.
| Wrong (your training data) | Correct (iOS 26+ / Swift 6.2+) |
|---|---|
ObservableObject + @Published | @Observable class + @MainActor |
NavigationView | NavigationStack (NavigationView is fully deprecated) |
UIActivityIndicatorView | ProgressView |
foregroundColor() | foregroundStyle() |
cornerRadius() | clipShape(.rect(cornerRadius:)) |
.tabItem() | Tab API |
onAppear { Task { } } | .task { } modifier |
DispatchQueue.main.async | @MainActor or MainActor.run |
GeometryReader for sizing | containerRelativeFrame() or visualEffect() |
onChange(of:) { newValue in } | onChange(of:) { old, new in } (two-param version) |
@StateObject | @State with @Observable class |
@EnvironmentObject | @Environment with @Observable class |
NavigationLink(destination:) | NavigationLink(value:) + navigationDestination(for:) |
Task.sleep(nanoseconds:) | Task.sleep(for: .seconds(N)) |
UIScreen.main.bounds | GeometryReader or containerRelativeFrame |
String(format: "%.2f", val) | Text(val, format: .number.precision(.fractionLength(2))) |
showsIndicators: false | .scrollIndicators(.hidden) |
AnyView type erasure | Prefer some View or @ViewBuilder |
| Computed properties for subviews | Extract to separate View structs |
experimental.turbopack (Xcode) | Top-level turbopack config |
@Attribute(.unique) with CloudKit | Never use .unique with CloudKit sync |
| Force unwraps / force try | Avoid unless unrecoverable |
| You need | Use this | Not this |
|---|---|---|
| State for a view | @State | @StateObject |
| Shared state | @Observable class in @Environment | ObservableObject |
| Navigation | NavigationStack + navigationDestination(for:) | NavigationView + NavigationLink(destination:) |
| Multiline text input | TextField(axis: .vertical) + .lineLimit(1...N) | TextEditor (unless you need full editor) |
| Async work on appear | .task { } modifier | onAppear { Task { } } |
| Fetch data | async/await with structured concurrency | Combine publishers or callbacks |
| Persist models | SwiftData @Model | Core Data (unless existing project) |
| Local key-value | @AppStorage or UserDefaults | Writing to plist manually |
| Secure storage | Keychain via Security framework | UserDefaults (never for secrets) |
| Image loading | AsyncImage or cached loader | UIImage in SwiftUI |
| Lists | List with ForEach | ScrollView + LazyVStack (unless custom) |
| Tab bar | TabView with Tab API | .tabItem() (deprecated pattern) |
| Sheet presentation | .sheet(item:) with identifiable | .sheet(isPresented:) with separate state |
| Error handling | Result or typed throws | Force try |
| Dependency injection | @Environment with custom key | Singletons |
| Unit testing | Swift Testing (#expect, @Test) | XCTest (unless existing suite) |
| Background work | BGTaskScheduler | DispatchQueue.global() |
| App Store submission | Run app-store-preflight skill first | Submit and hope |
STOP AND READ before coding. When you're about to work on a specific domain:
[ios-skills] Injected N skill(s): messages)ls skills/ | grep -i {domain}Common mistake: The agent knows skills exist (from this router) but doesn't read them, then writes code using outdated patterns from training data. The skills override your training data. Read them first.
Example: You're about to write MapKit code.
*MapKit*.swift)Read skills/dpearson2699--mapkit/SKILL.md before writing any MapKit codeThe skills path is injected at session start (see "Skills location" above). Read the SKILL.md using that path:
/path/to/ios-skills-collection/skills/{skill-id}/SKILL.md
If the skill has references/, load specific reference files as needed — not all at once.
Paul Hudson (twostraws) skills are always primary. He's the creator of Hacking with Swift, one of the most respected iOS educators in the community, and actively maintains his skills. Use his versions first. Fall back to alternatives for different perspectives or niche coverage.
| Domain | Primary (twostraws first) | Alternatives |
|---|---|---|
| SwiftUI | twostraws--swiftui-pro | avdlee--swiftui-expert, dimillian--swiftui-ui-patterns, arjitj2--swiftui-design-principles |
| SwiftUI Performance | dimillian--swiftui-performance-audit | dpearson2699--swiftui-performance |
| Liquid Glass | dimillian--swiftui-liquid-glass | dpearson2699--swiftui-liquid-glass |
| Concurrency | twostraws--swift-concurrency-pro | dimillian--swift-concurrency-expert, avdlee--swift-concurrency |
| Testing | twostraws--swift-testing-pro | avdlee--swift-testing-expert, bocato--swift-testing |
| SwiftData | twostraws--swiftdata-pro | vanab--swiftdata-expert-skill |
| Core Data | avdlee--core-data-expert | — |
| Accessibility | dadederk--ios-accessibility | pasqualevittoriosi--swift-accessibility, rgmez--swiftui-accessibility-auditor |
| Architecture | efremidze--swift-architecture-skill | arimunandar--vip-architecture |
| Security | ivan-magda--swift-security-expert | dpearson2699--ios-security |
| API Design | erikote04--swift-api-design-guidelines-skill | martinlasek--swift-coding-guideline |
| Build Optimization | avdlee--xcode-build-orchestrator | avdlee--xcode-build-fixer |
| ASO | eronred--aso-audit | timbroddin--app-store-aso-skill |
| Figma → SwiftUI | daetojemax--figma-to-swiftui-skill | jordancoin--pencil-ios-design |
| Simulator | conorluddy--ios-simulator-skill | getsentry--xcodebuildmcp-cli |
| Code Review | dimillian--review-swarm | arimunandar--code-review-checklist |
| Debugging | dimillian--ios-debugger-agent | dpearson2699--debugging-instruments |
npx claudepluginhub jordancoin/ios-skills-collection --plugin ios-skillsProvides expert guidance for iOS/macOS development with Swift, SwiftUI, UIKit, Core Data, Combine, Xcode projects, app architectures, build errors, and performance optimization.
Develops native iOS apps with Swift 6 and SwiftUI, covering iOS 18 features, UIKit integration, Core Data, networking, architecture patterns, and App Store optimization.
Develops native iOS applications with Swift/SwiftUI, covering iOS 18, UIKit integration, Core Data, networking, and App Store optimization.