
Git Worktrees
Run parallel branches in isolated directories so multiple agents or tasks do not stomp uncommitted work and you get clean test baselines.
Install
npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill git-worktreesWhat is this skill?
- Maintains multiple checked-out branches in separate directories without stash-and-switch
- Designed for subagent-driven development so concurrent agents do not clobber uncommitted changes
- Provides clean baselines for tests without local artifacts or dirty working trees
- Explicit lifecycle: create at task start, verify on completion, prune after merge
- Each worktree is an independent workspace bound to its own branch for orchestrator merge-back
Adoption & trust: 1 installs on skills.sh; 18 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Journey fit
Parallel worktrees are how solo builders scale agent throughput during implementation; the first meaningful home is Build agent-tooling. Subagent-driven development needs isolated checkouts per task—worktree create, verify, merge, and prune is agent orchestration infrastructure.
Common Questions / FAQ
Is Git Worktrees safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Git Worktrees
# Git Worktrees Part of [Agent Skills™](https://github.com/itallstartedwithaidea/agent-skills) by [googleadsagent.ai™](https://googleadsagent.ai) ## Description Git Worktrees enables parallel development by maintaining multiple checked-out branches simultaneously in separate directories. Instead of stashing changes and switching branches, the agent creates isolated worktrees for each task, providing clean test baselines and eliminating context-switching overhead. Each worktree is a fully independent workspace tied to its own branch. This skill is essential for subagent-driven development, where multiple agents work on different tasks concurrently. Without worktrees, agents would clobber each other's uncommitted changes. With worktrees, each agent operates in its own directory with its own branch, and the orchestrator merges completed work back into the main line. Worktrees also provide clean baselines for testing. When you need to verify that tests pass on a clean checkout—without build artifacts, local config, or uncommitted changes—a fresh worktree gives you exactly that. The worktree lifecycle is managed explicitly: create when a task starts, verify when it completes, and prune when it merges. ## Use When - Multiple tasks must be developed in parallel without interference - Subagents need isolated filesystems for concurrent work - You need a clean checkout to run tests without local artifacts - Hotfix work must happen while a feature branch is in progress - Best-of-N implementations need separate workspaces - You want to compare behavior across branches side by side ## How It Works ```mermaid graph TD A[Main Repo] --> B["git worktree add ../task-1 -b feature/task-1"] A --> C["git worktree add ../task-2 -b feature/task-2"] A --> D["git worktree add ../hotfix -b hotfix/urgent"] B --> E[Agent 1 works in ../task-1] C --> F[Agent 2 works in ../task-2] D --> G[Agent 3 works in ../hotfix] E --> H[PR + Merge] F --> H G --> H H --> I["git worktree remove ../task-1"] H --> J["git worktree remove ../task-2"] H --> K["git worktree remove ../hotfix"] ``` Each worktree is a real directory on disk with its own checked-out branch. Changes in one worktree do not affect others. The `.git` metadata is shared, so branch operations (push, fetch, log) work normally from any worktree. ## Implementation ```bash # Create a worktree for a new feature git worktree add ../feature-auth -b feature/user-auth cd ../feature-auth npm install # Dependencies may differ per branch # List active worktrees git worktree list # /home/user/project abc1234 [main] # /home/user/feature-auth def5678 [feature/user-auth] # Run tests in a clean worktree git worktree add ../clean-test --detach HEAD cd ../clean-test npm ci && npm test cd ../project git worktree remove ../clean-test # Prune stale worktrees (after branch deletion) git worktree prune ``` ```python class WorktreeManager: def __init__(self, repo_root): self.repo_root = repo_root self.worktree_base = Path(repo_root).parent def create(self, task_name, base_branch="main"): branch = f"feature/{task_name}" path = self.worktree_base / task_name subprocess.run( ["git", "worktree", "add", str(path), "-b", branch, base_branch], cwd=self.repo_root, check=True ) return WorktreeContext(path, branch) def remove(self, task_name): path = self.worktree_base / task_name subprocess.run( ["git", "worktree", "remove", str(path)], cwd=self.repo_root, check=True ) def list_active(self): result = subprocess.run( ["git", "worktree", "list", "--porcelain"], cwd=self.repo_root, capture_output=True, text=True )