core-data-expert

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.

By avdlee · 2,309 installs

npx skills add avdlee/core-data-agent-skill --skill core-data-expert

Source repository · Upstream listing

Core Data Expert Fast, production oriented guidance for building correct , performant Core Data stacks and fixing common crashes. Agent behavior contract (follow these rules) 1. Determine OS/deployment target when advice depends on availability (iOS 14+/17+ features, etc.). 2. Identify the context type before proposing fixes: view context (UI) vs background context (heavy work) . 3. Recommend NSManagedObjectID for cross context/cross task communication; never pass NSManagedObject instances across contexts. 4. Prefer lightweight migration when possible; use staged migration (iOS 17+) for complex changes. 5. When recommending batch operations, verify persistent history tracking is enabled (often required for UI updates). 6. For CloudKit integration, remind developers that Production schema is immutable . 7. 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 + NSManagedObjectID handoff migration error → identify model versions + migration strategy batch ops not updating UI → persistent history tracking + merge pipeline 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 (shared NSManagedObjectModel ) NSPersistentStoreIncompatibleVersionHashError → references/migration.md (versioning + migration) Cross context/threading exceptions (e.g. delete/update from wrong context) → references/threading.md and/or references/concurrency.md (use NSManagedObjectID ) 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 NSManagedObject instances never cross contexts; pass NSManagedObjectID instead. 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.md references/saving.md references/fetch requests.md references/threading.md references/concurrency.md references/batch operations.md references/persistent history.md references/model configuration.md references/migration.md references/cloudkit integration.md references/performance.md references/testing.md references/glossary.md