kmp-ios-skills
105 agent skills for Kotlin Multiplatform and iOS development. Built for a KMP + iOS stack where Android is a KMP target — not the other way around.
Every skill is a plain SKILL.md: procedural knowledge an agent loads only when the task calls for it. Works with Claude Code, Codex, Cursor, Copilot, Gemini and 75+ other agents via the skills CLI.
# everything (105 skills)
npx skills add TalissonVitorino/kmp-ios-skills
# just one area
npx skills add TalissonVitorino/kmp-ios-skills/ios
npx skills add TalissonVitorino/kmp-ios-skills/kmp
npx skills add TalissonVitorino/kmp-ios-skills/android
npx skills add TalissonVitorino/kmp-ios-skills/cross-platform
npx skills add TalissonVitorino/kmp-ios-skills/workflow
# a single skill
npx skills add TalissonVitorino/kmp-ios-skills/ios/swiftui-expert-skill
| Folder | Skills | Covers |
|---|---|---|
ios/ |
48 | Swift, SwiftUI, Apple frameworks, security, on-device AI, profiling, App Store |
kmp/ |
15 | Shared layer, DI, Ktor, SQLDelight, iOS framework export, money |
android/ |
24 | Compose, Gradle/AGP, Perfetto, Play, CameraX, R8 |
cross-platform/ |
14 | Navigation, architecture, security, a11y, i18n, offline-first |
workflow/ |
4 | Feature flow, checkpoints, commit hygiene, pre-merge verification |
Prefer per-area installs. Skill descriptions are always in the agent's context (that's how routing works) — installing all 105 costs ~8–10k tokens of permanent index. One area costs a fraction of that, and skill bodies only load when invoked.
What's inside
🍎 ios/ — Swift & SwiftUI
| Need | Skill |
|---|---|
| Swift language (optionals, generics, protocols) | swift-patterns |
| async/await, actors, TaskGroup | swift-concurrency |
| Swift 6.2 approachable concurrency migration | swift-concurrency-6-2 |
| Reactive publisher/subscriber | combine-framework |
Review/refactor SwiftUI — deprecated-API migration, Instruments .trace analysis |
swiftui-expert-skill |
| Quick SwiftUI layout/nav/animation patterns | swiftui-patterns |
SwiftUI state (@Observable, iOS 17+) |
swiftui-observation |
| Bridge UIKit ↔ SwiftUI, migrate incrementally | swiftui-uikit-interop |
| Liquid Glass (iOS 26) | liquid-glass |
| Swift Package Manager dependencies | swift-package-manager |
| Choose/migrate app architecture (MV, MVVM, TCA, Clean) | swift-architecture |
| Name/label/document Swift APIs | swift-api-design-guidelines |
| iOS tests (XCTest, Swift Testing, XCUITest) | ios-testing |
| Protocol-based DI for testable Swift | swift-protocol-di-testing |
Apple app-surface frameworks
| Need | Skill |
|---|---|
| Widgets — Home/Lock Screen/StandBy/Control Center | widgetkit |
| Live Activities & Dynamic Island | activitykit |
| Siri/Shortcuts/Spotlight/Apple Intelligence actions | app-intents |
| In-app purchases & subscriptions (StoreKit 2) | storekit |
| Apple Pay + Wallet passes | passkit |
| Maps, annotations, geocoding, geofencing | mapkit |
| Photo picker, camera capture, AVFoundation | photokit |
| Contacts read/write | contacts-framework |
| Display/annotate/fill PDFs | pdfkit |
| Read/write NFC tags | core-nfc |
| VoIP calling, caller ID (CallKit + PushKit) | callkit |
| iCloud sync (CloudKit, CKSyncEngine) | cloudkit |
| App Clips — invocation URLs, codes, handoff | app-clips |
| In-app tips / feature discovery | tipkit |
| Embed web content in SwiftUI (iOS 26+) | swiftui-webkit |
| Background tasks (BGTaskScheduler) | background-processing |
| iOS 17+ persistence | swiftdata |
| Legacy persistence | core-data |
Security, AI, formatting, tooling
| Need | Skill |
|---|---|
| Keychain, biometrics, CryptoKit, Secure Enclave, MASVS | swift-security |
| Sign in with Apple, passkeys/WebAuthn, OAuth | authentication |
| Device legitimacy / anti-fraud (DeviceCheck, App Attest) | device-integrity |
| Wallet financial data — transactions/balances | financekit |
| Pick an on-device AI runtime (Foundation Models, Core ML, MLX) | apple-on-device-ai |
| Load & run a Core ML model | coreml |
| OCR, barcode/face detection, segmentation | vision-framework |
| Tokenize/tag/embeddings + translation | natural-language |
| Charts — bar/line/area/pie/3D | swift-charts |
| Locale-aware number/currency/date formatting | swift-formatstyle |
| Debug/profile (LLDB, Memory Graph, Instruments) | debugging-instruments |
| Production telemetry (MetricKit) | metrickit |
Drive the Simulator via simctl |
ios-simulator |
| Lint config & rollout (SwiftLint) | swiftlint |
| Pre-submission audit / rejection risk | app-store-review |
| Generate app-icon imagesets | ios-icon-gen |
🧩 kmp/ — shared layer
| Need | Skill |
|---|---|
KMP Gradle: targets, source sets, kotlin {} DSL |
kmp-build-setup |
| expect/actual patterns | expect-actual |
| Ship the shared module to iOS (XCFramework, SKIE, suspend/Flow→Swift) | kmp-ios-integration |
Shared @Serializable domain models |
shared-models |
| Coroutines/Flow in shared code (iOS dispatchers) | shared-coroutines |
| Typed error handling (Result / sealed / Arrow) | error-handling-result |
| Multiplatform logging (Kermit) | kmp-logging |
| Money/currency/decimal — never-Double, banker's rounding, allocation | kmp-money |
| Shared DI consumed from iOS | kmp-di |
| Shared Ktor client (per-platform engines) | kmp-networking |
| Shared TLS/SPKI pinning (OkHttp + Darwin) | kmp-tls-pinning |
| Shared DB across Android + iOS | sqldelight-patterns |
| Repository pattern (shared) | kmp-repositories |
| Key-value prefs | multiplatform-settings |
CMP resources (Res.drawable/string/font) |
compose-resources |
🟩 android/
| Need | Skill |
|---|---|
| Compose UI patterns | jetpack-compose |
| Material 3 Expressive | m3-expressive |
| Adaptive layouts (WindowSizeClass, multi-pane) | compose-adaptive |
| Edge-to-edge / insets / system bars | edge-to-edge |
| Compose Styles API, design-system theming | compose-theming-styles |
| Image loading | image-loading |
| Kotlin coroutines/Flow | coroutines-patterns |
| Android Kotlin idioms | android-patterns |
| Koin DSL / scopes / qualifiers | koin-patterns |
| Android app Koin (module-per-layer, koinViewModel) | android-di-koin |
| Android Ktor/OkHttp client | ktor-patterns |
| Room | room-patterns |
| Android/JVM tests (JUnit5, MockK, Turbine, Compose UI) | mobile-testing |
| Gradle (version catalogs, modules) | gradle-patterns |
| Migrate to AGP 9 | agp-9-upgrade |
| Analyze/optimize R8 keep rules | r8-analyzer |
| CameraX (capture, recording lifecycle, ML Kit interop) | camerax |
android CLI (projects, devices/AVDs, SDK, docs) |
android-cli |
| Query a Perfetto trace with SQL | perfetto-sql |
| Root-cause jank/latency/memory from a trace | perfetto-trace-analysis |
| Google Play Billing upgrade | play-billing-upgrade |
| Audit Intent security (redirection, exported components) | android-intent-security |
| Audit against Google Play policies | play-policy-insights |
| App/device integrity + root detection (Play Integrity) | android-device-integrity |
🔀 cross-platform/
| Need | Skill |
|---|---|
| Any navigation — Jetpack Nav / Nav3 / Voyager · Decompose · SwiftUI | navigation |
| MVI / unidirectional state | mvi-architecture |
| Lifecycle / process death / SavedStateHandle | app-lifecycle |
| Offline-first sync / cache / conflict | offline-first |
| Pagination (Paging 3, cursor/offset) | pagination-patterns |
| Deep links (App Links / Universal Links) | deep-linking |
| Push (FCM / APNs) | push-notifications |
| Feature flags / remote config / A·B | feature-flags |
| Analytics events | analytics-patterns |
| Localization / i18n / RTL | localization-patterns |
| Accessibility (a11y, WCAG, dynamic type) | accessibility-patterns |
| CI/CD (GitHub Actions, Fastlane, signing) | ci-cd-patterns |
| Android secure storage, network config, biometrics | mobile-security |
| Session auto-lock, screen-capture protection | mobile-session-security |
🔁 workflow/
| Need | Skill |
|---|---|
| End-to-end feature (plan → architecture → code → test → verify) | feature-builder |
| Checkpoint / restore safety | mobile-checkpoint |
Ship a branch: prove the suites ran (counts JUnit XML, not BUILD SUCCESSFUL), curate the history, push under the developer's own authorship |
prepare-merge-request |
| Fix production issues from Sentry (needs the Sentry MCP) | sentry-fix-issues |
How to use them well
- One task = one skill. Be specific so the right one triggers. Descriptions are deliberately disambiguated — "shared Koin DI consumed from iOS" routes to
kmp-di, not to the three other DI skills. - Don't invoke "just in case." Each invocation injects that skill's body into the context.
- Depth lives in
references/— e.g.cross-platform/navigation/references/carries 23 Navigation 3 recipes,ios/swiftui-expert-skill/references/a full review tree with Instruments-trace scripts. Those load only when read. - Some descriptions point at
android-skills:— that's rcosteira79/android-skills, a separate source-backed plugin. Where a skill here is the light version of a topic it covers in depth, the description says so. Install it alongside if you're Android-heavy.
Versions pinned in the skills (Ktor, AGP, Compose BOM, Kotlin, SQLDelight…) were verified at the time of writing — re-check before assuming they're current.
Provenance & licenses
This repository is MIT. It bundles work from several sources, all under permissive licenses — see NOTICE.md for the full attribution.
- 34 skills written from scratch and adversarially verified against Apple's official documentation (every API symbol checked by an independent pass): the iOS framework set,
swift-security,kmp-money,kmp-tls-pinning,android-device-integrity,mobile-session-security. - Google's android/skills (Apache-2.0):
camerax,compose-theming-styles,perfetto-sql,perfetto-trace-analysis,android-cli,play-billing-upgrade,android-intent-security,play-policy-insights,compose-adaptive,edge-to-edge,r8-analyzer,agp-9-upgrade, plus the Navigation 3 recipes insidenavigation. - avdlee/swiftui-agent-skill (MIT):
swiftui-expert-skill. - ahmed3elshaer/everything-claude-code-mobile (MIT): the cross-platform and Android pattern skills, refreshed here — dependency versions bumped, dead APIs replaced, compile-blocking samples fixed.
- affaan-m/everything-claude-code (MIT):
swift-concurrency-6-2,swift-protocol-di-testing,ios-icon-gen. - getsentry/sentry-skills (Apache-2.0):
sentry-fix-issues.
License
MIT © Talisson Vitorino. Bundled third-party skills keep their original licenses, listed in NOTICE.md.
No comments yet
Be the first to share your take.