Générateur de barre de menus AppKit

Générez des configurations NSMenu et NSStatusItem pour les applications de barre de menus macOS avec intégration SwiftUI et gestion dynamique.

Spar Skills Guide Bot
DeveloppementAvancé1 vues0 installations04/03/2026
Claude CodeCursorWindsurf
macosappkitmenubarstatusitemswift

name: appkit-menu-bar-builder description: Generate NSMenu and NSStatusItem configurations for macOS menu bar applications allowed-tools: Read, Write, Edit, Bash, Glob, Grep tags: [macos, appkit, menubar, statusitem, swift]

appkit-menu-bar-builder

Generate NSMenu and NSStatusItem configurations for macOS menu bar applications. This skill creates menu bar apps with proper status items, menus, and SwiftUI integration.

Capabilities

  • Create NSStatusItem menu bar apps
  • Generate NSMenu configurations
  • Integrate SwiftUI popovers with AppKit
  • Handle menu item actions
  • Configure keyboard shortcuts
  • Support dynamic menu updates
  • Handle light/dark mode icons
  • Generate agent app configurations (LSUIElement)

Input Schema

{
  "type": "object",
  "properties": {
    "projectPath": { "type": "string" },
    "appType": { "enum": ["menu-only", "popover", "window-and-menu"] },
    "menuStructure": { "type": "array" },
    "iconType": { "enum": ["system", "custom", "dynamic"] },
    "useSwiftUI": { "type": "boolean", "default": true }
  },
  "required": ["projectPath"]
}

Generated Code

import AppKit
import SwiftUI

class StatusBarController {
    private var statusItem: NSStatusItem
    private var popover: NSPopover

    init() {
        statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
        popover = NSPopover()
        popover.contentSize = NSSize(width: 300, height: 400)
        popover.behavior = .transient
        popover.contentViewController = NSHostingController(rootView: ContentView())

        if let button = statusItem.button {
            button.image = NSImage(systemSymbolName: "star.fill", accessibilityDescription: "App")
            button.action = #selector(togglePopover)
            button.target = self
        }
    }

    @objc func togglePopover() {
        if popover.isShown {
            popover.performClose(nil)
        } else if let button = statusItem.button {
            popover.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
        }
    }
}

Related Skills

  • swiftui-view-generator
  • macos-entitlements-generator

Skills similaires