skills/macos-developer/SKILL.md
Expert in macOS app development using AppKit, SwiftUI for Mac, and XPC. Specializes in system extensions, menu bar apps, and deep OS integration.
npx skillsauth add szoloth/skills macos-developerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides native macOS application development expertise specializing in AppKit, SwiftUI for Mac, and system integration. Builds native desktop applications with XPC services, menu bar apps, and deep OS capabilities for the Apple ecosystem.
| Framework | Best For | Pros | Cons | |-----------|----------|------|------| | SwiftUI | Modern Apps | Declarative, simple code. | Limited AppKit feature parity. | | AppKit | System Tools | Full control (NSWindow, NSView). | Imperative, verbose. | | Catalyst | iPad Ports | Free Mac app from iPad code. | Looks like an iPad app. |
Red Flags → Escalate to security-engineer:
Goal: Create an app that lives in the menu bar.
Steps:
App Setup
@main
struct MenuBarApp: App {
var body: some Scene {
MenuBarExtra("Utility", systemImage: "hammer") {
Button("Action") { doWork() }
Divider()
Button("Quit") { NSApplication.shared.terminate(nil) }
}
}
}
Hide Dock Icon
LSUIElement = YES.Goal: Monitor file events.
Steps:
Entitlements
com.apple.developer.endpoint-security.client = YES.Implementation (C API)
es_client_t *client;
es_new_client(&client, ^(es_client_t *c, const es_message_t *msg) {
if (msg->event_type == ES_EVENT_TYPE_NOTIFY_EXEC) {
// Log process execution
}
});
What it looks like:
NavigationView (split view) when a simple Window is needed.Cmd+Q, Cmd+S).Why it fails:
Correct approach:
What it looks like:
Why it fails:
Correct approach:
DispatchQueue.global() or Swift Task.Scenario: Build a system utility that lives in the macOS menu bar for quick access.
Development Approach:
Implementation:
@main
struct SystemUtilityApp: App {
var body: some Scene {
MenuBarExtra("System Utility", systemImage: "gear") {
VStack(spacing: 12) {
Button("Open Preferences") { openPreferences() }
Button("Check Updates") { checkForUpdates() }
Divider()
Button("Quit") { NSApplication.shared.terminate(nil) }
}
.padding()
.frame(width: 200)
}
}
}
Key Features:
Results:
Scenario: Build a professional document editor with background processing.
Architecture:
XPC Service Implementation:
// Service Protocol
@objc protocol ProcessingServiceProtocol {
func processDocument(at url: URL, reply: @escaping (URL?) -> Void)
}
// Service Implementation
class ProcessingService: NSObject, ProcessingServiceProtocol {
func processDocument(at url: URL, reply: @escaping (URL?) -> Void) {
// Heavy processing in separate process
let result = heavyProcessing(url: url)
reply(result)
}
}
Benefits:
Scenario: Create a network monitoring tool using System Extension.
Development Process:
Implementation:
// Network extension handler
class NetworkExtensionHandler: NEProvider {
override func startProtocol(options: [String: Any]?, completionHandler: @escaping (Error?) -> Void) {
// Start network monitoring
setupNetworkMonitoring()
completionHandler(nil)
}
override func stopProtocol(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
// Clean up resources
stopNetworkMonitoring()
completionHandler()
}
}
Requirements:
UX:
System:
Performance:
content-media
Fetch transcripts from YouTube videos for summarization and analysis.
documentation
This skill should be used when reviewing or editing written drafts to ensure they match Sam's personal style guide. It prioritizes voice preservation and anti-beige detection while catching structural gaps. Triggers on requests to review, edit, or improve written content.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
development
Web search and content extraction using Brave Search. Use when researching topics, finding documentation, extracting article content, or gathering information from the web. No browser required - works headlessly.