
worktrees
by rbergman
SKILL.md
name: worktrees description: Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with beads integration via bd worktree commands
Git Worktrees
Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.
Primary tool: bd worktree — handles git worktree + beads integration automatically.
When to Use
- Parallel subagents need filesystem isolation
- Feature work that shouldn't affect current workspace
- Separate builds/servers running simultaneously
- Before executing implementation plans
Setup: Ensure .worktrees/ is Ignored
Before creating any worktrees, ensure .worktrees/ is in .gitignore. This is a one-time setup that covers all future worktrees:
# Check if .worktrees/ is already ignored
git check-ignore -q .worktrees/ || echo '.worktrees/' >> .gitignore
If you added the line, commit it:
git add .gitignore && git commit -m "Ignore .worktrees/ directory"
Why this matters: Without this, beads adds each worktree individually to .gitignore, creating noise. With .worktrees/ ignored, all worktrees underneath are automatically covered.
Creating a Worktree
All worktrees go under .worktrees/ in the repo root. This is the standard location.
bd worktree create .worktrees/feature-auth
What it does automatically:
- Creates git worktree at the specified path
- Sets up
.beads/redirectpointing to main repo's database - Creates the branch (same name as the directory by default)
With custom branch name:
bd worktree create .worktrees/bugfix --branch fix-123
After Creation
1. Enter Worktree
cd .worktrees/feature-auth
2. Run Project Setup
# Node.js
[ -f package.json ] && npm install
# Rust
[ -f Cargo.toml ] && cargo build
# Go
[ -f go.mod ] && go mod download
3. Verify Baseline
npm test # or cargo test, go test ./...
If tests fail: Report failures, ask whether to proceed.
4. Verify Beads Shared
bd ready # Should show same beads as main workspace
Listing Worktrees
bd worktree list
Or standard git:
git worktree list
Removing a Worktree
Use bd worktree remove — includes safety checks:
bd worktree remove feature-auth
Safety checks (automatic):
- Uncommitted changes
- Unpushed commits
- Stashes
Skip checks (not recommended):
bd worktree remove feature-auth --force
Worktree Info
Check current worktree status:
bd worktree info
Quick Reference
| Task | Command |
|---|---|
| Ensure .worktrees/ ignored | git check-ignore -q .worktrees/ || echo '.worktrees/' >> .gitignore |
| Create worktree | bd worktree create .worktrees/<name> |
| Create with branch | bd worktree create .worktrees/<name> --branch <branch> |
| List worktrees | bd worktree list |
| Remove worktree | bd worktree remove .worktrees/<name> |
| Check status | bd worktree info |
| Verify beads sync | bd ready (in worktree) |
Why bd worktree?
| Manual git worktree | bd worktree |
|---|---|
| Separate commands for git + beads | Single command |
| No beads redirect setup | Automatic redirect to main DB |
| No safety checks on remove | Checks for uncommitted/unpushed |
Example Workflow
# One-time: ensure .worktrees/ is ignored
git check-ignore -q .worktrees/ || echo '.worktrees/' >> .gitignore
# Create isolated workspace
bd worktree create .worktrees/feature-auth
# Enter and setup
cd .worktrees/feature-auth
npm install
npm test # ✓ 47 passing
# Verify beads shared
bd ready # Shows same issues as main
# Work on feature...
bd claim auth-001
# When done
cd ../..
bd worktree remove .worktrees/feature-auth
Known Limitations
Daemon Mode
Daemon mode does not work correctly with user-created git worktrees. Worktrees share the same .git directory and beads database, but the daemon doesn't track which branch each worktree has checked out.
Solution: Use direct mode in worktrees:
bd --no-daemon <command>
# Or set environment variable
export BEADS_NO_DAEMON=1
Two Types of Worktrees
Don't confuse these:
| Type | Location | Purpose |
|---|---|---|
| User worktrees | .worktrees/<name> | Parallel feature work (you create these) |
| Beads internal | .git/beads-worktrees/beads-sync | Sync-branch commits (beads creates this) |
The internal worktree is hidden and managed by beads for the sync-branch feature. Don't manually modify it.
SKIP_WORKTREE Issues
If git status doesn't show changes to .beads/*.jsonl files, check for SKIP_WORKTREE flags:
git ls-files -v .beads/
# 'h' prefix = SKIP_WORKTREE set (changes hidden)
# 'H' prefix = normal tracking
Fix: Remove and re-add the files:
git rm --cached .beads/issues.jsonl
git add .beads/issues.jsonl
Or run bd sync which sets the correct index flags.
Fallback (No Beads)
If beads isn't installed, use manual git worktree:
# Verify ignored
git check-ignore -q .worktrees/ || echo '.worktrees/' >> .gitignore
# Create
git worktree add .worktrees/feature-auth -b feature-auth
# Remove
git worktree remove .worktrees/feature-auth
But you lose: automatic gitignore, beads sync, and safety checks.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon