mcpField
X
xc-dev

xc-dev

github.com/yjmeqt开发0412 次安装8 周前更新
代码仓库

关于 xc-dev

xc-dev 是面向 Xcode 项目的 Rust 任务运行器,通过 TOML 配置定义命名任务和项目变量。此技能指导 Agent 在 iOS 开发中发现、检查并运行这些任务。

主要功能

  1. 01通过 TOML 定义项目任务
  2. 02命令中的变量替换
  3. 03发现任务和变量
  4. 04配置有效性检查
  5. 05内置项目与模拟器工具

适用场景

  1. 01构建或测试 Xcode 项目
  2. 02运行已配置的项目任务
  3. 03检查任务配置和变量
  4. 04清理项目 DerivedData

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/yjmeqt/xc-dev --skill xc-dev

安装后在 Claude Code 中输入/xc-dev确认已加载。

详细介绍

xc-dev

xc-dev 是一个用于 Xcode 项目的 Rust 任务运行器。它会读取 .xc-dev/project.toml、 .xc-dev/simulator.toml 和 .xc-dev/tasks.toml,并运行命名任务(build、run、 test、test-package 等),同时替换 {{scheme}} / {{bundle_id}} / {{sim_id}} / {{derived_data}} / {{git_branch}}。

何时使用此技能

满足以下所有条件时启用:

  • 用户正在进行 iOS / Xcode 工作(构建、运行、测试、安装、启动、归档、日志流、 清理 DerivedData 等)。
  • 从 cwd 向上任意位置的项目目录中都存在 .xc-dev/ 目录(运行 ls -d .xc-dev 2>/dev/null 或逐级向上查找;如果存在 tasks.toml,则可确定应使用此技能)。

以下情况不要使用此技能,而应改用通用 Xcode 工具:

  • 项目没有 .xc-dev/,且用户没有要求进行配置。

先发现任务

在假定任务名称之前,先列出任务:

xc-dev               # bare form is shorthand for `xc-dev :list`
xc-dev :list

对于变量(scheme、bundle id、sim id、derived data 路径、git 分支等):

xc-dev :get scheme
xc-dev :get bundle_id
xc-dev :get sim_id
xc-dev :get derived_data
xc-dev :get sim.ipad.id      # qualified, non-default sim
xc-dev :get git_branch

检查配置以及每个任务的变量引用是否正确:

xc-dev :doctor

运行任务

xc-dev build
xc-dev build Release           # positional override of `args = ["config=Debug"]`
xc-dev test-package Networking
xc-dev -v build                # echo expanded command to stderr (handy for debugging)

退出代码:

  • 0 — 成功
  • 1 — 任务错误(配置无效、命令失败、变量未解析等)
  • 2 — CLI 解析错误(未知内置命令、缺少标志值等)

所需任务不存在时

优先向 .xc-dev/tasks.toml 添加任务,而不是自行构造 xcodebuild 调用。原因有二:

  1. 后续进行相同操作的人也能从中受益。
  2. 变量已经完成配置 — {{scheme}}、{{derived_data}} 等都能正确解析,无需重新推导。

向用户展示拟添加的任务,并在编辑前征求同意。

内置动词(速查表)

动词说明
xc-dev :proj init创建 .xc-dev/(通过 xcodebuild 自动检测 scheme / bundle_id)
xc-dev :list列出所有任务及其 desc
xc-dev :get <key>输出一个变量
xc-dev :doctor检查配置、每个任务的变量和依赖项
xc-dev :clean试运行:列出此项目的本地和系统 DerivedData
xc-dev :clean --yes删除它们(包括根目录下的 Packages;跳过 *.noindex)
xc-dev :sim bake将模拟器 UDID 解析到 simulator.toml 中

常见模式

启动并运行默认模拟器:

xc-dev run     # if the user has set up the example `run` task
# else manually:
xcrun simctl boot $(xc-dev :get sim_id) 2>/dev/null || true
xcrun simctl install $(xc-dev :get sim_id) $(xc-dev :get app_path)
xcrun simctl launch $(xc-dev :get sim_id) $(xc-dev :get bundle_id)

检查构建生成的应用程序包:

ls "$(xc-dev :get app_path)"

每个工作树使用独立的 DerivedData:

{{derived_data}} 默认为 {{xc_dev_dir}}/DerivedData,因此每个 git 工作树都有自己的构建缓存,互不干扰。

清理 DerivedData(本地和系统):

优先使用内置命令 — 不要只对本地 DerivedData 执行 rm -rf,也不要按文件夹名称手动扫描 ~/Library/Developer/Xcode/DerivedData:

xc-dev :clean          # dry-run
xc-dev :clean --yes    # delete local {{derived_data}} + system entries whose
                       # info.plist WorkspacePath is under this project root
                       # (main .xcodeproj and Packages/*)

如果项目有 clean 任务,且该任务封装了 :clean(并可选地封装 sim-delete),则优先使用 xc-dev clean。模拟器删除不属于 :clean 的内容。

参考文档

如果需要此技能未提供的更多细节,请向用户提供以下文档:

  • crates/xc-dev/docs/tasks.md — 完整的 Task DSL 参考
  • crates/xc-dev/docs/variables.md — 所有内置变量及其解析顺序
  • crates/xc-dev/docs/config.md — TOML 架构
  • crates/xc-dev/docs/examples.md — 任务配方示例

与其他技能的关系

  • xcodebuildmcp-cli — 专用于 UI 自动化、日志流和交互式调试,这些功能不在 xc-dev 的覆盖范围内。

评论

支持 Markdown