CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

photokit

Implement, review, or improve photo picking, camera capture, and media handling in iOS apps using PhotoKit and AVFoundation. Use when working with PhotosPicker, PHPickerViewController, camera capture sessions (AVCaptureSession), photo library access, image loading and display, video recording, or media permissions. Also use when selecting photos from the library, taking pictures, recording video, processing images, or handling photo/camera privacy permissions in Swift apps.

Quality

88%

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

75%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 high-quality, code-first reference skill: executable Swift patterns, a well-structured camera lifecycle with validation and failure recovery, and a clean one-level reference split that all checks out against the actual bundle. The main costs are token efficiency — two sections teach SwiftUI basics Claude already knows and duplicate the image-loading reference — plus topic sections whose sequencing is implicit rather than explicit.

Suggestions

Remove or compress the "AsyncImage for Remote Images" and "Image Rendering Modes" sections into a one-line pointer to references/image-loading-caching.md, since both cover standard SwiftUI knowledge and duplicate that reference file.

Convert the Common Mistakes prose into the tighter DON'T/DO/Why format used by its best entries — several entries lack the *Why:* line, and the section repeats details already stated inline (e.g., the 48MP/200MB memory point appears twice).

For the permission flows, add a short numbered sequence (check status → request → route to PermissionDeniedView on denial) so the picker and permissions sections have the same explicit step structure as the camera lifecycle.

DimensionReasoningScore

Conciseness

The body is code-dense and mostly efficient, but the "AsyncImage for Remote Images" and "Image Rendering Modes" sections re-explain standard SwiftUI knowledge Claude already has, and the image-loading content duplicates material owned by references/image-loading-caching.md. This is more than the 'minor instances' of the 4 anchor but the majority of the document is lean, PhotoKit-specific material, so it sits above the 2 anchor's 'several padded sections'.

3 / 5

Actionability

Nearly all guidance is complete, copy-paste-ready executable Swift covering the common cases: single/multi PhotosPicker with loadTransferable, a custom Transferable type, permission request flows with @unknown default handling, CGImageSource downsampling, and the UIViewRepresentable preview layer. The only stub (the capture button action) is explicitly and appropriately deferred to a real reference file, so there are no genuine gaps versus the 4 anchor.

5 / 5

Workflow Clarity

The camera lifecycle is a numbered 5-step sequence with explicit checkpoints (canAddInput/canAddOutput before adding, a balanced beginConfiguration/commitConfiguration transaction with defer), a failure-recovery feedback loop ("On failure, stop, restore a fresh session fixture... rerun... checks"), and the Review Checklist provides a verification checklist. However, the other major sections (picker usage, permissions, image loading) are organized as topic-by-topic patterns with implicit rather than explicitly sequenced steps and validation, which fits the 4 anchor ("most checkpoints present; minor validation gaps") rather than 5.

4 / 5

Progressive Disclosure

The body is a clear overview with a Contents index and one-level-deep references that all exist as real, substantive files, signaled in three places (intro paragraph, inline "Load [Camera Capture](references/camera-capture.md)" pointers, and a References section with one-line descriptions). The gap versus 5 is that basic image-loading content (AsyncImage, rendering modes) is inlined in SKILL.md when it belongs in references/image-loading-caching.md — a minor organization/split issue, not the buried or mis-split structure of lower anchors.

4 / 5

Total

16

/

20

Passed

Description

96%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 API-level capability listing, and two explicit 'Use when' trigger clauses covering both technical terms and natural user phrasing. The only weakness is mild breadth from generic phrases like "media handling" and "image loading and display", which introduces minor overlap risk with adjacent image/UI skills.

DimensionReasoningScore

Specificity

The description lists multiple specific concrete actions — "photo picking, camera capture, and media handling", "image loading and display, video recording, or media permissions" — with comprehensive coverage of the skill's domain. Coverage spans picking, capture, loading, and permissions with no notable gaps, so it matches the 5 anchor rather than the 4 anchor ("minor gaps in coverage").

5 / 5

Completeness

It explicitly answers what ("Implement, review, or improve photo picking, camera capture, and media handling in iOS apps using PhotoKit and AVFoundation") and when ("Use when working with PhotosPicker... media permissions. Also use when selecting photos... in Swift apps") with concrete trigger phrases. Both halves are explicit and concrete, matching the 5 anchor; the 4 anchor requires a 'when' that "could be more explicit", which does not apply here.

5 / 5

Trigger Term Quality

It combines natural user phrases users would actually say ("selecting photos from the library, taking pictures, recording video, processing images, handling photo/camera privacy permissions") with specific API triggers (PhotosPicker, PHPickerViewController, AVCaptureSession, photo library access). Synonym coverage is comprehensive (e.g., both "photo picking" and "selecting photos"), matching the 5 anchor rather than 4 ("a few natural terms missing").

5 / 5

Distinctiveness Conflict Risk

The skill occupies a clear iOS PhotoKit/AVFoundation niche with distinct API-level triggers, but "media handling in iOS apps" and "image loading and display" are broad phrases that could overlap with a generic image-loading or SwiftUI UI skill. This fits the 4 anchor ("mostly distinct; minor overlap risk with closely related skills") better than the 5 anchor's "minimal conflict risk", and is well above 3 since the core triggers are highly specific.

4 / 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/photokit/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.