为新功能开发创建隔离工作区,避免影响当前代码并便于并行实现。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "using-git-worktrees" 技能: 1. 下载 https://raw.githubusercontent.com/obra/superpowers/main/skills/using-git-worktrees/SKILL.md 2. 保存为 ~/.claude/skills/using-git-worktrees/SKILL.md 3. 装好后重载技能,告诉我可以用了
我要开发一个新的用户通知功能,请先帮我创建隔离的 Git 工作区,并基于 feature/user-notifications 分支开始工作,避免影响当前目录中的任务。
创建并切换到独立工作区的操作建议或命令,确保新功能在隔离环境中开发。
在执行下面的实现计划前,先检查是否已有合适的隔离工作区;如果没有,请使用原生工具或 git worktree 创建一个,再继续后续实现步骤。
先完成工作区检查与创建,再给出后续实施步骤,确保计划在独立环境中执行。
我正在当前目录开发功能,但还要并行修复一个紧急 Bug。请为 bugfix/login-timeout 创建单独工作区,并告诉我如何在两个工作区之间切换协作。
提供创建 Bug 修复工作区的方法,以及管理和切换多个工作区的清晰说明。
Ensure work happens in an isolated workspace. Prefer your platform's native worktree tools. Fall back to manual git worktrees only when no native tool is available.
Core principle: Detect existing isolation first. Then use native tools. Then fall back to git. Never fight the harness.
Announce at start: "I'm using the using-git-worktrees skill to set up an isolated workspace."
Before creating anything, check if you are already in an isolated workspace.
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)
Submodule guard: GIT_DIR != GIT_COMMON is also true inside git submodules. Before concluding "already in a worktree," verify you are not in a submodule:
# If this returns a path, you're in a submodule, not a worktree — treat as normal repo
git rev-parse --show-superproject-working-tree 2>/dev/null
If GIT_DIR != GIT_COMMON (and not a submodule): You are already in a linked worktree. Skip to Step 3 (Project Setup). Do NOT create another worktree.
Report with branch state:
<path> on branch ."<name><path> (detached HEAD, externally managed). Branch creation needed at finish time."If GIT_DIR == GIT_COMMON (or in a submodule): You are in a normal repo checkout.
Has the user already indicated their worktree preference in your instructions? If not, ask for consent before creating a worktree:
"Would you like me to set up an isolated worktree? It protects your current branch from changes."
Honor any existing declared preference without asking. If the user declines consent, work in place and skip to Step 3.
You have two mechanisms. Try them in this order.
The user has asked for an isolated workspace (Step 0 consent). Do you already have a way to create a worktree? It might be a tool with a name like EnterWorktree, WorktreeCreate, a /worktree command, or a --worktree flag. If you do, use it and skip to Step 3.
Native tools handle directory placement, branch creation, and cleanup automatically. Using git worktree add when you have a native tool creates phantom state your harness can't see or manage.
Only proceed to Step 1b if you have no native worktree tool available.
Only use this if Step 1a does not apply — you have no native worktree tool available. Create a worktree manually using git.
Follow this priority order. Explicit user preference always beats observed filesystem state.
Check your instructions for a declared worktree directory preference. If the user has already specified one, use it without asking.
Check for an existing project-local worktree directory:
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
If found, use it. If both exist, .worktrees wins.
Check for an existing global directory:
project=$(basename "$(git rev-parse --show-toplevel)")
ls -d ~/.config/superpowers/worktrees/$project 2>/dev/null
If found, use it (backward compatibility with legacy global path).
If there is no other guidance available, default to .worktrees/ at the project root.
MUST verify directory is ignored before creating worktree:
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
If NOT ignored: Add to .gitignore, commit the change, then proceed.
Why critical: Prevents accidentally committing worktree contents to repository.
…
在宣称任务完成或修复成功前,先执行验证并用结果佐证结论。
基于代码差异生成规范化 Git 提交信息,并支持按逻辑分组提交