Agent SkillsDimillian/Skills › macos-menubar-tuist-app

macos-menubar-tuist-app

GitHub

指导构建和维护基于 Tuist 和 SwiftUI 的 macOS 菜单栏应用,规范架构分层、Tuist 配置及脚本化启动流程。

macos-menubar-tuist-app/SKILL.md Dimillian/Skills

Trigger Scenarios

创建或维护 macOS 菜单栏应用 配置 Tuist 项目结构 优化本地构建与启动脚本

Install

npx skills add Dimillian/Skills --skill macos-menubar-tuist-app -g -y
More Options

Non-standard path

npx skills add https://github.com/Dimillian/Skills/tree/main/macos-menubar-tuist-app -g -y

Use without installing

npx skills use Dimillian/Skills@macos-menubar-tuist-app

指定 Agent (Claude Code)

npx skills add Dimillian/Skills --skill macos-menubar-tuist-app -a claude-code -g -y

安装 repo 全部 skill

npx skills add Dimillian/Skills --all -g -y

预览 repo 内 skill

npx skills add Dimillian/Skills --list

SKILL.md

Frontmatter
{
    "name": "macos-menubar-tuist-app",
    "description": "Build, refactor, or review macOS menubar apps that use Tuist and SwiftUI. Use when creating or maintaining LSUIElement menubar utilities, defining Tuist targets\/manifests, implementing model-client-store-view architecture, adding script-based launch flows, or validating reliable local build\/run behavior without Xcode-first workflows."
}

macos-menubar-tuist-app

Build and maintain macOS menubar apps with a Tuist-first workflow and stable launch scripts. Preserve strict architecture boundaries so networking, state, and UI remain testable and predictable.

Core Rules

  • Keep the app menubar-only unless explicitly told otherwise. Use LSUIElement = true by default.
  • Keep transport and decoding logic outside views. Do not call networking from SwiftUI view bodies.
  • Keep state transitions in a store layer (@Observable or equivalent), not in row/view presentation code.
  • Keep model decoding resilient to API drift: optional fields, safe fallbacks, and defensive parsing.
  • Treat Tuist manifests as the source of truth. Do not rely on hand-edited generated Xcode artifacts.
  • Prefer script-based launch for local iteration when tuist run is unreliable for macOS target/device resolution.
  • Prefer tuist xcodebuild build over raw xcodebuild in local run scripts when building generated projects.

Expected File Shape

Use this placement by default:

  • Project.swift: app target, settings, resources, Info.plist keys
  • Sources/*Model*.swift: API/domain models and decoding
  • Sources/*Client*.swift: requests, response mapping, transport concerns
  • Sources/*Store*.swift: observable state, refresh policy, filtering, caching
  • Sources/*Menu*View*.swift: menu composition and top-level UI state
  • Sources/*Row*View*.swift: row rendering and lightweight interactions
  • run-menubar.sh: canonical local restart/build/launch path
  • stop-menubar.sh: explicit stop helper when needed

Workflow

  1. Confirm Tuist ownership
  • Verify Tuist.swift and Project.swift (or workspace manifests) exist.
  • Read existing run scripts before changing launch behavior.
  1. Probe backend behavior before coding assumptions
  • Use curl to verify endpoint shape, auth requirements, and pagination behavior.
  • If endpoint ignores limit/page, implement full-list handling with local trimming in the store.
  1. Implement layers from bottom to top
  • Define/adjust models first.
  • Add or update client request/decoding logic.
  • Update store refresh, filtering, and cache policy.
  • Wire views last.
  1. Keep app wiring minimal
  • Keep app entry focused on scene/menu wiring and dependency injection.
  • Avoid embedding business logic in App or menu scene declarations.
  1. Standardize launch ergonomics
  • Ensure run script restarts an existing instance before relaunching.
  • Ensure run script does not open Xcode as a side effect.
  • Use tuist generate --no-open when generation is required.
  • When the run script builds the generated project, prefer TUIST_SKIP_UPDATE_CHECK=1 tuist xcodebuild build ... instead of invoking raw xcodebuild directly.

Validation Matrix

Run validations after edits:

TUIST_SKIP_UPDATE_CHECK=1 tuist xcodebuild build -scheme <TargetName> -configuration Debug

If launch workflow changed:

./run-menubar.sh

If shell scripts changed:

bash -n run-menubar.sh
bash -n stop-menubar.sh
./run-menubar.sh

Failure Patterns and Fix Direction

  • tuist run cannot resolve the macOS destination: Use run/stop scripts as canonical local run path.

  • Menu UI is laggy or inconsistent after refresh: Move derived state and filtering into the store; keep views render-only.

  • API payload changes break decode: Relax model decoding with optional fields and defaults, then surface missing data safely in UI.

  • Feature asks for quick UI patch: Trace root cause in model/client/store before changing row/menu presentation.

Completion Checklist

  • Preserve menubar-only behavior unless explicitly changed.
  • Keep network and state logic out of SwiftUI view bodies.
  • Keep Tuist manifests and run scripts aligned with actual build/run flow.
  • Run the validation matrix for touched areas.
  • Report concrete commands run and outcomes.

Version History

  • 05ba982 Current 2026-07-25 07:25

Same Skill Collection

app-store-changelog/SKILL.md
bug-hunt-swarm/SKILL.md
github/SKILL.md
ios-debugger-agent/SKILL.md
macos-spm-app-packaging/SKILL.md
orchestrate-batch-refactor/SKILL.md
project-skill-audit/SKILL.md
react-component-performance/SKILL.md
review-and-simplify-changes/SKILL.md
review-swarm/SKILL.md
swift-concurrency-expert/SKILL.md
swiftui-liquid-glass/SKILL.md
swiftui-performance-audit/SKILL.md
swiftui-ui-patterns/SKILL.md
swiftui-view-refactor/SKILL.md

Metadata

Files
0
Version
05ba982
Hash
a9eb12f3
Indexed
2026-07-25 07:25

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 07:14
浙ICP备14020137号-1 $mapa de visitantes$