Communitygithub.com

JordanCoin/ios-skills-collection

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.

¿Qué es ios-skills-collection?

ios-skills-collection is a Claude Code agent skill that 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.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JordanCoin/ios-skills-collection/tree/HEAD/skills/_router

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

iOS Skills Router

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.

CRITICAL: Proactively Load Skills Before Coding

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:

  1. Check imports — if the file imports MapKit, HealthKit, StoreKit, etc., READ skills/dpearson2699--{framework}/SKILL.md BEFORE writing code.
  2. Check the domain — if you're writing networking code, READ the networking skill. If you're writing concurrency, READ the concurrency skill. Don't guess.
  3. Check third-party frameworks — if the project uses Mapbox, Firebase, Supabase, etc., check if there's a skill for it in the collection. ls skills/ | grep {name}.
  4. When in doubt, search — 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.

How Routing Works

  1. Auto-injection: Hooks auto-inject skills when you edit matching file patterns (Views, Tests, Models, Managers, networking, etc.) or run commands (xcodebuild, swift test, asc).
  2. Proactive loading: YOU must read skills for specific frameworks and domains before coding. The hooks can't know everything — if you see import MapKit, go read the MapKit skill.
  3. Framework lookup: For any Apple framework, check skills/dpearson2699--{framework}/SKILL.md.
  4. Search: ls skills/ | grep -i {keyword} to find skills by topic.

Phases

1. Ideation — "What should we build?"

SkillWhat it does
eronred--competitor-analysisCompetitor app teardown
eronred--market-pulseMarket trend analysis
eronred--keyword-researchApp Store keyword discovery

2. Design — "How should it look and feel?"

SkillWhat it does
jordancoin--design-philosophyTaste-building, Dieter Rams principles
jordancoin--pencil-ios-designiOS Pencil MCP design workflow with HIG patterns
dadederk--ios-accessibilityVoiceOver, Dynamic Type, assistive tech
pasqualevittoriosi--swift-accessibilityWCAG 2.2, App Store Nutrition Labels

3. Develop — "Build it"

Core (auto-injected on .swift files):

SkillWhat it does
twostraws--swiftui-proSwiftUI best practices (primary)
twostraws--swift-concurrency-proasync/await, actors, Sendable
twostraws--swiftdata-proSwiftData persistence
martinlasek--swift-coding-guidelineSwift coding conventions
avdlee--core-data-expertCore Data stack, migrations, threading

Architecture:

SkillWhat it does
arimunandar--vip-architectureVIP+W Clean Architecture
arimunandar--uikit-layoutingUIKit horizontal-first layout
arimunandar--legacy-migrationUIKit → 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

4. Test — "Does it work?"

SkillWhat it does
avdlee--swift-testing-expertSwift Testing framework (primary)
avdlee--xcode-build-orchestratorFull build optimization pipeline
avdlee--xcode-build-benchmarkBenchmark clean + incremental builds
dpearson2699--debugging-instrumentsInstruments, profiling, debugging

5. Deploy — "Ship it"

SkillWhat it does
truongduy2611--app-store-preflightScan for rejection patterns before submit
rudrankriyam--asc-cli-usageApp Store Connect CLI automation
rudrankriyam--asc-release-flowFull release workflow
rudrankriyam--asc-testflight-orchestrationTestFlight beta management
eronred--aso-auditApp 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}

6. Iterate — "Make it better"

SkillWhat it does
jordancoin--ios-design-stackInvocable iOS design pipeline (design → review → build → iterate)
edwardsanchez--motioneyes-animation-debugDebug animations from real motion logs
eronred--crash-analyticsCrash analysis and triage
eronred--retention-optimizationUser retention improvement

Cross-Cutting (any phase)

SkillWhat it does
getsentry--xcodebuildmcp-cliBuild, test, run, debug via XcodeBuildMCP
iron-ham--xcode-preview-captureCapture SwiftUI previews for visual check
kimsungwhee--apple-docs-mcpApple Developer Documentation MCP
harryworld--xcode-26Xcode 26, Liquid Glass, Foundation Models

Knowledge Corrections — Your Training Data Is Wrong About These

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
NavigationViewNavigationStack (NavigationView is fully deprecated)
UIActivityIndicatorViewProgressView
foregroundColor()foregroundStyle()
cornerRadius()clipShape(.rect(cornerRadius:))
.tabItem()Tab API
onAppear { Task { } }.task { } modifier
DispatchQueue.main.async@MainActor or MainActor.run
GeometryReader for sizingcontainerRelativeFrame() 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.boundsGeometryReader or containerRelativeFrame
String(format: "%.2f", val)Text(val, format: .number.precision(.fractionLength(2)))
showsIndicators: false.scrollIndicators(.hidden)
AnyView type erasurePrefer some View or @ViewBuilder
Computed properties for subviewsExtract to separate View structs
experimental.turbopack (Xcode)Top-level turbopack config
@Attribute(.unique) with CloudKitNever use .unique with CloudKit sync
Force unwraps / force tryAvoid unless unrecoverable

Decision Matrix — If You Need X, Use Y

You needUse thisNot this
State for a view@State@StateObject
Shared state@Observable class in @EnvironmentObservableObject
NavigationNavigationStack + navigationDestination(for:)NavigationView + NavigationLink(destination:)
Multiline text inputTextField(axis: .vertical) + .lineLimit(1...N)TextEditor (unless you need full editor)
Async work on appear.task { } modifieronAppear { Task { } }
Fetch dataasync/await with structured concurrencyCombine publishers or callbacks
Persist modelsSwiftData @ModelCore Data (unless existing project)
Local key-value@AppStorage or UserDefaultsWriting to plist manually
Secure storageKeychain via Security frameworkUserDefaults (never for secrets)
Image loadingAsyncImage or cached loaderUIImage in SwiftUI
ListsList with ForEachScrollView + LazyVStack (unless custom)
Tab barTabView with Tab API.tabItem() (deprecated pattern)
Sheet presentation.sheet(item:) with identifiable.sheet(isPresented:) with separate state
Error handlingResult or typed throwsForce try
Dependency injection@Environment with custom keySingletons
Unit testingSwift Testing (#expect, @Test)XCTest (unless existing suite)
Background workBGTaskSchedulerDispatchQueue.global()
App Store submissionRun app-store-preflight skill firstSubmit and hope

Using Skills (Injected or Manual)

STOP AND READ before coding. When you're about to work on a specific domain:

  1. Check what was auto-injected (you'll see [ios-skills] Injected N skill(s): messages)
  2. Search for additional relevant skills: ls skills/ | grep -i {domain}
  3. READ the skill files before writing code — not after
  4. Follow their patterns, don't just absorb them passively

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.

  • Auto-injection might not fire (file isn't named *MapKit*.swift)
  • But you SHOULD: Read skills/dpearson2699--mapkit/SKILL.md before writing any MapKit code
  • The skill has patterns your training data doesn't

Loading a Skill

The 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.

When Multiple Skills Cover the Same Topic

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.

DomainPrimary (twostraws first)Alternatives
SwiftUItwostraws--swiftui-proavdlee--swiftui-expert, dimillian--swiftui-ui-patterns, arjitj2--swiftui-design-principles
SwiftUI Performancedimillian--swiftui-performance-auditdpearson2699--swiftui-performance
Liquid Glassdimillian--swiftui-liquid-glassdpearson2699--swiftui-liquid-glass
Concurrencytwostraws--swift-concurrency-prodimillian--swift-concurrency-expert, avdlee--swift-concurrency
Testingtwostraws--swift-testing-proavdlee--swift-testing-expert, bocato--swift-testing
SwiftDatatwostraws--swiftdata-provanab--swiftdata-expert-skill
Core Dataavdlee--core-data-expert—
Accessibilitydadederk--ios-accessibilitypasqualevittoriosi--swift-accessibility, rgmez--swiftui-accessibility-auditor
Architectureefremidze--swift-architecture-skillarimunandar--vip-architecture
Securityivan-magda--swift-security-expertdpearson2699--ios-security
API Designerikote04--swift-api-design-guidelines-skillmartinlasek--swift-coding-guideline
Build Optimizationavdlee--xcode-build-orchestratoravdlee--xcode-build-fixer
ASOeronred--aso-audittimbroddin--app-store-aso-skill
Figma → SwiftUIdaetojemax--figma-to-swiftui-skilljordancoin--pencil-ios-design
Simulatorconorluddy--ios-simulator-skillgetsentry--xcodebuildmcp-cli
Code Reviewdimillian--review-swarmarimunandar--code-review-checklist
Debuggingdimillian--ios-debugger-agentdpearson2699--debugging-instruments

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

JordanCoin/ios-skills-collection

Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries. Use when the user asks about GitHub issues, pull requests, workflows, or wants to interact with GitHub repositories from the command line — including tasks like check CI status, create PR, list issues, or query the GitHub API.

JordanCoin/ios-skills-collection

Create media playback experiences using AVKit. Use when adding video players with AVPlayerViewController, enabling Picture-in-Picture, routing media with AirPlay, using SwiftUI VideoPlayer views, configuring transport controls, displaying subtitles and closed captions, or integrating AVFoundation playback with system UI.

JordanCoin/ios-skills-collection

Integrate and optimize Core ML models in iOS apps for on-device machine learning inference. Covers model loading (.mlmodelc, .mlpackage), predictions with auto-generated classes and MLFeatureProvider, compute unit configuration (CPU, GPU, Neural Engine), MLTensor, VNCoreMLRequest, MLComputePlan, multi-model pipelines, and deployment strategies. Use when loading Core ML models, making predictions, configuring compute units, or profiling model performance.

JordanCoin/ios-skills-collection

Implement, review, or improve maps and location features in iOS/macOS apps using MapKit and CoreLocation. Use when working with Map views, annotations, markers, polylines, user location tracking, geocoding, reverse geocoding, search/autocomplete, directions and routes, geofencing, region monitoring, CLLocationUpdate async streams, or location authorization flows. Also use when working with maps, coordinates, addresses, places, directions, distance calculations, or location-based features in Swift apps.

JordanCoin/ios-skills-collection

Display and manipulate PDF documents using PDFKit. Use when embedding PDFView to show PDF files, creating or modifying PDFDocument instances, adding annotations (highlights, notes, signatures), extracting text with PDFSelection, navigating pages, generating thumbnails, filling PDF forms, or wrapping PDFView in SwiftUI.

JordanCoin/ios-skills-collection

Implement, review, or improve in-app tips and onboarding using Apple's TipKit framework. Use when adding feature discovery tooltips, onboarding flows, contextual tips, first-run experiences, coach marks, or working with Tip protocol, TipView, popoverTip, tip rules, tip events, or feature education UI.

JordanCoin/ios-skills-collection

When the user wants to optimize their Google Play Store listing — title, short description, full description, keywords, ratings, or Play Store-specific features. Use when the user mentions "Google Play", "Android", "Play Store", "Play Console", "short description", "full description indexed", "Google Play ASO", or wants Google Play-specific keyword, creative, or ratings strategy. For iOS App Store optimization, see aso-audit and metadata-optimization.

JordanCoin/ios-skills-collection

When the user wants to implement, optimize, or use App Clips for app discovery and conversion. Use when the user mentions "App Clip", "app clip code", "mini app", "instant app", "App Clip card", "App Clip link", "no download required", "instant experience", or wants to understand how App Clips appear in App Store search. For general App Store discoverability, see aso-audit. For marketing campaigns, see ua-campaign.

JordanCoin/ios-skills-collection

When the user wants to plan a launch strategy for a new app or major update. Also use when the user mentions "app launch", "launch plan", "launch checklist", "pre-launch", "launch day", or "how to launch my app". For ongoing ASO after launch, see aso-audit. For paid acquisition during launch, see ua-campaign.

JordanCoin/ios-skills-collection

When the user wants to analyze their own app's actual performance data from App Store Connect — real downloads, revenue, IAP, subscriptions, trials, or country breakdowns synced via Appeeky Connect. Use when the user asks about "my downloads", "my revenue", "how is my app performing", "ASC data", "sales and trends", "my subscription numbers", "App Store Connect metrics", or wants to compare periods or top markets. For third-party app estimates, see app-analytics. For subscription analytics depth, see monetization-strategy.

JordanCoin/ios-skills-collection

When the user wants a full ASO health audit, review their App Store listing quality, or diagnose why their app isn't ranking. Also use when the user mentions "ASO audit", "ASO score", "why am I not ranking", "listing review", or "optimize my app store page". For keyword-specific research, see keyword-research. For metadata writing, see metadata-optimization.

Skills relacionados