用途
该技能用于在使用 Git worktrees 开始隔离的功能开发时提供结构化的工作流。Git worktrees 可以创建共享同一仓库的隔离工作空间,允许在不切换分支的情况下同时处理多个分支。其核心原则是:系统的目录选择 + 安全验证 = 可靠的隔离。
目录选择流程
按照以下优先级顺序执行:
- 检查现有目录:以优先级顺序运行
ls -d .worktrees(首选,隐藏目录)和ls -d worktrees(备选)。如果找到则使用该目录;如果两者都存在,.worktrees优先。 - 检查 CLAUDE.md:运行
grep -i "worktree.*director" CLAUDE.md。如果指定了偏好,直接使用而不询问。 - 询问用户:如果既没有目录也没有 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 验证,因为它完全位于项目之外。
创建步骤
- 检测项目名称:
project=$(basename "$(git rev-parse --show-toplevel)") - 创建工作树:根据位置确定完整路径,然后运行
git worktree add "$path" -b "$BRANCH_NAME"并进入该目录。 - 运行项目初始化:自动检测并运行适当的设置命令,如 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 ./...。如果测试失败,报告失败并询问是继续还是调查;如果测试通过,则报告就绪。 - 报告位置:输出工作树准备就绪的完整路径、测试通过情况以及准备实现的功能名称。
快速参考
| 情况 | 操作 |
|---|---|
.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 配对使用(工作完成后清理时必须使用)。