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.
cd ~/.claude/skills
git clone https://github.com/obra/superpowers.git superpowers mkdir -p ~/.claude/skills/finishing-a-development-branch
curl -fsSL https://raw.githubusercontent.com/obra/superpowers/HEAD/skills/finishing-a-development-branch/SKILL.md \
-o ~/.claude/skills/finishing-a-development-branch/SKILL.md Geliştirme işini sonlandırırken net seçenekler sunarak ve seçilen iş akışını gerçekleştirerek tamamlayın.
Temel ilke: Testleri doğrula → Ortamı algıla → Seçenekleri sun → Seçimi gerçekleştir → Temizle.
Başlangıçta duyur: "Bu işi tamamlamak için finishing-a-development-branch becerisini kullanıyorum."
Seçenekleri sunmadan önce testlerin geçtiğini doğrula:
# Projenin test paketini çalıştır
npm test / cargo test / pytest / go test ./...
Testler başarısız olursa:
Testler başarısız (<N> hata). Tamamlamadan önce düzeltilmeli:
[Hataları göster]
Testler geçene kadar merge/PR ile devam edilemez.
Dur. 2. Adıma geçme.
Testler geçerse: 2. Adıma devam et.
Seçenekleri sunmadan önce çalışma alanı durumunu belirle:
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)
Bu, hangi menüyü göstereceğini ve temizlemenin nasıl çalışacağını belirler:
| Durum | Menü | Temizleme |
|---|---|---|
GIT_DIR == GIT_COMMON (normal repo) |
Standart 4 seçenek | Temizlenecek worktree yok |
GIT_DIR != GIT_COMMON, adlandırılmış şube |
Standart 4 seçenek | Köken tabanlı (bkz. 6. Adım) |
GIT_DIR != GIT_COMMON, detached HEAD |
Azaltılmış 3 seçenek (merge yok) | Temizleme yok (harici olarak yönetilen) |
# Ortak temel şubeleri dene
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
Veya sor: "Bu şube main'den ayrıldı - doğru mu?"
Normal repo ve adlandırılmış şube worktree — tam olarak bu 4 seçeneği sun:
Uygulama tamamlandı. Ne yapmak istiyorsun?
1. <base-branch> adına yerel olarak birleştir
2. Push yap ve Pull Request oluştur
3. Şubeyi olduğu gibi tut (bunu daha sonra halledeceğim)
4. Bu işi sil
Hangi seçenek?
Detached HEAD — tam olarak bu 3 seçeneği sun:
Uygulama tamamlandı. Detached HEAD'desin (harici olarak yönetilen çalışma alanı).
1. Yeni şube olarak push yap ve Pull Request oluştur
2. Olduğu gibi tut (bunu daha sonra halledeceğim)
3. Bu işi sil
Hangi seçenek?
Açıklama ekleme - seçenekleri kısa tut.
# CWD güvenliği için ana repo root'u al
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
cd "$MAIN_ROOT"
# Önce birleştir — herhangi bir şeyi kaldırmadan önce başarıyı doğrula
git checkout <base-branch>
git pull
git merge <feature-branch>
# Birleştirme sonucunda testleri doğrula
<test command>
# Sadece merge başarılı olduktan sonra: worktree'i temizle (6. Adım), sonra şubeyi sil
Sonra: Worktree'i temizle (6. Adım), sonra şubeyi sil:
git branch -d <feature-branch>
# Şubeyi push yap
git push -u origin <feature-branch>
Worktree'i temizleme — kullanıcının PR geri bildirimine göre yinelemesi için buna ihtiyacı var.
Rapor et: "Şube
Worktree'i temizleme.
Önce onayla:
Bunlar kalıcı olarak silinecek:
- Şube <name>
- Tüm commits: <commit-list>
- Worktree <path> konumunda
Onaylamak için 'sil' yazın.
Tam onayı bekle.
Onaylanırsa:
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
cd "$MAIN_ROOT"
Sonra: Worktree'i temizle (6. Adım), sonra şubeyi zorla sil:
git branch -D <feature-branch>
Sadece Seçenek 1 ve 4 için çalışır. Seçenek 2 ve 3 her zaman worktree'i korur.
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)
WORKTREE_PATH=$(git rev-parse --show-toplevel)
Eğer GIT_DIR == GIT_COMMON: Normal repo, temizlenecek worktree yok. Bitti.
Worktree yolu .worktrees/ veya worktrees/ altındaysa: Superpowers bu worktree'i oluşturdu — temizlemeyi sahipleniyoruz.
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
cd "$MAIN_ROOT"
git worktree remove "$WORKTREE_PATH"
git worktree prune # Kendi kendini iyileştir: eski kayıtları temizle
Aksi durumda: Host ortamı (harness) bu çalışma alanının sahibi. Kaldırma. Platform bir çalışma alanı çıkış aracı sağlıyorsa, bunu kullan. Aksi takdirde, çalışma alanını yerinde bırak.
| Seçenek | Birleştir | Push | Worktree'i Koru | Şubeyi Temizle |
|---|---|---|---|---|
| 1. Yerel olarak birleştir | evet | - | - | evet |
| 2. PR oluştur | - | evet | evet | - |
| 3. Olduğu gibi tut | - | - | evet | - |
| 4. Sil | - | - | - | evet (zorla) |
Test doğrulamasını atlamak
Açık uçlu sorular
Seçenek 2 için worktree'i temizlemek
Worktree kaldırmadan önce şubeyi silmek
git branch -d worktree hala şubeye referans verdiği için başarısızWorktree içinden git worktree remove çalıştırmak
git worktree remove öncesinde ana repo root'a cd yapHarness'e ait worktree'leri temizlemek
.worktrees/ veya worktrees/ altındaki worktree'leri temizleDiscard için onay yok
Asla:
git worktree remove çalıştırmaHer Zaman:
cd yapgit worktree prune çalıştırHerhangi 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.
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.
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.
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.