Expert Core Data guidance (iOS/macOS): stack setup, fetch requests & NSFetchedResultsController, saving/merge conflicts, threading & Swift Concurrency, batch operations & persistent history, migrations, performance, and NSPersistentCloudKitContainer/CloudKit sync.
Install
npx skills add https://github.com/avdlee/core-data-agent-skill --skill core-data-expertSKILL.md
Core Data Expert
Fast, production-oriented guidance for building correct, performant Core Data stacks and fixing common crashes.
Agent behavior contract (follow these rules)
- Determine OS/deployment target when advice depends on availability (iOS 14+/17+ features, etc.).
- Identify the context type before proposing fixes: view context (UI) vs background context (heavy work).
- Recommend
NSManagedObjectIDfor cross-context/cross-task communication; never passNSManagedObjectinstances across contexts. - Prefer lightweight migration when possible; use staged migration (iOS 17+) for complex changes.
- When recommending batch operations, verify persistent history tracking is enabled (often required for UI updates).
- For CloudKit integration, remind developers that Production schema is immutable.
- Reference WWDC/external resources sparingly; prefer this skill’s
references/.
First 60 seconds (triage template)
- Clarify the goal: setup, bugfix, migration, performance, CloudKit?
- Collect minimal facts:
- platform + deployment target
- store type (SQLite / in-memory) and whether CloudKit is enabled
- context involved (view vs background) and whether Swift Concurrency is in use
- exact error message + stack trace/logs
- Branch immediately:
- threading/crash → focus on context confinement +
NSManagedObjectIDhandoff - migration error → identify model versions + migration strategy
- batch ops not updating UI → persistent history tracking + merge pipeline
- threading/crash → focus on context confinement +
Routing map (pick the right reference fast)
- Stack setup / merge policies / contexts →
references/stack-setup.md - Saving patterns →
references/saving.md - Fetch requests / list updates / aggregates →
references/fetch-requests.md - Traditional threading (perform/performAndWait, object IDs) →
references/threading.md - Swift Concurrency (async/await, actors, Sendable, DAOs) →
references/concurrency.md - Batch insert/delete/update →
references/batch-operations.md - Persistent history tracking + “batch ops not updating UI” →
references/persistent-history.md - Model configuration (constraints, validation, derived/composite, transformables) →
references/model-configuration.md - Schema migration (lightweight/staged/deferred) →
references/migration.md - CloudKit integration & debugging →
references/cloudkit-integration.md - Performance profiling & memory →
references/performance.md - Testing patterns →
references/testing.md - Terminology →
references/glossary.md
Common errors → next best move
- “Failed to find a unique match for an NSEntityDescription” →
references/testing.md(sharedNSManagedObjectModel) NSPersistentStoreIncompatibleVersionHashError→references/migration.md(versioning + migration)- Cross-context/threading exceptions (e.g. delete/update from wrong context) →
references/threading.mdand/orreferences/concurrency.md(useNSManagedObjectID) - Sendable / actor-isolation warnings around Core Data →
references/concurrency.md(don’t “paper over” with@unchecked Sendable) NSMergeConflict/ constraint violations →references/model-configuration.md+references/stack-setup.md(constraints + merge policy)- Batch operations not updating UI →
references/persistent-history.md+references/batch-operations.md - CloudKit schema/sync issues →
references/cloudkit-integration.md - Memory grows during fetch →
references/performance.md+references/fetch-requests.md
Verification checklist (when changing Core Data code)
- Confirm the context matches the work (UI vs background).
- Ensure
NSManagedObjectinstances never cross contexts; passNSManagedObjectIDinstead. - If using batch ops, confirm persistent history tracking + merge pipeline.
- If using constraints, confirm merge policy and conflict resolution strategy.
- If performance-related, profile with Instruments and validate fetch batching/limits.
Reference files
references/_index.md(navigation)references/stack-setup.mdreferences/saving.mdreferences/fetch-requests.mdreferences/threading.mdreferences/concurrency.mdreferences/batch-operations.mdreferences/persistent-history.mdreferences/model-configuration.mdreferences/migration.mdreferences/cloudkit-integration.mdreferences/performance.mdreferences/testing.mdreferences/glossary.md
Related skills
vercel-react-native-skillsvercel-labs224KReact Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.firebase-crashlyticsfirebase117KComprehensive guide for Firebase Crashlytics, including provisioning and SDK usage. Use this skill when the user needs help setting up Crashlytics, adding crash reporting, or using the Crashlytics SDK in their application.xcode-project-setupfirebase117KSafely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).animate-expoemilkowalski70KBuild animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing, how the gesture hands off, how it degrades. Writes the implementation with Reanimated, Gesture Handler, Expo Router and expo-haptics. Use when animating anything in an Expo app, adding gestures, sheets, screen transitions, press feedback or haptics, or fixing motion that stutters on device. For web a