# Package SwiftPM macOS Apps

SwiftPM macOS apps need manual bundle, signing, and release steps outside Xcode. This skill supplies templates and guidance for scaffolding, packaging, notarizing, and appcast generation.

## Install

```bash
npx skillstore add dimillian/macos-spm-app-packaging
```

## Metadata

- Status: approved
- Slug: dimillian-macos-spm-app-packaging
- Skillstore revision: r1
- Version status: missing
- Tree hash: 502567a397ff85dc0feb0c2350ff983042b0bf5ae2865f20ab552b0af4564df7
- Author: Dimillian
- GitHub username: Dimillian
- License: MIT
- Repository: https://github.com/Dimillian/Skills/tree/main/macos-spm-app-packaging
- Ref: c579efd02184f1128d6741d16e6c8d951d7d4208
- Supported tools: Claude, Codex, Claude Code
- Audit status: complete
- Agent install advisory: blocked
- Manual install advisory: allowed\_with\_warning
- Artifact signature: available
- Audit attestation: unavailable
- Human verification: not\_verified
- Risk factors: external\_commands, filesystem, network, env\_access
- Quality score: 38
- Quality tier: warning
- Public page: https://skillstore.pages.dev/skills/dimillian-macos-spm-app-packaging
- Manifest: https://skillstore.pages.dev/api/skills/dimillian-macos-spm-app-packaging/manifest

## Capabilities

- Scaffold a minimal SwiftPM macOS app layout with version metadata.
- Build SwiftPM binaries for one or more macOS architectures.
- Assemble a .app bundle with resources, frameworks, Info.plist, and entitlements.
- Run a local package, launch, and process verification loop.
- Generate .icns assets from an Icon Composer source file.
- Prepare release signing, notarization, zip packaging, and Sparkle appcast steps.

## Use Cases

- Start a New SwiftPM App: Create a clean app skeleton with package settings, source folders, resources, and version metadata.
- Package a Local Build: Turn SwiftPM build output into a runnable .app bundle for testing without opening Xcode.
- Prepare a Release Pipeline: Add signing, notarization, zip creation, and Sparkle appcast steps to a SwiftPM macOS release process.

## Prompt Templates

### Create a Starter App

```
Use this skill to scaffold a SwiftPM macOS app named MyApp. Include the folder layout, version file, and first packaging steps.
```

### Package for Local Testing

```
Use this skill to package my SwiftPM macOS app for local testing. Explain which template scripts to copy and which variables to set.
```

### Add Release Signing

```
Use this skill to prepare signing and notarization for my SwiftPM macOS app. List required credentials, files, and verification steps.
```

### Adapt the Templates

```
Use this skill to adapt the packaging templates for a menu bar app with resources, frameworks, universal builds, and Sparkle updates.
```

## Limitations

- Requires macOS and Apple developer tools for packaging, signing, and notarization.
- Release workflows require valid developer credentials and Sparkle tooling.
- Template scripts assume the documented project layout and may need project-specific edits.
- Signing scripts should be reviewed before using real private keys or keychain access.

## Best Practices

- Review every copied script before running it with signing credentials.
- Use ad hoc signing for local development and reserve Developer ID credentials for release builds.
- Keep version numbers, bundle identifiers, and build numbers explicit in project configuration.

## Anti Patterns

- Do not run release scripts with real credentials before inspecting temporary file handling.
- Do not source configuration files from untrusted repositories without validation.
- Do not publish appcasts or release zips before notarization and stapling checks pass.

## Security Audit

- Audited at: 2026-07-05T12:21:35.872\+00:00
- Summary: Most static alerts are false positives from documented local macOS packaging scripts and Markdown command references. Confirmed risks involve sourcing version.env as shell code, writing signing credentials to predictable /tmp paths, and importing a signing identity into the login keychain. No prompt injection evidence was found in the reviewed files.

## Stats

- Views: 191
- Downloads: 16
- Favorites: 0
- Popularity score: 0
