From sqlitedata-swift
Use when setting up or troubleshooting iCloud/CloudKit configuration for SQLiteData sync — covers enabling iCloud capability, CloudKit entitlements, container creation, Remote Notifications background mode, deploying schema from development to production, and resetting the development environment via CloudKit Console.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sqlitedata-swift:sqd-cloudkit-setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Complete setup guide for CloudKit sync with SQLiteData — from Xcode capabilities through production deployment.
Complete setup guide for CloudKit sync with SQLiteData — from Xcode capabilities through production deployment.
SQLiteData context: These are the infrastructure steps needed before writing any SyncEngine code. After completing setup here, configure
SyncEngineper/skill sqd-cloudkit.
com.apple.developer.icloud-servicesRemoving the iCloud capability in Xcode does not auto-disable it in your developer account — you must do that manually.
| Service | Use Case | Storage |
|---|---|---|
| Key-value storage | Small data (preferences), up to 1 MB / 1024 pairs | NSUbiquitousKeyValueStore |
| iCloud Documents | File-based sync via UIDocument/NSDocument | Ubiquity container (on-disk) |
| CloudKit | Structured data with full schema control + sharing | CKContainer databases |
For SQLiteData apps, enable CloudKit.
After adding iCloud capability, Xcode fetches existing containers from your developer account.
To create a new container:
iCloud. and use reverse DNS (e.g., iCloud.com.example.myapp)For SQLiteData, pass it to SyncEngine:
$0.defaultSyncEngine = try SyncEngine(
for: $0.defaultDatabase,
tables: ...,
containerIdentifier: "iCloud.com.example.myapp" // nil = auto from entitlements
)
This allows CloudKit to silently notify your app of server-side changes, which SyncEngine uses to trigger incremental sync.
Use sparingly — overuse impacts battery life and device performance.
| Mode | Info.plist Value | Platforms |
|---|---|---|
| Audio, AirPlay, PiP | audio | iOS, iPadOS, tvOS, visionOS |
| Location updates | location | iOS, iPadOS, watchOS |
| Voice over IP | voip | iOS, iPadOS, visionOS, watchOS |
| External accessory | external-accessory | iOS, iPadOS |
| Bluetooth LE central | bluetooth-central | iOS, iPadOS, visionOS |
| Bluetooth LE peripheral | bluetooth-peripheral | iOS, iPadOS |
| Background fetch | fetch | iOS, iPadOS, tvOS, visionOS |
| Remote notifications | remote-notification | iOS, iPadOS, tvOS, visionOS, watchOS |
| Background processing | processing | iOS, iPadOS, tvOS, visionOS |
During development, you create your schema and test in the development environment. Apps in the App Store access only the production environment. Before publishing, deploy the development schema to production.
Key rules:
Resets all records in the development environment. If schema isn't in production, also deletes all record types.
Steps:
Copies record types, fields, and indexes to production — but not records.
Permissions: You need admin privileges. Individual developers are automatically admin.
Steps:
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub sitapix/sqlitedata-swift-skills --plugin sqlitedata-swift