Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
cd ~/.claude/skills
git clone https://github.com/obra/superpowers.git superpowers mkdir -p ~/.claude/skills/using-git-worktrees
curl -fsSL https://raw.githubusercontent.com/obra/superpowers/HEAD/skills/using-git-worktrees/SKILL.md \
-o ~/.claude/skills/using-git-worktrees/SKILL.md Çalışmanın izole bir ortamda gerçekleştirilmesini sağlayın. Platform'un native worktree araçlarını tercih edin. Native araç yoksa git worktrees'i manuel olarak kullanın.
Temel ilke: Mevcut izolasyonu algıla. Sonra native araçları kullan. Sonra git'e geri dön. Hiçbir zaman sisteme karşı çalışma.
Başlangıçta ilan et: "Git worktrees skill'ini kullanarak izole bir workspace kurmaktayım."
Herhangi bir şey oluşturmadan önce, zaten izole bir workspace'te olup olmadığınızı kontrol edin.
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)
Submodule koruması: GIT_DIR != GIT_COMMON git submodules içinde de doğrudur. "Already in a worktree" sonucuna varmadan önce, submodule içinde olmadığınızı doğrulayın:
# Bu bir yol döndürürse, bir worktree değil submodule içindesiniz — normal repo olarak ele alın
git rev-parse --show-superproject-working-tree 2>/dev/null
GIT_DIR != GIT_COMMON ise (ve submodule değilse): Zaten linked worktree içindesiniz. Adım 2'ye (Project Setup) geçin. Başka bir worktree OLUŞTURMAYIN.
Branch durumu ile rapor edin:
<path> on branch <name>."<path> (detached HEAD, externally managed). Branch creation needed at finish time."GIT_DIR == GIT_COMMON ise (veya submodule içindeyse): Normal repo checkout içindesiniz.
Kullanıcı talimatlarında zaten bir worktree tercihi belirtti mi? Değilse, worktree oluşturmadan önce izin isteyin:
"İzole bir worktree kurmamı ister misiniz? Mevcut branch'inizi değişikliklerden korur."
Mevcut herhangi bir beyan edilen tercihe sorulmadan uyun. Kullanıcı rızasını reddeterse, yerinde çalışın ve Adım 2'ye geçin.
İki mekanizmanız var. Bu sırayla deneyin.
Kullanıcı izole workspace talep etmiş (Adım 0 rızası). Zaten worktree oluşturmak için bir yolunuz var mı? EnterWorktree, WorktreeCreate, /worktree komutu veya --worktree flag'i gibi adlandırılan bir araç olabilir. Varsa, kullanın ve Adım 2'ye geçin.
Native araçlar dizin yerleştirmesini, branch oluşturmayı ve temizliği otomatik olarak ele alır. Native araç varken git worktree add kullanmak, sisteminizin göremeyeceği veya yönetemeyeceği phantom state oluşturur.
Yalnızca Step 1a uygulanmaz ise Step 1b'ye devam edin — native worktree aracınız yoksa.
Yalnızca Adım 1a uygulanmaz ise bunu kullanın — native worktree aracınız yoksa. Git kullanarak manuel olarak worktree oluşturun.
Bu öncelik sırasını izleyin. Açık kullanıcı tercihi gözlemlenen filesystem durumunu her zaman yener.
Talimatlarınızda beyan edilmiş bir worktree dizin tercihi kontrol edin. Kullanıcı zaten bir belirtmişse, sormadan kullanın.
Mevcut project-local worktree dizinini kontrol edin:
ls -d .worktrees 2>/dev/null # Tercih edilen (gizli)
ls -d worktrees 2>/dev/null # Alternatif
Bulunursa, kullanın. Her ikisi varsa, .worktrees kazanır.
Başka rehberlik yoksa, project root'ta .worktrees/ olarak varsayılan olarak ayarlayın.
Worktree oluşturmadan önce dizin yok sayılmış mı DOĞRULMALI:
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
YOKSA: .gitignore'a ekleyin, değişikliği commit edin, sonra devam edin.
Neden kritik: Worktree içeriğini repository'ye yanlışlıkla commit etmeyi engeller.
# Seçilen konuma göre yolu belirle
path="$LOCATION/$BRANCH_NAME"
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
Sandbox fallback: git worktree add izin hatasıyla başarısız olursa (sandbox reddi), kullanıcıya sandbox'ın worktree oluşturmayı engellediğini ve bunun yerine mevcut dizinde çalıştığınızı söyleyin. Sonra setup ve baseline testlerini yerinde çalıştırın.
Uygun setup'ı otomatik olarak algıla ve çalıştır:
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if [ -f Cargo.toml ]; then cargo build; fi
# Python
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
# Go
if [ -f go.mod ]; then go mod download; fi
Workspace'in temiz başladığından emin olmak için testleri çalıştır:
# Projeye uygun komutu kullan
npm test / cargo test / pytest / go test ./...
Testler başarısız olursa: Hataları rapor et, devam edip etmeyeceğini veya araştırıp araştırmayacağını sor.
Testler geçerse: Hazır olduğunu rapor et.
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
| Durum | İşlem |
|---|---|
| Zaten linked worktree içinde | Oluşturmayı atla (Adım 0) |
| Bir submodule içinde | Normal repo olarak ele al (Adım 0 koruması) |
| Native worktree aracı mevcut | Kullan (Adım 1a) |
| Native araç yok | Git worktree fallback (Adım 1b) |
.worktrees/ varsa |
Kullan (yok sayılmış olduğunu doğrula) |
worktrees/ varsa |
Kullan (yok sayılmış olduğunu doğrula) |
| Her ikisi varsa | .worktrees/ kullan |
| Her ikisi yoksa | Talimat dosyasını kontrol et, sonra .worktrees/ varsayılanı |
| Dizin yok sayılmamış | .gitignore'a ekle + commit |
| Oluşturmada izin hatası | Sandbox fallback, yerinde çalış |
| Baseline sırasında testler başarısız | Hataları rapor et + sor |
| package.json/Cargo.toml yok | Dependency kurulumunu atla |
git worktree add kullanmakgit check-ignore kullanınAsla:
git worktree add kullanma (ör. EnterWorktree). Bu #1 hatadır — varsa, kullanın.Her zaman:
Herhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.
Çalışmanın tamamlandığını, sorunu çözdüğünü veya testleri geçtiğini iddia etmeden önce kullanın - commit yapmadan veya PR oluşturmadan önce verification komutlarını çalıştırıp sonuçları kontrol etmelisiniz; her zaman kanıt iddiadan önce gelir.