| name | release-kaze |
| description | Release the Kaze macOS app to GitHub using the kaze-release CLI tool. Use this skill whenever the user wants to publish a new version, create a release, ship an update, push a release to GitHub, or update the appcast. Also use when they mention DMG creation, Sparkle signing, or anything related to distributing a new Kaze version. |
Release Kaze
This skill handles releasing new versions of Kaze to GitHub using a custom Go CLI tool.
Prerequisites
Before releasing, the user must have:
- Exported Kaze.app to
~/Downloads/Kaze.app from Xcode (Archive > Export)
- Bumped version numbers in Xcode (
MARKETING_VERSION and CURRENT_PROJECT_VERSION)
- The following tools installed:
create-dmg (brew), gh (GitHub CLI), git
- The Sparkle
sign_update binary available in DerivedData (built automatically when the project is built in Xcode)
The Release CLI
The release tool is a compiled Go binary located at:
/Users/fayazahmed/Developer/fayazara/mac/kaze-release/kaze-release
Source code is at /Users/fayazahmed/Developer/fayazara/mac/kaze-release/main.go.
What it does (in order)
- Preflight checks -- verifies
create-dmg, gh, git, and Sparkle's sign_update are available
- Validates Kaze.app -- reads version and build number from
~/Downloads/Kaze.app/Contents/Info.plist, checks for Sparkle keys
- Collects release notes -- prompts for bullet points (one per line, empty line to finish)
- Creates DMG -- uses
create-dmg to package ~/Downloads/Kaze.app into ~/Downloads/Kaze.dmg
- Signs DMG -- runs Sparkle's
sign_update to generate an EdDSA signature
- Updates appcast.xml -- parses the existing appcast in the Kaze repo, prepends a new
<item> entry with version info, signature, and download URL, then writes it back
- Git push -- commits and pushes the updated
appcast.xml to main
- Creates GitHub release -- uses
gh release create to create a tagged release with the DMG attached
Running it
The tool is interactive (prompts for release notes and confirmation), so it needs to be run in a terminal the user can interact with. You cannot run it directly via a non-interactive shell.
Instead, guide the user to run:
/Users/fayazahmed/Developer/fayazara/mac/kaze-release/kaze-release
Or if the binary needs to be rebuilt first:
cd /Users/fayazahmed/Developer/fayazara/mac/kaze-release && go build -o kaze-release . && ./kaze-release
Environment
- The tool auto-detects the Kaze repo at
~/Developer/fayazara/mac/Kaze. Override with KAZE_REPO env var.
- GitHub repo target:
fayazara/Kaze
- Git branch:
main
- DMG volume name:
Kaze
Workflow Guide
When the user wants to release, walk them through this checklist:
- Confirm they've bumped the version in Xcode
- Confirm they've archived and exported
Kaze.app to ~/Downloads/
- Have them run the release CLI
- After it completes, verify the GitHub release was created successfully
If something goes wrong mid-release (e.g., signing fails, git push fails), help debug using the error output from the CLI. Common issues:
- Kaze.app not found -- they need to export from Xcode first
- sign_update not found -- they need to build the project in Xcode so DerivedData has the Sparkle artifacts
- gh auth -- they may need to run
gh auth login first
- Build already in appcast -- they may have forgotten to bump the build number