CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

core-data

Build, review, or improve Core Data persistence in apps that have not adopted SwiftData. Use when working with NSManagedObject subclasses, NSFetchedResultsController for list-driven UI, NSBatchInsertRequest / NSBatchDeleteRequest / NSBatchUpdateRequest for bulk operations, NSPersistentHistoryChangeRequest for persistent history tracking and multi-target sync, NSStagedMigrationManager for staged schema migrations (iOS 17+), NSCompositeAttributeDescription for composite attributes (iOS 17+), or when integrating Core Data threading with Swift Concurrency. For Core Data + SwiftData coexistence or migration, see the swiftdata skill instead.

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

The canonical home for this skill is dpearson2699/swift-ios-skills

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured, code-dense reference body with explicit validation loops for batch/destructive work and clean progressive disclosure to two genuinely useful reference files. Its only deductions are minor: a few known-concept framing sentences and small completeness gaps in two code examples.

Suggestions

Trim the few framing sentences that restate known concepts (e.g., 'NSPersistentContainer encapsulates the Core Data stack', the opening description of what batch operations do) to lift conciseness to fully lean.

Declare the 'dataSource' (or note it as a pre-existing diffable data source) in the NSFetchedResultsController example so the snippet is copy-paste runnable, addressing the actionability gap.

Add a minimal entity/attribute snippet or a concrete model-editor step list to the Composite Attributes section, which is currently the only API section with no executable guidance.

DimensionReasoningScore

Conciseness

The body is code-first and lean: terse 'Key points' bullets, a Common Mistakes table, and a Review Checklist rather than prose. A few sentences restate what Claude already knows ('NSPersistentContainer encapsulates the Core Data stack', 'Batch operations execute at the SQL level, bypassing the managed object context') and the 12-entry TOC adds mild padding, so it fits the 4 anchor (efficient with minor over-explanation to trim) rather than the 5 anchor where every token earns its place.

4 / 5

Actionability

Mostly executable, copy-paste-ready Swift covering stack setup, background writes with the async perform API, NSFetchedResultsController, all three batch request types with merge-back handling, and in-memory tests with #expect assertions. Minor gaps keep it at the 4 anchor: the FRC diffable example references an undeclared 'dataSource', and the Composite Attributes section offers no code or concrete model-editor steps.

4 / 5

Workflow Clarity

Multi-step processes are clearly sequenced with validation: persistent history has a numbered 4-step workflow ending in a purge-safety condition, and batch operations include an explicit proof loop ('preflight the predicate and expected count, execute with an object-ID result type, merge IDs..., refetch, and assert the postcondition. On failure, restore a pristine fixture or prove the operation is idempotent before retrying'). Because validation and feedback loops are present for batch/destructive work, the cap at 3 does not apply; the proof loop plus Review Checklist matches the 5 anchor.

5 / 5

Progressive Disclosure

The body is a clear overview that appropriately defers detail to two real, substantive, one-level-deep references, each well-signaled with purpose ('Load [persistent-history.md](references/persistent-history.md) when implementing the store options, observer, token persistence, merge loop, or purge policy'). Both referenced files exist and contain the promised implementation content, matching the 5 anchor for well-signaled one-level-deep references with easy navigation.

5 / 5

Total

18

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete, third-person, with an explicit 'Use when' trigger clause spanning all subdomains and an explicit boundary against the adjacent SwiftData skill. The only weakness is a handful of missing natural trigger terms and file extensions.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions ('Build, review, or improve Core Data persistence') and maps specific APIs to tasks ('NSFetchedResultsController for list-driven UI', 'NSBatchInsertRequest / NSBatchDeleteRequest / NSBatchUpdateRequest for bulk operations', 'NSStagedMigrationManager for staged schema migrations'), covering every subdomain the skill handles. This matches the anchor for multiple specific concrete actions with comprehensive coverage, exceeding the 4 anchor's 'minor gaps in coverage'.

5 / 5

Completeness

It explicitly answers both 'what' ('Build, review, or improve Core Data persistence in apps that have not adopted SwiftData') and 'when' ('Use when working with NSManagedObject subclasses, NSFetchedResultsController..., or when integrating Core Data threading with Swift Concurrency') with concrete trigger phrases. This matches the 5 anchor exactly; the 4 anchor applies only when the 'when' clause is weaker or less explicit.

5 / 5

Trigger Term Quality

Good natural keyword coverage ('Core Data', 'bulk operations', 'persistent history tracking', 'staged schema migrations', 'Swift Concurrency', 'NSManagedObject subclasses') that iOS developers would actually say. A few natural terms and file extensions are missing ('.xcdatamodeld', 'managed object context', 'fetch request'), so it fits the 4 anchor ('good keyword coverage; a few natural terms missing') rather than the 5 anchor's comprehensive synonyms-and-extensions coverage.

4 / 5

Distinctiveness Conflict Risk

It carves a clear niche ('apps that have not adopted SwiftData') and adds an explicit disambiguation boundary ('For Core Data + SwiftData coexistence or migration, see the swiftdata skill instead'), minimizing conflict with the closely related swiftdata skill. Minimal conflict risk matches the 5 anchor.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

dpearson2699/swift-ios-skills

Path

skills/core-data/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.