# Release Mac App

MacOS app release: Sparkle, notarization, GitHub Release, Homebrew, closeout.

- Repository: https://github.com/steipete/agent-scripts (7431 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add steipete/agent-scripts --skill release-mac-app -g -a claude-code -y`
Codex: `npx skills add steipete/agent-scripts --skill release-mac-app -g -a codex -y`
Cursor: `npx skills add steipete/agent-scripts --skill release-mac-app -g -a cursor -y`
Gemini CLI: `npx skills add steipete/agent-scripts --skill release-mac-app -g -a gemini-cli -y`

## Description

macOS app release: Sparkle, notarization, GitHub Release, Homebrew, closeout.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Mac App Release

Use for BlackBar, RepoBar, CodexBar, Trimmy, and similar Sparkle-updated macOS apps.

## Rules

- Work from the app repo.
- Read `.mac-release.env`; it is the repo-owned release manifest.
- Use `scripts/mac-release` from this skill for shared release/appcast/verify work.
- Execute `mac-release` directly so its privileged Bash shebang ignores startup hooks; if an explicit interpreter is
  unavoidable, use `/bin/bash -p`, never plain `bash mac-release`.
- Keep app-specific build/package/sign behavior in repo scripts unless it is already manifest-driven.
- Never print private key material.
- Upload app/dSYM assets to a draft before publication. After a failure, preserve the release, tags, appcast commit, and local edits; inspect existing state and resume the failed step instead of deleting or retagging a possibly published release.
- Prefer `MAC_RELEASE_SPARKLE_OP_REF` for headless release signing when the key is in 1Password; otherwise prefer
  Keychain Sparkle signing. `SPARKLE_PRIVATE_KEY_FILE` is an explicit local override only.

## Commands

The rest: https://github.com/steipete/agent-scripts/blob/HEAD/skills/release-mac-app/SKILL.md
