> axiom-ios-data
Use when working with ANY data persistence, database, axiom-storage, CloudKit, migration, or serialization. Covers SwiftData, Core Data, GRDB, SQLite, CloudKit sync, file storage, Codable, migrations.
curl "https://skillshub.wtf/CharlesWiltgen/Axiom/axiom-ios-data?format=md"iOS Data & Persistence Router
You MUST use this skill for ANY data persistence, database, axiom-storage, CloudKit, or serialization work.
When to Use
Use this router when working with:
- Databases (SwiftData, Core Data, GRDB, SQLiteData)
- Schema migrations
- CloudKit sync
- File storage (iCloud Drive, local storage)
- Data serialization (Codable, JSON)
- Storage strategy decisions
- Keychain / secure credential storage
- Encryption, signing, key management (CryptoKit)
Routing Logic
SwiftData
Working with SwiftData → /skill axiom-swiftdata
Schema migration → /skill axiom-swiftdata-migration
Migration issues → /skill axiom-swiftdata-migration-diag
Migrating from Realm → /skill axiom-realm-migration-ref
SwiftData vs SQLiteData → /skill axiom-sqlitedata-migration
Other Databases
GRDB queries → /skill axiom-grdb
SQLiteData → /skill axiom-sqlitedata
Advanced SQLiteData → /skill axiom-sqlitedata-ref
Core Data patterns → /skill axiom-core-data
Core Data issues → /skill axiom-core-data-diag
Migrations
Database migration safety → /skill axiom-database-migration (critical - prevents data loss)
Serialization
Codable issues → /skill axiom-codable
Cloud Storage
Cloud sync patterns → /skill axiom-cloud-sync
CloudKit → /skill axiom-cloudkit-ref
iCloud Drive → /skill axiom-icloud-drive-ref
Cloud sync errors → /skill axiom-cloud-sync-diag
Keychain & Encryption
Keychain / secure credential storage → /skill axiom-keychain
Keychain errors → /skill axiom-keychain-diag
Keychain API reference → /skill axiom-keychain-ref
Encryption / signing / key management → /skill axiom-cryptokit
CryptoKit API reference → /skill axiom-cryptokit-ref
File Storage
Storage strategy → /skill axiom-storage
Storage issues → /skill axiom-storage-diag
Storage management → /skill axiom-storage-management-ref
File protection → /skill axiom-file-protection-ref
tvOS Storage
tvOS data persistence → /skill axiom-tvos (CRITICAL: no persistent local storage on tvOS)
tvOS + CloudKit → /skill axiom-sqlitedata (recommended: SyncEngine as persistent store)
Automated Scanning
Core Data audit → Launch core-data-auditor agent or /axiom:audit core-data (migration risks, thread-confinement, N+1 queries, production data loss)
Codable audit → Launch codable-auditor agent or /axiom:audit codable (try? swallowing errors, JSONSerialization, date handling)
iCloud audit → Launch icloud-auditor agent or /axiom:audit icloud (entitlement checks, file coordination, CloudKit anti-patterns)
Storage audit → Launch storage-auditor agent or /axiom:audit storage (wrong file locations, missing backup exclusions, data loss risks)
Decision Tree
- SwiftData? → swiftdata, swiftdata-migration
- Core Data? → core-data, core-data-diag
- GRDB? → grdb
- SQLiteData? → sqlitedata, sqlitedata-ref
- ANY schema migration? → database-migration (ALWAYS — prevents data loss)
- Realm migration? → realm-migration-ref
- SwiftData vs SQLiteData? → sqlitedata-migration
- Cloud sync architecture? → cloud-sync
- CloudKit? → cloudkit-ref
- iCloud Drive? → icloud-drive-ref
- Cloud sync errors? → cloud-sync-diag
- Codable/JSON serialization? → codable
- File storage strategy? → storage, storage-diag, storage-management-ref
- File protection? → file-protection-ref
- Keychain / storing tokens, passwords, secrets securely? → keychain, keychain-diag, keychain-ref
- SecItem errors (errSecDuplicateItem, errSecItemNotFound, errSecInteractionNotAllowed)? → keychain-diag
- Encryption, signing, Secure Enclave, CryptoKit? → cryptokit, cryptokit-ref
- Quantum-secure cryptography, HPKE, ML-KEM? → cryptokit
- Want Core Data safety scan? → core-data-auditor (Agent)
- Want Codable anti-pattern scan? → codable-auditor (Agent)
- Want iCloud sync audit? → icloud-auditor (Agent)
- Want storage location audit? → storage-auditor (Agent)
- tvOS data persistence? → axiom-tvos (CRITICAL: no persistent local storage) + axiom-sqlitedata (CloudKit SyncEngine)
Anti-Rationalization
| Thought | Reality |
|---|---|
| "Just adding a column, no migration needed" | Schema changes without migration crash users. database-migration prevents data loss. |
| "I'll handle the migration manually" | Manual migrations miss edge cases. database-migration covers rollback and testing. |
| "Simple query, I don't need the skill" | Query patterns prevent N+1 and thread-safety issues. The skill has copy-paste solutions. |
| "CloudKit sync is straightforward" | CloudKit has 15+ failure modes. cloud-sync-diag diagnoses them systematically. |
| "I know Codable well enough" | Codable has silent data loss traps (try? swallows errors). codable skill prevents production bugs. |
| "I'll use local storage on tvOS" | tvOS has NO persistent local storage. System deletes Caches at any time. axiom-tvos explains the iCloud-first pattern. |
| "UserDefaults is fine for this token" | UserDefaults is unencrypted, backed up to iCloud, and visible to MDM profiles. One audit catches it. keychain stores tokens securely. |
| "I'll encrypt it myself with CommonCrypto" | CryptoKit replaced CommonCrypto's buffer-management nightmares with one-line APIs. cryptokit prevents misuse. |
Critical Pattern: Migrations
ALWAYS invoke /skill axiom-database-migration when adding/modifying database columns.
This prevents:
- "FOREIGN KEY constraint failed" errors
- "no such column" crashes
- Data loss from unsafe migrations
Example Invocations
User: "I need to add a column to my SwiftData model"
→ Invoke: /skill axiom-database-migration (critical - prevents data loss)
User: "How do I query SwiftData with complex filters?"
→ Invoke: /skill axiom-swiftdata
User: "CloudKit sync isn't working"
→ Invoke: /skill axiom-cloud-sync-diag
User: "Should I use SwiftData or SQLiteData?"
→ Invoke: /skill axiom-sqlitedata-migration
User: "Check my Core Data code for safety issues"
→ Invoke: core-data-auditor agent
User: "Scan for Codable anti-patterns before release"
→ Invoke: codable-auditor agent
User: "Audit my iCloud sync implementation"
→ Invoke: icloud-auditor agent
User: "Check if my files are stored in the right locations"
→ Invoke: storage-auditor agent
User: "How do I persist data on tvOS?"
→ Invoke: /skill axiom-tvos + /skill axiom-sqlitedata
User: "My tvOS app loses data between launches"
→ Invoke: /skill axiom-tvos
User: "How do I store an auth token securely?"
→ Invoke: /skill axiom-keychain
User: "errSecDuplicateItem but I checked and the item doesn't exist"
→ Invoke: /skill axiom-keychain-diag
User: "How do I encrypt data with AES in Swift?"
→ Invoke: /skill axiom-cryptokit
User: "I need to sign data with the Secure Enclave"
→ Invoke: /skill axiom-cryptokit
User: "What's ML-KEM and should I use it?"
→ Invoke: /skill axiom-cryptokit
> related_skills --same-repo
> axiom-eventkit
Use when working with ANY calendar event, reminder, EventKit permission, or EventKitUI controller. Covers access tiers (no-access, write-only, full), permission migration from pre-iOS 17, store lifecycle, reminder patterns, EventKitUI controller selection, Siri Event Suggestions, virtual conference extensions.
> axiom-eventkit-ref
Use when needing EventKit API details — EKEventStore, EKEvent, EKReminder, EventKitUI view controllers, EKCalendarChooser, authorization methods, predicate-based fetching, recurrence rules, Siri Event Suggestions donation, EKVirtualConferenceProvider, location-based reminders, and EKErrorDomain codes
> axiom-contacts
Use when accessing ANY contact data, requesting Contacts permissions, choosing between picker and store access, implementing Contact Access Button, or migrating to iOS 18 limited access. Covers authorization levels, CNContactStore, ContactProvider, key fetching, incremental sync.
> axiom-contacts-ref
Use when needing Contacts API details — CNContactStore, CNMutableContact, CNSaveRequest, CNContactFormatter, CNContactVCardSerialization, CNContactPickerViewController, ContactAccessButton, contactAccessPicker, ContactProvider extension, CNChangeHistoryFetchRequest, contact key descriptors, and CNError codes