xcode-project-setup
iOS のプロジェクトに Swift Package を足す作業を、同梱の Swift の道具に任せさせる。プロジェクトのファイル(.pbxproj)を文字の置き換えや Ruby で直に書き換えさせず、依存の追加と製品の結び付けと、Firebase に要るリンカの設定までを一度に行わせる
npx skills add firebase/agent-skills/xcode-project-setup入れる前にこのスキルがすること・注意点・SKILL.md の原文を確かめてください。解析は安全性の判定ではありません。
- インストール
- 133,577
- 実用度
- 49
- GitHub star
- 505
- 最終更新
- 2026/11/5
頼み方の例
そのままコピーして使えますxcode-project-setupスキルを使って、この Xcode プロジェクトに Firebase の FirebaseCore と FirebaseAuth を足す手順を示してください。最新の版の確かめ方と、実行するコマンドを先に見せ、プロジェクトの書き換えは私が確認してからにしてください。
対象のファイルや状況は、ご自身の作業に合わせて置き換えてください。
このスキルがすること
SKILL.md の記述から機械的に抽出- シェルコマンドを実行する記述があります
- ファイルを書き換える記述があります
これは安全性の判定ではありません。 SKILL.md にそう書かれているという事実だけを並べています。実際に問題があるかは使い方と文脈で決まるため、当サイトでは断定しません。導入前に SKILL.md の原文を確認してください。
SKILL.md の規模
コードブロックの言語: bash
いつ使うか
iOS のプロジェクトに、Firebase や Alamofire のような Swift Package の依存を入れるときに効きます。説明文は、iOS のプロジェクトに依存を入れる必要があるときは、いつでもこのスキルを使え、としています。
同じ公開元の Firebase のスキルが、iOS の手順の中でこのスキルを名指しします。firebase-basics、firebase-auth-basics、firebase-ai-logic-basics の iOS の資料が、SDK の追加をここに任せています。
- 最初に守る決まり
- 5 つ
- 同梱ファイル(Swift の道具一式)
- 4 件
- 依存の追加と製品の結び付けを済ませるコマンドの数
- 1 回
同梱の数は 2026-10-22 時点で、SKILL.md 自身を除いて数えています。
道具が一度にやること
Xcode の画面で Swift Package を足すときは、パッケージの置き場所を足す作業と、対象のターゲットの「Frameworks, Libraries, and Embedded Content」に製品を結び付ける作業の 2 つが要ります。同梱の xcode_spm_setup は、その両方を 1 回のコマンドで行います。
- 設定ファイルを足す(任意)
--plistを渡すと、GoogleService-Info.plistをプロジェクトに足し、リソースのビルドの段に入れる - パッケージを足す置き場所の URL と版の条件で依存を足す。すでにあれば足さない
- 製品を結び付ける渡した製品をターゲットの Frameworks の段に結ぶ。すでに結ばれていれば飛ばす
- Firebase のリンカの設定製品名に Firebase を含むと
OTHER_LDFLAGSに-ObjCを足す - 書き出す
.xcodeprojに変更を書き出す
同じものがすでにあれば飛ばすので、もう一度流しても重複しない作り、と本文は書いています。
コマンドの形
swift run --package-path に同梱の道具の場所を渡し、プロジェクト、パッケージの URL、版、製品名の順に並べます。Firebase の例は、firebase-ios-sdk の URL と --plist、それに FirebaseCore・FirebaseAuth・FirebaseFirestore を渡す形です。
使わないほうがいいとき
まだ Xcode のプロジェクトが無いとき
.xcodeproj も .xcworkspace も無い場所では、エージェントは作らずに、利用者に空のプロジェクトを Xcode で作るよう頼み、作ったと言われるまで待つ決まりです。プロジェクトを一から組ませたいなら、先に Xcode で作っておく必要があります。
Swift のファイルや画像を足すだけのとき
新しい Xcode のプロジェクトはフォルダの同期に対応していて、.swift やリソースは正しいフォルダに書くだけで取り込まれます。本文は、ファイルを足すために .pbxproj を手で書き換えるなと明記しています。このスキルの出番はパッケージの依存のほうです。
macOS でない環境
説明文の互換性の欄は、macOS と手元の Swift を前提にしています。Swift が見つからなければ止まり、xcode-select --install などで入れるよう勧めるか、入れてよいかを聞く、と書かれています。
注意点
プロジェクトのファイルを書き換える
SKILL.md の解析では、シェル実行(swift run)と書き換えの記述が見つかっています。同梱の道具は、実際に .xcodeproj の中身を書き換えて保存します。書き換える前に、プロジェクトを Git に入れておくと戻せます。
道具が書き換えるのは、最初のターゲットだけ
同梱の Swift のコードを読むと、製品を結ぶ先は、プロジェクトの最初のネイティブのターゲットです。アプリのほかに拡張やテストのターゲットがあるプロジェクトでは、思った先に結ばれたかを Xcode で確かめてください。これは本文の説明ではなく、同梱のコードの動きです。
-ObjC も、その最初のターゲットのビルド設定すべてに足します。
Firebase には -ObjC が欠かせない
製品に FirebaseCrashlytics を含めると、道具はさらに、デバッグ情報の形式を dSYM 付きに変え、Crashlytics の実行スクリプトの段を足します。これも同梱のコードの動きで、本文には書かれていません。
使ってよい言語が決まっている
本文は、Ruby(xcodeproj の gem を含む)を使うことを厳しく禁じています。同梱の道具の外で手を入れる必要があるときは Swift で書き、どうしても無理なときだけ Node.js か TypeScript を使う、という順です。文字の置き換えや sed で .pbxproj を直に直すことも禁じています。
版は最新を確かめてから
本文は、Firebase の iOS SDK は常に最新の版を使い、リリースの頁で番号を確かめてから渡せ、と書いています。例の 11.0.0 は置き換える前提の値です。同梱の道具は、渡した版を「次の大きな版の手前まで」の条件として足します。
初回は依存を取りに行く
同梱の道具は、Xcode のプロジェクトを読み書きする XcodeProj のパッケージ(8.27.7 以降の 8 系)に頼っています。swift run の初回には、このパッケージと、その依存を GitHub から取ってきてビルドします。初回は、ネットにつながらない環境では動きません。
インストール数の推移
日次で記録9月18日 〜 11月7日(49日分)
インストール数と 1 日あたりの増加は Skillselion が に集計した値です。上流の更新は数日おきなので、前日比ではありません。GitHub star と最終更新は に GitHub から取得しました。
併用すると強いスキル
firebase-ai-logic-basics
Firebase AI Logic で、アプリから Gemini を直接呼ぶ仕組みを組ませる。Web・Android・iOS・Flutter の初期化、画像や PDF の入力、会話、JSON の出力。本番の前に App Check を必須にさせる。Firebase 公式
firebase-auth-basics
Firebase の認証を入れる。CLI で有効にできる方式は 3 つだけで、残りは管理画面
firebase-basics
Firebase の CLI の導入とプロジェクトの選択だけを担う入口。残り 12 件を呼び込む役も持つ
よくある質問
Firebase 以外のパッケージにも使えますか
使えます。本文の 1 つ目の例は Alamofire で、--plist を付けずに URL と版と製品名を渡す形です。-ObjC の自動の追加は、製品名に Firebase を含むときだけ起きます。
GoogleService-Info.plist はどこに置かれますか
道具は、ターゲットと同じ名前のグループがあればそこに、無ければいちばん上のグループに足し、リソースのビルドの段に入れます。同じ名前のファイルがすでにあれば足しません。これは同梱のコードの動きです。
すでに入れたパッケージに製品を足したいときは
同じ URL で、足したい製品名を並べて流し直します。パッケージがすでにあればそれを使い、結ばれていない製品だけを結びます。
なぜ Ruby の xcodeproj を使わないのですか
本文は理由を書かず、禁止として決めているだけです。代わりに同梱の Swift の道具を使い、それで足りないときも Swift で書くよう求めています。