最近写了好几个的开源 macOS app 项目,我估计写过独立 macOS App 的人大概都有同感:把核心功能写出来,其实只完成了一半。剩下那一半基本都是琐事,比如:
- 写到一半,然后发现使用 XcodeGen 和 project.yml 更好
- GitHub Actions 怎么跑通签名 + 公证 + DMG + Release
- 自动更新走 Sparkle 还是自己轮询 GitHub API
- 开机自启用 SMAppService 的正确姿势
- 日志、设置窗口、辅助功能权限引导、本地化、Sandbox 开关
- 国际化多语言支持
- ……
这些东西每个单独看都不难,但加起来很耗时;交给 AI 自己摸索的话,经常会走很多弯路(比如选了已经废弃的 API 、写出能跑但不能上架的配置)。
所以我把自己几个已上架 App 里反复用到的模式抽出来,做成了一个 AI Agent Skill:macos-app-scaffold 。,丢给 AI ,一次性把这些都给完成,很适合睡前丢给他,早上全搞定了。
它做什么
一句话:新建项目 + 给已有项目按需补功能,全程交互式,不强加任何东西。
项目初始化
- 菜单栏 / 窗口 / 混合模式三选一
- XcodeGen 作为唯一配置源
- SwiftUI 启动代码、.gitignore 、Git 初始化
- AGENTS.md + CLAUDE.md 软链,方便多 Agent 协作
构建与分发
- GitHub Actions:构建 → 签名 → 公证 → 打 DMG → 发 Release
- Universal Binary ( arm64 + x86_64 )
- 推 v* tag 自动发版
- 多语言 Release Notes
- Homebrew Cask 公式
▎ 没有 Apple 开发者账号也能用,会跳过签名/公证那几步,产物是未签名 DMG ,照样能分发。
应用层常见功能
- 自动更新( GitHub API 轮询 或 Sparkle )
- 开机自启( SMAppService )
- 辅助功能权限引导
- 设置窗口、文件日志、本地化、引导页
- Aptabase (隐私友好的分析)
工程化
- SwiftLint 默认规则
- XCTest 测试 target
- Sandbox 开关(带上架说明)
- LICENSE ( MIT / GPL-3.0 / Apache-2.0 )+ 带徽章的
怎么用
兼容 Claude Code 、Cursor 、Codex 、Gemini 等 40+ A
通用安装:
npx skills add XueshiQiao/macos-app-scaffold
仅 Claude Code:
/plugin install github:XueshiQiao/macos-app-scaf
之后三个命令就够用:
/macos-app-scaffold # 自动判断是新建
/macos-app-scaffold-new MyApp # 直接新建
/macos-app-scaffold-enhance # 给已有项目按需 / logging ...)
适合谁
- 想做独立 macOS App 、不想在工程化琐事上耗一周的
- 已经有项目,但只补齐了核心功能,CI/CD 、自动更新还没做的
- 想让 AI 帮自己写 macOS App ,但被 AI 反复走弯路
仓库
GitHub: https://github.com/XueshiQiao/macos-app-scaffold
MIT 协议,欢迎 issue / PR ,也欢迎吐槽哪些地方还