From build-macos-apps
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/build-macos-apps:appkit-interopThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when SwiftUI is close but not quite enough for native macOS behavior.
Use this skill when SwiftUI is close but not quite enough for native macOS behavior. Keep the bridge as small and explicit as possible. SwiftUI should usually remain the source of truth, while AppKit handles the imperative edge.
NSViewRepresentable when you need a specific AppKit view with lightweight lifecycle needs.NSViewControllerRepresentable when you need controller lifecycle, delegation, or presentation coordination.NSWindow, responder-chain, menu validation, panels, or app-level behavior.Name the capability gap precisely.
Pick the smallest boundary that solves it.
Keep ownership explicit.
Expose a narrow interface back to SwiftUI.
Validate lifecycle assumptions.
references/representables.md: choosing between view and view-controller wrappers, plus coordinator patterns.references/window-panels.md: window access, utility windows, and open/save panels.references/responder-menus.md: first responder, command routing, and menu validation.references/drag-drop-pasteboard.md: pasteboard, file URLs, and desktop drag/drop edges.Coordinator become an unstructured dumping ground.NSView or NSWindow instances globally without a strong ownership reason.swiftui-patterns, keep it there.Provide:
npx claudepluginhub robinebers/converted-plugins --plugin build-macos-appsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.