К основному содержанию
команда

create-worktrees — команда для Claude Code: worktree под каждый PR

Собирает все открытые пул-реквесты через GitHub CLI и разворачивает под каждую ветку отдельный git worktree в папке ./tree/. Пригодится, когда надо смотреть несколько PR сразу, не переключая ветки в основном чекауте.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --command git-workflow/create-worktrees
Открыть на GitHub

Что делает create-worktrees

Команда берёт список открытых PR через gh pr list, вытаскивает имена веток и для каждой делает git worktree add в ./tree/<BRANCH_NAME>. Ветки со слэшем вроде feature/foo получают вложенную структуру каталогов, а если worktree уже существует, шаг пропускается. В конце печатается git worktree list — видно, что получилось.

В том же файле лежит второй сценарий: интерактивный скрипт спрашивает имя ветки, проверяет, не занято ли оно, и создаёт ветку вместе с worktree. Можно задать базу отличную от HEAD — коммит, тег или другую ветку. Есть и необязательный блок очистки: он проходит по worktree и удаляет те, чьи ветки уже не существуют.

Перед запуском нужен установленный и авторизованный GitHub CLI: команда сама проверяет gh auth status и без логина останавливается. Работает только внутри git-репозитория, а удаление идёт с флагом --force, поэтому стоит сначала посмотреть список на удаление.

Какие задачи решает

  • развернуть отдельную рабочую копию под каждый открытый PR
  • смотреть несколько веток одновременно, не переключая основную
  • завести новую ветку и сразу получить под неё каталог
  • почистить worktree от веток, которых больше нет
  • начать ветку не от текущего HEAD, а от нужного коммита или тега

Примеры запросов агенту

  • создай worktree для всех открытых PR
  • заведи новую ветку feature/user-authentication и worktree под неё
  • убери worktree, чьи ветки уже удалены

Как установить create-worktrees

1Через claude-code-templates

npx claude-code-templates@latest --command git-workflow/create-worktrees

2Вручную: положить файлы

.claude/commands/create-worktrees.md

Вызов — /create-worktrees. Для всех проектов — ~/.claude/commands/

Из того же набора184

Весь набор →
testing-patterns Скилл для Claude с готовыми паттернами тестирования на Jest: фабрики данных, моки и цикл red-green-refactor. 365установок code-review-checklist Скилл ведёт ревьюера по шагам: контекст, функциональность, качество, безопасность, производительность и тесты. Пригодится на пул-реквестах и аудитах. 365установок vercel-environment-sync Хук проверяет переменные окружения после правки .env и подсказывает, как перенести их в Vercel. Пригодится, если локальные и деплойные значения расходятся. 363установок log Переносит отчёт о выполненной задаче во внешние трекеры и заметки: время, статус, коммиты. Пригодится, когда работа идёт в Claude, а учёт — в Linear или Obsidian. 351установок branch-cleanup Слэш-команда для Claude, которая находит слитые и устаревшие ветки, проверяет их перед удалением и наводит порядок в локальном и удалённом репозитории. 342установок pentest-checklist Скилл проводит через планирование пентеста: цели, границы, подготовка среды, выбор исполнителей и мониторинг. Пригодится перед проверкой на проникновение. 336установок create-database-migrations Слэш-команда для Claude, которая создаёт файлы миграций базы данных с версионированием и методами отката. Пригодится, когда меняете схему и не хотите писать up/down вручную. 329установок nia-oracle Субагент для Claude, который ищет репозитории и документацию через инструменты Nia, индексирует найденное и достаёт оттуда ответы. 329установок

Похожие

om-auto-continue-pr open-mercato Возобновляет незакрытый pull request с первого невыполненного шага плана. Если плана нет, восстанавливает цель по описанию, комментариям и диффу. CX Codex +1 3 700установок work-with-pr code-yeongyu Скилл ведёт задачу от отдельного worktree до слитого PR: делит работу, запускает проверки и возвращается к исправлениям при сбое. CX Codex +1 763установок create-pr zhaono1 Скилл проводит агента по шагам создания pull request и следит, чтобы английский и китайский README оставались синхронными. Пригодится, когда каталог скиллов меняется и его надо отразить в документации. CX Codex +1 666установок antfu-create-pr Anthony Fu Собирает из текущей ветки аккуратный GitHub pull request: заголовок по Conventional Commits, тело с доказательствами и скриншоты до/после для UI. CX Codex +1 485установок git-worktree-runner dyoshikawa Скилл учит агента управлять git worktree через CLI-обёртку gtr: создавать, открывать в редакторе, запускать команды и удалять. CX Codex +1 ★ 1 552звёзд репо stack kitlangton Скилл для работы со стеками PR и MR там, где ветки вливаются squash-мержем и удаляются. Помогает чинить и синхронизировать цепочки изменений. CX Codex +1 474установок

Рядом в теме «Git и GitHub»

Всё по теме «Git и GitHub» →

Вопросы о create-worktrees

Как установить create-worktrees в Claude?

Через шаблоны: npx claude-code-templates@latest --command git-workflow/create-worktrees. После этого команда лежит в .claude/commands/create-worktrees.md.

Что делает create-worktrees?

Забирает список открытых пул-реквестов через GitHub CLI и создаёт по git worktree на каждую ветку в ./tree/. Ещё умеет заводить новую ветку с worktree и убирать устаревшие каталоги.

Что нужно для работы команды?

Установленный и авторизованный GitHub CLI — без gh auth login команда останавливается на первой проверке. Запускать её нужно внутри git-репозитория.

Исходный текст

create-worktrees.md · MIT
---
description: "This command fetches all open pull requests using GitHub CLI, then creates a git worktree for each PR's branch in the ./tree/<BRANCH_NAME> directory."
---

# Git Worktree Commands

## Create Worktrees for All Open PRs

This command fetches all open pull requests using GitHub CLI, then creates a git worktree for each PR's branch in the `./tree/<BRANCH_NAME>` directory.

```bash
# Ensure GitHub CLI is installed and authenticated
gh auth status || (echo "Please run 'gh auth login' first" && exit 1)

# Create the tree directory if it doesn't exist
mkdir -p ./tree

# List all open PRs and create worktrees for each branch
gh pr list --json headRefName --jq '.[].headRefName' | while read branch; do
  # Handle branch names with slashes (like "feature/foo")
  branch_path="./tree/${branch}"
  
  # For branches with slashes, create the directory structure
  if [[ "$branch" == */* ]]; then
    dir_path=$(dirname "$branch_path")
    mkdir -p "$dir_path"
  fi

  # Check if worktree already exists
  if [ ! -d "$branch_path" ]; then
    echo "Creating worktree for $branch"
    git worktree add "$branch_path" "$branch"
  else
    echo "Worktree for $branch already exists"
  fi
done

# Display all created worktrees
echo "\nWorktree list:"
git worktree list
```

### Example Output

```
Creating worktree for fix-bug-123
HEAD is now at a1b2c3d Fix bug 123
Creating worktree for feature/new-feature
HEAD is now at e4f5g6h Add new feature
Worktree for documentation-update already exists

Worktree list:
/path/to/repo                      abc1234 [main]
/path/to/repo/tree/fix-bug-123     a1b2c3d [fix-bug-123]
/path/to/repo/tree/feature/new-feature e4f5g6h [feature/new-feature]
/path/to/repo/tree/documentation-update d5e6f7g [documentation-update]
```

### Cleanup Stale Worktrees (Optional)

You can add this to remove stale worktrees for branches that no longer exist:

```bash
# Get current branches
current_branches=$(git branch -a | grep -v HEAD | grep -v main | sed 's/^[ *]*//' | sed 's|remotes/origin/||' | sort | uniq)

# Get existing worktrees (excluding main worktree)
worktree_paths=$(git worktree list | tail -n +2 | awk '{print $1}')

for path in $worktree_paths; do
  # Extract branch name from path
  branch_name=$(basename "$path")
  
  # Skip special cases
  if [[ "$branch_name" == "main" ]]; then
    continue
  fi
  
  # Check if branch still exists
  if ! echo "$current_branches" | grep -q "^$branch_name$"; then
    echo "Removing stale worktree for deleted branch: $branch_name"
    git worktree remove --force "$path"
  fi
done
```

## Create New Branch and Worktree

This interactive command creates a new git branch and sets up a worktree for it:

```bash
#!/bin/bash

# Ensure we're in a git repository
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
  echo "Error: Not in a git repository"
  exit 1
fi

# Get the repository root
repo_root=$(git rev-parse --show-toplevel)

# Prompt for branch name
read -p "Enter new branch name: " branch_name

# Validate branch name (basic validation)
if [[ -z "$branch_name" ]]; then
  echo "Error: Branch name cannot be empty"
  exit 1
fi

if git show-ref --verify --quiet "refs/heads/$branch_name"; then
  echo "Warning: Branch '$branch_name' already exists"
  read -p "Do you want to use the existing branch? (y/n): " use_existing
  if [[ "$use_existing" != "y" ]]; then
    exit 1
  fi
fi

# Create branch directory
branch_path="$repo_root/tree/$branch_name"

# Handle branch names with slashes (like "feature/foo")
if [[ "$branch_name" == */* ]]; then
  dir_path=$(dirname "$branch_path")
  mkdir -p "$dir_path"
fi

# Make sure parent directory exists
mkdir -p "$(dirname "$branch_path")"

# Check if a worktree already exists
if [ -d "$branch_path" ]; then
  echo "Error: Worktree directory already exists: $branch_path"
  exit 1
fi

# Create branch and worktree
if git show-ref --verify --quiet "refs/heads/$branch_name"; then
  # Branch exists, create worktree
  echo "Creating worktree for existing branch '$branch_name'..."
  git worktree add "$branch_path" "$branch_name"
else
  # Create new branch and worktree
  echo "Creating new branch '$branch_name' and worktree..."
  git worktree add -b "$branch_name" "$branch_path"
fi

echo "Success! New worktree created at: $branch_path"
echo "To start working on this branch, run: cd $branch_path"
```

### Example Usage

```
$ ./create-branch-worktree.sh
Enter new branch name: feature/user-authentication
Creating new branch 'feature/user-authentication' and worktree...
Preparing worktree (creating new branch 'feature/user-authentication')
HEAD is now at abc1234 Previous commit message
Success! New worktree created at: /path/to/repo/tree/feature/user-authentication
To start working on this branch, run: cd /path/to/repo/tree/feature/user-authentication
```

### Creating a New Branch from a Different Base

If you want to start your branch from a different base (not the current HEAD), you can modify the script:

```bash
read -p "Enter new branch name: " branch_name
read -p "Enter base branch/commit (default: HEAD): " base_commit
base_commit=${base_commit:-HEAD}

# Then use the specified base when creating the worktree
git worktree add -b "$branch_name" "$branch_path" "$base_commit"
```

This will allow you to specify any commit, tag, or branch name as the starting point for your new branch.

© davila7 · MIT · davila7/claude-code-templates

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой