关于 isolate-workspace
用于为功能开发准备隔离工作区,并确认起点干净的技能。它先检查现有隔离状态,优先使用运行环境的原生机制,否则回退到 Git worktree,并安装依赖、运行基线测试。
主要功能
- 01检测现有链接 worktree
- 02优先使用原生隔离机制
- 03回退时创建 Git worktree
- 04根据项目文件安装依赖
- 05运行测试检查基线
适用场景
- 01将功能开发与当前检出隔离
- 02仅在基线测试通过后开始工作
- 03依据仓库清单配置工作区
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jayden-dang/ skills --skill isolate-workspace安装后在 Claude Code 中输入/isolate-workspace确认已加载。
附带文件eval.jsonTESTS.md
详细介绍
隔离工作区
为功能开发提供隔离的工作区,并确保起点干净。优先顺序:检测已有的隔离环境 → 使用运行环境原生的工作区工具 → 手动回退到 git worktree。切勿与运行环境冲突。
步骤 0 — 检测并征求同意
检查你是否已经在一个关联的工作树中:
GIT_DIR=$(cd "$(git rev-parse --git-dir)" && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" && pwd -P)
GIT_DIR != GIT_COMMON→ 很可能是关联的工作树,但请先排除子模块:如果git rev-parse --show-superproject-working-tree输出了路径,说明你位于子模块中——将其视为普通检出。否则,你已处于隔离环境中:报告路径和分支,跳过创建,前往步骤 2。GIT_DIR == GIT_COMMON→ 普通检出。如果用户已明确说明工作树偏好,请默默照做。如果没有,请询问:“要我在隔离的工作树中设置吗?这样可以保持你当前的分支不受影响。”如果用户拒绝 → 在当前目录中工作,前往步骤 2。
完成条件:确认自己处于上述三种情况之一;如果要创建工作树,已征得同意。
步骤 1 — 创建工作区
1a. 优先使用原生工具。 如果运行环境提供工作区/工作树机制(例如名为 EnterWorktree 的工具、/worktree 命令或 --worktree 标志),请使用它并前往步骤 2。原生工具会自行管理位置、分支和清理;同时创建手动工作树会留下运行环境无法识别的虚假状态。仅在没有原生工具时才使用回退方案。
1b. Git 回退方案。 按优先级选择目录:
- 用户明确指定的目录——始终优先
- 仓库根目录中已有的
.worktrees/ - 已有的
worktrees/(如果两者都存在,则优先使用.worktrees/) - 已有的
.isolate-workspace/(旧目录——复用它;不要新建第二个父目录) - 已有的
isolate-workspace/(旧目录) - 以上都不存在 → 创建
.worktrees/
将所选目录赋给 $DIR,并在下面的每条命令中使用它——只有命令遵循优先级列表,上述优先级才有意义:
DIR=.worktrees # or DIR=worktrees / a legacy isolate-workspace dir if that existing dir was selected above
在项目本地目录中创建任何内容之前,你必须确认该目录已被 git 忽略。将此条目保留为未提交的工作树更改——git 会立即应用它;而在此处提交 .gitignore 会将提交写入用户的当前分支,这正是本技能承诺不会触碰的内容:
git check-ignore -q "$DIR" || printf '%s/\n' "$DIR" >> .gitignore
然后创建并进入:
git worktree add "$DIR/<branch-name>" -b "<branch-name>"
如果创建时遇到沙盒/权限错误,请告知用户,并改为在当前目录中工作。
完成条件:你已进入工作区(或已说明无法进入的原因)。
步骤 2 — 安装依赖项
根据锁文件/清单自动检测包管理器并运行安装命令:pnpm-lock.yaml → pnpm,bun.lock* → bun,yarn.lock → yarn,package-lock.json/裸 package.json → npm,Cargo.toml → cargo build,uv.lock → uv,poetry.lock → poetry,requirements.txt → pip,go.mod → go mod download。没有清单 → 跳过。
步骤 3 — 干净基线
使用 docs/agents/project.md 中的命令运行测试套件(文件缺失 → 说明情况、建议使用 configure-repo,并采用该生态系统的默认测试运行器)。
- 基线通过 → 继续。
- 基线失败 → 停止并在继续前询问用户。从失败的基线开始,就无法区分你的错误和已有问题。
报告
Workspace ready at <absolute path> (branch <name>)
Baseline: <N> tests passing, 0 failures
Ready to start <task>.
红线 — 绝不允许
- 步骤 0 已确认你位于工作树中时,仍创建工作树
- 原生工具可用时,使用
git worktree add - 未检查忽略规则,就创建项目本地工作树目录
- 跳过基线测试,或在基线失败时未经询问就继续