beast-agent 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: dispatching-parallel-agents
3
+ description: Birbirinden bağımsız 2+ iş aynı anda yapılabilecekken kullan — farklı alt sistemlerdeki hatalar, farklı araştırmalar, farklı dosyalar; işler sıra gerektirmeden ve ortak durum paylaşmadan yürüyebiliyorsa.
4
+ ---
5
+
6
+ # Paralel Ajan Devri
7
+
8
+ ## Genel Bakış
9
+
10
+ İşleri, bağlamı İZOLE alt-ajanlara devredersin. Talimatlarını ve
11
+ bağlamını hassas kurarak odaklarını ve başarısını garanti edersin. Onlar
12
+ senin oturum bağlamını asla görmez — ihtiyaç duydukları her şeyi SEN
13
+ inşa edersin. Bu, kendi bağlamını koordinasyon işine saklar.
14
+
15
+ **Çekirdek ilke:** Bağımsız her problem alanı için bir ajan. Paralel koştur.
16
+
17
+ ## Ne Zaman
18
+
19
+ **Kullan:**
20
+ - Farklı kök nedenli 3+ test hatası
21
+ - Birbirinden bağımsız kırılmış alt sistemler
22
+ - Her sorun diğerinin bağlamı olmadan anlaşılabilir
23
+ - Araştırmalar arasında ortak durum yok
24
+
25
+ **Kullanma:**
26
+ - Hatalar ilişkiliyse (biri düzelince diğerleri de düzelebilir) — birlikte incele
27
+ - Tam sistem durumunu görmek gerekiyorsa
28
+ - Ajanlar birbirine karışacaksa (aynı dosyaları düzenliyorlarsa)
29
+
30
+ ## Desen
31
+
32
+ ### 1. Bağımsız Alanları Belirle
33
+
34
+ Sorunları neyin kırıldığına göre grupla:
35
+ - test-a.test.js: onay akışı
36
+ - test-b.test.js: batch tamamlama
37
+ - test-c.test.js: iptal davranışı
38
+
39
+ Her alan bağımsız — onay fix'i iptal testlerini etkilemez.
40
+
41
+ ### 2. Odaklı Ajan Görevleri Yaz
42
+
43
+ Her ajana:
44
+ - **Spesifik kapsam:** tek dosya/alt sistem
45
+ - **Net hedef:** bu testler geçsin
46
+ - **Kısıt:** başka koda dokunma
47
+ - **Beklenen çıktı:** ne buldun + ne düzelttin özeti
48
+
49
+ ### 3. Paralel Devret
50
+
51
+ Tüm devirleri AYNI cevapta ver — paralel koşarlar:
52
+
53
+ ```
54
+ run_background: "tests/a.test.js'deki 3 hatayı düzelt ..."
55
+ run_background: "tests/b.test.js'deki 2 hatayı düzelt ..."
56
+ run_background: "tests/c.test.js hatasını düzelt ..."
57
+ ```
58
+
59
+ Birden çok çağrı aynı turda = paralel. Tur başına bir çağrı = sıralı.
60
+ Bağımsız adımlar için `run_background_many` TEK ÇAĞRIDA fan-out yapar ve
61
+ bitince TEK birleşik rapor düşürür.
62
+
63
+ ### 4. İncele ve Entegre Et
64
+
65
+ Ajanlar dönünce:
66
+ - Her özeti oku
67
+ - Fix'ler çakışıyor mu kontrol et (aynı kod düzenlenmiş mi?)
68
+ - Tam test suite'ini çalıştır — hepsi birlikte çalışıyor mu doğrula
69
+ - Ara sıra elle kontrol — ajanlar sistematik hata yapabilir
70
+
71
+ ## Ajan Görev Metni Yapısı
72
+
73
+ İyi görev metinleri:
74
+ 1. **Odaklı** — tek net problem alanı
75
+ 2. **Kendine yeterli** — problemi anlamak için gereken TÜM bağlam
76
+ (dosya yolları, hata mesajları, test isimleri — ajan senin sohbetini göremez)
77
+ 3. **Çıktıya spesifik** — ajan ne döndürmeli?
78
+
79
+ ```markdown
80
+ src/agents/abort.test.js'deki 3 hatayı düzelt:
81
+
82
+ 1. "partial output ile abort" — 'interrupted at' bekleniyor
83
+ 2. "mixed completed/aborted" — hızlı araç abort edilmedi
84
+ 3. "pendingToolCount" — 3 beklenirken 0
85
+
86
+ Bunlar zamanlama/race sorunları. Görevin:
87
+ 1. Test dosyasını oku, her testin ne doğruladığını anla
88
+ 2. Kök nedeni bul — zamanlama mı, gerçek bug mı?
89
+ 3. Düzelt:
90
+ - Keyfi timeout'ları event-beklemeliyle değiştir
91
+ - Bulunan gerçek bug'ları düzelt
92
+ - Davranış değiştiyse test beklentisini güncelle
93
+
94
+ SADECE timeout artırma — gerçek sorunu bul.
95
+
96
+ Dönüş: ne bulduğun ve ne düzelttiğin özeti.
97
+ ```
98
+
99
+ ## Yaygın Hatalar
100
+
101
+ **❌ Çok geniş:** "tüm testleri düzelt" — ajan kaybolur
102
+ **✅ Spesifik:** "abort.test.js'yi düzelt" — odaklı kapsam
103
+
104
+ **❌ Bağlamsız:** "race condition'ı düzelt" — ajan nerede bilmiyor
105
+ **✅ Bağlamlı:** hata mesajlarını ve test isimlerini yapıştır
106
+
107
+ **❌ Kısıtsız:** ajan her şeyi refactor edebilir
108
+ **✅ Kısıtlı:** "sadece testleri düzelt, production koduna dokunma"
109
+
110
+ **❌ Belirsiz çıktı:** "düzelt" — ne değiştiğini bilemezsin
111
+ **✅ Spesifik:** "kök neden ve değişiklik özeti dön"
112
+
113
+ ## Doğrulama
114
+
115
+ Ajanlar döndükten sonra:
116
+ 1. **Her özeti incele** — ne değiştiğini anla
117
+ 2. **Çakışma kontrolü** — ajanlar aynı kodu düzenledi mi?
118
+ 3. **Tam suite çalıştır** — tüm fix'ler birlikte çalışıyor mu
119
+ 4. **Rastgele kontrol** — ajan raporları iddiadır, kanıt değil
120
+ (verification-before-completion)
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: executing-plans
3
+ description: Yazılı bir implementasyon planı bu oturumda uygulanacakken kullan — paralel ajan devri yapılmadan, plan adımları elle yürütülecekse.
4
+ ---
5
+
6
+ # Plan Yürütme
7
+
8
+ ## Genel Bakış
9
+
10
+ Planı yükle, eleştirel incele, tüm görevleri uygula, bitince raporla.
11
+
12
+ **Not:** CEO modu / paralel ajan mümkünse subagent-driven-development daha
13
+ iyi sonuç verir — bu skill ajan devrinin olmadığı düz yürütme içindir.
14
+
15
+ ## Süreç
16
+
17
+ ### Adım 1: Planı Yükle ve İncele
18
+ 1. Plan dosyasını oku (ve varsa gösterdiği spec dosyasını)
19
+ 2. Eleştirel incele — plan hakkında soru/tereddüt var mı?
20
+ 3. Tereddüt varsa: BAŞLAMADAN kullanıcıya bildir
21
+ 4. Yoksa: todo_write ile plan görevlerini aç ve başla
22
+
23
+ ### Adım 2: Görevleri Uygula
24
+
25
+ Her görev için:
26
+ 1. todo_write'ta in_progress yap
27
+ 2. Her adımı plan yazdığı gibi uygula (plan ısırık adımlar taşır — atlamak yok)
28
+ 3. Belirtilen doğrulamaları çalıştır (run_command — komut çıktısıyla)
29
+ 4. done yap, sıradakine geç
30
+
31
+ ### Adım 3: Bitiş
32
+
33
+ Tüm görevler tamam ve doğrulandığında:
34
+ - 1-3 satırlık özet rapor: ne yapıldı + doğrulama kanıtları (ör. "npm test ✓ 154/154")
35
+ - verification-before-completion: "bitti" demeden önce taze kanıt şart
36
+
37
+ ## Ne Zaman Durup Sorulur
38
+
39
+ Hemen dur:
40
+ - Engel ile karşılaşırsan (eksik bağımlılık, test fail, belirsiz talimat)
41
+ - Plan başlamayı engelleyen kritik boşluk içeriyorsa
42
+ - Bir talimatı anlamıyorsan
43
+ - Doğrulama tekrar tekrar fail ediyorsa
44
+
45
+ **Tahmin etmek yerine sor.**
46
+
47
+ ## Ne Zaman Önceki Adıma Dönülür
48
+
49
+ - Kullanıcı planı güncellerse → Adım 1'e dön
50
+ - Temel yaklaşımın yeniden düşünülmesi gerekiyorsa → Adım 1'e dön
51
+
52
+ Engellere zorla geçme — dur, sor.
53
+
54
+ ## Hatırla
55
+
56
+ - Planı önce eleştirel incele
57
+ - Plan adımlarını birebir takip et
58
+ - Doğrulamaları atlama
59
+ - Kendi başına plan değiştirme — plan hatalıysa kullanıcıya bildirip karar al
60
+ - Hiçbir doğrulama "elle yaptım" ile geçmez
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: subagent-driven-development
3
+ description: Bağımsız görevlere bölünmüş bir implementasyon planı yürütülürken, görev başına taze paralel ajan devredilecekken kullan — CEO modunda planlı geliştirme işlerinde.
4
+ ---
5
+
6
+ # Alt-Ajan Destekli Geliştirme
7
+
8
+ Planı, görev başına TAZE implementer alt-ajanı devrederek yürüt; her
9
+ görevden sonra görev incelemesi (spec uyumu + kalite), sonda tüm işin
10
+ genel incelemesi.
11
+
12
+ **Neden alt-ajan:** Bağlamı izole, uzman ajanlara devredersin. Onlar senin
13
+ oturum bağlamını asla görmez — ihtiyaçları olan her şeyi sen kurarsın. Bu
14
+ senin bağlamını koordinasyona saklar ve her görevde taze, kiralanmamış
15
+ bağlam garanti eder.
16
+
17
+ **Çekirdek ilke:** Görev başına taze ajan + görev incelemesi + sonda geniş
18
+ inceleme = yüksek kalite, hızlı iterasyon.
19
+
20
+ **Kesintisiz yürütme:** Görevler arasında kullanıcıya "devam edeyim mi?"
21
+ diye DURMA. Planı sorana kadar yürüt. Durmanın sadece 4 sebebi var:
22
+ (1) geri döndürülemez/yıkıcı işlem, (2) güvenlik hassasiyetli işlem,
23
+ (3) worktree dışına dokunan yan etki (merge, push, publish), (4) plan o
24
+ kadar bozuk ki her yol tahmine dayanıyor.
25
+
26
+ **Karar ver, bekleme:** Çelişki, belirsizlik, plan kusuru — sen karar ver.
27
+ Spec bağlayıcı otoritedir, plan onun savunmasıdır. Her kararı defterine
28
+ `Karar: <neyi> — <neden> — <yanlışsa maliyeti>` olarak yaz ve devam et.
29
+
30
+ ## Ne Zaman
31
+
32
+ - Implementasyon planı var mı? → yoksa önce writing-plans
33
+ - Görevler çoğunlukla bağımsız mı? → sıkı bağlıysa satır içi (executing-plans)
34
+ - CEO modu / paralel ajan mümkün mü? → evetse bu skill
35
+
36
+ ## Kurulum
37
+
38
+ 1. Planı BİR KEZ oku (ve varsa spec'i — çelişkiler spec'e göre çözülür)
39
+ 2. todo_write ile her göreve bir madde aç
40
+ 3. Defteri kur: `<workspace>/.sdd/<plan-adı>-progress.md` — ilk satır
41
+ `# SDD defteri — plan: <plan dosyası>` olsun. Bağlam sıkışırsa/kaybolursa
42
+ defter VE git log senin hafızandan güvenilirdir; tamamlanan görevleri
43
+ yeniden devretme.
44
+ 4. Görev 1'den önce hızlı çelişki taraması: birbiriyle çelişen görevler,
45
+ görevlerin tanımladığı arayüzler tutarlı mı? Bulgu varsa kararını deftere yaz.
46
+
47
+ ## Model Seçimi (agent: parametresi)
48
+
49
+ Her devirde en az güçlü yeterli modeli kullan — run_background'da
50
+ `agent:` ile tanımlı ajan ver (%APPDATA%\beast\agents\*.md) ya da görevde
51
+ model beklentisini belirt:
52
+
53
+ - **Mekanik iş** (izole fonksiyon, net spec, 1-2 dosya, plan kodu tam içeriyor):
54
+ hızlı/ucuz model
55
+ - **Entegrasyon/tyargı işi** (çok dosya, pattern eşleme, debug): standart model
56
+ - **Mimari/tasarım işi + FİNAL inceleme:** en güçlü model — final review
57
+ asla oturum varsayılanına düşük kalmamalı
58
+ - **Fix turları 4-5:** takılan implementer'dan bir tier güçlü model
59
+
60
+ ## Görev Döngüsü
61
+
62
+ **Küçük aynı-kalıp işleri TOPLA:** plan birkaç küçük bağımsız aynı-tip edit
63
+ listeliyorsa görev başına ajan AÇMA — tek brief'te tüm dosyaları listele,
64
+ tek ajana ver, diff'ini tek unit olarak incele.
65
+
66
+ ### 1. Implementeri devret
67
+
68
+ - **Görev brief'i:** görev metnini brief dosyasına yaz
69
+ (`<workspace>/.sdd/gorev-N-brief.md`) — tam değerler, kod, testler brief'te.
70
+ Devir metni şunu içersin: (1) görevin projedeki yeri tek cümle; (2) brief
71
+ dosyasının yolu ("önce bunu oku — gereksinimlerin burada, değerleri birebir
72
+ kullan"); (3) brief'in bilemeyeceği önceki görevlerin arayüz kararları;
73
+ (4) belirsizliklerin çözümü; (5) rapor dosyası yolu
74
+ (`gorev-N-rapor.md`).
75
+ - **Kritik kuralları GÖM:** alt-ajanlar skill OKUMAZ (skills taraması
76
+ arka-ajanlara girmez) — TDD/verification gibi şartları görev metnine tek
77
+ cümleyle göm: "Testten önce kod yok: RED→fail gör→GREEN→pass gör.
78
+ Bitti demeden önce test çıktısıyla kanıtla."
79
+ - **Alt-ajan alt-ajan AÇAMAZ** — bu normaldir: implementer inceleme de
80
+ devredemez; inceleme senden gelir.
81
+ - Aynı anda birden çok implementasyon ajanı devretme (çakışır) —
82
+ BAĞIMSIZ görevler run_background_many ile fan-out edilebilir.
83
+ - Report contract: ajan kısa döner — status + commit + tek satır test özeti +
84
+ endişeler; detay rapor dosyasına yazar (senin bağlamını şişirmez).
85
+
86
+ ### 2. Raporu ele
87
+
88
+ - **DONE:** inceleme paketini hazırla, task reviewer devret (adım 3)
89
+ - **DONE_WITH_CONCERNS:** endişeleri oku; doğruluk/kapsam ise review'dan
90
+ ÖNCE ele al; gözlemse not al ve geç
91
+ - **NEEDS_CONTEXT:** eksik bağlamı ver, yeniden devret
92
+ - **BLOCKED:** bağlam sorunuysa bağlamla; akıl sorunuysa güçlü modelle;
93
+ iş büyükse böl; plan hatalıysa karar ver + deftere yaz + düzeltilmiş devir
94
+
95
+ Ajan takıldı dediysen aynı modelle aynı şartlarda TEKRAR deneme — bir şey
96
+ değişmeli.
97
+
98
+ ### 3. Görevi incele
99
+
100
+ - **Task reviewer devret** (taze ajan): girdiler = brief dosyası + rapor
101
+ dosyası + diff dosyası. Diff'i kendin ÖZETLEME — `git diff BASE..HEAD` çıktısını
102
+ bir dosyaya yaz (BASE = devirden önceki commit) ve yolunu ver; reviewer tek
103
+ okumada commit listesi + stat + tam diff görür, senin bağlamına diff girmez.
104
+ - Reviewer'a planın Global Kısıtlarını BİREBİR kopyala — bu onun dikkat
105
+ merceğidir. Açık uçlu talimat ("tüm kullanımları kontrol et") EKLEME.
106
+ - Reviewer'a bulguyu ÖNCEDELEN yargılama — "şunu bayraklama" deme; bulgunu
107
+ çıkarsın, inceleme döngüsünde sen kararlaştırırsın.
108
+ - İki karar gereklidir: spec uyumu ✓ VE kalite onayı. Ajanın öz-incelemesi
109
+ task incelemesinin YERİNİ TUTMAZ.
110
+ - Reviewer "diff'ten doğrulanamıyor" işareti koyabilir — bunları kendin çöz:
111
+ plan + görevler-arası bağlam sende.
112
+
113
+ ### 4. Fix döngüsü
114
+
115
+ Review spec ❌ veya Critical/Important bulgu bildirirse döngü başlar.
116
+ Minor bulgular döngüye girmez — deftere `Task N: minor (ertelendi): <tek satır>` yaz.
117
+
118
+ Tur başına: bir fix devri + bir scoped re-review. Görev başına MAK 5 tur:
119
+
120
+ - **Tur 1-3 — aynı implementer'a devam:** açık bulguları birebir gönder;
121
+ bağlamı duruyor. Aynı ajana mesaj atılamıyorsa taze implementer'a brief +
122
+ rapor + bulguları ver — rapor dosyası kalıcı hafızadır.
123
+ - **Tur 4-5 — taze implementer + güçlü model:** "Önceki implementer N kez
124
+ denedi; artık sen sahibin. Deneneni rapordan oku."
125
+ - Her turda: implementer kapsayan testleri yeniden çalıştırır, fix raporunu
126
+ AYNI rapor dosyasına ekler. Re-review scoped: SADECE fix diff'inde bulgular
127
+ ADDRESSED/NOT ADDRESSED + yeni kırılma var mı.
128
+ - Defteri her turda güncelle: `Task N: fix turu R/5 (X giderildi, Y açık)`.
129
+
130
+ **Kendin fix YAPMA** — bağlamın koordinasyon için temiz kalmalı ve senin
131
+ fix'in review'sız kalır.
132
+
133
+ **Sigorta (5. turda da açık bulgu):** devretmeyi durdur, her bulguyu kendin
134
+ kararla:
135
+ - Reviewer yanılıyorsa → park et: `Task N: park — <bulgu> — Karar: <kod neden duruyor>`
136
+ - Gerçek ama kimseye binmiyorsa → ertelendi olarak park et
137
+ - Gerçek ve yük taşıyorsa → en küçük açıcı değişikliğe karar ver, deftere yaz,
138
+ sonraki görevin devrine taşı
139
+
140
+ ### 5. Görevi tamamla
141
+
142
+ Review temiz gelince (veya bulgular park edildiğinde): deftere
143
+ `Task N: complete (commits <base>..<head>, review clean)` yaz, todo done yap,
144
+ sıradaki görev.
145
+
146
+ ## Final Review
147
+
148
+ Tüm görevler bitince TÜM işin incelemesini devret — en güçlü modelle:
149
+ `git diff <plan-başlangıç>..HEAD` diff dosyası + defterdeki ertelenen minor/
150
+ park satırlarıyla (hangi merge'i bloklar triage etsin). Bulgu dönerse TEK fix
151
+ ajanı devret (bulgu başına ayrı ajan değil) + TEK scoped re-review.
152
+
153
+ Bitirince defterdeki tüm `Karar:` satırlarını final mesajında kullanıcıya
154
+ listele — senin onun adına aldığın kararlar buraya kadar görünür olur.
155
+
156
+ ## Yaygın Bahaneler
157
+
158
+ | Bahane | Gerçek |
159
+ |---|---|
160
+ | "Spec uyumu kabaca tamam" | Reviewer spec boşluğu buldu = bitmedi. Fix veya cap+karar — başka çıkış yok. |
161
+ | "Kendim fixleyeyim, devir maliyetli" | Senin fix'in review'sız kalır ve bağlamını kirletir. Implementer'a devam ettir. |
162
+ | "Bir tur daha yakınsar" | Cap sonrası turlar yakınsamaz — sorun yapısal. Kararlaştır. |
163
+ | "Reviewer zaten yeni bulgu çıkaracak" | Scoped re-review sadece fix'i doğrular; yeni bulgu deftere gider, döngüye değil. |
164
+ | "Bu bulgu bariz yanlış, düşüreyim" | Karar SADECE cap'te ve her karar deftere. Sessiz düşürme yasak. |
165
+ | "Fix küçük, re-review'sız geç" | Review'sız fix = regresyon kapısı. Her tur re-review ile biter. |
166
+ | "İnceleme döngüyü yavaşlatıyor" | Reviewsuz döngü doğrulanmamış efor. İnceleme fren ve direksiyondur. |
167
+ | "Defter yazımı maliyetli" | Defter bağlam sıkışmasından kurtulan tek şeydir. |
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: systematic-debugging
3
+ description: Herhangi bir bug, test hatası, beklenmedik davranış, build/entegrasyon sorunuyla karşılaştığında — ÇÖZÜM ÖNERMEDEN ÖNCE kullan; kök neden araştırması yapılmadan düzeltme denemesi yasak.
4
+ ---
5
+
6
+ # Sistematik Hata Ayıklama
7
+
8
+ ## Çekirdek ilke
9
+
10
+ **Her zaman kök nedeni bul, sonra düzelt. Belirtiye yama = başarısızlık.**
11
+
12
+ **Bu sürecin harfini ihlal etmek, ruhunu ihlal etmektir.**
13
+
14
+ ## Demir Kanun
15
+
16
+ ```
17
+ KÖK NEDEN ARAŞTIRMASI OLMADAN DÜZELTME YOK
18
+ ```
19
+
20
+ Faz 1 tamamlanmadıysa çözüm öneremezsin.
21
+
22
+ ## Ne Zaman
23
+
24
+ Her teknik sorun: test hataları, prod bug'ları, beklenmedik davranış,
25
+ performans sorunları, build/entegrasyon hataları.
26
+
27
+ ÖZELLİKLE şunlarda kullan:
28
+ - Zaman baskısı varken (acele tahmini cezbeder)
29
+ - "Hızlı bir tek düzeltme" çok bariz görünüyorken
30
+ - Birden fazla düzeltme denedin ve olmadıysa
31
+
32
+ Basit görünen sorunlarda da atlama — basit bug'ların da kök nedeni var.
33
+
34
+ ## Dört Faz
35
+
36
+ Her fazı bitirmeden sonrakine geçemezsin.
37
+
38
+ ### Faz 1: Kök Neden Araştırması
39
+
40
+ HİÇBİR düzeltmeden ÖNCE:
41
+
42
+ 1. **Hata mesajlarını DİKKATLE oku** — stack trace'i tamamen oku; satır
43
+ numarası, dosya yolu, hata kodu not al. Çözüm genelde mesajın içindedir.
44
+ 2. **Tutarlı şekilde yeniden üret** — güvenilir tetikleyebiliyor musun?
45
+ Adımlar neler, her seferinde oluyor mu? Üretilemiyorsa veri topla, TAHMİN ETME.
46
+ 3. **Son değişiklikleri kontrol et** — ne değişti? git diff, son commit'ler,
47
+ yeni bağımlılık/config değişikliği.
48
+ 4. **Çok bileşenli sistemlerde kanıt topla** — her bileşen sınırında ne
49
+ girdiğini/ne çıktığını logla; HANGİ katmanın kırdığını gösteren tek bir
50
+ kanıt çalıştırması yap, sonra o bileşeni incele.
51
+ 5. **Veri akışını izle** — bozuk değer nereden kaynaklanıyor? Kim bu değeri
52
+ gönderdi? Kaynağa kadar yukarı çıkar; kaynağında düzelt, belirtide değil.
53
+
54
+ ### Faz 2: Desen Analizi
55
+
56
+ 1. **Çalışan örnek bul** — aynı kod tabanında benzer ama ÇALIŞAN kod nerede?
57
+ 2. **Referansla karşılaştır** — bir desen uyguluyorsan referans implementasyonu
58
+ TAMAMEN oku (göz gezdirme yok).
59
+ 3. **Farkları listele** — çalışanla bozuk arasındaki her farkı, ne kadar küçük
60
+ olursa olsun yaz. "Bu fark önemli olamaz" deme.
61
+ 4. **Bağımlılıkları anla** — hangi bileşen/ayar/ortam varsayımlarına dayanıyor?
62
+
63
+ ### Faz 3: Hipotez ve Test
64
+
65
+ Bilimsel yöntem:
66
+
67
+ 1. **Tek hipotez kur** — "X kök neden, çünkü Y" diye net yaz. Spesifik ol.
68
+ 2. **Minimal test et** — hipotezi test eden EN KÜÇÜK değişikliği yap. Tek
69
+ değişken. Birden fazla şeyi birden düzeltme.
70
+ 3. **Devam etmeden doğrula** — oldu mu → Faz 4. Olmadı mı → YENİ hipotez;
71
+ üstüne yama EKLEME.
72
+ 4. **Bilmiyorsan söyle** — "X'i anlamıyorum" de; araştır, yardım iste.
73
+
74
+ ### Faz 4: Uygulama
75
+
76
+ 1. **Başarısız test üret** — en basit yeniden üretim; test framework varsa
77
+ otomatik test, yoksa tek seferlik script (test-driven-development skill'i
78
+ ilerler). Düzeltmeden ÖNCE şart.
79
+ 2. **Tek düzeltme uygula** — belirlenen kök nedeni hedefle; "buradayken şu da"
80
+ iyileştirmesi YOK, paket refactoring YOK.
81
+ 3. **Düzeltmeyi doğrula** — test geçti mi? Başka testler kırıldı mı? Sorun
82
+ gerçekten çözüldü mü? Başarı iddiasından önce verification-before-completion.
83
+ 4. **Düzeltme işe yaramadıysa:** DUR. Kaç düzeltme denedin say. 3'ten azsa →
84
+ Faz 1'e dön, yeni bilgiyle yeniden analiz et. 3 ve üzeriyse → mimariyi
85
+ sorgula (aşağıda).
86
+
87
+ ### 3+ Düzeltme Başarısızsa: Mimaride Hata Var
88
+
89
+ Desen: her düzeltme başka yerde yeni sorun çıkarıyor; düzeltmeler "büyük
90
+ refactoring" istiyor; her fix yeni belirti üretiyor.
91
+
92
+ DUR ve temel soruları sor: Bu desen sağlam mı? Devam etmek atalet mi?
93
+ Mimariyi refactor etmek mi, belirti düzeltmeye devam etmek mi? Kullanıcıya
94
+ danışmadan 4. düzeltmeyi deneme. Bu başarısız hipotez değil — yanlış mimaridir.
95
+
96
+ ## Kırmızı Bayraklar — DUR ve Sürece Dön
97
+
98
+ Kendini şöyle düşünürken yakalarsan:
99
+
100
+ - "Şimdilik hızlı bir fix, sonra bakarız"
101
+ - "X'i değiştirip bakalım" (araştırma olmadan)
102
+ - "Birden fazla değişiklik yapayım, testleri çalıştırırım"
103
+ - "Testi atlayayım, elle doğrularım"
104
+ - "Muhtemelen X'tir, onu düzelteyim"
105
+ - "Tam anlamıyorum ama bu işe yarayabilir"
106
+ - Veri akışını izlemeden çözüm listesi sunmak
107
+ - 2+ başarısız denemeden sonra "bir fix daha"
108
+ - Her fix başka yerde yeni sorun açıyor
109
+
110
+ **Hepsi aynı anlama gelir: DUR. Faz 1'e dön.**
111
+
112
+ ## Yaygın Bahaneler
113
+
114
+ | Bahane | Gerçek |
115
+ |---|---|
116
+ | "Sorun basit, sürece gerek yok" | Basit sorunların da kök nedeni var; süreç basitte hızlıdır. |
117
+ | "Acil, süreç için vakit yok" | Sistematik hata ayıklama, tahmin-check döngüsünden HIZLIDIR. |
118
+ | "Önce şunu deneyeyim, sonra araştırırım" | İlk fix deseni belirler; baştan doğru yap. |
119
+ | "Testi fix işe yaradıktan sonra yazarım" | Testsiz fix kalıcı değildir; test önce kanıtlar. |
120
+ | "Birden çok fixi birden yapsam zaman kazanırım" | Neyin işe yaradığını izole edemezsin; yeni bug üretir. |
121
+ | "Referans çok uzun, uyarlarım" | Kısmi anlayış bug garantidir. Tamamını oku. |
122
+ | "Sorunu görüyorum, düzelteyim" | Belirti görmek ≠ kök nedeni anlamak. |
123
+
124
+ ## Hızlı Referans
125
+
126
+ | Faz | Anahtar işler | Başarı kriteri |
127
+ |---|---|---|
128
+ | 1. Kök neden | Hata oku, üret, değişiklikleri kontrol et, kanıt topla | NE ve NEDEN'i anladın |
129
+ | 2. Desen | Çalışan örnek bul, karşılaştır | Farkları belirledin |
130
+ | 3. Hipotez | Teori kur, minimal test et | Doğrulandı veya yeni hipotez |
131
+ | 4. Uygulama | Test üret, tek fix, doğrula | Bug çözüldü, testler geçti |
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: test-driven-development
3
+ description: Herhangi bir özellik veya bug fix uygulanırken, implementasyon kodu yazılmadan ÖNCE kullan — yeni özellik, davranış değişikliği, refactoring işlerinde test-önce disiplini zorunludur.
4
+ ---
5
+
6
+ # Test-Driven Development (TDD)
7
+
8
+ ## Genel Bakış
9
+
10
+ Önce testi yaz. Başarısız olduğunu İZLE. Geçecek minimal kodu yaz.
11
+
12
+ **Çekirdek ilke:** Testin başarısız olduğunu izlemediysen, doğru şeyi
13
+ test ettiğini bilmezsin.
14
+
15
+ **Kuralın harfini ihlal etmek, ruhunu ihlal etmektir.**
16
+
17
+ ## Demir Kanun
18
+
19
+ ```
20
+ BAŞARISIZ TEST OLMADAN PRODUCTION KODU YOK
21
+ ```
22
+
23
+ Testten önce kod yazdıysan: SİL. Baştan başla.
24
+
25
+ **İstisna yok:**
26
+ - "Referans olarak tutma"
27
+ - Testleri yazarken "uyarlama"
28
+ - Bakma bile
29
+ - Silmek silmektir. Testten taze implemente et.
30
+
31
+ ## Ne Zaman
32
+
33
+ **Her zaman:** yeni özellik, bug fix, refactoring, davranış değişikliği.
34
+
35
+ **İstisnalar (kullanıcıya sorarak):** atılacak prototipler, üretilmiş kod,
36
+ config dosyaları.
37
+
38
+ "Bu seferlik TDD'yi atlayayım" düşüncesi = bahane. DUR.
39
+
40
+ ## RED-GREEN-REFACTOR
41
+
42
+ ### RED — Başarısız Test Yaz
43
+
44
+ Bir minimal test yaz: ne OLMASI gerektiğini gösterir.
45
+
46
+ **Gereksinimler:**
47
+ - Tek davranış
48
+ - Açık isim (`retry 3 kereden sonra vazgeçer`, "retry works" değil)
49
+ - Gerçek kod (kaçınılmaz değilse mock yok)
50
+
51
+ ### RED'i Doğrula — Başarısızlığını İZLE
52
+
53
+ **ZORUNLU. Asla atlama.**
54
+
55
+ ```
56
+ run_command: node --test tests/ornek.test.js
57
+ ```
58
+
59
+ Doğrula:
60
+ - Test FAIL ediyor (error değil)
61
+ - Hata mesajı beklenen
62
+ - Eksik özellik yüzünden fail ediyor (typo değil)
63
+
64
+ **Test hemen geçti?** Mevcut davranışı test ediyorsun. Testi düzelt.
65
+
66
+ **Test error verdi?** Hatayı düzelt, doğru şekilde fail edene kadar tekrar.
67
+
68
+ ### GREEN — Minimal Kod
69
+
70
+ Testi geçecek EN BASİT kodu yaz. Fazla özellik, gereksiz opsiyon,
71
+ "şimdiyken ekleyiver" YOK (YAGNI).
72
+
73
+ ### GREEN'i Doğrula — Geçişini İZLE
74
+
75
+ **ZORUNLU.** Aynı komutu çalıştır:
76
+ - Test geçiyor
77
+ - Diğer testler hâlâ geçiyor
78
+ - Çıktı temiz (hata/uyarı yok)
79
+
80
+ **Test fail?** Testi değil KODU düzelt.
81
+ **Başka testler fail?** Şimdi düzelt.
82
+
83
+ ### REFACTOR — Temizle
84
+
85
+ Sadece yeşilken: tekrar eden kodu kaldır, isimleri iyileştir, helper çıkar.
86
+ Testleri yeşil tut. Davranış EKLEME. Sonra sonraki failing test ile tekrarla.
87
+
88
+ ## İyi Test
89
+
90
+ | Nitelik | İyi | Kötü |
91
+ |---|---|---|
92
+ | Minimal | Tek şey. İsmi "ve" içeriyorsa böl. | `email ve domain ve boşluğu doğrular` |
93
+ | Açık | İsim davranışı tarif eder | `test1` |
94
+ | Niyet gösterir | İstenen API'yi sergiler | Kodun ne yapacağını gizler |
95
+
96
+ - Gerçek davranışa assert et, mock davranışına asla
97
+ - Test yazmadan önce: bu testi FAIL eden production değişikliğini adlandırabilmeliyim
98
+
99
+ ## Yaygın Bahaneler
100
+
101
+ | Bahane | Gerçek |
102
+ |---|---|
103
+ | "Test etmek için çok basit" | Basit kod da kırılır. Test 30 saniye. |
104
+ | "Sonra yazarım" | Sonradan yazılan test hemen geçer — bu bir şey KANITLAMAZ. Yanlış şeyi test edebilir, hatırladığın kenar durumları kapsar, unuttuğunları kaçırır. |
105
+ | "Testler sonra da aynı hedefe ulaşır" | Test-sonra "bu ne yapıyor?"u cevaplar; test-önce "bu ne YAPMALI?"ı cevaplar. Kod zaten yazılmışken test ondan biaslanır. |
106
+ | "Elle test ettim zaten" | Elle test kayıpsız tekrarlanamaz, kenar durumları kanıtlamaz. |
107
+ | "X saat kaybolacak, silmesem iyi olur" | Batık maliyet yanılgısı. Güvenemediğin kodu tutmak asıl kayıp. |
108
+ | "Keşif gerek önce" | Tamam — keşfi at, TDD ile baştan başla. |
109
+ | "Test yazması zor = tasarım kötü" | Teste dinle. Test etmek zor = kullanmak zor. |
110
+ | "TDD yavaşlatır" | TDD pragmatik yoldur: commit öncesi yakalar, regresyonu önler, korkusuz refactor sağlar. "Pragmatik" kısayol = prod'da debug. |
111
+
112
+ ## Kırmızı Bayraklar — DUR, Baştan Başla
113
+
114
+ - Testten önce kod
115
+ - Implementasyondan sonra test
116
+ - Test anında geçti
117
+ - Testin neden fail ettiğini açıklayamıyorsun
118
+ - "Sonraya" eklenen testler
119
+ - "Sadece bu sefer" bahanesi
120
+ - "Elle test ettim zaten"
121
+ - "Ruha uygun, ritüele değil"
122
+ - "Referans olarak tutarım"
123
+ - "X saat boşa gideydi"
124
+
125
+ **Hepsi aynı anlama gelir: Kodu sil. TDD ile baştan başla.**
126
+
127
+ ## Doğrulama Listesi
128
+
129
+ İşi tamamlanmış saymadan önce:
130
+
131
+ - [ ] Her yeni fonksiyonun testi var
132
+ - [ ] Her testi implementasyondan ÖNCE fail izledim
133
+ - [ ] Her test beklenen sebeple fail etti
134
+ - [ ] Her test için minimal kod yazdım
135
+ - [ ] Tüm testler geçiyor, çıktı temiz
136
+ - [ ] Kenar durumları ve hatalar kapsamlı
137
+
138
+ Tüm kutular dolmuyorsa TDD'yi atladın. Baştan başla.
139
+
140
+ ## Takıldığında
141
+
142
+ | Sorun | Çözüm |
143
+ |---|---|
144
+ | Nasıl test edeceğimi bilmiyorum | İstediğin API'yi yaz, assertion'la başla, kullanıcıya sor |
145
+ | Test çok karmaşık | Tasarım karmaşık demektir. Arayüzü sadeleştir. |
146
+ | Her şeyi mock'lamam gerek | Kod fazla coupled. Bağımlılık enjeksiyonu kullan. |
147
+ | Test kurulumu devasa | Helper çıkar. Hâlâ karmaşıksa tasarımı sadeleştir. |
148
+
149
+ ## Bug Bulunduğunda
150
+
151
+ Bug'ı yeniden üreten FAILING test yaz → TDD döngüsü → test hem fix'i
152
+ kanıtlar hem regresyonu önler. Testsiz bug fixi ASLA yapma.