skills/lerianstudio/ring/ring:using-git-worktrees

ring:using-git-worktrees

SKILL.md

Using Git Worktrees

Overview

Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.

Core principle: Systematic directory selection + safety verification = reliable isolation.

Announce at start: "I'm using the ring:using-git-worktrees skill to set up an isolated workspace."

Directory Selection Process

Priority order: (1) Existing .worktrees/ or worktrees/ (2) CLAUDE.md preference (3) Ask user

ls -d .worktrees worktrees 2>/dev/null   # Check existing (prefer .worktrees)
grep -i "worktree.*director" CLAUDE.md    # Check project preference

If none found, ask: .worktrees/ (project-local, hidden) OR ~/.config/ring/worktrees/<project>/ (global)

Safety Verification

Project-local directories: MUST verify .gitignore before creating: grep -q "^\.worktrees/$\|^worktrees/$" .gitignore

  • If NOT in .gitignore: Add it → commit → proceed (fix broken things immediately)
  • Why critical: Prevents accidentally committing worktree contents

Global directory (~/.config/ring/worktrees): No verification needed - outside project.

Creation Steps

# 1. Detect project
project=$(basename "$(git rev-parse --show-toplevel)")

# 2. Create worktree (path = $LOCATION/$BRANCH or ~/.config/ring/worktrees/$project/$BRANCH)
git worktree add "$path" -b "$BRANCH_NAME" && cd "$path"

# 3. Auto-detect and run setup
[ -f package.json ] && npm install
[ -f Cargo.toml ] && cargo build
[ -f requirements.txt ] && pip install -r requirements.txt
[ -f pyproject.toml ] && poetry install
[ -f go.mod ] && go mod download

# 4. Verify clean baseline (npm test / cargo test / pytest / go test ./...)

If tests fail: Report failures, ask whether to proceed or investigate. If tests pass: Report: Worktree ready at <path> | Tests passing (<N> tests) | Ready to implement <feature>

Quick Reference

Situation Action
.worktrees/ exists Use it (verify .gitignore)
worktrees/ exists Use it (verify .gitignore)
Both exist Use .worktrees/
Neither exists Check CLAUDE.md → Ask user
Directory not in .gitignore Add it immediately + commit
Tests fail during baseline Report failures + ask
No package.json/Cargo.toml Skip dependency install

Common Mistakes

Mistake Problem Fix
Skip .gitignore verification Worktree contents tracked, pollute git status Always grep .gitignore first
Assuming directory location Inconsistency, violates conventions Follow priority: existing > CLAUDE.md > ask
Proceeding with failing tests Can't distinguish new vs pre-existing bugs Report failures, get permission
Hardcoding setup commands Breaks on different tools Auto-detect from project files

Example Workflow

Announce → Check .worktrees/ exists → Verify .gitignore → git worktree add .worktrees/auth -b feature/authnpm installnpm test (47 passing) → Report ready

Red Flags

Never:

  • Create worktree without .gitignore verification (project-local)
  • Skip baseline test verification
  • Proceed with failing tests without asking
  • Assume directory location when ambiguous
  • Skip CLAUDE.md check

Always:

  • Follow directory priority: existing > CLAUDE.md > ask
  • Verify .gitignore for project-local
  • Auto-detect and run project setup
  • Verify clean test baseline

Integration

Called by:

  • brainstorming (Phase 4) - REQUIRED when design is approved and implementation follows
  • Any skill needing isolated workspace

Pairs with:

  • finishing-a-development-branch - REQUIRED for cleanup after work complete
  • ring:executing-plans or ring:subagent-driven-development - Work happens in this worktree

Blocker Criteria

STOP and report if:

Decision Type Blocker Condition Required Action
.gitignore Safety Project-local worktree directory not in .gitignore STOP and report
Baseline Tests Tests fail during worktree setup STOP and report
Directory Ambiguity Multiple conflicting worktree locations exist STOP and report
Permission Issues Cannot create worktree in target directory STOP and report

Cannot Be Overridden

The following requirements CANNOT be waived:

  • Project-local worktree directories MUST be in .gitignore before creation
  • Baseline test verification is REQUIRED before proceeding with work
  • Directory selection MUST follow priority order: existing > CLAUDE.md > ask user
  • Worktree creation MUST include dependency installation and test verification

Severity Calibration

Severity Condition Required Action
CRITICAL Worktree directory not in .gitignore (project-local) MUST add to .gitignore immediately
CRITICAL Proceeding with failing baseline tests MUST report failures and get permission
HIGH Skipping dependency installation step MUST run appropriate package manager
HIGH Assuming directory location when ambiguous MUST follow priority order or ask user
MEDIUM Missing CLAUDE.md check in priority order Should check CLAUDE.md preferences
LOW Not auto-detecting project type Fix in next iteration

Pressure Resistance

User Says Your Response
"Skip .gitignore check, just create the worktree" "CANNOT skip .gitignore verification for project-local directories. Worktree contents would pollute git status."
"Tests are failing but proceed anyway" "CANNOT proceed with failing baseline tests. I need to report failures so we can distinguish pre-existing bugs from new ones."
"Put the worktree in this custom location" "I'll verify that location doesn't conflict with existing conventions and check .gitignore requirements first."
"Skip dependency installation, it takes too long" "CANNOT skip dependency installation. Tests won't run correctly without dependencies, invalidating baseline verification."

Anti-Rationalization Table

Rationalization Why It's WRONG Required Action
".gitignore check is paranoia" Without it, worktree contents get tracked, polluting every git status. MUST verify .gitignore first
"I know where worktrees go in this project" Assumption conflicts with existing directories or CLAUDE.md preferences. MUST follow directory priority order
"Failing tests are probably unrelated" You cannot distinguish new vs pre-existing bugs without clean baseline. MUST report failures and ask before proceeding
"Setup is straightforward, skip auto-detection" Different projects use different tools. Manual setup misses dependencies. MUST auto-detect from project files
"Global directory doesn't need verification" Global directories don't need .gitignore verification - this is correct. Only project-local needs it. MUST distinguish global vs project-local
Weekly Installs
31
GitHub Stars
133
First Seen
Feb 1, 2026
Installed on
cursor31
opencode30
gemini-cli30
github-copilot30
codex30
kimi-cli30