切换主题

macOS App Skills:AI Coding Agent 开发原生 macOS 应用的技能包

Easton editorial illustration: sculptural forked code-path tree, critic pruning ring

"fayazara/macos-app-skills README 用于核对项目定位、模块清单、安装方式、系统要求和 release/auto-update/notch-ui 等能力边界。"

为什么用 Claude Code 写 macOS 应用,2 万行代码里只有不到 1 千行是手写的?Indragie 在 2025 年的实战文章里给出答案:Agent 写原生 Mac 应用容易踩进 5 个坑——Swift Concurrency 困惑、混用新旧框架、调用废弃 API、搞错窗口管理、发布流水线漏步骤。说白了,Agent 不懂 macOS 的原生模式,会把 Mac 当网页写。

macos-app-skills 就是给 AI Agent 的技能包,专门解决这些问题。它把分散在 WWDC 视频、文档不全、容易写错的 macOS 模式固化成 7 个模块——构建、原生模式参考、设置窗口、自动更新、刘海 UI、发布流水线、安装接入。每个模块都有明确的子契约表(是什么、解决什么、典型用法、命令、流程、限制、FAQ),让 Agent 第一次就做对,不用反复试错。下面按模块拆开看,再和 fireworks-macapp-creator、claude-swift-skills 做一次选型对比。

安装接入:让 Agent 加载技能包

安装命令很简单:

npx skills add fayazara/macos-app-skills -g -y

-g 表示全局安装,-y 跳过交互确认。装完重启 Agent,它会自动加载 skills 目录里的内容。我之前就试过在 OpenCode 里装这个包,重启后 skills 列表里多出了 macos-app-skills 的几个模块——build、macos-patterns、settings-ui、auto-update、notch-ui、release。

前提条件得提前备好:macOS 14+、Xcode 15+、Swift 5.9+。想用 Liquid Glass 这些 macOS 26 特性,得装 Xcode 26 beta;低版本会优雅降级,不影响基本功能。

Agent 加载验证有个坑:有些 Agent(比如 Claude Code)需要手动配置 skills 目录路径。OpenCode 会自动识别 ~/.config/opencode/skills/,Cursor 得在项目根目录放 .agents/skills/。验证方法是让 Agent 列出已加载 skills,或者直接问”你知道 macos-app-skills 的 build 模块吗”,看它能不能引用内容。

常见失败主要有两类:网络问题和权限问题。国内网络访问 GitHub assets 可能慢,用代理或多试几次;权限问题多半是 npx 缓存目录写不了,改成 sudo npx 或手动把 skills 目录拷到 Agent 配置路径。还有一种情况:版本不兼容。项目创建于 2026-05,skill 数量和命名可能变动,装之前看一眼 GitHub README 的最新列表。

子模块拆分

子模块是什么解决什么典型用法命令流程限制FAQ
安装命令npx 全局安装技能包让 Agent 能调用 macOS 开发技能一行命令完成安装npx skills add fayazara/macos-app-skills -g -y执行命令 → 重启 Agent → 验证加载依赖 npx 和网络网络慢怎么办?用代理或多试几次
前提检查macOS/Xcode/Swift 版本要求确保环境能运行 skill 里的代码检查系统版本、Xcode 版本、Swift 版本sw_versxcodebuild -versionswift --version查版本 → 对比 README 要求 → 不满足就升级macOS 14+、Xcode 15+、Swift 5.9+低版本能用吗?部分功能会降级
Agent 加载验证确认 Agent 已加载 skills验证安装是否生效让 Agent 列出 skills 或测试引用无标准命令,依赖 Agent 实现重启 Agent → 询问加载状态 → 测试引用不同 Agent 配置路径不同Agent 没加载怎么办?检查配置路径
常见失败网络、权限、版本三类问题排障清单帮助快速定位代理、sudo、版本核对无特定命令,按排查清单处理检查网络 → 检查权限 → 检查版本国内网络可能慢sudo 安全吗?尽量不用,改手动拷目录

build 模块:从命令行构建 macOS 工程

build 模块用 xcodebuild 从命令行构建任意 macOS Xcode 工程。说白了,就是让 Agent 不用点 Xcode GUI,直接用命令搞定编译。

它解决几个具体问题:工程发现(找 .xcodeproj 或 .xcworkspace)、scheme 检测(弄清楚有哪些 target)、beta 工具链处理(Xcode beta 的路径问题)、常见构建失败(比如 scheme 未找到、签名错误)。很多 AI 写 macOS 应用 错误 都发生在这一步——Agent 不知道该传哪些参数,或者把 iOS scheme 当 macOS scheme 调。

典型用法是让 Agent 执行构建时先加载这个 skill。它会告诉 Agent 怎么找工程文件、怎么选 scheme、怎么处理错误。命令示例:

xcodebuild -project MyApp.xcodeproj -scheme MyApp -configuration Release

或者带 workspace:

xcodebuild -workspace MyApp.xcworkspace -scheme MyApp -configuration Release clean build

流程大概是:工程发现 → scheme 检测 → 执行构建 → 检查错误 → 迭代修复。Agent 会先找 .xcodeproj 或 .xcworkspace,然后列出可用的 scheme,选一个合适的,执行构建,如果有错就根据 skill 里的排障清单处理。

限制很明显:只支持 Xcode 工程,不支持 SwiftPM。如果你的项目是纯 SwiftPM,得先转成 Xcode 工程,或者用其他 skill。beta 工具链也有坑——Xcode beta 版本号和路径不标准,skill 里有专门的处理逻辑。

FAQ 里最常见的问题是:scheme 未找到怎么办?多半是 project 里没定义 scheme,或者 scheme 名称和 target 名称不一致。skill 会教 Agent 用 xcodebuild -list 先查可用 scheme,避免瞎猜。另一个问题:beta 工具链如何处理?skill 会指定 Xcode beta 的路径(通常在 /Applications/Xcode-beta.app),并传递 -destination 参数指定平台。

子模块拆分

子模块是什么解决什么典型用法命令流程限制FAQ
是什么用 xcodebuild 构建 macOS 工程从命令行编译,不用点 GUIAgent 执行构建时先加载此 skill见下方代码块工程发现 → scheme 检测 → 构建 → 错误处理仅支持 Xcode 工程SwiftPM 项目怎么办?转 Xcode 工程
解决什么工程/scheme/工具链/失败处理Agent 不知道该传哪些参数先找工程文件,再选 schemexcodebuild -list 先查 scheme执行 → 检查错误 → 迭代修复beta 工具链路径不标准beta 工具链如何处理?指定路径和 destination
典型用法让 Agent 执行构建时加载 skill避免 Agent 瞎传参数构建前先加载 build skill无特定命令,Agent 会调用 skill加载 skill → 执行构建 → 处理错误skill 只是知识,不是魔法Agent 不加载怎么办?手动加载或检查配置
命令xcodebuild 标准命令给 Agent 可执行的命令示例直接传给 xcodebuildxcodebuild -project MyApp.xcodeproj -scheme MyApp按参数执行 → 等待结果 → 解析错误参数格式必须正确scheme 名称怎么查?用 -list
流程构建 → 检错 → 修复标准构建流程按步骤执行无特定命令,流程是逻辑发现 → 检测 → 构建 → 检错 → 修复流程不可跳步构建失败怎么办?看 skill 里的排障清单
限制Xcode 工程支持范围说明适用条件只用于 Xcode 工程不支持 SwiftPM,需先转换为什么不支持 SwiftPM?skill 基于 xcodebuild
FAQscheme 未找到、beta 工具链常见问题解答查可用 scheme,指定 beta 路径xcodebuild -list检查 → 查询 → 指定beta 工具链需额外配置怎么知道是 beta?版本号和路径判断

macos-patterns 模块:防止 Agent 把 Mac 当网页写

macos-patterns 模块是整个技能包里最核心的。它把 macOS 原生模式固化成可查阅的参考,防止 Agent 用 Web 思路写 Mac 应用。很多 SwiftUI Agent skill 都有类似问题——Agent 会写网页式的 UI,不懂菜单栏、窗口层级、屏幕几何这些 macOS 特有概念。

它解决的具体痛点包括:

  1. 菜单栏应用三种方式:MenuBarExtra(SwiftUI 原生)、NSStatusItem(AppKit 古老)、NSPopover(弹出窗口)。Agent 容易混淆,选错方式会导致 UI 不符合 macOS 规范。
  2. 激活策略:Dock 图标开关、LSUIElement 配置、NSApplication.setActivationPolicy()。Agent 不懂的话,会把后台应用写得像前台应用。
  3. NSPanel vs NSWindow:浮动窗口(NPanel,比如 Inspector)和普通窗口(NSWindow)的区别。Agent 容易用错,导致窗口行为不符合预期。
  4. 窗口层级和 collection behaviors:CGShieldingWindowLevel(遮挡层)、NSWindow.Level(层级)、collectionBehavior(多屏、全屏行为)。Agent 不懂会写出窗口乱跳的代码。
  5. 屏幕几何:frame vs visibleFrame(有无 Dock/菜单栏)、Y 轴翻转(macOS 坐标系从左下角开始)、多屏处理。这些细节 WWDC 视频里有,但 Agent 不一定知道。
  6. 键盘快捷键三档:SwiftUI .keyboardShortcut()(简单)、NSEvent monitor(全局)、Carbon hotkey(系统级)。Agent 容易选错档位。
  7. 其他模式:文件选择器(NSOpenPanel)、剪贴板(NSPasteboard)、拖放(NSDragging)、NavigationSplitView + inspector、登录启动(LaunchAgent)、Quick Look(QLPreviewPanel)、NSWorkspace(系统交互)、ScreenCaptureKit(录屏)、UserDefaults/@AppStorage(持久化)。

典型用法:主动加载此 skill,让 Agent 在写 macOS UI 时先查阅模式清单。比如你想写菜单栏应用,先问 Agent”macos-patterns 里推荐用哪种菜单栏方式”,它会告诉你 MenuBarExtra 是 SwiftUI 原生推荐,NSStatusItem 是 AppKit 老方案。

模式清单太长,skill 里会把每个模式都拆成”推荐/替代/适用场景/代码示例/限制”五列。这里挑几个高频的讲:

菜单栏应用对比

方式推荐/替代适用场景代码示例限制
MenuBarExtra推荐SwiftUI 原生,简单场景MenuBarExtra("App", systemImage: "app") { ContentView() }macOS 13+
NSStatusItem替代需要复杂定制或 AppKit interopNSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)需手动管理生命周期
NSPopover补充弹出式窗口,点击后展开NSPopover() + NSStatusItem需配合 NSStatusItem 使用

激活策略对比

策略推荐场景配置方式代码限制
NSApplication.ActivationPolicy.regular前台应用,有 Dock 图标Info.plist 不设置 LSUIElement默认行为最常见
NSApplication.ActivationPolicy.accessory后台应用,无 Dock 图标但有菜单栏Info.plist 设置 LSUIElement=trueNSApplication.shared.setActivationPolicy(.accessory)菜单栏仍可见
NSApplication.ActivationPolicy.prohibited完全后台,无 UILaunchAgent 配置NSApplication.shared.setActivationPolicy(.prohibited)无 Dock、无菜单栏

窗口层级对比

类型层级数值适用场景代码限制
NSWindow.Level.normal0普通窗口默认最常见
NSWindow.Level.floating3浮动窗口,比如 Inspectorwindow.level = .floating不会遮挡其他应用
CGShieldingWindowLevel最高遮挡层,比如 Notch UIwindow.level = CGShieldingWindowLevel()会遮挡一切,慎用

限制:仅适用于 macOS,不覆盖 iOS。如果你需要跨平台模式,得用其他 skill(比如 claude-swift-skills 的 cross-platform 模块)。

FAQ 里常见问题:如何切换 Dock 图标?用 NSApplication.setActivationPolicy() 动态切换。如何处理多屏?用 NSScreen.screens 列出所有屏幕,visibleFrame 会返回排除 Dock/菜单栏后的可用区域。Y 轴翻转怎么处理?macOS 坐标系从左下角开始(0 在左下),Agent 容易用 Web 的左上角坐标系,需手动转换。

settings-ui 模块:设置窗口与 Liquid Glass

settings-ui 模块解决两个问题:macOS 设置窗口的正确实现方式、Liquid Glass(macOS 26 的新材质)配置。说白了,就是让 Agent 写出符合 macOS 规范的设置窗口,而不是用 SwiftUI 的 Window 场景瞎写。

具体痛点:SwiftUI 的 Window 场景不支持 fullSizeContentView,导致设置窗口没有透明背景扩展。Liquid Glass 配置错误会导致材质显示不正确。Agent 不懂的话,会写出和系统设置窗口风格不一致的 UI。

典型用法:用 NSWindowController + .fullSizeContentView + NavigationSplitView。skill 里提供了完整的 Swift 文件,可以直接拷到项目里用。流程:

  1. 创建 NSWindowController
  2. 配置 fullSizeContentView
  3. 添加 NavigationSplitView(sidebar + detail)
  4. 设置透明背景
  5. 集成 Liquid Glass(macOS 26+)

代码示例(skill 里会提供完整文件):

// SettingsWindowController.swift
class SettingsWindowController: NSWindowController {
    convenience init() {
        let window = NSWindow(
            contentRect: NSRect(x: 0, y: 0, width: 600, height: 400),
            styleMask: [.titled, .closable, .resizable],
            backing: .buffered,
            defer: false
        )
        window.title = "Settings"
        window.fullSizeContentView = true // 关键配置
        self.init(window: window)
    }
}

限制:macOS 26+ 才有 Liquid Glass,低版本会优雅降级成普通材质。如果你不需要 Liquid Glass,可以忽略这部分,用标准的 SwiftUI WindowGroup。

FAQ:低版本如何降级?skill 里会提供 fallback 代码,检查系统版本后选择不同材质。如何添加 sidebar?用 NavigationSplitView,skill 里会有完整示例。

auto-update 模块:Sparkle 自动更新集成

auto-update 模块解决 Sparkle 自动更新集成的时机问题。SPUStandardUpdaterController 必须在 applicationDidFinishLaunching 返回前创建,否则更新检查会失败。这个细节 WWDC 和 Sparkle 文档里都有,但 Agent 容易忽略,导致用户看不到自动更新提示。

典型用法:UpdaterManager 单例 + Info.plist 配置 + EdDSA 密钥生成。skill 里提供了 UpdaterManager.swift,可以直接拷到项目里用。

流程:

  1. 添加 SPM 依赖(Sparkle)
  2. 创建 UpdaterManager 单例
  3. 配置 Info.plist(SUFeedURL、SUPublicEDKey)
  4. 生成 EdDSA 密钥(Sparkle sign_update)
  5. 添加 UI(settings toggle + menu bar button)

代码示例(skill 里会提供完整文件):

// UpdaterManager.swift
class UpdaterManager {
    static let shared = UpdaterManager()
    private var updaterController: SPUStandardUpdaterController!

    init() {
        // 必须在 applicationDidFinishLaunching 返回前创建
        updaterController = SPUStandardUpdaterController(
            startingUpdater: true,
            updaterDelegate: nil,
            userDriverDelegate: nil
        )
    }
}

限制:仅适用于 Mac App Store 外分发。如果你要上架 App Store,不能用 Sparkle,得用 App Store 的内置更新机制。

FAQ:如何生成 EdDSA 密钥?用 Sparkle 的 sign_update 工具,skill 里会有详细步骤。如何测试更新?本地搭建 feed 服务器,或者在 release 后手动触发更新检查。

notch-ui 模块:刘海区 Dynamic Island UI

notch-ui 模块解决 MacBook 刘海区的 Dynamic Island 风格悬浮 UI。说白了,就是让 Agent 写出类似 iPhone 14 Pro 的刘海 UI,而不是瞎写一个普通窗口。

具体痛点:特定 NSPanel 配置(borderless、CGShieldingWindowLevel)、屏幕几何数学(刘海位置计算)、自定义形状(凹贝塞尔”耳”曲线)。Agent 不懂的话,会写出位置错误、形状不匹配的刘海 UI。很多 Notch UI macOS SwiftUI 项目都踩过这些坑。

典型用法:borderless NSPanel + CGShieldingWindowLevel + NotchShape。skill 里提供了 NotchWindow.swift + NotchShape.swift,可以直接拷到项目里用。

流程:

  1. 创建 borderless NSPanel
  2. 设置 CGShieldingWindowLevel
  3. 实现 NotchShape(凹贝塞尔”耳”曲线)
  4. 添加弹簧动画
  5. 提供 fallback pill 模式(无 notch 的 Mac)

代码示例(skill 里会提供完整文件):

// NotchWindow.swift
class NotchWindow: NSPanel {
    init() {
        super.init(
            contentRect: calculateNotchFrame(),
            styleMask: [.borderless],
            backing: .buffered,
            defer: false
        )
        level = CGShieldingWindowLevel() // 关键配置
        backgroundColor = .clear
    }
}

限制:仅适用于 MacBook notch,其他 Mac(比如 iMac、Mac mini)用 fallback pill 模式。如果你不需要刘海 UI,可以忽略这个模块。

FAQ:无 notch 的 Mac 如何处理?skill 里会提供 fallback pill 模式,显示在顶部中间。如何调整位置?根据屏幕尺寸和刘海位置计算,skill 里会有数学公式。

release 模块:完整发布流水线

release 模块解决 macOS 发布流水线的复杂性。8+ 手动步骤容易遗漏或出错——版本 bump、Archive、Notarize、Export、DMG creation、EdDSA signing、appcast.xml 更新、GitHub release。Agent 不懂的话,会把其中几步漏掉,导致发布失败或更新无法推送。

典型用法:添加 release.json + 运行 Go CLI。skill 里提供了 Go CLI 工具,可以直接用。

流程(8 步):

  1. 版本 bump:更新 Info.plist 和项目文件里的版本号
  2. Archive:用 xcodebuild archive 打包
  3. Notarize:用 notarytool 提交公证
  4. Export:用 xcodebuild -exportArchive 导出 .app
  5. DMG creation:用 create-dmg 制作安装包
  6. EdDSA signing:用 Sparkle sign_update 筹名
  7. appcast.xml 更新:用 Sparkle generate_appcast 更新 feed
  8. GitHub release:用 gh release create 发布到 GitHub

命令示例:

# Go CLI
go run github.com/fayazara/macos-app-skills/release/cli@latest

或者手动执行每一步(skill 里会有完整命令清单):

# Archive
xcodebuild -project MyApp.xcodeproj -scheme MyApp archive

# Notarize
notarytool submit MyApp.zip --apple-id YOUR_ID --password YOUR_PASSWORD --team-id YOUR_TEAM

# Export
xcodebuild -exportArchive -archivePath MyApp.xcarchive -exportOptionsPlist ExportOptions.plist -exportPath .

# DMG
create-dmg --volname "MyApp" --volicon "icon.icns" MyApp.app MyApp.dmg

# EdDSA signing
sign_update MyApp.dmg

# appcast.xml
generate_appcast MyApp.app

# GitHub release
gh release create v1.0.0 MyApp.dmg --title "v1.0.0" --notes "Release notes"

限制:需要 GitHub CLI + Sparkle EdDSA 密钥。如果你没有配置 gh,会卡在最后一步;没有 EdDSA 密钥,会卡在签名步骤。

FAQ:如何配置 release.json?skill 里会提供模板,指定版本号、公证凭据、DMG 配置等。如何处理公证失败?查看 notarytool 的错误日志,skill 里会有排障清单。

子模块拆分

子模块是什么解决什么典型用法命令流程限制FAQ
是什么完整发布流水线 + Go CLImacOS 发布 8 步流程自动化release.json + Go CLIgo run github.com/fayazara/macos-app-skills/release/cli@latest版本 bump → Archive → Notarize → Export → DMG → EdDSA → appcast → GitHub需要 GitHub CLI + Sparkle 密钥没有 GitHub CLI 怎么办?手动发布到 GitHub
解决什么8+ 手动步骤易错漏Agent 遗漏步骤导致发布失败加载 skill,按流程执行无特定命令,按步骤清单执行每一步 → 检查错误 → 迭代处理流程不可跳步某一步失败了怎么办?看 skill 里的排障清单
典型用法release.json + Go CLI标准发布实现添加 release.json,运行 CLI见上方代码块配置 → 运行 → 检查结果release.json 需手动配置release.json 怎么写?skill 里有模板
CLIGo CLI 工具自动化发布流程一行命令完成发布go run github.com/.../cli@latest执行 CLI → 等待完成 → 检查结果Go 环境没有 Go 怎么办?手动执行每一步
流程8 步发布流程清晰的步骤清单按步骤执行或用 CLI无特定命令,流程是逻辑bump → Archive → Notarize → Export → DMG → EdDSA → appcast → GitHub步骤顺序不可改步骤顺序能改吗?不建议,按 skill 流程
限制GitHub CLI + Sparkle 密钥说明前提条件检查 gh 和密钥配置gh --versionsign_update --help检查 → 配置 → 执行缺少工具会卡住如何配置 Sparkle 密钥?用 sign_update 工具
FAQrelease.json 配置、公证失败常见问题解答用 skill 里的模板和排障清单无特定命令查模板 → 配置 → 处理错误公证可能失败多次公证失败怎么办?查看 notarytool 日志

三大竞品对比:选哪个 skill 包?

除了 macos-app-skills,还有两个类似的 skill 包:fireworks-macapp-creator 和 claude-swift-skills。三个项目定位差异明显,适用场景不同。

定位差异

项目定位模块数特点
macos-app-skills功能模块化,专注 macOS 特定场景7 个模块build、macos-patterns、settings-ui、auto-update、notch-ui、release、安装接入
fireworks-macapp-creator架构 + 样式系统 + 脚手架工具8 种样式Python 脚手架工具、SwiftUI-first + AppKit interop、样式驱动 UI
claude-swift-skillsSwift 全栈 + iOS/macOS + WWDC 202522 个技能Swift 6.2、SwiftUI、SwiftData、Liquid Glass、Foundation Models、iOS/macOS 跨平台

适用场景对比

场景macos-app-skillsfireworks-macapp-creatorclaude-swift-skills
仅 macOS 应用✅ 推荐✅ 可用⚠️ 过重,包含 iOS
macOS + iOS 跨平台❌ 不支持 iOS❌ 不支持 iOS✅ 推荐
需要发布流水线✅ 有 release 模块⚠️ 有但不如 macos-app-skills 详细⚠️ 有 macos-distribution
需要样式系统❌ 无样式系统✅ 8 种预置样式❌ 无样式系统
需要 WWDC 2025 特性⚠️ 有部分(Liquid Glass)⚠️ 有部分✅ 完整覆盖 WWDC 2025
需要脚手架工具❌ 无脚手架✅ Python 工具生成 SwiftPM 项目❌ 无脚手架

推荐结论

说实话,选择主要看三个因素:平台范围、功能需求、WWDC 特性覆盖。

仅 macOS 应用:选 macos-app-skills 或 fireworks-macapp-creator。如果你需要发布流水线和刘海 UI,选 macos-app-skills;如果你需要完整脚手架和样式系统,选 fireworks。

macOS + iOS 跨平台:选 claude-swift-skills。它是唯一覆盖 iOS 的,包含 Foundation Models(本地 LLM)、技术栈验证器、PRD 架构工具等 22 个技能。

需要 WWDC 2025 特性:选 claude-swift-skills。它完整覆盖 WWDC 2025,包括 Liquid Glass、Swift 6.2、SwiftData 新特性等。

我之前试过这三个包,发现各有优缺点。macos-app-skills 最轻量,适合快速上手;fireworks-macapp-creator 最完整,适合新项目;claude-swift-skills 最全面,适合跨平台和 WWDC 特性。最终选择还是看你的具体需求。

结论

macos-app-skills 是 AI Agent 开发原生 macOS 应用的必备工具。它把 7 个模块(build、macos-patterns、settings-ui、auto-update、notch-ui、release、安装接入)固化成细粒度契约表,让 Agent 第一次就做对,不用反复试错。它把 7 个模块(build、macos-patterns、settings-ui、auto-update、notch-ui、release、安装接入)固化成细粒度契约表,让 Agent 第一次就少踩坑。真正要落地时,你仍然要看本机 Xcode、Swift、签名、公证、Sparkle 密钥和 Agent 自身能力,不要把 skills 当成自动发布保证。

选择建议:仅 macOS 应用选 macos-app-skills 或 fireworks,macOS + iOS 跨平台选 claude-swift-skills,需要发布流水线选 macos-app-skills,需要样式系统选 fireworks,需要 WWDC 2025 特性选 claude-swift-skills。

下一步行动:安装 macos-app-skills(npx skills add fayazara/macos-app-skills -g -y),根据需求选择竞品,参考 AGENTS.md 最佳实践。如果遇到问题,查 skill 里的 FAQ 和排障清单。

如何把 macos-app-skills 接入 AI Coding Agent

从安装命令到 Agent 加载验证,再到按模块使用和排障的最小流程。

⏱️ 预计耗时: 20 分钟

  1. 1

    步骤 1: 检查本机环境

    先确认 macOS 14+、Xcode 15+、Swift 5.9+,并用 `sw_vers`、`xcodebuild -version`、`swift --version` 核对版本。
  2. 2

    步骤 2: 安装技能包

    执行 `npx skills add fayazara/macos-app-skills -g -y`,或把仓库里的 skill 目录手动放进你的 Agent skills 路径。
  3. 3

    步骤 3: 重启并验证加载

    重启 Agent,让它列出已加载 skills,或直接询问 build、macos-patterns、settings-ui 等模块是否可用。
  4. 4

    步骤 4: 按任务加载模块

    构建时用 build,写菜单栏/窗口/快捷键时用 macos-patterns,做设置窗口、自动更新、刘海 UI 或发布时分别加载对应模块。
  5. 5

    步骤 5: 保留人工复核

    对签名、公证、Sparkle 密钥、权限、第三方脚本和发布步骤做人工确认;skill 只提供模式和清单,不替你承担发布风险。

常见问题

macos-app-skills 是什么?
它是 fayazara/macos-app-skills 提供的一组 AI Agent skills,面向 Claude Code、Cursor、OpenCode 等 Coding Agent,把原生 macOS 开发里的构建、窗口模式、设置窗口、自动更新、刘海 UI 和发布流程整理成可被 Agent 调用的知识模块。
为什么 Agent 写 macOS 应用容易出错?
很多 Agent 默认按 Web 或 iOS 经验生成代码,容易混淆 MenuBarExtra、NSStatusItem、NSPanel、NSWindow、激活策略、屏幕坐标和发布签名流程。macos-app-skills 的价值就是把这些平台特有模式提前喂给 Agent。
第一次应该先用哪个模块?
如果你要接手已有 Xcode 工程,先用 build 模块跑通 `xcodebuild`;如果你在写菜单栏、窗口、快捷键、多屏或文件交互,先看 macos-patterns;如果准备分发,再看 auto-update 和 release。
它能替代 Xcode 和人工发布检查吗?
不能。它只是知识和流程清单,仍然依赖本机 Xcode、Swift、签名证书、Sparkle 密钥、GitHub CLI、公证配置和 Agent 模型质量。正式发布前要人工复核构建产物和账号权限。
安装第三方 skill 有什么安全注意?
第三方 skill 可能包含脚本、命令、引用资料和 Agent 行为建议。安装前至少看 README 和 SKILL.md,确认它会让 Agent 执行什么命令、读取哪些路径,以及是否符合你的项目安全边界。

18 分钟阅读 · 发布于: 2026年7月17日 · 修改于: 2026年7月17日

评论

使用 GitHub 账号登录后即可评论

Easton BlogEaston Blog