release-macos-spm-packaging

Scaffold, build, sign, and notarize SwiftPM-based macOS apps without Xcode projects.

3|Updated Jun 15, 2026
One-click install
npx skills add https://github.com/patrickserrano/lacquer --skill release-macos-spm-packaging-patrickserrano
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: release-macos-spm-packaging
Source: https://github.com/patrickserrano/lacquer/tree/main/profiles/ios/skills/release-macos-spm-packaging
Command: npx skills add https://github.com/patrickserrano/lacquer --skill release-macos-spm-packaging-patrickserrano

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building and distributing a macOS app normally requires an Xcode project, but many developers want a pure SwiftPM workflow. This Skill provides the complete scaffolding, packaging, signing, and notarization steps to ship a macOS app built entirely with Swift Package Manager. ## Core Features & Use Cases - Project Scaffolding: Generates the full directory layout including Package.swift, version.env, Info.plist generation, and shell scripts for packaging and running. - App Bundle Assembly: Builds a release binary with swift build -c release and assembles a valid .app bundle with correct Contents/MacOS and Contents/Resources structure. - Signing and Notarization: Covers Developer ID codesigning, notarytool credential storage, submission, stapling, and verification with codesign, spctl, and stapler validate. - Use Case: You have a menu bar utility written in Swift with no Xcode project. Use this Skill to package it into a signed, notarized .app, zip it for distribution, and publish it as a GitHub release with an optional Sparkle appcast entry. ## Quick Start Scaffold a new SwiftPM macOS app called MyApp and package it into a signed, notarized .app bundle ready for distribution.

Frequently Asked Questions about release-macos-spm-packaging

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a macOS app with SwiftPM without Xcode?▼

Define an executableTarget in Package.swift with resources, then run swift build -c release. A packaging script copies the binary into a .app bundle structure with Contents/MacOS and Contents/Resources, and generates the Info.plist from a version.env file.

How to notarize a macOS app using notarytool?▼

Store credentials once with xcrun notarytool store-credentials, then submit a zip of the signed app with xcrun notarytool submit --keychain-profile --wait. Finish by stapling the ticket with xcrun stapler staple so the app works offline.

Does notarization work with Xcode Command Line Tools only?▼

No, notarization requires the full Xcode.app installation. The Command Line Tools package omits notarytool and stapler, so you must install Xcode to submit apps and staple notarization tickets.

How do I verify a macOS app is signed and notarized correctly?▼

Run three checks: codesign -dv --verbose=4 confirms the signing identity, spctl -a -vvv -t exec confirms Gatekeeper acceptance, and xcrun stapler validate confirms the notarization ticket is attached. Each catches a different failure mode.

How do I make a menu bar app with SwiftPM?▼

Set MENU_BAR_APP=1 in version.env so the packaging script adds the LSUIElement key to Info.plist. This hides the Dock icon, which is the standard configuration for menu bar-only macOS applications.