بنقرة واحدة
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 المهني
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
| 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.