macos-spm-app-packaging

Installation
Summary

Build, package, and sign SwiftPM-based macOS apps entirely outside Xcode using shell scripts and templates.

  • Includes a minimal SwiftPM project skeleton in assets/templates/bootstrap/ with Package.swift, Sources structure, and version configuration ready to rename and customize
  • Provides six core packaging scripts: package_app.sh for .app bundle assembly, compile_and_run.sh for dev iteration, sign-and-notarize.sh for release signing and Apple notarization, and make_appcast.sh for Sparkle update feeds
  • Covers the full release pipeline from build through code signing, notarization, stapling, and GitHub release publication with validation checkpoints at each stage
  • Includes troubleshooting guidance for common notarization failures (duplicate submissions, entitlements mismatches, hardened runtime issues) and menu bar app support via MENU_BAR_APP flag
SKILL.md

macOS SwiftPM App Packaging (No Xcode)

Overview

Bootstrap a complete SwiftPM macOS app folder, then build, package, and run it without Xcode. Use assets/templates/bootstrap/ for the starter layout and references/packaging.md + references/release.md for packaging and release details.

Two-Step Workflow

  1. Bootstrap the project folder

    • Copy assets/templates/bootstrap/ into a new repo.
    • Rename MyApp in Package.swift, Sources/MyApp/, and version.env.
    • Customize APP_NAME, BUNDLE_ID, and versions.
  2. Build, package, and run the bootstrapped app

    • Copy scripts from assets/templates/ into your repo (for example, Scripts/).
    • Build/tests: swift build and swift test.
    • Package: Scripts/package_app.sh.
    • Run: Scripts/compile_and_run.sh (preferred) or Scripts/launch.sh.
    • Release (optional): Scripts/sign-and-notarize.sh and Scripts/make_appcast.sh.
    • Tag + GitHub release (optional): create a git tag, upload the zip/appcast to the GitHub release, and publish.
Related skills

More from dimillian/skills

Installs
771
GitHub Stars
3.5K
First Seen
Jan 20, 2026