用途:该技能面向需要与当前工作区隔离的功能开发场景,在执行实施计划或任何需要独立工作区的任务前,创建一个共享同一仓库、但检出独立分支的 Git worktree。核心原则是系统化选择目录并做安全校验,以获得可靠的隔离。
目录选择:按优先级处理。先检查项目中是否存在 .worktrees(首选、隐藏)或 worktrees(备选),存在则直接使用;两者都在时 .worktrees 优先。其次读取 CLAUDE.md 中关于 worktree 目录的偏好,若有则不再询问。若都不存在,则询问用户选择 .worktrees/(项目内隐藏)或 ~/.config/superpowers/worktrees/<项目名>/(全局位置)。
安全校验:对项目内目录(.worktrees 或 worktrees),创建前必须用 git check-ignore -q 验证该目录已被忽略(遵循本地、全局与系统 gitignore)。若未被忽略,则向 .gitignore 添加对应行并提交,然后继续创建,以避免 worktree 内容被误提交、污染 git status。全局目录在项目之外,无需此校验。
创建步骤:先通过 git rev-parse --show-toplevel 取仓库根目录的 basename 作为项目名;再按所选位置拼出完整路径,执行 git worktree add "$path" -b "$BRANCH_NAME" 并切换到该目录;随后自动检测项目类型并运行安装:存在 package.json 时执行 npm install,Cargo.toml 时 cargo build,requirements.txt 时 pip install -r,pyproject.toml 时 poetry install,go.mod 时 go mod download;然后运行项目对应的基线测试(如 npm test、cargo test、pytest、go test ./...),测试通过则报告就绪,失败则报告并询问是否继续或排查。
使用方式:技能开始时会声明“正在使用 using-git-worktrees 技能设置隔离工作区”,随后按上述流程执行并报告 worktree 的完整路径、测试数量与结果。参考行为包括:.worktrees 存在则使用并验证忽略;两者都存在用 .worktrees;都无则查 CLAUDE.md 再询问用户;目录未忽略则加入 .gitignore 并提交;基线测试失败则报告并询问;无 package.json/Cargo.toml 等则跳过依赖安装。
适用场景:需要与当前工作区隔离的功能开发、执行实施计划、子代理驱动开发等;常与 brainstorming(设计获批后进入实施时必需)、finishing-a-development-branch(完成后清理必需)以及 executing-plans、subagent-driven-development 配合使用。
限制与注意事项:不应在未验证项目内目录已被忽略时创建 worktree,不应跳过基线测试验证,不应在测试失败时未经询问就继续,不应在目录位置有歧义时自行假定,也不应跳过 CLAUDE.md 检查;同时避免硬编码安装命令,应依据项目文件自动检测。