CommunityProgramación y desarrollogithub.com

dimillian/macos-spm-app-packaging

Andamia, compila y empaqueta aplicaciones macOS basadas en SwiftPM sin un proyecto de Xcode. Útil cuando necesitas una estructura de aplicación macOS desde cero, targets/recursos de SwiftPM, un script personalizado de ensamblado de paquete .app, o pasos de firma/notarización/appcast fuera de Xcode.

¿Qué es macos-spm-app-packaging?

Esta skill proporciona un flujo de trabajo completo para desarrollar, compilar y empaquetar aplicaciones macOS utilizando exclusivamente Swift Package Manager (SwiftPM), eliminando la dependencia de Xcode. Está diseñada para desarrolladores que prefieren un enfoque basado en línea de comandos o que necesitan integrar la construcción de aplicaciones macOS en pipelines de CI/CD. La skill automatiza la creación de la estructura de directorios de una aplicación macOS, la configuración de targets de SwiftPM, la gestión de recursos (como imágenes o archivos de interfaz), y el ensamblado de un paquete .app funcional. Además, incluye soporte para firmado de código, notarización de Apple, y generación de feeds appcast para distribuciones Sparkle. Funciona en plataformas como Claude Code, Cursor y Codex, y es ideal para proyectos que requieren un control granular sobre el proceso de empaquetado sin la abstracción de un proyecto Xcode.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dimillian/skills/tree/main/skills/macos-spm-app-packaging

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace macos-spm-app-packaging?

Andamia, compila y empaqueta aplicaciones macOS basadas en SwiftPM sin un proyecto de Xcode. Útil cuando necesitas una estructura de aplicación macOS desde cero, targets/recursos de SwiftPM, un script personalizado de ensamblado de paquete .app, o pasos de firma/notarización/appcast fuera de Xcode.

Descripción general

Esta skill te permite crear aplicaciones macOS completas usando solo swift build y scripts de shell, sin abrir Xcode. Es perfecta para:

  • Proyectos nuevos donde quieres mantener un control total sobre la estructura del paquete .app.
  • Automatización en CI/CD donde Xcode no está disponible.
  • Distribución fuera de la App Store con firma de código y notarización.
  • Integración con Sparkle para actualizaciones automáticas.

Requisitos

  • macOS 14 o superior
  • Swift 5.9 o superior
  • Herramientas de línea de comandos de Xcode instaladas (xcode-select --install)
  • (Opcional) Cuenta de desarrollador de Apple para firma y notarización

Instalación

Clona este repositorio o copia el contenido en tu proyecto:

git clone https://github.com/dimillian/macos-spm-app-packaging.git
cd macos-spm-app-packaging

Uso

Inicializar un nuevo proyecto

./scripts/scaffold.sh MiApp

Esto crea la siguiente estructura:

MiApp/
├── Package.swift
├── Sources/
│   └── MiApp/
│       ├── main.swift
│       └── Resources/
│           └── Info.plist
├── Resources/
│   └── AppIcon.icns
└── scripts/
    ├── build.sh
    ├── package.sh
    └── sign.sh

Compilar

cd MiApp
swift build -c release

Empaquetar como .app

./scripts/package.sh

Esto genera MiApp.app en el directorio build/.

Firmar y notarizar

./scripts/sign.sh --identity "Developer ID Application: Tu Nombre"
./scripts/notarize.sh --bundle-id com.tudominio.miapp --asc-provider TuProveedor

Generar appcast (Sparkle)

./scripts/generate_appcast.sh --ed-key ./dsa_priv.pem

Configuración

Variables de entorno

VariableDescripción
APP_NAMENombre de la aplicación
BUNDLE_IDIdentificador único del paquete
TEAM_IDID del equipo de Apple Developer
SIGNING_IDENTITYIdentidad de firma de código
ASC_PROVIDERProveedor de App Store Connect

Package.swift

Edita Package.swift para agregar dependencias o targets adicionales:

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
    name: "MiApp",
    platforms: [
        .macOS(.v14)
    ],
    targets: [
        .executableTarget(
            name: "MiApp",
            resources: [
                .process("Resources")
            ]
        )
    ]
)

Licencia

MIT License - ver el archivo LICENSE.

Contribuciones

Las contribuciones son bienvenidas. Por favor abre un issue o pull request.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

dimillian/app-store-changelog

Create user-facing App Store release notes by collecting and summarizing all user-impacting changes since the last git tag (or a specified ref). Use when asked to generate a comprehensive release changelog, App Store "What's New" text, or release notes based on git history or tags.

dimillian/ios-debugger-agent

Use XcodeBuildMCP to build, run, launch, and debug the current iOS project on a booted simulator. Trigger when asked to run an iOS app, interact with the simulator UI, inspect on-screen state, capture logs/console output, or diagnose runtime behavior using XcodeBuildMCP tools.

dimillian/swift-concurrency-expert

Swift Concurrency review and remediation for Swift 6.2+. Use when asked to review Swift Concurrency usage, improve concurrency compliance, or fix Swift concurrency compiler errors in a feature or file. Concrete actions include adding Sendable conformance, applying @MainActor annotations, resolving actor isolation warnings, fixing data race diagnostics, and migrating completion handlers to async/await.

dimillian/swiftui-liquid-glass

Implement, review, or improve SwiftUI features using the iOS 26+ Liquid Glass API. Use when asked to adopt Liquid Glass in new SwiftUI UI, refactor an existing feature to Liquid Glass, or review Liquid Glass usage for correctness, performance, and design alignment.

dimillian/swiftui-performance-audit

Audit and improve SwiftUI runtime performance from code review and architecture. Use for requests to diagnose slow rendering, janky scrolling, high CPU/memory usage, excessive view updates, or layout thrash in SwiftUI apps, and to provide guidance for user-run Instruments profiling when code review alone is insufficient.

dimillian/swiftui-ui-patterns

Best practices and example-driven guidance for building SwiftUI views and components, including navigation hierarchies, custom view modifiers, and responsive layouts with stacks and grids. Use when creating or refactoring SwiftUI UI, designing tab architecture with TabView, composing screens with VStack/HStack, managing @State or @Binding, building declarative iOS interfaces, or needing component-specific patterns and examples.

dimillian/swiftui-view-refactor

Refactor and review SwiftUI view files with strong defaults for small dedicated subviews, MV-over-MVVM data flow, stable view trees, explicit dependency injection, and correct Observation usage. Use when cleaning up a SwiftUI view, splitting long bodies, removing inline actions or side effects, reducing computed `some View` helpers, or standardizing `@Observable` and view model initialization patterns.

Skills relacionados