/create-pr
Çalışma ağacı değişikliklerini al (commit edilmemiş ya da yakın zamanda varsayılan dala commit edilmiş), farktan uygun bir dal adı + commit mesajı + PR başlığı türet, /drain komutunu çalıştır ki bekleyen öğrenmeler aynı PR'ın içinde yolculuk etsin, bir AI inceleme zinciri çalıştır (genel temel + takımın bildirdiği uzmanlar), commit + push yap, bir PR aç. İsteğe bağlı olarak GitHub auto-merge düzeneğini, sınırlı bir yoklama + kendiliğinden düzeltme döngüsüyle etkinleştir. İş bitiminde kullanıcıyı daima hedef dala döndür.
Bu beceri, "bir parça işi yayımla" akışının belirlenimci hâlidir — branch-hygiene, learning-capture ve karpathy-guidelines kurallarını uygular; böylece bunları her PR'da yeniden üretmek zorunda kalmazsın.
Global beceri olarak atl monoreposunda yayımlanır.
Bayraklar
| Bayrak | Varsayılan | Etkisi |
|---|---|---|
--auto-merge | KAPALI | GitHub auto-merge düzeneğini etkinleştirir (gh pr merge --auto --squash); birleşene ya da kalıcı bir başarısızlık olana kadar yoklama + kendiliğinden düzeltme yapar. |
--no-review | KAPALI (inceleme açık) | Tüm inceleme zincirini atlar (genel + her takım inceleyicisi). |
--no-auto-fix | KAPALI (düzeltme açık) | Yoklama döngüsü sırasında CI / birleştirme başarısızlıklarını düzeltmeye çalışmaz; bunun yerine kullanıcıya bildirir. |
--no-drain | KAPALI (drain açık) | Bekleyen öğrenmeleri bilgi tabanına katlamayı atlar. |
--timeout {min} | 10 | Dakika cinsinden yoklama zaman aşımı; 1 dakikalık aralık; hem --auto-merge hem elle birleştirme beklemesi için geçerli. |
Akış
Akış sıralı çalışır. Her adımın net bir önkoşulu ve ardkoşulu vardır; bir önkoşul karşılanmazsa beceri sorunu yüzeye çıkarır ve devam etmek yerine durur.
Adım 1 — Ön denetimler
- Mevcut dizin bir Git deposunun içindedir.
- Çalışma ağacında değişiklik VARDIR ya da mevcut dalın push edilmemiş commit'leri vardır (ikisi de yoksa: "Yapılacak bir şey yok — çalışma ağacı temiz ve dal güncel").
- Deponun varsayılan dalı (
main/master) belirlenir.
Adım 2 — Hedef dalı belirle
"Hedef dal", PR'ın birleşeceği VE iş bitiminde kullanıcının döneceği daldır.
- Varsayılan daldaysan → hedef = varsayılan dal.
- Varsayılan dışı bir daldaysan →
AskUserQuestionüç seçenekle: üst dal (kendiliğinden algılanır), varsayılan dal ya da serbest metinli Other.
Adım 3 — Dal adı + commit mesajını üret
Stage'lenmiş + stage'lenmemiş + izlenmeyen değişiklikleri çözümle:
- Tür —
feat,fix,docs,chore,refactor,test,perfarasından biri (farktan sezgisel olarak çıkarılır: yeni ajan/beceri/kural ya da özellik →feat; hata düzeltme dili →fix; yalnızca*.md→docs; vb.). - Kapsam — değişikliği kapsayan en belirgin kapsam (beceri adı, kural adı, ajan adı, CLI komutu, depo alanı).
- Slug — kebab-case, ≤ 50 karakter, ASCII.
Çıktılar:
- Dal adı —
{type}/{slug}(örneğinfeat/create-pr-skill,fix/install-404,docs/translate-tr-en). - Commit konusu —
{type}({scope}): {tek satırlık özet}, 70 karakterin altında. - Commit gövdesi — değişikliği anlatan 2-4 madde.
Beceri kullanıcıya ad onayı için sormaz — adları üretir ve devam eder.
Adım 4 — Bekleyen öğrenmeleri drain et (--no-drain verilmedikçe)
/drain komutunu çağırır; böylece oturum sırasında yakalanan her öğrenme aynı PR'ın içinde yolculuk eder:
/drain, kalıcı öğrenme kuyruğunu okur, bekleyen her öğeyi wiki / journal / ajan bilgi tabanına yönlendirir ve onaylar (ack).- Boş kuyruk bir işlem-yok (no-op) durumudur.
/drainkurulu değilse adım tek satırlık bir bildirimle atlanır — beceriyi asla başarısız kılmaz.
v2'nin işaretçisi düz metindir (<!-- learning: serbest metin -->); ayrı bir doküman-etkisi / doküman-taslağı hattı yoktur — her öğrenmenin nereye ait olduğunu /drain çıkarır. Bkz. atl learnings ve /drain becerisi.
Adım 5 — İnceleme zinciri (--no-review verilmedikçe)
İki katman, sıralı olarak çalıştırılır:
5a — Genel inceleyici (daima)
Stage'lenmiş fark üzerinde taze bağlamlı bir alt ajan çağırır (taze bağlam, böylece inceleme farkı yazan modelden etkilenmez); dört Karpathy ilkesiyle istemlenir:
- Kodlamadan Önce Düşün (varsayımlar açık mı?).
- Önce Sadelik (fazla mühendislik var mı?).
- Cerrahi Değişiklikler (geçerken yapılan düzenlemeler? yetimler?).
- Hedef Odaklı Yürütme (hedefe karşı doğrulanıyor mu? başarı ölçütleri?).
Buna ek olarak genel kod kalitesi (adlandırma, kapsam kayması, güvenlik kokuları — loglarda sırlar, enjeksiyon, sabit kodlanmış kimlik bilgileri — ölü kod, test kapsamı). Sonuç 🔴 sorunlar / 🟡 endişeler / 🟢 sorunsuz olarak raporlanır.
5b — Takım uzmanları (kurulu takım başına)
Kurulu her takım için (önce .claude/agents/, sonra ~/.claude/agents/ altına bakılır — proje global'i gölgeler), beceri team.json dosyasındaki capabilities.review alanını okur:
- Bir ajan adı veriyorsa (örneğin
capabilities.review: "code-reviewer"), o takım ajanı aynı farka karşı çalıştırılır ve alana özgü bir inceleme üretir. - Bildirilmemişse takım atlanır — 5a, platform genelindeki temeldir.
Bütünleştirilmiş rapor kullanıcıya gösterilir: devam et / iptal et / düzenle.
Adım 6 — Commit + push
git checkout -b {branch-name}
git add -A
git commit -m "{commit-subject}
{commit-body}"
git push -u origin {branch-name}Adım 7 — PR aç
gh pr create \
--base {target-branch} \
--title "{commit-subject}" \
--body "<Özet maddeleri + Test planı kontrol listesi>"Beceri --assignee ya da --reviewer geçirmez.
Adım 8 — --auto-merge (yalnızca bayrak verilmişse)
gh pr merge {N} --auto --squashBu, tüm beceri kümesindeki tek izin verilen birleştirme çağrısıdır. Hemen birleştirmez — GitHub zorunlu denetimleri bekler ve sonra birleştirir; böylece dal koruması kapısı korunur. Kullanıcı bayrağı geçirerek bu işe açıkça katılmıştır.
Adım 9 — Yoklama + kendiliğinden düzeltme döngüsü (yalnızca --auto-merge verildiyse)
PR durumunu 1 dakikalık aralıklarla, en çok {timeout} deneme boyunca (varsayılan 10) yoklar. Durum makinesi:
| Durum | Eylem |
|---|---|
MERGED | Başarı — iş bitimine geç. |
CLOSED | Kullanıcı birleştirmeden kapattı — temiz çık, iş bitimi yok. |
*CLEAN / *HAS_HOOKS | Sağlıklı durum, yalnızca denetimleri bekliyor — yoklamaya devam. |
*BLOCKED / *UNSTABLE / *DIRTY / *BEHIND | CI başarısızlığı veya birleştirme çakışması — handle_failure. |
handle_failure sınıflandırması
Kapsam içinde (kendiliğinden düzeltme denenir, en çok 3):
- Birleştirme çakışmaları — en güncel hedefi çek, üç yönlü birleştirme dene.
- Lint / biçim başarısızlıkları — projenin biçimleyicisini çalıştır (kendiliğinden algılanır:
package.jsoniçindekiscripts.lint,.prettierrc,gofmt,cargo fmtvb.). - Önemsiz tür hataları / eksik içe aktarımlar — derleyicinin önerdiği düzeltmeleri uygula.
Kapsam dışı (bildir ve dur):
- Gerçek test başarısızlıkları (önermeler, mevcut testlerde gerileme).
- Önemsiz olmayan yapı hataları.
- Altyapı ya da CI yapılandırma sorunları.
- Eksik zorunlu incelemeler (insan inceleyiciler engelliyor).
Kapsam içi 3 düzeltme denemesinden sonra beceri durur ve raporlar.
Adım 10 — Elle birleştirme yoklaması (yalnızca --auto-merge VERİLMEDİYSE)
Beceri yine de birleştirme için yoklama yapar — kullanıcı {timeout} dakika içinde elle birleştirebilir. Aynı MERGED / CLOSED / zaman aşımı çıkışları geçerlidir.
Adım 11 — İş bitimi (evrensel)
Yalnızca PR başarıyla birleştiyse erişilir:
git checkout {target-branch}
git pullKullanıcı beceriyi hedef dalda, birleştirilmiş değişiklik dahil edilmiş hâlde, bir sonraki göreve hazır olarak bitirir.
Adım 12 — Son rapor
✅ /create-pr complete
Branch: feat/create-pr-skill
PR: https://github.com/.../pull/N
Review: generic + 1 team reviewer (software-project-team)
3 issues, 1 concern, all addressed
Drain: /drain ran — 2 wiki pages updated, 1 journal entry
Auto-merge: enabled, merged after 4 min (1 auto-fix: prettier formatting)
End-of-work: returned to main, pulled latestÖnemli kısıtlar
- Asla doğrudan birleştirme. Bu beceri
gh pr merge --auto --squash(auto-merge etkinleştirme) komutunu yalnızca--auto-mergeverildiğinde kullanır. Hemen birleştiren birgh pr merge --squash/--merge/--rebase(--autoolmadan) daima yasaktır — auto-merge zorunlu-denetim kapısını korur ve kullanıcı bayrağı yazarak bu işe katılmıştır. - İdempotent drain. Burada
/drain'i çalıştırmak güvenlidir — yalnızca onaylanmamış kuyruk girdilerini işler. - team.json doğrulaması. Stage'lenmiş fark bir
team.jsondosyasına dokunuyorsa, push'tan önce beceri dosyanın ayrıştırılabilir olduğunu, birnamealanı içerdiğini ve bildirilen tüm varlıkların diskte var olduğunu doğrular. - Başlamadan önce dal hijyeni. Yeni dalı türetmeden önce beceri yerel varsayılan dalın
originile güncel olduğunu doğrular; geride kalmışsa önce ileri-sarma yapar (branch-hygienegereği). - Sessiz, kısmi başarısızlık yok. Herhangi bir adım başarısız olursa beceri durur ve raporlar — kullanıcı nerede olduğunu daima bilir.
İlgili
/drain— bekleyen öğrenmeleri bilgi tabanına katlamak için Adım 4'te çağrılır.branch-hygienekuralı — dallanmadan önce temel dalı güncel tut.karpathy-guidelineskuralı — inceleme isteminin temeli.
Kaynak
- Belirtim: core/skills/create-pr/SKILL.md.