帮助开发者安全创建独立的 Git worktree 并智能选择目录
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "Using Git Worktrees" 技能: 1. 下载 https://raw.githubusercontent.com/obra/clank/main/skills/collaboration/using-git-worktrees/SKILL.md 2. 保存为 ~/.claude/skills/using-git-worktrees/SKILL.md 3. 装好后重载技能,告诉我可以用了
请为当前仓库创建一个新的 git worktree,用于开发 feature/login,目录名要清晰,并先检查是否存在同名分支或目录冲突。
返回安全检查结果,并创建指向新分支的独立 worktree 目录。
基于 main 创建一个 hotfix/payment-fix 的临时 git worktree,放到合适的目录下,并验证当前仓库状态是否适合创建。
生成适合热修复的独立工作目录,并确认创建过程安全无冲突。
请根据分支名称建议一个规范的 git worktree 目录路径,用于 feature/report-export,并说明为什么这样命名更易管理。
给出清晰的目录命名方案,并说明其在多分支开发中的管理优势。
Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.
Core principle: Systematic directory selection + safety verification = reliable isolation.
Announce at start: "I'm using the Using Git Worktrees skill to set up an isolated workspace."
Follow this priority order:
# Check in priority order
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
If found: Use that directory. If both exist, .worktrees wins.
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
If preference specified: Use it without asking.
If no directory exists and no CLAUDE.md preference:
No worktree directory found. Where should I create worktrees?
1. .worktrees/ (project-local, hidden)
2. ~/.clank-worktrees/<project-name>/ (global location)
Which would you prefer?
MUST verify .gitignore before creating worktree:
# Check if directory pattern in .gitignore
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
If NOT in .gitignore:
Per Jesse's rule "Fix broken things immediately":
Why critical: Prevents accidentally committing worktree contents to repository.
No .gitignore verification needed - outside project entirely.
project=$(basename "$(git rev-parse --show-toplevel)")
# Determine full path
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.clank-worktrees/*)
path="~/.clank-worktrees/$project/$BRANCH_NAME"
;;
esac
# Create worktree with new branch
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
Auto-detect and run appropriate setup:
# 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
Run tests to ensure worktree starts clean:
# Examples - use project-appropriate command
npm test
cargo test
pytest
go test ./...
If tests fail: Report failures, ask whether to proceed or investigate.
If tests pass: Report ready.
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
| Situation | Action |
|---|---|
.worktrees/ exists | Use it (verify .gitignore) |
worktrees/ exists | Use it (verify .gitignore) |
| Both exist | Use .worktrees/ |
| Neither exists | Check CLAUDE.md → Ask user |
| Directory not in .gitignore | Add it immediately + commit |
| Tests fail during baseline | Report failures + ask |
| No package.json/Cargo.toml | Skip dependency install |
Skipping .gitignore verification
Assuming directory location
Proceeding with failing tests
Hardcoding setup commands
…
帮助你为变量选择清晰准确、易维护的命名,提升代码可读性。
帮助你创建、切换并检查代码分支,确保实现前遵循正确分支策略。