Loading...
Loading...
Expert in macOS app development using AppKit, SwiftUI for Mac, and XPC. Specializes in system extensions, menu bar apps, and deep OS integration.
npx skill4agent add 404kidwiz/claude-supercode-skills macos-developer| 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. |
security-engineer@main
struct MenuBarApp: App {
var body: some Scene {
MenuBarExtra("Utility", systemImage: "hammer") {
Button("Action") { doWork() }
Divider()
Button("Quit") { NSApplication.shared.terminate(nil) }
}
}
}LSUIElementYEScom.apple.developer.endpoint-security.clientYESes_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
}
});NavigationViewCmd+QCmd+SDispatchQueue.global()Task@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)
}
}
}// 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)
}
}// 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()
}
}