skills/superpowers/using-git-worktrees/SKILL.md
当你要开始需要与当前 workspace 隔离的 feature 开发,或在执行 implementation plan 之前使用:创建隔离的 git worktree,并包含目录选择与安全校验。
npx skillsauth add lyfe2025/lyfes-coding-skills using-git-worktreesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
git worktree 能在同一个 repo 上创建多个隔离工作区,让你同时在多个分支工作而无需频繁切分支。
核心原则: 系统化目录选择 + 安全校验 = 可靠隔离。
开始时宣告: “我正在使用 using-git-worktrees skill 来创建隔离工作区。”
按以下优先级顺序选择 worktree 目录:
# 按优先级检查
ls -d .worktrees 2>/dev/null # 首选(隐藏目录)
ls -d worktrees 2>/dev/null # 备选
如果找到: 使用该目录;如果两个都存在,以 .worktrees 为准。
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
如果已指定偏好: 不用问,直接按它执行。
如果没有现成目录,也没有 CLAUDE.md 偏好:
没找到 worktree 目录。你希望我把 worktree 放在哪?
1. .worktrees/(项目内,隐藏目录)
2. ~/.config/superpowers/worktrees/<project-name>/(全局位置)
你选哪一个?
创建 worktree 前必须验证该目录被 git ignore:
# 检查目录是否被忽略(同时尊重 local/global/system gitignore)
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
如果没有被忽略:
按规则“坏的立刻修”:
.gitignore 加入对应行为什么关键: 防止 worktree 内容被意外纳入 repo 追踪并被提交。
无需 .gitignore 校验——它在项目目录之外。
project=$(basename "$(git rev-parse --show-toplevel)")
# 计算完整路径
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
# 创建 worktree 并新建分支
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
自动检测并运行适配的依赖安装/初始化:
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if [ -f Cargo.toml ]; then cargo build; fi
# Python
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
# Go
if [ -f go.mod ]; then go mod download; fi
跑测试确保 worktree 起点干净:
# 示例:使用项目实际的测试命令
npm test
cargo test
pytest
go test ./...
如果测试失败: 展示失败并询问要继续还是先调查。
如果测试通过: 汇报“可以开始”。
Worktree 已就绪:<full-path>
测试通过(<N> tests,0 failures)
可以开始实现:<feature-name>
| 情况 | 操作 |
|------|------|
| .worktrees/ 存在 | 使用它(并验证已 ignore) |
| worktrees/ 存在 | 使用它(并验证已 ignore) |
| 两者都存在 | 使用 .worktrees/ |
| 都不存在 | 查 CLAUDE.md → 询问用户 |
| 目录未被 ignore | 加到 .gitignore 并提交 |
| baseline 测试失败 | 展示失败并询问 |
| 无 package.json/Cargo.toml | 跳过依赖安装 |
git check-ignore你:我正在使用 using-git-worktrees skill 来创建隔离工作区。
[检查 .worktrees/ - 存在]
[验证已 ignore - git check-ignore 确认 .worktrees/ 被忽略]
[创建 worktree:git worktree add .worktrees/auth -b feature/auth]
[运行 npm install]
[运行 npm test - 47 passing]
Worktree 已就绪:/Users/jesse/myproject/.worktrees/auth
测试通过(47 tests,0 failures)
可以开始实现 auth feature
Never:
Always:
会被调用自:
brainstorming(Phase 4):设计确认后进入实现时要求使用常与其配合:
finishing-a-development-branch:工作完成后的清理executing-plans / subagent-driven-development:在该 worktree 中执行计划tools
在编写 skill 内容、验证 skill 是否有效、或需要用 TDD 方法测试 skill 能否被正确遵守时使用。
tools
当你有 spec/requirements 且任务需要多步推进时使用;在动代码之前先写出可执行的 implementation plan。
tools
在你准备声称“已完成/已修复/已通过”之前使用(尤其在 commit 或提 PR 前):必须运行 verification 命令并核对输出;永远 Evidence before assertions。
tools
在任何对话开始时使用:建立“如何发现并使用 skills”的规则,要求在任何回应(包括澄清问题)之前先 invoke Skill tool。