This skill helps developers create and manage macOS menubar applications using a Tuist-first workflow. It enforces strict architecture boundaries for networking, state, and UI to ensure testable and predictable applications.
npx skills add https://github.com/dimillian/skills --skill macos-menubar-tuist-appThis skill enables developers to build and refactor macOS menubar applications using a Tuist-first workflow and SwiftUI. It enforces strict separation of concerns by keeping networking and decoding logic outside views, state transitions in a dedicated store layer, and UI rendering in separate components. The skill provides core rules, expected file structure, a layered implementation workflow, launch script standards, and validation commands to ensure reliable local builds without relying on hand-edited Xcode artifacts. Developers benefit from predictable, testable code architecture and stable build/run ergonomics when creating LSUIElement menubar utilities.
Install via `npx skills add https://github.com/dimillian/skills --skill macos-menubar-tuist-app`
Develop menubar-only macOS applications.
Maintain stable launch scripts for macOS apps.
Implement network and UI testing workflows.
npx skills add https://github.com/dimillian/skills --skill macos-menubar-tuist-appgit clone https://github.com/dimillian/skillsCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Generate a macOS menubar application using Tuist for [COMPANY_NAME]'s internal tooling in the [INDUSTRY] industry. Focus on a clean architecture with separate modules for networking, state management, and UI. Use SwiftUI for the UI layer and include unit tests for critical components. The app should [SPECIFIC_FEATURE, e.g., display real-time API metrics in the menubar]. Provide the full project structure, Tuist configuration, and a basic implementation for the menubar status item.
# macOS Menubar App with Tuist
## Project Structure
```
MyMenubarApp/
├── Tuist/
│ ├── Config.swift
│ ├── Dependencies.swift
│ └── Project.swift
├── Sources/
│ ├── App/
│ │ ├── App.swift
│ │ └── StatusItem.swift
│ ├── Networking/
│ │ └── APIClient.swift
│ ├── State/
│ │ └── MetricsStore.swift
│ └── UI/
│ └── MetricsView.swift
└── Tests/
├── AppTests/
├── NetworkingTests/
└── StateTests/
```
## Key Files
### Tuist/Project.swift
```swift
import ProjectDescription
let project = Project(
name: "MyMenubarApp",
targets: [
Target(
name: "MyMenubarApp",
platform: .macOS,
product: .app,
bundleId: "com.company.mymenubarapp",
infoPlist: .default,
sources: ["Sources/**"],
resources: ["Resources/**"],
dependencies: [
.target(name: "Networking"),
.target(name: "State"),
.target(name: "UI")
]
),
Target(
name: "Networking",
platform: .macOS,
product: .framework,
bundleId: "com.company.mymenubarapp.networking",
sources: ["Sources/Networking/**"]
),
Target(
name: "State",
platform: .macOS,
product: .framework,
bundleId: "com.company.mymenubarapp.state",
sources: ["Sources/State/**"]
),
Target(
name: "UI",
platform: .macOS,
product: .framework,
bundleId: "com.company.mymenubarapp.ui",
sources: ["Sources/UI/**"]
)
]
)
```
### Sources/App/StatusItem.swift
```swift
import SwiftUI
struct StatusItem: NSViewRepresentable {
@ObservedObject var metricsStore: MetricsStore
func makeNSView(context: Context) -> NSStatusBarButton {
let statusBar = NSStatusBar.system
let statusItem = statusBar.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.title = "📊"
return statusItem.button!
}
func updateNSView(_ nsView: NSStatusBarButton, context: Context) {
nsView.title = metricsStore.metrics.isEmpty ? "📊" : "📊 \(metricsStore.metrics.count)"
}
}
```
## Next Steps
1. Run `tuist generate` to create the Xcode project
2. Implement the APIClient in the Networking module
3. Connect the MetricsStore to your actual API endpoints
4. Customize the StatusItem view for your specific needs
Would you like me to elaborate on any specific part of this implementation?Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan