# macos-release

Walks a native macOS app through the whole release flow: archive, notarize, package a DMG, sign it with Sparkle, and publish a GitHub Release.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 579 installs · ★ 681
- Author: fayazara
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/fayazara/macos-app-skills/tree/HEAD/release/SKILL.md
- Updated: 2026-05-27
- HTML: https://affpapa.org/en/nevibecode/skills/macos-release

## What it does

This skill handles distribution outside the Mac App Store. It covers bumping the version in Xcode, archiving, notarization, exporting the .app bundle, creating the DMG, signing with Sparkle EdDSA, updating `appcast.xml`, and pushing the release to GitHub.

The repo ships a Go CLI that automates steps 4 through 8 in one command. It reads `release.json` from the project root, locates `sign_update` in DerivedData on its own, collects release notes interactively, then builds the DMG, signs it, patches the appcast, commits, and creates the GitHub release. Run it in a terminal with an interactive prompt.

For a manual run you need `create-dmg`, `gh`, and an Xcode build first. The Sparkle `sign_update` binary only exists in DerivedData after the project has been built, so without that step there is nothing to sign the DMG with.

## Requirements
- Works with: GitHub

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add fayazara/macos-app-skills --skill macos-release -a claude-code
```
```bash
npx skills add fayazara/macos-app-skills --skill release -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/release/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/release/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add fayazara/macos-app-skills --skill release -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/release/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add fayazara/macos-app-skills --skill release -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/release/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install fayazara/macos-app-skills release
```

2. **Manually: put the files in place**
- File: `.github/skills/release/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add fayazara/macos-app-skills --skill release -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/fayazara/macos-app-skills --path release
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/release/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add fayazara/macos-app-skills --skill release -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/fayazara/macos-app-skills/tree/HEAD/release/SKILL.md

## When to use it
- package an exported .app into a DMG
- sign the DMG with a Sparkle EdDSA key
- add a new entry to appcast.xml
- push the appcast and create a GitHub Release in one command
- locate sign_update in DerivedData automatically

## Example prompts
- Release version 1.3 of my macOS app to GitHub
- Build the DMG, sign it, and update the appcast for the new build
- Run the full release pipeline for MyApp, notarization included

## Similar
- [setup-matt-pocock-skills](https://affpapa.org/en/nevibecode/skills/setup-matt-pocock-skills.md) — skill · 1052851 installs
- [ask-matt](https://affpapa.org/en/nevibecode/skills/ask-matt.md) — skill · 766587 installs
- [to-tickets](https://affpapa.org/en/nevibecode/skills/to-tickets.md) — skill · 711230 installs
- [writing-plans](https://affpapa.org/en/nevibecode/skills/writing-plans.md) — skill · 282859 installs
- [caveman-review](https://affpapa.org/en/nevibecode/skills/caveman-review.md) — skill · 411800 installs
- [caveman-compress](https://affpapa.org/en/nevibecode/skills/caveman-compress.md) — skill · 411500 installs

From the same set: [fayazara/macos-app-skills](https://affpapa.org/en/nevibecode/by/fayazara/macos-app-skills.md) — 6 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
