mcpField
I
isolate

isolate

github.com/camacho开发391 次安装
代码仓库

关于 isolate

isolate 是用于创建或更新 Git worktree 的开发技能,帮助 Agent 将任务改动与主检出目录隔离。它还涵盖依赖安装和基线测试检查。

主要功能

  1. 01基于已获取的远程分支创建 worktree
  2. 02从 reflog 检测父分支
  3. 03更新已有的链接 worktree
  4. 04根据项目清单安装依赖
  5. 05开始工作前运行基线测试

适用场景

  1. 01基于最新父分支开始任务
  2. 02继续工作前更新链接 worktree
  3. 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/ 存在使用它
2worktrees/ 存在使用它
3两者都存在优先使用 .worktrees/
4CLAUDE.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.yamlpnpm install
yarn.lockyarn install
package-lock.jsonnpm install
package.json(无锁文件)安装前先询问
Cargo.tomlcargo build
requirements.txtpip install -r requirements.txt
pyproject.tomlpoetry install
go.modgo 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(工作完成后清理工作树)

评论

支持 Markdown