macos-auto-update — Claude Code skill: Sparkle updates for macOS
A skill that walks the agent through wiring Sparkle into a native macOS app, from the SPM dependency to the first appcast.xml.
npx skills add fayazara/macos-app-skills --skill macos-auto-update -a claude-code
npx skills add fayazara/macos-app-skills --skill auto-update -a claude-codeWhat macos-auto-update does
Reach for this skill when a macOS app has to ship updates outside the Mac App Store. The agent pulls the Sparkle package in with Swift Package Manager, drops UpdaterManager.swift into the project, and fills in SUFeedURL and SUPublicEDKey in Info.plist. Then it hooks a “Check for Updates” control into settings or the menu bar.
The reference file is a singleton built on SPUStandardUpdaterController. It gets created before applicationDidFinishLaunching returns, publishes canCheckForUpdates for SwiftUI binding, and exposes the automatic-check toggle. Update code is guarded out of DEBUG builds, so your dev copy never gets swapped for a release binary. Menu-bar apps get a temporary switch to .regular activation policy before the update window opens.
You need an EdDSA keypair. The skill locates generate_keys in DerivedData; the public half belongs in Info.plist, the private half stays in Keychain and signs each release with sign_update. No valid signature, no working appcast. Apps under Hardened Runtime need no extra entitlements for Sparkle.
What it helps with
- add the Sparkle package to a macOS project
- wrap
SPUStandardUpdaterControllerin a singleton - set
SUFeedURLand the public EdDSA key inInfo.plist - put a “Check for Updates” item in settings or the menu bar
- generate a keypair and an initial
appcast.xml
Example prompts for the agent
- Add Sparkle auto-update to my macOS app
- Set up
UpdaterManager.swiftand hook update checks into my settings pane - Generate the EdDSA keys and build
appcast.xmlfor a release
How to install macos-auto-update
1Skills CLI (Vercel)
npx skills add fayazara/macos-app-skills --skill macos-auto-update -a claude-codenpx skills add fayazara/macos-app-skills --skill auto-update -a claude-code2Manually: put the files in place
~/.claude/skills/auto-update/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/auto-update/
1Skills CLI (Vercel)
npx skills add fayazara/macos-app-skills --skill auto-update -a codex2Manually: put the files in place
.agents/skills/auto-update/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add fayazara/macos-app-skills --skill auto-update -a cursor2Manually: put the files in place
.cursor/skills/auto-update/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install fayazara/macos-app-skills auto-update2Manually: put the files in place
.github/skills/auto-update/SKILL.md1Skills CLI (Vercel)
npx skills add fayazara/macos-app-skills --skill auto-update -a gemini-cli2Platform CLI
gemini skills install https://github.com/fayazara/macos-app-skills --path auto-updateManually: put the files in place
.devin/skills/auto-update/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add fayazara/macos-app-skills --skill auto-update -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about macos-auto-update
How do I install macos-auto-update in Claude Code?
Run npx skills add fayazara/macos-app-skills --skill macos-auto-update -a claude-code. Alternatively, install it by its auto-update name: npx skills add fayazara/macos-app-skills --skill auto-update -a claude-code.
What does macos-auto-update do?
It brings Sparkle into a native macOS app: the SPM package, the UpdaterManager singleton, the Info.plist keys, an update-check control and a starter appcast file.
Does it work for menu-bar-only apps?
Yes. Such apps run as .accessory, so the reference manager briefly switches to .regular while the update window is shown, otherwise Sparkle's window never appears.