Xcode Project Setup 是一个用于安全配置 Xcode 项目的代理技能,核心目标是向 Xcode 项目(.pbxproj)添加 Swift Package 依赖并链接所需文件,同时避免直接对工程文件进行危险的文本处理。
用途 该技能服务于 iOS 项目的依赖安装与工程配置场景,尤其是需要引入 Swift Package(如 Alamofire)或 Firebase iOS SDK 套件时,帮助以受控方式完成依赖添加与模块链接。
主要能力
- 通过随技能提供的原生 Swift 脚本 scripts/xcode_spm_setup 安全地安装 SPM 包并链接可选配置文件(如 GoogleService-Info.plist)。
- 自动完成两个步骤:添加包仓库依赖,以及将具体产品模块显式链接到主目标的 Frameworks 构建阶段,无需手动链接。
- 在添加 Firebase 产品时,自动向 OTHER_LDFLAGS 注入 -ObjC 标记,防止静态链接剥离依赖 Objective-C 分类与 +load 方法,从而避免运行时崩溃(如 FirebaseAuth/Auth.swift:167 的崩溃)。
- 脚本具有幂等性,会自动跳过项目中已存在的包或文件链接。
- 支持将 plist 配置文件链接到资源构建阶段。
关键规则与限制
- 严禁使用 Ruby、Rails 或任何 Ruby gem(包括 xcodeproj gem),不得编写或执行 Ruby 脚本。
- 现代 Xcode 支持文件夹同步:添加新的 .swift 源码或资源文件时,只需写入磁盘正确目录,会自动纳入项目;不得为添加文件而手动修改 .pbxproj。
- 如必须编写脚本操作项目环境,必须使用 Swift;仅在 Swift 完全不可行时,才可作为最后手段使用 Node.js 或 TypeScript。
- 不得使用原始文本解析、sed 或 Ruby 脚本直接修改 .pbxproj。
- 使用前必须运行 swift --version 验证工具链;若未找到 Swift 命令,必须停止并建议用户安装 Swift 工具链(如 macOS 上执行 xcode-select --install),或询问是否可以代为安装,未安装 Swift 不得继续。
- 若目录中不存在 .xcodeproj 或 .xcworkspace,必须要求用户先在 Xcode 中手动创建空项目并确认后再继续。
- 使用 Firebase iOS SDK 时,应查阅 https://github.com/firebase/firebase-ios-sdk/releases 获取最新版本号,在命令中使用最新版本而非占位符;添加 Firebase 依赖时缺少 -ObjC 标记属于严重错误。
使用方式 先定位技能 scripts/xcode_spm_setup 目录的绝对路径,然后以如下签名运行原生 swift 命令: swift run --package-path <PATH_TO_SKILL>/scripts/xcode_spm_setup xcode_spm_setup <ProjectPath.xcodeproj> <RepoURL> <VersionRequirement> [--plist <Optional/Path/To/Config.plist>] <Product1> [Product2 ...]
示例一:通用包(Alamofire,无 --plist): swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/Alamofire/Alamofire 5.8.1 Alamofire
示例二:Firebase(需要 plist,并将 11.0.0 替换为 releases 页面的最新版本): swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/firebase/firebase-ios-sdk 11.0.0 --plist MyApp/GoogleService-Info.plist FirebaseCore FirebaseAuth FirebaseFirestore
适用场景 适用于需要为 iOS 工程安装 Swift Package 依赖、配置 Firebase SDK、链接配置文件等场景,尤其适合希望避免手工编辑 .pbxproj 或使用 Ruby 脚本的工程。
限制 该技能依赖本机 Swift 工具链,未安装 Swift 时无法运行;需要已有 Xcode 项目,无法自行创建新工程;具体安装命令、脚本行为以资料所述为准,其余功能、收费与价格信息暂未提供。