"Run parallel feature work safely with Git worktrees. Standardizes branch isolation, port allocation, environment sync, and cleanup so each worktree behaves like an independent local app. Optimized for multi-agent workflows where each agent or terminal session owns one worktree. Use when running multiple feature branches simultaneously, isolating experimental work, or coordinating multi-agent development across the same repo."
Resources
3Install
npx skillscat add youlianvr/oper-share/git-worktree-manager Install via the SkillsCat registry.
Git Worktree Manager
Tier: POWERFUL
Category: Engineering
Domain: Parallel Development & Branch Isolation
Overview
Use this skill to run parallel feature work safely with Git worktrees. It standardizes branch isolation, port allocation, environment sync, and cleanup so each worktree behaves like an independent local app without stepping on another branch.
This skill is optimized for multi-agent workflows where each agent or terminal session owns one worktree.
Core Capabilities
Create worktrees from new or existing branches with deterministic naming
Auto-allocate non-conflicting ports per worktree and persist assignments
Optionally copy local environment files (
.env*) only with explicit authorization; never print, commit, or expose their contentsOptionally install dependencies based on lockfile detection, only after explicit authorization; read-only inspection is the default
Detect stale worktrees and uncommitted changes before cleanup
Identify merged branches and safely remove outdated worktrees
When to Use
You need 2+ concurrent branches open locally
You want isolated dev servers for feature, hotfix, and PR validation
You are working with multiple agents that must not share a branch
Your current branch is blocked but you need to ship a quick fix now
You want repeatable cleanup instead of ad-hoc
rm -rfoperations
Key Workflows
1. Create a Fully-Prepared Worktree
Pick a branch name and worktree name.
Run the manager script (creates branch if missing).
Review generated port map.
Start app using allocated ports.
python scripts/worktree_manager.py \
--repo . \
--branch feature/new-auth \
--name wt-auth \
--base-branch main \
--format text # inspect/create only; dependency installation requires separate explicit authorization
If you use JSON automation input:
cat config.json | python scripts/worktree_manager.py --format json
# or
python scripts/worktree_manager.py --input config.json --format json
2. Run Parallel Sessions
Recommended convention:
Main repo: integration branch (
main/develop) on default portWorktree A: feature branch + offset ports
Worktree B: hotfix branch + next offset
Each worktree contains .worktree-ports.json with assigned ports.
3. Cleanup with Safety Checks
Scan all worktrees and stale age.
Inspect dirty trees and branch merge status.
Report merged + clean worktrees; removal is a separate explicitly authorized mutation and must use the repository's safe trash/recycle policy, never force removal by default.
python scripts/worktree_cleanup.py --repo . --stale-days 14 --format text
python scripts/worktree_cleanup.py --repo . --format text # inspect only; --remove-merged requires explicit authorization and a separate controlled action
4. Docker Compose Pattern
Use per-worktree override files mapped from allocated ports. The script outputs a deterministic port map; apply it to docker-compose.worktree.yml.
See docker-compose-patterns.md for concrete templates.
5. Port Allocation Strategy
Default strategy is base + (index * stride) with collision checks:
App:
3000Postgres:
5432Redis:
6379Stride:
10
See port-allocation-strategy.md for the full strategy and edge cases.
Script Interfaces
python scripts/worktree_manager.py --helpCreate/list worktrees
Allocate/persist ports
Report whether
.env*sync would be needed (copy only with explicit authorization)Optional dependency installation (explicit authorization required)
python scripts/worktree_cleanup.py --helpStale detection by age
Dirty-state detection
Merged-branch detection
Optional safe removal
Both tools support stdin JSON and --input file mode for automation pipelines.
Common Pitfalls
Creating worktrees inside the main repo directory
Reusing
localhost:3000across all branchesSharing one database URL across isolated feature branches
Removing a worktree with uncommitted changes
Forgetting to prune old metadata after branch deletion
Assuming merged status without checking against the target branch
Best Practices
One branch per worktree, one agent per worktree.
Keep worktrees short-lived; remove after merge.
Use a deterministic naming pattern (
wt-<topic>).Persist port mappings in file, not memory or terminal notes.
Run cleanup scan weekly in active repos.
Use
--format jsonfor machine flows and--format textfor human review.Never force-remove dirty worktrees unless changes are intentionally discarded.
Validation Checklist
Before claiming setup complete:
git worktree listshows expected path + branch..worktree-ports.jsonexists and contains unique ports..envfiles copied successfully (if present in source repo).Dependency install command exits with code
0(if enabled).Cleanup scan reports no unintended stale dirty trees.
References
README.md for quick start and installation details
Decision Matrix
Use this quick selector before creating a new worktree:
Need isolated dependencies and server ports -> create a new worktree
Need only a quick local diff review -> stay on current tree
Need hotfix while feature branch is dirty -> create dedicated hotfix worktree
Need ephemeral reproduction branch for bug triage -> create temporary worktree and cleanup same day
Operational Checklist
Before Creation
Confirm main repo has clean baseline or intentional WIP commits.
Confirm target branch naming convention.
Confirm required base branch exists (
main/develop).Confirm no reserved local ports are already occupied by non-repo services.
After Creation
Verify
git statusbranch matches expected branch.Verify
.worktree-ports.jsonexists.Verify app boots on allocated app port.
Verify DB and cache endpoints target isolated ports.
Before Removal
Verify branch has upstream and is merged when intended.
Verify no uncommitted files remain.
Verify no running containers/processes depend on this worktree path.
CI and Team Integration
Use worktree path naming that maps to task ID (
wt-1234-auth).Include the worktree path in terminal title to avoid wrong-window commits.
In automated setups, persist creation metadata in CI artifacts/logs.
Trigger cleanup report in scheduled jobs and post summary to team channel.
Failure Recovery
If
git worktree addfails due to existing path: inspect path, do not overwrite.If dependency install fails: keep worktree created, mark status and continue manual recovery; do not retry installation without authorization.
If env copy fails: continue with warning and explicit missing file list.
If port allocation collides with external service: rerun with adjusted base ports.