git-worktree
Use Git worktrees to isolate parallel coding tasks.
Skill by davidondrej
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/davidondrej-git-worktree
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity, agent-building, version-control
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/git-worktree
What's inside
- Skill name
git-worktree- Description
- Use Git worktrees to isolate parallel coding tasks. Use when setting up a task checkout, working in a shared repo, or managing existing worktrees.
- License
- MIT
- Instructions
- 98 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/setup-worktree.sh
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# 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).
```bash
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:
```bash
[ "$(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 `cd` into 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
```bash
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:
1. **Env/secret files** — copy `.env`, `.env.local`, and similar files from the primary checkout. Never symlink them: edits would change the originals.
2. **Dependencies** — install locally (`npm ci`, `pnpm install`, `uv sync`, `bundle install`). Never symlink `node_modules` from the primary checkout: bundlers such as Next.js/Turbopack reject paths outside the worktree. If it is a symlink, remove it with `rm -f node_modules` and install normally.
3. **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.
4. **Ports** — run dev/test servers and debuggers one at a time, or configure separate ports per worktree.
5. **Generated files and caches** — rebuild gitignored output in the worktree (`npm run build`, codegen).
6. **Git hooks** — `core.hooksPath` and `.git/config` are 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):
```json
{
"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:
```bash
dirname "$(git rev-parse --path-format=absolute --git-common-dir)"
```
## Merge and clean up
```bash
# 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.From davidondrej/skills, MIT.
More from davidondrej/skills
- 0.819score
bb-cli
davidondrej
Use this when controlling bb.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
browser-harness
davidondrej
Direct browser control via CDP.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
reset-cursor-acp
davidondrej
Reset a stuck Cursor ACP thread in your chat app and reload its configuration.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
cmux
davidondrej
Control the cmux macOS terminal app: workspaces, panes, surfaces, browsers, notifications, settings, and hooks.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
kimi-review
davidondrej
Launch an independent Kimi K3.1 Pro Max code review and return it verbatim, falling back across harnesses and routes until one works.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
deepapi
davidondrej
Use DeepAPI for all web search, deep research, and web scraping (websites, LinkedIn, GitHub, X/Twitter, YouTube, Instagram) instead of built-in search…
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
persistent-localhost
davidondrej
Manage persistent dev servers, APIs, and other local processes on a port using macOS LaunchAgents.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
domain-checker
davidondrej
Check domain registration in batches using public RDAP APIs, without keys or login.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
cua-driver
davidondrej
Use Cua Driver for desktop or browser tasks that are awkward or unavailable through Bash/APIs, or when the user explicitly wants GUI interaction: app testing…
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.818score
repo-sync
davidondrej
Manage automatic Git syncing on macOS with repo-sync.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.818score
anti-sleep
davidondrej
Keep a Mac awake for a set duration or while a process runs.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.816score
signal-from-expert
davidondrej
Compare the user's notes with an expert's work on a topic.
SkillAFreshness: A★ 4.2KClaude Code +9
Compare and alternatives
Signals
- Stars
- 4,167
- Forks
- 612
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/davidondrej/skills
- Website
- www.cloudroom.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from davidondrej
- 0.819score
persistent-localhost
davidondrej
Manage persistent dev servers, APIs, and other local processes on a port using macOS LaunchAgents.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
cua-driver
davidondrej
Use Cua Driver for desktop or browser tasks that are awkward or unavailable through Bash/APIs, or when the user explicitly wants GUI interaction: app testing…
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
deepapi
davidondrej
Use DeepAPI for all web search, deep research, and web scraping (websites, LinkedIn, GitHub, X/Twitter, YouTube, Instagram) instead of built-in search…
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
browser-harness
davidondrej
Direct browser control via CDP.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
domain-checker
davidondrej
Check domain registration in batches using public RDAP APIs, without keys or login.
SkillAFreshness: A★ 4.2KClaude Code +9 - 0.819score
reset-cursor-acp
davidondrej
Reset a stuck Cursor ACP thread in your chat app and reload its configuration.
SkillAFreshness: A★ 4.2KClaude Code +9
Cite this page
git-worktree skill. Agent Mart. https://agentmart.dev/skills/davidondrej-git-worktree (last updated 2026-10-24)