Use when integrating ANY iOS system feature - Siri, Shortcuts, widgets, IAP, camera, photo library, audio, ShazamKit, haptics, localization, privacy, alarms, calendar, reminders, contacts. Covers App Intents, WidgetKit, StoreKit, AVFoundation, ShazamKit, Core Haptics, Spotlight, EventKit, Contacts.
You MUST use this skill for ANY iOS system integration including Siri, Shortcuts, widgets, in-app purchases, camera, photo library, audio, axiom-haptics, and more.
Use this router for:
When integration issues overlap with other domains:
Widget + data sync issues (widget not showing updated data):
Live Activity + push notification issues:
Camera + permissions + privacy:
MapKit + location issues (user location not showing on map):
Push notification + Live Activity issues (push not updating Live Activity):
Push notification + background processing (silent push not triggering background work):
Calendar + data sync issues (events not syncing, stale calendar data):
Contacts + privacy issues (contact access denied, limited access confusion):
ShazamKit + microphone permissions (no match results, permission denied):
ShazamKit + AVFoundation (custom SHSession with AVAudioEngine buffers):
ShazamKit + MusicKit (play matched song via Apple Music):
App Intents → /skill axiom-app-intents-ref
App Shortcuts → /skill axiom-app-shortcuts-ref
App discoverability → /skill axiom-app-discoverability
Core Spotlight → /skill axiom-core-spotlight-ref
Widgets/Live Activities → /skill axiom-extensions-widgets
Widget reference → /skill axiom-extensions-widgets-ref
IAP implementation → /skill axiom-in-app-purchases
StoreKit 2 reference → /skill axiom-storekit-ref
IAP audit → Launch iap-auditor agent (missing transaction.finish(), weak receipt validation, missing restore, subscription tracking)
IAP full implementation → Launch iap-implementation agent (StoreKit config, StoreManager, transaction handling, restore purchases)
Camera capture implementation → /skill axiom-camera-capture
Camera API reference → /skill axiom-camera-capture-ref
Camera debugging → /skill axiom-camera-capture-diag
Camera audit → Launch camera-auditor agent or /axiom:audit camera (deprecated APIs, missing interruption handlers, threading violations, permission anti-patterns)
Photo pickers & library → /skill axiom-photo-library
Photo library API reference → /skill axiom-photo-library-ref
Audio (AVFoundation) → /skill axiom-avfoundation-ref
Haptics → /skill axiom-haptics
Now Playing → /skill axiom-now-playing
CarPlay Now Playing → /skill axiom-now-playing-carplay
MusicKit integration → /skill axiom-now-playing-musickit
ShazamKit implementation → /skill axiom-shazamkit
ShazamKit API reference → /skill axiom-shazamkit-ref
Localization → /skill axiom-localization
Privacy UX → /skill axiom-privacy-ux
Passkeys / WebAuthn sign-in → /skill axiom-passkeys
App Attest / DeviceCheck → /skill axiom-app-attest
AlarmKit (iOS 26+) → /skill axiom-alarmkit-ref
EventKit implementation → /skill axiom-eventkit
EventKit API reference → /skill axiom-eventkit-ref
Contacts implementation → /skill axiom-contacts
Contacts API reference → /skill axiom-contacts-ref
BGTaskScheduler implementation → /skill axiom-background-processing
Background task debugging → /skill axiom-background-processing-diag
Background task API reference → /skill axiom-background-processing-ref
Push notification implementation → /skill axiom-push-notifications
Push notification API reference → /skill axiom-push-notifications-ref
Push notification debugging → /skill axiom-push-notifications-diag
Implementation patterns → /skill axiom-core-location
API reference → /skill axiom-core-location-ref
Debugging location issues → /skill axiom-core-location-diag
MapKit implementation patterns → /skill axiom-mapkit
MapKit API reference → /skill axiom-mapkit-ref
MapKit troubleshooting → /skill axiom-mapkit-diag
| Thought | Reality |
|---|---|
| "App Intents are just a protocol conformance" | App Intents have parameter validation, entity queries, and background execution. app-intents-ref covers all. |
| "Widgets are simple, I've done them before" | Widgets have timeline, interactivity, and Live Activity patterns that evolve yearly. extensions-widgets is current. |
| "I'll add haptics with a simple API call" | Haptic design has patterns for each interaction type. haptics skill matches HIG guidelines. |
| "Localization is just String Catalogs" | Xcode 26 has type-safe localization, generated symbols, and #bundle macro. localization skill is current. |
| "Camera capture is just AVCaptureSession setup" | Camera has interruption handlers, rotation, and threading requirements. camera-capture covers all. |
| "I'll just use MKMapView, I know it already" | SwiftUI Map is 10x less code for standard map features. mapkit has the decision tree. |
| "MapKit search doesn't work, I'll use Google Maps SDK" | MapKit search needs region bias and resultTypes configuration. mapkit-diag fixes this in 5 minutes. |
| "Alarm scheduling is just UNNotificationRequest" | AlarmKit (iOS 26+) has dedicated alarm UI, authorization, and Live Activity integration. alarmkit-ref covers the framework. |
| "Push notifications are just a payload and a token" | Token lifecycle, Focus interruption levels, service extension gotchas, and sandbox/production mismatch cause 80% of push bugs. push-notifications covers all. |
| "Our users aren't ready for passkeys" | Apple, Google, and Microsoft ship passkeys across all platforms. Users don't need to understand crypto — they just tap. passkeys covers the migration path. |
| "App Attest is overkill for our app" | Any app with server-side value (premium content, virtual currency, user accounts) is a fraud target. app-attest has a gradual rollout strategy. |
| "Just request full Calendar access" | Most apps only need to add events — EventKitUI does that with zero permissions. eventkit has the access tier decision tree. |
| "ShazamKit is just SHSession + a delegate" | iOS 17+ has SHManagedSession which eliminates all AVAudioEngine boilerplate. shazamkit has the era decision tree. |
| "I'll use CNContactStore directly for contact picking" | CNContactPickerViewController needs no authorization and shows all contacts. contacts has the access level decision tree. |
User: "How do I add Siri support for my app?"
→ Invoke: /skill axiom-app-intents-ref
User: "My widget isn't updating"
→ Invoke: /skill axiom-extensions-widgets
User: "My widget isn't showing updated SwiftData content"
→ Invoke: /skill axiom-extensions-widgets + also invoke ios-data router for App Group/shared container setup
User: "My Live Activity isn't updating and I'm getting push notification errors"
→ Invoke: /skill axiom-extensions-widgets for ActivityKit + also invoke ios-networking router for push delivery
User: "Implement in-app purchases with StoreKit 2"
→ Invoke: /skill axiom-in-app-purchases
User: "How do I localize my app strings?"
→ Invoke: /skill axiom-localization
User: "Implement haptic feedback for button taps"
→ Invoke: /skill axiom-haptics
User: "How do I set up a camera preview?"
→ Invoke: /skill axiom-camera-capture
User: "Camera freezes when I get a phone call"
→ Invoke: /skill axiom-camera-capture-diag
User: "What is RotationCoordinator?"
→ Invoke: /skill axiom-camera-capture-ref
User: "How do I let users pick photos in SwiftUI?"
→ Invoke: /skill axiom-photo-library
User: "User can't see their photos after granting access"
→ Invoke: /skill axiom-photo-library
User: "How do I save a photo to the camera roll?"
→ Invoke: /skill axiom-photo-library
User: "My background task never runs"
→ Invoke: /skill axiom-background-processing-diag
User: "How do I implement BGTaskScheduler?"
→ Invoke: /skill axiom-background-processing
User: "What's the difference between BGAppRefreshTask and BGProcessingTask?"
→ Invoke: /skill axiom-background-processing-ref
User: "How do I implement geofencing?"
→ Invoke: /skill axiom-core-location
User: "Location updates not working in background"
→ Invoke: /skill axiom-core-location-diag
User: "What is CLServiceSession?"
→ Invoke: /skill axiom-core-location-ref
User: "Review my in-app purchase implementation"
→ Invoke: iap-auditor agent
User: "Implement in-app purchases for my app"
→ Invoke: iap-implementation agent
User: "Check my camera code for issues"
→ Invoke: camera-auditor agent
User: "How do I add a map to my SwiftUI app?"
→ Invoke: /skill axiom-mapkit
User: "My annotations aren't showing on the map"
→ Invoke: /skill axiom-mapkit-diag
User: "How do I implement search with autocomplete on a map?"
→ Invoke: /skill axiom-mapkit-ref
User: "My map region keeps jumping when I scroll"
→ Invoke: /skill axiom-mapkit-diag
User: "How do I add directions between two points?"
→ Invoke: /skill axiom-mapkit-ref
User: "How do I schedule alarms in iOS 26?"
→ Invoke: /skill axiom-alarmkit-ref
User: "How do I integrate AlarmKit with Live Activities?"
→ Invoke: /skill axiom-alarmkit-ref
User: "How do I implement push notifications?"
→ Invoke: /skill axiom-push-notifications
User: "What APNs headers do I need?"
→ Invoke: /skill axiom-push-notifications-ref
User: "Push notifications work in dev but not production"
→ Invoke: /skill axiom-push-notifications-diag
User: "My Live Activity isn't updating via push"
→ Invoke: /skill axiom-push-notifications-diag + /skill axiom-extensions-widgets
User: "Should I use FCM or direct APNs?"
→ Invoke: /skill axiom-push-notifications
User: "How do I use pushTokenUpdates for Live Activities?"
→ Invoke: /skill axiom-extensions-widgets (ActivityKit API owns push token observation)
User: "How do I test push notifications without a real server?"
→ Invoke: /skill axiom-push-notifications-ref (command-line testing section)
User: "How do I implement passkey sign-in?"
→ Invoke: /skill axiom-passkeys
User: "How do I replace passwords with passkeys?"
→ Invoke: /skill axiom-passkeys
User: "How do I verify my app hasn't been tampered with?"
→ Invoke: /skill axiom-app-attest
User: "How do I prevent promotional fraud?"
→ Invoke: /skill axiom-app-attest
User: "How do I add an event to the user's calendar?"
→ Invoke: /skill axiom-eventkit
User: "What's the difference between write-only and full Calendar access?"
→ Invoke: /skill axiom-eventkit
User: "How do I create reminders programmatically?"
→ Invoke: /skill axiom-eventkit
User: "What is EKEventEditViewController?"
→ Invoke: /skill axiom-eventkit-ref
User: "How do I implement Siri Event Suggestions?"
→ Invoke: /skill axiom-eventkit-ref
User: "How do I let users pick a contact?"
→ Invoke: /skill axiom-contacts
User: "What is the Contact Access Button?"
→ Invoke: /skill axiom-contacts
User: "How do I search and fetch contacts?"
→ Invoke: /skill axiom-contacts-ref
User: "How do I build a Contact Provider extension?"
→ Invoke: /skill axiom-contacts-ref
User: "How do I detect contact changes for sync?"
→ Invoke: /skill axiom-contacts-ref
| "Contacts access is simple, just request and fetch" | iOS 18 limited access means your app may only see a subset. ContactAccessButton handles this gracefully. contacts covers the full model. |