Data & Persistence
You MUST use this skill for ANY data persistence, database, storage, CloudKit, or serialization work.
When to Use
Use this skill 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)
Quick Reference
| Symptom / Task |
Reference |
| SwiftData @Model, @Query, ModelContext |
See skills/swiftdata.md |
| SwiftData schema migration, VersionedSchema |
See skills/swiftdata-migration.md |
| SwiftData migration crashes, data loss |
See skills/swiftdata-migration-diag.md |
| Migrating from Realm to SwiftData |
See skills/realm-migration-ref.md |
| SwiftData vs SQLiteData decision |
See skills/sqlitedata-migration.md |
| GRDB queries, ValueObservation, DatabaseMigrator |
See skills/grdb.md |
| SQLiteData @Table, CRUD, SyncEngine |
See skills/sqlitedata.md |
| SQLiteData advanced patterns, CTEs, views |
See skills/sqlitedata-ref.md |
| Core Data stack, relationships, concurrency |
See skills/core-data.md |
| Core Data migration crashes, thread errors |
See skills/core-data-diag.md |
| ANY schema migration safety |
See skills/database-migration.md |
| Codable, JSON encoding/decoding |
See skills/codable.md |
| Cloud sync architecture, offline-first |
See skills/cloud-sync.md |
| CloudKit, CKSyncEngine, CKRecord |
See skills/cloudkit-ref.md |
| iCloud Drive, ubiquitous containers |
See skills/icloud-drive-ref.md |
| Cloud sync errors, conflict resolution |
See skills/cloud-sync-diag.md |
| Storage strategy, where to store data |
See skills/storage.md |
| Storage issues, files disappeared |
See skills/storage-diag.md |
| Storage management, disk pressure |
See skills/storage-management-ref.md |
| Keychain / secure credential storage |
See axiom-security (skills/keychain.md) |
| Keychain errors (errSecDuplicateItem) |
See axiom-security (skills/keychain-diag.md) |
| Keychain API reference |
See axiom-security (skills/keychain-ref.md) |
| Encryption / signing / key management |
See axiom-security (skills/cryptokit.md) |
| CryptoKit API reference |
See axiom-security (skills/cryptokit-ref.md) |
| File protection, NSFileProtection |
See axiom-security (skills/file-protection-ref.md) |
| tvOS data persistence (no local storage) |
See axiom-swift (skills/tvos.md) |
| tvOS + CloudKit SyncEngine |
See skills/sqlitedata.md |
Automated Scanning
Core Data audit → Launch core-data-auditor agent or /axiom:audit core-data (safety violations, architectural gaps — migration options, thread-confinement, N+1 queries, merge policies, context isolation)
Codable audit → Launch codable-auditor agent or /axiom:audit codable (safety violations, semantic gaps — try? swallowing errors, JSONSerialization, date handling, silent field drops, wrapper-hidden fallbacks, cross-file strategy drift, enum future-case crashes)
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)
Database schema audit → Launch database-schema-auditor agent or /axiom:audit database-schema (unsafe ALTER TABLE, DROP operations, missing idempotency, foreign key misuse)
SwiftData audit → Launch swiftdata-auditor agent or /axiom:audit swiftdata (struct models, missing VersionedSchema, relationship defaults, background context misuse, N+1 patterns)
Decision Tree
- SwiftData? →
skills/swiftdata.md, skills/swiftdata-migration.md
- Core Data? →
skills/core-data.md, skills/core-data-diag.md
- GRDB? →
skills/grdb.md
- SQLiteData? →
skills/sqlitedata.md, skills/sqlitedata-ref.md
- ANY schema migration? →
skills/database-migration.md (ALWAYS — prevents data loss)
- Realm migration? →
skills/realm-migration-ref.md
- SwiftData vs SQLiteData? →
skills/sqlitedata-migration.md
- Cloud sync architecture? →
skills/cloud-sync.md
- CloudKit? →
skills/cloudkit-ref.md
- iCloud Drive? →
skills/icloud-drive-ref.md
- Cloud sync errors? →
skills/cloud-sync-diag.md
- Codable/JSON serialization? →
skills/codable.md
- File storage strategy? →
skills/storage.md, skills/storage-diag.md, skills/storage-management-ref.md
- File protection? → See axiom-security (skills/file-protection-ref.md)
- Keychain / storing tokens, passwords, secrets securely? → See axiom-security (skills/keychain.md), See axiom-security (skills/keychain-diag.md), See axiom-security (skills/keychain-ref.md)
- SecItem errors (errSecDuplicateItem, errSecItemNotFound, errSecInteractionNotAllowed)? → See axiom-security (skills/keychain-diag.md)
- Encryption, signing, Secure Enclave, CryptoKit? → See axiom-security (skills/cryptokit.md), See axiom-security (skills/cryptokit-ref.md)
- Quantum-secure cryptography, HPKE, ML-KEM? → See axiom-security (skills/cryptokit.md)
- 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)
- Want database schema/migration safety scan? → database-schema-auditor (Agent)
- Want SwiftData code audit? → swiftdata-auditor (Agent)
- tvOS data persistence? → See axiom-swift (skills/tvos.md) (CRITICAL: no persistent local storage) +
skills/sqlitedata.md (CloudKit SyncEngine)
- SwiftData @MainActor / background context threading? →
/skill axiom-concurrency
- Structured data generation with Foundation Models? →
/skill axiom-ai
Sync patterns
- HealthKit anchored/observer queries as a generalizable change-tracking pattern → See axiom-health (skills/sync-and-background.md)
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. See axiom-swift (skills/tvos.md) for 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 read skills/database-migration.md 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"
→ Read: skills/database-migration.md (critical - prevents data loss)
User: "How do I query SwiftData with complex filters?"
→ Read: skills/swiftdata.md
User: "CloudKit sync isn't working"
→ Read: skills/cloud-sync-diag.md
User: "Should I use SwiftData or SQLiteData?"
→ Read: skills/sqlitedata-migration.md
User: "Check my Core Data code for safety issues"
→ Launch: core-data-auditor agent
User: "Scan for Codable anti-patterns before release"
→ Launch: codable-auditor agent
User: "Audit my iCloud sync implementation"
→ Launch: icloud-auditor agent
User: "Check if my files are stored in the right locations"
→ Launch: storage-auditor agent
User: "Audit my database migrations for safety"
→ Launch: database-schema-auditor agent
User: "Check my SwiftData models for issues"
→ Launch: swiftdata-auditor agent
User: "How do I persist data on tvOS?"
→ Invoke: See axiom-swift (skills/tvos.md) + Read: skills/sqlitedata.md
User: "My tvOS app loses data between launches"
→ Invoke: See axiom-swift (skills/tvos.md)
User: "How do I store an auth token securely?"
→ Invoke: See axiom-security (skills/keychain.md)
User: "errSecDuplicateItem but I checked and the item doesn't exist"
→ Invoke: See axiom-security (skills/keychain-diag.md)
User: "How do I encrypt data with AES in Swift?"
→ Invoke: See axiom-security (skills/cryptokit.md)
User: "I need to sign data with the Secure Enclave"
→ Invoke: See axiom-security (skills/cryptokit.md)
User: "What's ML-KEM and should I use it?"
→ Invoke: See axiom-security (skills/cryptokit.md)
1---2name: axiom-data3description: Use when working with ANY data persistence, database, storage, CloudKit, migration, or serialization. Covers SwiftData, Core Data, GRDB, SQLite, CloudKit sync, file storage, Codable, migrations.4license: MIT5---6
7# Data & Persistence
8
9**You MUST use this skill for ANY data persistence, database, storage, CloudKit, or serialization work.**
10
11## When to Use
12
13Use this skill when working with:
14- Databases (SwiftData, Core Data, GRDB, SQLiteData)
15- Schema migrations
16- CloudKit sync
17- File storage (iCloud Drive, local storage)
18- Data serialization (Codable, JSON)
19- Storage strategy decisions
20- Keychain / secure credential storage
21- Encryption, signing, key management (CryptoKit)
22
23## Quick Reference
24
25| Symptom / Task | Reference |
26|----------------|-----------|
27| SwiftData @Model, @Query, ModelContext | See `skills/swiftdata.md` |
28| SwiftData schema migration, VersionedSchema | See `skills/swiftdata-migration.md` |
29| SwiftData migration crashes, data loss | See `skills/swiftdata-migration-diag.md` |
30| Migrating from Realm to SwiftData | See `skills/realm-migration-ref.md` |
31| SwiftData vs SQLiteData decision | See `skills/sqlitedata-migration.md` |
32| GRDB queries, ValueObservation, DatabaseMigrator | See `skills/grdb.md` |
33| SQLiteData @Table, CRUD, SyncEngine | See `skills/sqlitedata.md` |
34| SQLiteData advanced patterns, CTEs, views | See `skills/sqlitedata-ref.md` |
35| Core Data stack, relationships, concurrency | See `skills/core-data.md` |
36| Core Data migration crashes, thread errors | See `skills/core-data-diag.md` |
37| ANY schema migration safety | See `skills/database-migration.md` |
38| Codable, JSON encoding/decoding | See `skills/codable.md` |
39| Cloud sync architecture, offline-first | See `skills/cloud-sync.md` |
40| CloudKit, CKSyncEngine, CKRecord | See `skills/cloudkit-ref.md` |
41| iCloud Drive, ubiquitous containers | See `skills/icloud-drive-ref.md` |
42| Cloud sync errors, conflict resolution | See `skills/cloud-sync-diag.md` |
43| Storage strategy, where to store data | See `skills/storage.md` |
44| Storage issues, files disappeared | See `skills/storage-diag.md` |
45| Storage management, disk pressure | See `skills/storage-management-ref.md` |
46| Keychain / secure credential storage | See axiom-security (skills/keychain.md) |
47| Keychain errors (errSecDuplicateItem) | See axiom-security (skills/keychain-diag.md) |
48| Keychain API reference | See axiom-security (skills/keychain-ref.md) |
49| Encryption / signing / key management | See axiom-security (skills/cryptokit.md) |
50| CryptoKit API reference | See axiom-security (skills/cryptokit-ref.md) |
51| File protection, NSFileProtection | See axiom-security (skills/file-protection-ref.md) |
52| tvOS data persistence (no local storage) | See axiom-swift (skills/tvos.md) |
53| tvOS + CloudKit SyncEngine | See `skills/sqlitedata.md` |
54
55### Automated Scanning
56
57**Core Data audit** → Launch `core-data-auditor` agent or `/axiom:audit core-data` (safety violations, architectural gaps — migration options, thread-confinement, N+1 queries, merge policies, context isolation)
58**Codable audit** → Launch `codable-auditor` agent or `/axiom:audit codable` (safety violations, semantic gaps — try? swallowing errors, JSONSerialization, date handling, silent field drops, wrapper-hidden fallbacks, cross-file strategy drift, enum future-case crashes)
59**iCloud audit** → Launch `icloud-auditor` agent or `/axiom:audit icloud` (entitlement checks, file coordination, CloudKit anti-patterns)
60**Storage audit** → Launch `storage-auditor` agent or `/axiom:audit storage` (wrong file locations, missing backup exclusions, data loss risks)
61**Database schema audit** → Launch `database-schema-auditor` agent or `/axiom:audit database-schema` (unsafe ALTER TABLE, DROP operations, missing idempotency, foreign key misuse)
62**SwiftData audit** → Launch `swiftdata-auditor` agent or `/axiom:audit swiftdata` (struct models, missing VersionedSchema, relationship defaults, background context misuse, N+1 patterns)
63
64## Decision Tree
65
661. SwiftData? → `skills/swiftdata.md`, `skills/swiftdata-migration.md`
672. Core Data? → `skills/core-data.md`, `skills/core-data-diag.md`
683. GRDB? → `skills/grdb.md`
694. SQLiteData? → `skills/sqlitedata.md`, `skills/sqlitedata-ref.md`
705. ANY schema migration? → `skills/database-migration.md` (ALWAYS — prevents data loss)
716. Realm migration? → `skills/realm-migration-ref.md`
727. SwiftData vs SQLiteData? → `skills/sqlitedata-migration.md`
738. Cloud sync architecture? → `skills/cloud-sync.md`
749. CloudKit? → `skills/cloudkit-ref.md`
7510. iCloud Drive? → `skills/icloud-drive-ref.md`
7611. Cloud sync errors? → `skills/cloud-sync-diag.md`
7712. Codable/JSON serialization? → `skills/codable.md`
7813. File storage strategy? → `skills/storage.md`, `skills/storage-diag.md`, `skills/storage-management-ref.md`
7914. File protection? → See axiom-security (skills/file-protection-ref.md)
8015. Keychain / storing tokens, passwords, secrets securely? → See axiom-security (skills/keychain.md), See axiom-security (skills/keychain-diag.md), See axiom-security (skills/keychain-ref.md)
8116. SecItem errors (errSecDuplicateItem, errSecItemNotFound, errSecInteractionNotAllowed)? → See axiom-security (skills/keychain-diag.md)
8217. Encryption, signing, Secure Enclave, CryptoKit? → See axiom-security (skills/cryptokit.md), See axiom-security (skills/cryptokit-ref.md)
8318. Quantum-secure cryptography, HPKE, ML-KEM? → See axiom-security (skills/cryptokit.md)
8419. Want Core Data safety scan? → core-data-auditor (Agent)
8520. Want Codable anti-pattern scan? → codable-auditor (Agent)
8621. Want iCloud sync audit? → icloud-auditor (Agent)
8722. Want storage location audit? → storage-auditor (Agent)
8823. Want database schema/migration safety scan? → database-schema-auditor (Agent)
8924. Want SwiftData code audit? → swiftdata-auditor (Agent)
9025. tvOS data persistence? → See axiom-swift (skills/tvos.md) (CRITICAL: no persistent local storage) + `skills/sqlitedata.md` (CloudKit SyncEngine)
9126. SwiftData @MainActor / background context threading? → `/skill axiom-concurrency`
9227. Structured data generation with Foundation Models? → `/skill axiom-ai`
93
94#### Sync patterns
95- HealthKit anchored/observer queries as a generalizable change-tracking pattern → See axiom-health (skills/sync-and-background.md)
96
97## Anti-Rationalization
98
99| Thought | Reality |
100|---------|---------|
101| "Just adding a column, no migration needed" | Schema changes without migration crash users. database-migration prevents data loss. |
102| "I'll handle the migration manually" | Manual migrations miss edge cases. database-migration covers rollback and testing. |
103| "Simple query, I don't need the skill" | Query patterns prevent N+1 and thread-safety issues. The skill has copy-paste solutions. |
104| "CloudKit sync is straightforward" | CloudKit has 15+ failure modes. cloud-sync-diag diagnoses them systematically. |
105| "I know Codable well enough" | Codable has silent data loss traps (try? swallows errors). codable skill prevents production bugs. |
106| "I'll use local storage on tvOS" | tvOS has NO persistent local storage. System deletes Caches at any time. See axiom-swift (skills/tvos.md) for the iCloud-first pattern. |
107| "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. |
108| "I'll encrypt it myself with CommonCrypto" | CryptoKit replaced CommonCrypto's buffer-management nightmares with one-line APIs. cryptokit prevents misuse. |
109
110## Critical Pattern: Migrations
111
112**ALWAYS read `skills/database-migration.md` when adding/modifying database columns.**
113
114This prevents:
115- "FOREIGN KEY constraint failed" errors
116- "no such column" crashes
117- Data loss from unsafe migrations
118
119## Example Invocations
120
121User: "I need to add a column to my SwiftData model"
122→ Read: `skills/database-migration.md` (critical - prevents data loss)
123
124User: "How do I query SwiftData with complex filters?"
125→ Read: `skills/swiftdata.md`
126
127User: "CloudKit sync isn't working"
128→ Read: `skills/cloud-sync-diag.md`
129
130User: "Should I use SwiftData or SQLiteData?"
131→ Read: `skills/sqlitedata-migration.md`
132
133User: "Check my Core Data code for safety issues"
134→ Launch: `core-data-auditor` agent
135
136User: "Scan for Codable anti-patterns before release"
137→ Launch: `codable-auditor` agent
138
139User: "Audit my iCloud sync implementation"
140→ Launch: `icloud-auditor` agent
141
142User: "Check if my files are stored in the right locations"
143→ Launch: `storage-auditor` agent
144
145User: "Audit my database migrations for safety"
146→ Launch: `database-schema-auditor` agent
147
148User: "Check my SwiftData models for issues"
149→ Launch: `swiftdata-auditor` agent
150
151User: "How do I persist data on tvOS?"
152→ Invoke: See axiom-swift (skills/tvos.md) + Read: `skills/sqlitedata.md`
153
154User: "My tvOS app loses data between launches"
155→ Invoke: See axiom-swift (skills/tvos.md)
156
157User: "How do I store an auth token securely?"
158→ Invoke: See axiom-security (skills/keychain.md)
159
160User: "errSecDuplicateItem but I checked and the item doesn't exist"
161→ Invoke: See axiom-security (skills/keychain-diag.md)
162
163User: "How do I encrypt data with AES in Swift?"
164→ Invoke: See axiom-security (skills/cryptokit.md)
165
166User: "I need to sign data with the Secure Enclave"
167→ Invoke: See axiom-security (skills/cryptokit.md)
168
169User: "What's ML-KEM and should I use it?"
170→ Invoke: See axiom-security (skills/cryptokit.md)