CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

contacts-framework

Read, create, update, and pick contacts using the Contacts and ContactsUI frameworks. Use when fetching contact data, saving new contacts, wrapping CNContactPickerViewController in SwiftUI, handling contact permissions, or working with CNContactStore fetch and save requests.

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, highly actionable framework reference: executable code throughout, explicit save-success checkpoints and error-recovery guidance for destructive operations, and a properly split one-level reference file. The main cost is token efficiency — repeated key-array boilerplate and a Common Mistakes section that restates patterns already shown.

Suggestions

Deduplicate the keysToFetch boilerplate: show the full "as CNKeyDescriptor" cast pattern once in Key Descriptors, then use shorthand arrays in later examples, and cut Common Mistakes entries that merely restate the correct patterns from earlier sections.

Move the 'Using the Picker' SwiftUI demo view (and possibly part of the single-select wrapper) into references/contacts-patterns.md alongside the existing SwiftUI integration examples, keeping SKILL.md to the wrapper itself.

Reconsider the version-specific header 'Swift 6.3 / iOS 26+' — either trim it to the minimum supported deployment or isolate version-dependent notes so the body does not carry time-sensitive detail that will age.

DimensionReasoningScore

Conciseness

The body is mostly efficient and framework-specific with no padding of concepts Claude already knows, but the keysToFetch array (repeated "as CNKeyDescriptor" casts) appears in nearly every code block, and the Common Mistakes section re-examples patterns already demonstrated in the main sections (authorization check, mutableCopy, minimal key fetching). This fits the 'mostly efficient but could be tightened' anchor; it is not 4 because the duplication is more than minor, and not 2 because nothing is generic filler.

3 / 5

Actionability

Every section provides complete, executable Swift (fetch by name/identifier/enumeration, create/update/delete via CNSaveRequest, a full UIViewControllerRepresentable picker wrapper, filter predicates, change observation) covering the common cases. This matches the fully-executable, copy-paste-ready anchor.

5 / 5

Workflow Clarity

The destructive/batch operations have explicit validation: 'execute(_:) returning without throwing is the save success checkpoint', an error-recovery loop (surface the error, correct the known cause, refetch before a corrected retry, never blindly repeat a destructive request), serialized saves, plus a review checklist. The destructive-operation cap at 3 does not apply because feedback loops are present, and the setup-to-observation sequence is clearly ordered via the contents list. This matches the explicit-validation-with-checklists anchor.

5 / 5

Progressive Disclosure

The single bundle reference (references/contacts-patterns.md) exists, is one level deep, and is well signaled twice — inline ('Load Extended Contacts Patterns for multi-select, vCard, and optimized-search workflows') and in the References section — with contents that match the body's advertisement. Advanced workflows are appropriately split out of a navigable, TOC-organized core, matching the clear-overview anchor rather than the minor-gaps anchor at 4.

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: third-person voice, concrete operations, named frameworks, and an explicit 'Use when' clause with realistic trigger phrases. Its only weakness is a few missing natural synonyms such as 'address book'.

DimensionReasoningScore

Specificity

"Read, create, update, and pick contacts using the Contacts and ContactsUI frameworks" names multiple specific concrete actions (the full CRUD surface plus picking) and the exact frameworks involved, matching the comprehensive-coverage anchor. There is no meaningful capability gap that would drop it to 4.

5 / 5

Completeness

The description explicitly answers both questions: what it does ("Read, create, update, and pick contacts using the Contacts and ContactsUI frameworks") and when to use it ("Use when fetching contact data, saving new contacts, wrapping CNContactPickerViewController in SwiftUI, handling contact permissions..."). This mirrors the 5 anchor's structure with concrete trigger phrases; 4 would require the when-clause to be less explicit, which it is not.

5 / 5

Trigger Term Quality

"fetching contact data", "saving new contacts", "handling contact permissions", and "wrapping CNContactPickerViewController in SwiftUI" are phrases users would naturally say, giving good keyword coverage. It falls short of the 5 anchor because common synonyms like "address book" or "contacts list" are absent.

4 / 5

Distinctiveness Conflict Risk

The description is anchored to the distinct Contacts/ContactsUI APIs (CNContactStore, CNContactPickerViewController) with clear niche triggers, so it is unlikely to fire for unrelated skills. It matches the clear-niche anchor rather than the minor-overlap anchor at 4.

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/contacts-framework/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.