用途
该技能用于在开始需要与当前工作区隔离的功能开发时,创建独立的 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等文件,则跳过依赖安装。 - 硬编码安装命令会破坏使用不同工具的项目,因此必须从项目文件自动检测。