avdlee/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.
npx skills add https://github.com/AvdLee/Core-Data-Agent-Skill --skill core-data-expert
Fast, production-oriented guidance for building correct, performant Core Data stacks and fixing common crashes.
NSManagedObjectID for cross-context/cross-task communication; never pass NSManagedObject instances across contexts.references/.NSManagedObjectID handoffreferences/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.mdreferences/testing.md (shared NSManagedObjectModel)NSPersistentStoreIncompatibleVersionHashError → references/migration.md (versioning + migration)references/threading.md and/or references/concurrency.md (use NSManagedObjectID)references/concurrency.md (don’t “paper over” with @unchecked Sendable)NSMergeConflict / constraint violations → references/model-configuration.md + references/stack-setup.md (constraints + merge policy)references/persistent-history.md + references/batch-operations.mdreferences/cloudkit-integration.mdreferences/performance.md + references/fetch-requests.mdNSManagedObject instances never cross contexts; pass NSManagedObjectID instead.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.mdTake avdlee/core-data-expert from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.