Install Git Worktree
Pick your agent. Every command is ready to paste.
npx skills add davidondrej/skills --skill git-worktreeThe open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads git-worktree when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the git-worktree skill”. In Codex, type $git-worktree.
Git Worktrees for Parallel Agents
In Cloudroom ($ROOM_THREAD_ID is set)
Never run git worktree add yourself. Cloudroom only deletes worktrees it made, so hand-made ones pile up in ~/code forever.
New task: start the thread with New worktree instead.
Move this thread to its own worktree: fork it into a Cloudroom-managed worktree. Cloudroom makes the branch and deletes the folder once its last thread is archived (after the worktree retention setting, default 21 days).
room-cli thread fork "$ROOM_THREAD_ID" --new-environment worktree --title "<task>" \ --prompt "You now run in a new worktree. Copy the gitignored .env files from <primary checkout> into it, then stop and wait for the user."It branches from
main, so uncommitted edits stay behind; commit them first or pass--base-branch <ref>. Then tell the user to continue in the new thread and archive this one. Skip the rest of this skill.
Start here
Detect where you are before editing:
[ "$(git rev-parse --path-format=absolute --git-dir)" = "$(git rev-parse --path-format=absolute --git-common-dir)" ] \
&& echo "primary checkout" || echo "worktree"
- Primary checkout → create a task-named worktree, complete the setup below, and
cdinto it before editing. - Worktree (including one created by Cursor) → proceed with the task.
Working model
Worktrees have separate working files and branches but share Git history, stashes, config, and refs.
- One task = one worktree = one agent session. Never share a working directory between agents.
- Keep the primary checkout on main, only for review, merging, and pushing.
- Nothing auto-merges. The human reviews each diff before merging or discarding the worktree.
- Keep task branches local and short-lived. Push only main unless the user explicitly asks to push a task branch.
- Merge one worktree at a time. If main moved, rebase the task branch before merging.
Creating and removing
git worktree add ../myrepo-task-x # new worktree + branch "myrepo-task-x"
git worktree add ../fix-y -b fix-y main # explicit branch off main
git worktree list # see all worktrees
git worktree remove ../myrepo-task-x # delete when merged/abandoned
git worktree prune # clean up stale registrations
A branch can be checked out in only one worktree, including main.
In Cursor, use the Agents Window or /worktree <task>. /apply-worktree applies results to the main checkout; /delete-worktree discards them. /best-of-n model1,model2 <task> runs the same task in parallel worktrees, one per model. Cursor auto-deletes older worktrees, so preserve results promptly; pushing task branches still requires explicit approval.
Complete the setup
A fresh worktree contains tracked files only. Bootstrap it before task work:
- Env/secret files — copy
.env,.env.local, and similar files from the primary checkout. Never symlink them: edits would change the originals. - Dependencies — install locally (
npm ci,pnpm install,uv sync,bundle install). Never symlinknode_modulesfrom the primary checkout: bundlers such as Next.js/Turbopack reject paths outside the worktree. If it is a symlink, remove it withrm -f node_modulesand install normally. - Databases and services — choose shared or per-worktree state. For shared services, pin their identity to avoid duplicate instances and port conflicts. For shared Docker Compose services, pin the project name, for example with a top-level
name:; otherwise each worktree's folder name creates a separate project. Copy or re-seed per-worktree state such as SQLite files. - Ports — run dev/test servers and debuggers one at a time, or configure separate ports per worktree.
- Generated files and caches — rebuild gitignored output in the worktree (
npm run build, codegen). - Git hooks —
core.hooksPathand.git/configare shared; verify hook scripts don't assume the primary checkout's path.
Automate setup
In Cursor, .cursor/worktrees.json runs setup on creation ($ROOT_WORKTREE_PATH is the primary checkout):
{
"setup-worktree": [
"npm ci",
"cp $ROOT_WORKTREE_PATH/.env.local .env.local"
]
}
Otherwise, put the checklist in scripts/setup-worktree.sh and run it first in each new worktree. Find the primary checkout from a worktree with:
dirname "$(git rev-parse --path-format=absolute --git-common-dir)"
Merge and clean up
# from the primary checkout, after reviewing the worktree's diff:
git merge --no-ff task-branch # or: git merge --squash task-branch
git worktree remove ../myrepo-task-x
git branch -d task-branch
In Cursor, use /apply-worktree, then review and commit.
- Delete each worktree as soon as its branch is merged or pushed to main. Nothing else cleans them up.
- Rebase or restart worktrees that have stalled for days.
- Commit early and often. Deleting a worktree loses uncommitted work; commits remain in the shared repository.
Tips for Git Worktree
- • Start a fresh session after installing so your agent picks up the new skill.
- • It is part of a pack with 30 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Git Worktree
What does the Git Worktree skill do?
Use Git worktrees to isolate parallel coding tasks. Use when setting up a task checkout, working in a shared repo, or managing existing worktrees.
How do I install Git Worktree?
Run "npx skills add davidondrej/skills --skill git-worktree" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Git Worktree work in Cursor and Codex?
Yes. Git Worktree uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
Is Git Worktree free?
Git Worktree is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.
Who made Git Worktree?
Git Worktree is published by davidondrej in the davidondrej/skills repository, together with 29 other skills.






