git-worktree-runner — скилл для Claude Code: работа с git worktree
Скилл учит агента управлять git worktree через CLI-обёртку gtr: создавать, открывать в редакторе, запускать команды и удалять.
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a claude-codeЧто делает git-worktree-runner
Скилл описывает работу с git-worktree-runner (сокращённо gtr) — CLI-обёрткой над git worktree. Агент получает готовые команды: git gtr new feature-branch создаёт worktree с новой веткой, --from origin/main берёт за основу конкретный ref, флаги -e и -a сразу открывают редактор или ИИ-инструмент. Есть git gtr list, git gtr rm, git gtr mv и git gtr run для запуска произвольной команды в нужном worktree.
Отдельный сценарий — параллельная работа нескольких агентов. Под каждую задачу создаётся изолированный worktree, в каждом запускается свой ИИ-инструмент, а git gtr list показывает общий статус. Для этого сначала настраивают значения по умолчанию: git gtr config set gtr.editor.default cursor и git gtr config set gtr.ai.default claude. Файлы вроде **/.env в новые worktree не попадают сами — их добавляют через git gtr config add gtr.copy.include.
Скилл разрешает агенту только команды git-worktree-runner, поэтому обычный git он через него не запустит. Проверка PR из форка идёт вручную: сначала gh pr view <PR_NUMBER> --json headRefName,isCrossRepository, потом git fetch origin pull/<PR_NUMBER>/head:<BRANCH_NAME> --force, и только затем git gtr new <BRANCH_NAME> --track local. Если ветка уже занята другим worktree, fetch упадёт с ошибкой про checked out branch — сначала git gtr rm <branch>.
Какие задачи решает
- создать отдельный worktree под новую задачу, не трогая текущую ветку
- запустить несколько ИИ-агентов параллельно на изолированных копиях репозитория
- выкачать PR из форка и открыть его в редакторе для ревью
- прогнать тесты в worktree, пока основная работа идёт в другом
- сделать срочный хотфикс и вернуться к фиче без переключения контекста
Примеры запросов агенту
- создай worktree для ветки feature-auth от origin/main и открой в нём редактор
- запусти ИИ-инструмент в worktree bugfix-login
- выкачай PR 1223 из форка в worktree pr-1223 и покажи список worktree
Как установить git-worktree-runner
1Через Skills CLI (Vercel)
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a claude-code2Вручную: положить файлы
~/.claude/skills/git-worktree-runner/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/git-worktree-runner/
1Через Skills CLI (Vercel)
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a codex2Вручную: положить файлы
.agents/skills/git-worktree-runner/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a cursor2Вручную: положить файлы
.cursor/skills/git-worktree-runner/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dyoshikawa/rulesync git-worktree-runner2Вручную: положить файлы
.github/skills/git-worktree-runner/SKILL.md1Через Skills CLI (Vercel)
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a gemini-cli2Командой платформы
gemini skills install https://github.com/dyoshikawa/rulesync --path .rulesync/skills/git-worktree-runnerВручную: положить файлы
.devin/skills/git-worktree-runner/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о git-worktree-runner
Как установить git-worktree-runner в Claude?
Выполните npx skills add dyoshikawa/rulesync --skill git-worktree-runner -a claude-code. Скилл появится в ~/.claude/skills/git-worktree-runner/SKILL.md.
Что делает git-worktree-runner?
Даёт агенту набор команд git gtr для создания, просмотра, переименования и удаления worktree, запуска команд внутри них и открытия редактора или ИИ-инструмента.
Почему git fetch для PR из форка падает с ошибкой про checked out branch?
Ветку уже занимает другой worktree. Удалите его командой git gtr rm <branch> и повторите fetch с --force.
Исходный текст
SKILL.md · MIT
--- name: git-worktree-runner description: >- Manages git worktrees using git-worktree-runner (gtr). Use when the user needs to create, list, remove, or navigate worktrees with `git gtr` commands, open editors or AI tools in worktrees, manage parallel development branches, or check out GitHub PRs (including from forks) into worktrees. targets: - "*" allowed-tools: "Bash(git-worktree-runner:*)" --- # Git Worktree Runner (gtr) git-worktree-runner (gtr) is a CLI tool that wraps `git worktree` with quality-of-life features for modern development workflows including editor and AI tool integration. ## Quick Start ```bash # Create a new worktree git gtr new feature-branch # Create from a remote branch git gtr new my-branch --from origin/feature-branch # Open editor in the worktree git gtr editor feature-branch # Start AI tool (claude, codex, etc.) in the worktree git gtr ai feature-branch # Remove a worktree git gtr rm feature-branch ``` ## Commands ### Creating Worktrees ```bash # Create a new worktree with a new branch git gtr new feature-name # Create from a specific ref (remote branch, tag, commit) git gtr new my-branch --from origin/main git gtr new hotfix --from v1.2.3 # Create and immediately open in editor git gtr new feature -e # Create and immediately start AI tool git gtr new feature -a # Create with both editor and AI tool git gtr new feature -e -a ``` ### Opening Editor / AI Tool ```bash # Open the configured editor for a worktree git gtr editor feature-branch # Start configured AI tool in a worktree git gtr ai feature-branch ``` ### Running Commands ```bash # Run an arbitrary command in a worktree git gtr run feature-branch npm test git gtr run feature-branch pnpm build ``` ### Navigation ```bash # Navigate to a worktree directory cd "$(git gtr go feature-branch)" ``` ### Listing and Managing ```bash # List all worktrees git gtr list # Remove a worktree git gtr rm feature-branch # Rename a worktree git gtr mv old-name new-name ``` ## Configuration ```bash # Set default editor (cursor, vscode, zed, etc.) git gtr config set gtr.editor.default cursor # Set default AI tool (claude, codex, opencode, aider, etc.) git gtr config set gtr.ai.default claude # Configure files to copy into new worktrees git gtr config add gtr.copy.include "**/.env" git gtr config add gtr.copy.include "**/.env.local" git gtr config add gtr.copy.include "**/.env.example" # View current configuration git gtr config list ``` ## Example: Parallel AI Development ```bash # Create isolated worktrees for parallel AI agents git gtr new feature-auth --from origin/main git gtr new feature-api --from origin/main git gtr new bugfix-login --from origin/main # Start AI tools in each worktree git gtr ai feature-auth git gtr ai feature-api git gtr ai bugfix-login # Check status of all worktrees git gtr list # Clean up when done git gtr rm feature-auth git gtr rm feature-api git gtr rm bugfix-login ``` ## Example: PR Review in Isolated Worktree ```bash # Create a worktree from PR branch git gtr new review-pr-123 --from origin/pr-branch # Open in editor to review git gtr editor review-pr-123 # Run tests in isolation git gtr run review-pr-123 pnpm test # Clean up after review git gtr rm review-pr-123 ``` ## Example: Hotfix While Working on Feature ```bash # Current work is on feature-branch, need to do a hotfix git gtr new hotfix-critical --from origin/main # Open editor for the hotfix git gtr new hotfix-critical -e # After hotfix is done, remove the worktree git gtr rm hotfix-critical # Back to feature-branch work without context switching ``` ## Example: Checkout a Fork PR into Worktree For PRs from forked repositories, the branch is not on `origin`. Use GitHub's `refs/pull/<number>/head` ref to fetch it. ### Procedure Given a PR number or URL: 1. **Get PR metadata** ```bash gh pr view <PR_NUMBER> --json headRefName,isCrossRepository ``` 2. **Check for existing worktree** with the same branch name ```bash git worktree list ``` If it exists, remove it first: `git gtr rm <branch>` 3. **Fetch the PR ref** into a local branch (use `--force` to handle diverged history from force-pushes) ```bash git fetch origin pull/<PR_NUMBER>/head:<BRANCH_NAME> --force ``` 4. **Create the worktree** with `--track local` since it's a local-only branch ```bash git gtr new <BRANCH_NAME> --track local ``` 5. **Verify** ```bash git gtr list ``` ### Full example (PR #1223 from a fork) ```bash gh pr view 1223 --json headRefName,isCrossRepository git fetch origin pull/1223/head:fix/comprehensive-file-formats-docs --force git gtr new fix/comprehensive-file-formats-docs --track local git gtr list ``` ### Shortening long branch names ```bash git fetch origin pull/1223/head:pr-1223 --force git gtr new pr-1223 --track local ``` ### Common errors - **"refusing to fetch into branch checked out at..."**: A worktree with that branch exists. `git gtr rm <branch>` first. - **"non-fast-forward" rejected**: Local branch diverged. Add `--force` to the fetch. - **Both errors**: Remove the worktree first, then fetch with `--force`.
© dyoshikawa · MIT · dyoshikawa/rulesync