SuperAPI AI 工具集

using-git-worktrees

编程与开发

查看项目

更新于 10-16 10:31

技能介绍

用途

该技能用于在使用 Git worktrees 开始隔离的功能开发时提供结构化的工作流。Git worktrees 可以创建共享同一仓库的隔离工作空间,允许在不切换分支的情况下同时处理多个分支。其核心原则是:系统的目录选择 + 安全验证 = 可靠的隔离。

目录选择流程

按照以下优先级顺序执行:

  1. 检查现有目录:以优先级顺序运行 ls -d .worktrees(首选,隐藏目录)和 ls -d worktrees(备选)。如果找到则使用该目录;如果两者都存在,.worktrees 优先。
  2. 检查 CLAUDE.md:运行 grep -i "worktree.*director" CLAUDE.md。如果指定了偏好,直接使用而不询问。
  3. 询问用户:如果既没有目录也没有 CLAUDE.md 偏好,则询问用户希望在何处创建工作树,提供两个选项:.worktrees/(项目本地,隐藏)或 ~/.config/superpowers/worktrees/<project-name>/(全局位置)。

安全验证

对于项目本地目录(.worktrees 或 worktrees),必须在创建工作树之前验证目录已被忽略:

git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null

如果未被忽略,按照“立即修复损坏的事物”原则:向 .gitignore 添加适当的行、提交更改,然后继续创建工作树。这一点至关重要,可防止意外将工作树内容提交到仓库。

对于全局目录(~/.config/superpowers/worktrees),无需进行 .gitignore 验证,因为它完全位于项目之外。

创建步骤

  1. 检测项目名称:project=$(basename "$(git rev-parse --show-toplevel)")
  2. 创建工作树:根据位置确定完整路径,然后运行 git worktree add "$path" -b "$BRANCH_NAME" 并进入该目录。
  3. 运行项目初始化:自动检测并运行适当的设置命令,如 Node.js(npm install)、Rust(cargo build)、Python(pip install -r requirements.txt 或 poetry install)、Go(go mod download)。
  4. 验证干净的基线:运行项目相应的测试命令,如 npm test、cargo test、pytest、go test ./...。如果测试失败,报告失败并询问是继续还是调查;如果测试通过,则报告就绪。
  5. 报告位置:输出工作树准备就绪的完整路径、测试通过情况以及准备实现的功能名称。

快速参考

情况 操作
.worktrees/ 存在 使用它(验证已被忽略)
worktrees/ 存在 使用它(验证已被忽略)
两者都存在 使用 .worktrees/
两者都不存在 检查 CLAUDE.md → 询问用户
目录未被忽略 添加到 .gitignore 并提交
基线测试失败 报告失败并询问
没有 package.json/Cargo.toml 跳过依赖安装

常见错误

  • 跳过忽略验证:会导致工作树内容被跟踪,污染 git 状态。修复方法:在创建项目本地工作树前始终使用 git check-ignore。
  • 假设目录位置:会导致不一致,违反项目约定。修复方法:遵循优先级:现有目录 > CLAUDE.md > 询问。
  • 在测试失败的情况下继续:无法区分新缺陷和已有问题。修复方法:报告失败,获取明确许可后再继续。
  • 硬编码设置命令:在使用了不同工具的项目上会失败。修复方法:从项目文件(如 package.json 等)自动检测。

示例工作流

宣布正在使用该技能设置隔离工作空间 → 检查 .worktrees/ 存在 → 验证已被忽略 → 创建工作树 git worktree add .worktrees/auth -b feature/auth → 运行 npm install → 运行 npm test(47 个通过)→ 报告工作树准备就绪的路径、测试通过情况和准备实现的功能。

红线

绝不:在未验证是否被忽略的情况下创建项目本地工作树;跳过基线测试验证;在测试失败且未询问的情况下继续;在目录位置不明确时假设位置;跳过 CLAUDE.md 检查。

始终:遵循目录优先级(现有 > CLAUDE.md > 询问);验证项目本地目录已被忽略;自动检测并运行项目设置;验证干净的测试基线。

集成

被以下技能调用:brainstorming(阶段 4,设计批准后必须使用)、subagent-driven-development(执行任何任务前必须使用)、executing-plans(执行任何任务前必须使用),以及任何需要隔离工作空间的技能。与 finishing-a-development-branch 配对使用(工作完成后清理时必须使用)。