CtrlK
BlogDocsLog inGet started
Tessl Logo

appkit-interop

Decide when and how to bridge a macOS app from SwiftUI into AppKit. Use when implementing NSViewRepresentable or NSViewControllerRepresentable, accessing NSWindow or the responder chain, presenting panels, customizing menus, or handling desktop behaviors that SwiftUI does not model cleanly.

72

Quality

89%

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 appkit-interop in openai/plugins

SKILL.md
Quality
Evals
Security

Quality

Content

86%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, token-efficient overview: a decision tree for choosing the smallest bridge, a clear workflow, explicit guardrails, and a clean one-level-deep reference split with real detailed content behind each link. The only improvements are minor — an inline minimal bridge example and an explicit validation/recovery step in the workflow.

DimensionReasoningScore

Conciseness

The body is lean, tersely bulleted, and assumes Claude's competence — it never explains what SwiftUI or AppKit is, and every section adds non-obvious guidance (e.g. "SwiftUI may recreate representables", "Coordinators exist to hold delegate and target-action glue, not as a second app architecture"). Not score 4 because there is no padding to trim; each token earns its place.

5 / 5

Actionability

Concrete decision rules ("Use NSViewRepresentable when you need a specific AppKit view with lightweight lifecycle needs"), an explicit ownership split, and actionable guardrails; the working code skeleton lives one level deep in references/representables.md rather than inline. This is mostly executable guidance with minor gaps — not score 5 because the body itself contains no copy-paste-ready example of the bridge interface (bindings + callbacks) it prescribes.

4 / 5

Workflow Clarity

The five-step workflow (name the gap → pick the smallest boundary → keep ownership explicit → expose a narrow interface → validate lifecycle assumptions) is clearly sequenced, and step 5 acts as a checkpoint. Not score 5 because there is no explicit error-recovery/feedback loop (e.g. what to do when a lifecycle assumption fails validation), only the assertion that assumptions should be validated; not score 3 since the sequence and its checkpoints are well defined for a non-destructive decision skill.

4 / 5

Progressive Disclosure

SKILL.md is a concise overview that appropriately pushes detail into four one-level-deep references, each listed in a dedicated References section with a one-line scope description (e.g. "references/representables.md: choosing between view and view-controller wrappers, plus coordinator patterns"). The referenced files exist and contain substantive, non-circular content (representables.md includes a full executable NSViewRepresentable skeleton), so navigation is easy and nothing that belongs in a reference is inlined.

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 that clearly and concisely states what the skill does and when to use it, with concrete API-level trigger terms that make false-positive triggering unlikely. The only weakness is modest coverage of additional natural synonyms (first responder, open/save panel names, NSHostingView) that users might phrase differently.

Suggestions

Add a few more natural trigger synonyms users might say, e.g. "first responder", "NSOpenPanel or NSSavePanel", "NSHostingView", or "pasteboard" to the 'Use when' clause.

Consider naming the reverse bridging direction (embedding SwiftUI views in an AppKit app via NSHostingView) explicitly, or stating it is out of scope, to sharpen the boundary against adjacent skills.

DimensionReasoningScore

Specificity

The description lists multiple concrete, API-level actions — "bridge a macOS app from SwiftUI into AppKit", "implementing NSViewRepresentable or NSViewControllerRepresentable", "accessing NSWindow or the responder chain, presenting panels, customizing menus" — which comprehensively covers the interop domain. This matches the anchor for multiple specific concrete actions with comprehensive coverage; it is not score 4 because coverage of the domain's actions is essentially complete rather than having minor gaps.

5 / 5

Completeness

It explicitly answers both: what ("Decide when and how to bridge a macOS app from SwiftUI into AppKit") and when ("Use when implementing NSViewRepresentable or NSViewControllerRepresentable, accessing NSWindow or the responder chain, presenting panels, customizing menus, or handling desktop behaviors that SwiftUI does not model cleanly"). Both are present with concrete trigger phrases, matching the top anchor; not score 4 because the 'when' clause is fully explicit rather than merely serviceable.

5 / 5

Trigger Term Quality

Good keyword coverage with natural developer terms ("NSViewRepresentable", "NSViewControllerRepresentable", "NSWindow", "responder chain", "panels", "menus", "AppKit", "SwiftUI"), but a few natural phrases users would say are missing (e.g. "first responder", "NSOpenPanel/NSSavePanel", "NSHostingView", "pasteboard"). This fits the anchor for good coverage with a few natural terms missing rather than the comprehensive-with-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

Clear niche (SwiftUI-to-AppKit bridging on macOS) with distinct, unambiguous trigger terms — the named AppKit protocols and subsystems would not naturally fire a general SwiftUI or document skill. The body's reference to a sibling `swiftui-patterns` skill implies some adjacency, but the description's triggers (AppKit APIs) are cleanly separated from pure-SwiftUI patterns, so conflict risk is minimal.

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
robinebers/openusage
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.