
homebrew-release
by bradhannah
SKILL.md
name: homebrew-release description: Create and deploy new versions to Homebrew tap with automatic cask updates license: MIT compatibility: opencode metadata: audience: maintainers workflow: release
Homebrew Release Deployment
Use this skill when creating a new release that will be distributed via Homebrew.
Overview
This project uses an automated release pipeline that:
- Builds a macOS ARM64 DMG with ad-hoc signing
- Creates a GitHub Release
- Automatically updates the Homebrew tap (
bradhannah/homebrew-doggy-bag)
No manual Homebrew tap updates are required - everything is triggered by pushing a version tag.
Prerequisites
Before releasing, ensure:
HOMEBREW_TAP_TOKENsecret is configured in the GitHub repo (PAT withrepo+workflowscopes)- The Homebrew tap repository exists:
bradhannah/homebrew-doggy-bag
Key Files
| File | Purpose |
|---|---|
src-tauri/tauri.conf.json | Source of truth - version number (line 4) |
src-tauri/Cargo.toml | Rust package version (should match) |
package.json | Root npm package version (should match) |
api/package.json | API npm package version (should match) |
.github/workflows/release.yml | Release automation workflow |
Homebrew tap: Casks/doggy-bag.rb | Cask definition (auto-updated by release workflow) |
Version Sync
When bumping versions, update all four version files to keep them in sync:
# Check current versions
grep '"version"' src-tauri/tauri.conf.json package.json api/package.json
grep '^version' src-tauri/Cargo.toml
# After updating, verify they match
The api/src/services/version-service.ts reads version dynamically from tauri.conf.json at runtime (no hardcoded fallback).
Release Process
Step 1: Check Current State
# View recent tags
git tag --sort=-v:refname | head -5
# View recent commits since last tag
git log --oneline $(git describe --tags --abbrev=0)..HEAD
# Check current version in tauri.conf.json
grep '"version"' src-tauri/tauri.conf.json
Step 2: Determine Version Bump
Choose the appropriate version increment:
| Change Type | Version Bump | Example |
|---|---|---|
| Bug fixes, minor improvements | Patch | 0.2.2 -> 0.2.3 |
| New features, enhancements | Minor | 0.2.2 -> 0.3.0 |
| Breaking changes | Major | 0.2.2 -> 1.0.0 |
Step 3: Bump Version
Edit src-tauri/tauri.conf.json and update the "version" field:
{
"version": "X.Y.Z"
}
Step 4: Commit, Tag, and Push
# Commit the version bump
git add src-tauri/tauri.conf.json
git commit -m "chore: bump version to X.Y.Z"
# Create tag and push everything
git tag vX.Y.Z && git push && git push origin vX.Y.Z
Important: The tag format must be vX.Y.Z (with the v prefix) to trigger the release workflow.
What Happens Automatically
After pushing the tag, the GitHub Actions workflow (.github/workflows/release.yml) executes:
- create-release - Creates a draft GitHub Release with auto-generated notes
- build-macos - Builds the macOS ARM64 DMG:
- Installs dependencies (Bun, Node.js, Rust)
- Builds the Tauri app with
npm run tauri build -- --target aarch64-apple-darwin - Ad-hoc code signs the app bundle
- Creates and uploads the DMG
- Calculates SHA256 hash
- publish-release - Publishes the draft release
- update-homebrew - Dispatches
update-caskevent tobradhannah/homebrew-doggy-bagwith:- Version number (without
vprefix) - SHA256 hash of the DMG
- Version number (without
The Homebrew tap repository receives the dispatch and automatically:
- Updates
Casks/doggy-bag.rbwith new version and SHA256 - Commits and pushes the change
Monitoring the Release
Track progress at:
- Main release workflow:
https://github.com/bradhannah/doggy-bag/actions - Homebrew tap update:
https://github.com/bradhannah/homebrew-doggy-bag/actions
Verification
After the release completes:
# Update Homebrew and check the new version
brew update
brew info bradhannah/doggy-bag/doggy-bag
# Upgrade to the new version
brew upgrade doggy-bag
Quick Reference
# Full release command sequence (replace X.Y.Z with actual version)
git tag --sort=-v:refname | head -3 # Check latest tags
# Edit src-tauri/tauri.conf.json to update version
git add src-tauri/tauri.conf.json && git commit -m "chore: bump version to X.Y.Z"
git tag vX.Y.Z && git push && git push origin vX.Y.Z
Workflow Diagram
Push vX.Y.Z tag
|
v
+------------------+
| release.yml |
| (BudgetForFun) |
+------------------+
|
+---> create-release (draft)
|
+---> build-macos
| |
| +---> Build DMG
| +---> Calculate SHA256
| +---> Upload to Release
|
+---> publish-release
|
+---> update-homebrew
|
v
repository_dispatch
|
v
+------------------+
| update-cask.yml |
| (homebrew-tap) |
+------------------+
|
+---> Update Casks/doggy-bag.rb
+---> Commit & Push
|
v
Homebrew Updated!
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です