一键导入
release
Full Tusk release — bump version, build DMG, publish GitHub release, update README
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Full Tusk release — bump version, build DMG, publish GitHub release, update README
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | release |
| description | Full Tusk release — bump version, build DMG, publish GitHub release, update README |
| disable-model-invocation | true |
| argument-hint | <new-version> |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep |
Perform a full release of Tusk for version $ARGUMENTS.
Work directly on the main branch (no feature branch needed for releases).
git pullmain and the working tree is cleanVersion scheme is YYYY.MM.DD-NN (e.g. 2026.03.21-00). NN is a zero-padded counter starting at 00 for each day.
$ARGUMENTS is provided, use it as the version.$ARGUMENTS is empty, auto-derive it:
date +%Y.%m.%dgit tag | grep "^v$(date +%Y.%m.%d)-"YYYY.MM.DD-00-00 → -01)Update the following files — replace the old CFBundleShortVersionString with the new version and increment CFBundleVersion by 1:
Tusk/Resources/Info.plist — CFBundleShortVersionString and CFBundleVersionproject.yml — same two keys under info:README.md — update the download link filename and URL (both the display text Tusk-X.X.X.dmg and the URL path vX.X.X/Tusk-X.X.X.dmg)To find the current version and build number before editing, read those files first.
xcodegen generate
xcodebuild -project Tusk.xcodeproj -scheme Tusk -configuration Release -destination "platform=macOS" build
Confirm ** BUILD SUCCEEDED ** before continuing.
xcodebuild -project Tusk.xcodeproj -scheme Tusk -configuration Release -showBuildSettings | awk '$1 == "BUILT_PRODUCTS_DIR" {print $3}'
dist/dmg-staging/Tusk.app with the freshly built app — always rm -rf first so cp -R creates a fresh copy rather than copying into the existing bundle directory:
rm -rf dist/dmg-staging/Tusk.app
cp -R "$BUILT_PRODUCTS_DIR/Tusk.app" dist/dmg-staging/
$ARGUMENTS:
defaults read "$(pwd)/dist/dmg-staging/Tusk.app/Contents/Info.plist" CFBundleShortVersionString
ls dist/Tusk-$ARGUMENTS.dmg 2>/dev/null && echo "DMG already exists — stop" || echo "OK"
If the file already exists, stop and ask the user before overwriting.hdiutil create -volname "Tusk" -srcfolder dist/dmg-staging -ov -format UDZO dist/Tusk-$ARGUMENTS.dmg
git add Tusk/Resources/Info.plist project.yml Tusk.xcodeproj README.md
git commit -m "chore: bump version to $ARGUMENTS"
git tag v$ARGUMENTS
git push
git push origin v$ARGUMENTS
gh release create v$ARGUMENTS dist/Tusk-$ARGUMENTS.dmg \
--title "Tusk $ARGUMENTS" \
--notes "<release notes>"
For the release notes, look at git log since the previous tag and summarise the commits into sections:
feat: commitsfix: commitsAlways append this footer to the release notes:
---
> Not notarized. On first launch right-click → **Open**, or run:
> \`\`\`
> xattr -d com.apple.quarantine /Applications/Tusk.app
> \`\`\`
Report the GitHub release URL and confirm all steps completed successfully.
Use when the user asks to run `make clean` for the Tusk macOS project or diagnose failures while cleaning Xcode build artifacts.
Use when the user asks to run `make run` for the Tusk macOS project, build and launch the app, or diagnose build and launch failures.
Use when preparing a full Tusk macOS release: bump the app version, regenerate the Xcode project, build and package the DMG, publish the GitHub release, and update README links.
Run `make clean` on the Tusk project and diagnose any errors
Run `make run` on the Tusk project (builds then launches the app) and diagnose any errors