app-release
星标13
分支1
更新时间2026年4月21日 15:27
使用本 skill 发布 macOS 应用。自动生成 CHANGELOG、递增版本号、提交代码并打 tag 推送到远程。
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
使用本 skill 发布 macOS 应用。自动生成 CHANGELOG、递增版本号、提交代码并打 tag 推送到远程。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | app-release |
| description | 使用本 skill 发布 macOS 应用。自动生成 CHANGELOG、递增版本号、提交代码并打 tag 推送到远程。 |
发布 macOS 应用的标准流程:更新版本号 → 更新 CHANGELOG → 更新 release-notes.md → 提交代码 → 打 tag → 推送。
project.yml 的 MARKETING_VERSION 和 CURRENT_PROJECT_VERSIONCHANGELOG.md 和 release-notes.mdCCManager.app.zip,并生成用于自定义更新器的 appcast.xmlgit status
git tag --list | tail -5
确保工作区干净,已有 tag 历史。
从 project.yml 读取当前版本:
grep -E "MARKETING_VERSION|CURRENT_PROJECT_VERSION" project.yml
当前版本格式:
MARKETING_VERSION = 市场版本(如 1.0.0)CURRENT_PROJECT_VERSION = 构建版本(整数,每次发布递增)新版本规则:
feat: 提交 → 递增 minor(如 1.0.0 → 1.1.0)fix: 或 chore: → 递增 patch(如 1.0.0 → 1.0.1)CURRENT_PROJECT_VERSION 每次发布都 +1修改 project.yml(XcodeGen 的源头配置):
sed -i '' 's/MARKETING_VERSION: ".*"/MARKETING_VERSION: "X.Y.Z"/' project.yml
sed -i '' 's/CURRENT_PROJECT_VERSION: "[0-9]*"/CURRENT_PROJECT_VERSION: "N"/' project.yml
# 重新生成 project.pbxproj(确保本地构建也使用正确版本)
xcodegen generate
查找上一个 tag 到当前 HEAD 之间的所有提交:
git log v1.0.1..HEAD --oneline
分析所有提交,用英文总结每类变更的核心内容并去掉与产品本身无关的提交,比如 CI,docs 等,而非简单罗列 commit message。
## [New Version] - YYYY-MM-DD
### Features
- [English summary of feature changes]
### Bug Fixes
- [English summary of bug fixes]
### Others
- [English summary of chore/docs/refactor changes]
如果中间有 BREAKING CHANGE:,在 ## 下方添加 **Breaking Change** 标记。
这个文件的内容会用于:
appcast.xml 时嵌入 <description><![CDATA[...]]></description>内容应该是这个版本的 changelog 摘要(与 CHANGELOG.md 中该版本的内容一致)。
格式示例:
### Features
- Add DMG packaging support for macOS distribution
### Bug Fixes
- Fix appcast.xml generation to use GitHub Release assets
git add project.yml CCManager.xcodeproj/project.pbxproj CCManager.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved CHANGELOG.md release-notes.md
git commit -m "release: vX.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main && git push origin vX.Y.Z
推送完成后验证:
git log --oneline -3
git tag --list | grep vX.Y.Z
git stash 或让用户确认已提交