关于 isolate
isolate 是用于创建或更新 Git worktree 的开发技能,帮助 Agent 将任务改动与主检出目录隔离。它还涵盖依赖安装和基线测试检查。
主要功能
- 01基于已获取的远程分支创建 worktree
- 02从 reflog 检测父分支
- 03更新已有的链接 worktree
- 04根据项目清单安装依赖
- 05开始工作前运行基线测试
适用场景
- 01基于最新父分支开始任务
- 02继续工作前更新链接 worktree
- 03实现前检查项目测试
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ camacho/ ai-skills --skill isolate安装后在 Claude Code 中输入/isolate确认已加载。
详细介绍
Isolate
从最新的 origin/main 创建一个分支工作树,确保任务不会从过时的代码开始。
宣布:“正在为此任务设置隔离的工作树。”
输入
- **分支名称:**来自
/orient第 1 步(例如,feat/auth、fix/login-crash)。如果未提供,请询问。 - **基础引用:**当前分支的父分支(通过 reflog 检测,默认为
main)。仅在明确要基于其他分支堆叠时才覆盖。
检测父分支
父分支(此分支最终将合并到的分支)由 reflog 确定:
PARENT_BRANCH=$(
git reflog show HEAD --pretty=format:'%gs' \
| grep "^branch: Created from" \
| head -1 \
| sed 's/branch: Created from //' \
| sed 's|^origin/||'
)
PARENT_BRANCH=${PARENT_BRANCH:-main}
如果分支是从分离的 HEAD 创建的,或是在没有 reflog 的 Web 会话中创建的,则返回空值——此时回退到 main。在正常的本地开发中,99% 的情况下都能正确检测。
已经在工作树中?
如果会话的 CWD 已位于关联工作树中(而非主工作树),则刷新分支,而不是创建新分支:
WORKTREE="<absolute-path-to-current-worktree>"
git -C "$WORKTREE" fetch origin "$PARENT_BRANCH"
git -C "$WORKTREE" merge "origin/$PARENT_BRANCH"
如果发生冲突,请停止并告知用户。不要自动解决冲突。
刷新后,跳转到 基线测试。
第 1 步:选择目录
| 优先级 | 检查 | 操作 |
|---|---|---|
| 1 | .worktrees/ 存在 | 使用它 |
| 2 | worktrees/ 存在 | 使用它 |
| 3 | 两者都存在 | 优先使用 .worktrees/ |
| 4 | CLAUDE.md 指定了目录 | 遵循指定偏好 |
| 5 | 都不存在 | 询问用户(推荐 .worktrees/) |
第 2 步:验证已被 git 忽略
git check-ignore -q .worktrees
如果未被忽略,继续之前先修复:
echo ".worktrees" >> .gitignore
git add .gitignore
git commit -m "chore: gitignore worktree directory"
第 3 步:获取并创建
基于过时的本地父分支创建工作树会引入固有的合并冲突。务必先获取,并始终从 origin/$PARENT_BRANCH(而非本地副本)创建分支。
REPO_ROOT="$(git rev-parse --show-toplevel)"
WORKTREE_DIR="$REPO_ROOT/.worktrees/<name>"
git fetch origin "$PARENT_BRANCH"
git worktree add "$WORKTREE_DIR" -b <prefix>/<name> "origin/$PARENT_BRANCH"
立即锁定工作树,避免长时间运行的 Agent 会话期间 git worktree prune 将其清理。从主仓库上下文(而非工作树)中运行:
git -C "$REPO_ROOT" worktree lock --reason "Agent session in progress" "$WORKTREE_DIR"
任务结束时,/ship 会在移除工作树前将其解锁。
Claude Code:可选择调用 EnterWorktree({path}),将会话 CWD 移动到新工作树中。
第 4 步:安装依赖项
根据清单文件自动检测:
| 文件 | 命令 |
|---|---|
pnpm-lock.yaml | pnpm install |
yarn.lock | yarn install |
package-lock.json | npm install |
package.json(无锁文件) | 安装前先询问 |
Cargo.toml | cargo build |
requirements.txt | pip install -r requirements.txt |
pyproject.toml | poetry install |
go.mod | go mod download |
在工作树路径下运行:pnpm --dir "$WORKTREE_DIR" install
第 5 步:基线测试
运行项目的测试套件。如果测试失败,请报告失败情况并询问是否继续。不要默默继续。
报告
Worktree ready at <absolute-path>
Branch: <prefix>/<name> (from origin/main @ <short-sha>)
Tests: <N> passing
路径规范
cd 不会在 Claude Code 的 Bash 调用之间保留状态。所有文件操作都使用绝对路径,Git 命令使用 git -C <abs-path>。
集成
由以下命令调用: /task(第 2 步)、/brainstorming、/build
配合使用: /ship(工作完成后清理工作树)