macos-spm-app-packaging
Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project. Use when you need a from-scratch macOS app layout, SwiftPM targets/resources, a custom .app bundle assembly script, or signing/notarization/appcast steps outside Xcode.
DeepseekModel
キュレーション済みスキル
品質 優秀 · 90
v1.0.0
取得
https://deepseekmodel.com/api/download.php?id=dimillian-skills-macos-spm-app-packaging-skill-md&format=skill
ダウンロード .skill
標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
name macos-spm-app-packaging description Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project. Use when you need a from-scratch macOS app layout, SwiftPM targets/resources, a custom .app bundle assembly script, or signing/notarization/appcast steps outside Xcode. 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 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. 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. Minimum End-to-End Example Shortest path from bootstrap to a running app: # 1. Copy and rename the skeleton cp -R assets/templates/bootstrap/ ~/Projects/MyApp cd ~/Projects/MyApp sed -i '' 's/MyApp/HelloApp/g' Package.swift version.env # 2. Copy scripts cp assets/templates/package_app.sh Scripts/ cp assets/templates/compile_and_run.sh Scripts/ chmod +x Scripts/*.sh # 3. Build and launch swift build Scripts/compile_and_run.sh Validation Checkpoints Run these after key steps to catch failures early before proceeding to the next stage. After packaging ( Scripts/package_app.sh ): # Confirm .app bundle structure is intact ls -R build/HelloApp.app/Contents # Check that the binary is present and executable file build/HelloApp.app/Contents/MacOS/HelloApp After signing ( Scripts/sign-and-notarize.sh or ad-hoc dev signing): # Inspect signature and entitlements codesign -dv --verbose=4 build/HelloApp.app # Verify the bundle passes Gatekeeper checks locally spctl --assess -- type execute --verbose build/HelloApp.app After notarization and stapling: # Confirm the staple ticket is attached stapler validate build/HelloApp.app # Re-run Gatekeeper to confirm notarization is recognised spctl --assess -- type execute --verbose build/HelloApp.app Common Notarization Failures Symptom Likely Cause Recovery The software asset has already been uploaded Duplicate submission for same version Bump BUILD_NUMBER in version.env and repackage. Package Invalid: Invalid Code Signing Entitlements Entitlements in .entitlements file don't match provisioning Audit entitlements against Apple's allowed set; remove unsupported keys. The executable does not have the hardened runtime enabled Missing --options runtime flag in codesign invocation Edit sign-and-notarize.sh to add --options runtime to all codesign calls. Notarization hangs / no status email xcrun notarytool network or credential issue Run xcrun notarytool history to check status; re-export App Store Connect API key if expired. stapler validate fails after successful notarization Ticket not yet propagated Wait ~60 s, then re-run xcrun stapler staple . Templates assets/templates/package_app.sh : Build binaries, create the .app bundle, copy resources, sign. assets/templates/compile_and_run.sh : Dev loop to kill running app, package, launch. assets/templates/build_icon.sh : Generate .icns from an Icon Composer file (requires Xcode install). assets/templates/sign-and-notarize.sh : Notarize, staple, and zip a release build. assets/templates/make_appcast.sh : Generate Sparkle appcast entries for updates. assets/templates/setup_dev_signing.sh : Create a stable dev code-signing identity. assets/templates/launch.sh : Simple launcher for a packaged .app. assets/templates/version.env : Example version file consumed by packaging scripts. assets/templates/bootstrap/ : Minimal SwiftPM macOS app skeleton (Package.swift, Sources/, version.env). Notes Keep entitlements and signing configuration explicit; edit the template scripts instead of reimplementing. Remove Sparkle steps if you do not use Sparkle for updates. Sparkle relies on the bundle build number ( CFBundleVersion ), so BUILD_NUMBER in version.env must increase for each update. For menu bar apps, set MENU_BAR_APP=1 when packaging to emit LSUIElement in Info.plist.
このスキルを起動するキーワード。クリックでコピーできます。
このスキルにはトリガーワードがありません。
ダウンロードした .skill に含まれるフィールド。
| フィールド | 説明 |
|---|---|
| format | フォーマット識別子(skill/v1) |
| skill_id | スキル固有 ID |
| name | スキル名 |
| version | バージョン |
| description | 説明 |
| category | カテゴリ(配列) |
| trigger_words | トリガーワード |
| tags | タグ |
| source | ソース |
| source_url | ソース URL(本ページ) |
| exported_at | エクスポート日時(ダウンロード毎) |
| system_prompt | システムプロンプト本文 |
| model_config | モデル設定:provider / model / temperature / max_tokens / top_p |
| examples | サンプル |
| install_guide | 各プラットフォームの導入説明(Coze / Dify / Claude / カスタム) |