SuperAPI AI 工具集

code-git-worktrees

编程与开发

查看项目

更新于 10-16 05:39

技能介绍

用途

该技能用于在开始需要与当前工作区隔离的功能开发时,创建独立的 Git worktree。Git worktree 允许在共享同一仓库的前提下,同时检出多个分支到不同目录,从而无需切换分支即可并行工作。其核心原则是:系统化的目录选择 + 安全性验证 = 可靠的隔离。

主要能力

  • 目录选择:按优先级自动确定 worktree 的存放位置。首先检查项目内是否已存在 .worktrees(首选,隐藏目录)或 worktrees(备选)目录;若存在则直接使用,两者同时存在时 .worktrees 优先。若不存在,则检查 AGENTS.md 中是否指定了 worktree 目录偏好;若仍未找到,则询问用户选择项目本地隐藏目录 .worktrees/ 或全局位置 ~/.config/superpowers/worktrees/<project-name>/。
  • 安全性验证:对于项目本地目录,创建前必须使用 git check-ignore 验证该目录已被忽略,防止 worktree 内容被意外提交到仓库。若未被忽略,则按“立即修复损坏之处”的原则,将相应条目加入 .gitignore 并提交,然后再继续创建。全局目录位于项目之外,无需此验证。
  • 创建与初始化:检测项目名称,根据所选位置确定完整路径,使用 git worktree add "$path" -b "$BRANCH_NAME" 创建带新分支的 worktree 并进入该目录。随后自动检测项目类型并运行相应安装命令:Node.js(npm install)、Rust(cargo build)、Python(pip install -r requirements.txt 或 poetry install)、Go(go mod download)。
  • 基线验证:运行项目对应的测试命令(如 npm test、cargo test、pytest、go test ./...)以确保 worktree 起始状态干净。若测试失败,报告失败并询问是否继续或调查;若通过,则报告就绪。
  • 结果报告:输出 worktree 的完整路径、测试通过数量及失败数,并提示已准备好实现指定功能。

使用方式

该技能由需要隔离工作区的其他技能调用,或在用户明确请求 worktree 设置时使用,也适用于可能污染当前工作区的长时间实现任务之前。使用时会在开始时声明:“I'm using the using-git-worktrees skill to set up an isolated workspace.” 随后按上述流程执行。

适用场景

  • 开始需要与当前工作区隔离的功能开发。
  • 需要同时处理多个分支而不切换当前工作区。
  • 长时间运行、可能污染当前工作区的实现任务。
  • 与 stacked-commit 技能配合,在多个分支间管理堆叠提交。

限制与注意事项

  • 项目本地目录必须验证已被忽略,否则需先修复 .gitignore 并提交。
  • 不得跳过基线测试验证;测试失败时不得未经询问就继续。
  • 目录位置不明确时不得假设,必须遵循“已有目录 > AGENTS.md > 询问用户”的优先级。
  • 不得跳过 AGENTS.md 检查。
  • 若项目没有 package.json、Cargo.toml 等文件,则跳过依赖安装。
  • 硬编码安装命令会破坏使用不同工具的项目,因此必须从项目文件自动检测。