macos-spm-app-packaging
SwiftPMベースのmacOSアプリをXcodeプロジェクトなしでスキャフォールド・ビルド・パッケージングします。ゼロからのmacOSアプリ構成、SwiftPMターゲット/リソースの設定、カスタム`.app`バンドルの組み立てスクリプト、またはXcode外でのサイニング・公証・appcas手順が必要な場合に使用します。
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.
SKILL.md 本文
macOS SwiftPM App Packaging (Xcode なし)
概要
SwiftPM 対応の完全な macOS アプリフォルダをブートストラップしてから、Xcode なしでビルド、パッケージ化、実行します。スターター レイアウトは assets/templates/bootstrap/ を、パッケージ化とリリースの詳細は references/packaging.md + references/release.md を参照してください。
2 ステップのワークフロー
-
プロジェクトフォルダをブートストラップ
assets/templates/bootstrap/を新しいリポジトリにコピーします。Package.swift、Sources/MyApp/、version.env内のMyAppをリネームします。APP_NAME、BUNDLE_ID、バージョンをカスタマイズします。
-
ブートストラップされたアプリをビルド、パッケージ化、実行
assets/templates/からスクリプトをリポジトリにコピーします(例:Scripts/)。- ビルド/テスト:
swift buildとswift test。 - パッケージ化:
Scripts/package_app.sh。 - 実行:
Scripts/compile_and_run.sh(推奨)またはScripts/launch.sh。 - リリース(オプション):
Scripts/sign-and-notarize.shとScripts/make_appcast.sh。 - タグ + GitHub リリース(オプション):git タグを作成し、zip/appcast を GitHub リリースにアップロードして公開します。
最小限のエンドツーエンド例
ブートストラップから実行中のアプリまでの最短経路:
# 1. スケルトンをコピーしてリネーム
cp -R assets/templates/bootstrap/ ~/Projects/MyApp
cd ~/Projects/MyApp
sed -i '' 's/MyApp/HelloApp/g' Package.swift version.env
# 2. スクリプトをコピー
cp assets/templates/package_app.sh Scripts/
cp assets/templates/compile_and_run.sh Scripts/
chmod +x Scripts/*.sh
# 3. ビルドして起動
swift build
Scripts/compile_and_run.sh
検証チェックポイント
重要なステップ後に以下を実行して、次のステージに進む前に障害を早期に検出します。
パッケージ化後(Scripts/package_app.sh):
# .app バンドル構造が無傷であることを確認
ls -R build/HelloApp.app/Contents
# バイナリが存在し実行可能であることを確認
file build/HelloApp.app/Contents/MacOS/HelloApp
署名後(Scripts/sign-and-notarize.sh または ad-hoc dev 署名):
# 署名と権利を検査
codesign -dv --verbose=4 build/HelloApp.app
# バンドルがローカルで Gatekeeper チェックに合格することを確認
spctl --assess --type execute --verbose build/HelloApp.app
公証とステープリング後:
# ステープルチケットが添付されていることを確認
stapler validate build/HelloApp.app
# Gatekeeper を再実行して公証が認識されたことを確認
spctl --assess --type execute --verbose build/HelloApp.app
一般的な公証エラー
| 症状 | 原因の可能性 | 復旧方法 |
|---|---|---|
The software asset has already been uploaded | 同じバージョンの重複送信 | version.env 内の BUILD_NUMBER をアップして再パッケージ化します。 |
Package Invalid: Invalid Code Signing Entitlements | .entitlements ファイル内の権利がプロビジョニングと一致しない | 権利を Apple が許可するセットと照合し、サポートされていないキーを削除します。 |
The executable does not have the hardened runtime enabled | codesign 呼び出しに --options runtime フラグが不足 | sign-and-notarize.sh を編集して、すべての codesign 呼び出しに --options runtime を追加します。 |
| 公証がハング / ステータスメールなし | xcrun notarytool ネットワークまたは認証情報の問題 | xcrun notarytool history でステータスを確認し、App Store Connect API キーが有効期限切れの場合は再エクスポートします。 |
公証成功後に stapler validate が失敗 | チケットがまだ伝播していない | 約 60 秒待ってから xcrun stapler staple を再実行します。 |
テンプレート
assets/templates/package_app.sh: バイナリをビルド、.app バンドルを作成、リソースをコピー、署名します。assets/templates/compile_and_run.sh: 実行中のアプリをキル、パッケージ化、起動する開発ループ。assets/templates/build_icon.sh: Icon Composer ファイルから .icns を生成(Xcode インストール必須)。assets/templates/sign-and-notarize.sh: リリースビルドを公証、ステープル、zip 化します。assets/templates/make_appcast.sh: アップデート用に Sparkle appcast エントリを生成します。assets/templates/setup_dev_signing.sh: 安定した開発コード署名 ID を作成します。assets/templates/launch.sh: パッケージ化された .app 用の簡単なランチャー。assets/templates/version.env: パッケージ化スクリプトで使用されるバージョンファイルの例。assets/templates/bootstrap/: 最小限の SwiftPM macOS アプリスケルトン(Package.swift、Sources/、version.env)。
注記
- 権利と署名設定を明示的に保ち、テンプレートスクリプトを編集して再実装しないようにします。
- Sparkle をアップデートに使用しない場合は Sparkle ステップを削除します。
- Sparkle はバンドルビルド番号(
CFBundleVersion)に依存するため、各アップデートでversion.env内のBUILD_NUMBERを増加させる必要があります。 - メニューバーアプリの場合、パッケージ化時に
MENU_BAR_APP=1を設定してLSUIElementを Info.plist に出力します。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dimillian
- リポジトリ
- dimillian/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/dimillian/skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。