Gün 4: Dynamic Workflow ve Hooks — Akıllı Akış
Day 4: Dynamic Workflow and Hooks — smart flow
Bu derste neler öğreneceksin
- Dynamic workflow'un (şartlı akış) ne olduğunu anlamayı: 'eğer-ise' kararı
- Komutun kendi kendine 'test geçti mi?' diye karar vermesini sağlamayı
- Hook'un (otomatik refleks) ne olduğunu ve .claude/settings.json ile nasıl kurulduğunu öğrenmeyi
- Örnek projede 'kod değişince otomatik kontrol' hook'unu kurmayı
Dünkü Komut İyiydi Ama Biraz “Düz”
Dün /siradaki-ozellik komutunu yaptık. Harika çalışıyor ama biraz düz — hep aynı adımları sırayla yapıyor. Gerçek hayatta ise kararlar şarta bağlıdır:
- Hava yağmurluysa → şemsiye al. Güneşliyse → şapka tak.
- Ödev bittiyse → oyna. Bitmemişse → bitir.
Bugün komutumuzu da böyle karar verebilen hale getireceğiz. İki yeni güç öğreneceğiz: dynamic workflow (şartlı akış) ve hooks (otomatik refleks).
Dynamic Workflow: “Eğer-İse” Kararı
Dynamic kelimesi “değişken, duruma göre” demek. Dynamic workflow ise “duruma göre karar veren iş akışı” demektir. Yani komut hep aynı şeyi yapmaz; şarta bakar, ona göre davranır.
Dynamic workflow = “eğer-ise” kararı. Düz workflow: “şunu yap, sonra bunu yap.” Dinamik workflow: “şunu yap; eğer sonuç iyiyse devam et, eğer kötüyse düzelt ve tekrar dene.”
Dünkü /siradaki-ozellik komutumuza bir karar ekleyelim: test geçtiyse imzaya hazır olsun; geçmediyse Bıdık kendi düzeltsin ve tekrar test etsin — sen söylemeden.
Bıdık’a şunu ver:
.claude/commands/siradaki-ozellik.md komutumu güncelle. Şu kararı ekle:
- Özelliği yap ve Playwright ile test et.
- EĞER kabul kriteri geçtiyse: bana "imzaya hazır" de.
- EĞER geçmediyse: hatayı kendin düzelt, tekrar test et. Bunu en
fazla 3 kez dene. 3 denemede de geçmezse dur ve bana neyin yanlış
gittiğini anlat.
Komutu güncelle.
Bıdık komutu güncelleyecek. Artık /siradaki-ozellik akıllı:
● /siradaki-ozellik (akıllı sürüm) çalışıyor...
→ Kod yazıldı, test ediliyor...
→ ✗ Test geçmedi: "Uyut" butonu enerjiyi artırmıyor
→ Kendim düzeltiyorum (deneme 1/3)...
→ Tekrar test ediliyor... ✓ geçti!
✓ İmzaya hazır. (1 düzeltme gerekti.)
Gördün mü? Bıdık test geçmeyince durup sana sormadı — kararı kendisi verdi, düzeltti, tekrar denedi. İşte “eğer-ise” kararının gücü bu.
Düz komut: “Yap ve bana göster” (hata olsa bile sana hatalı gösterir). Akıllı komut: “Yap, test et; geçmezse düzelt; ancak gerçekten çalışınca bana göster.”
Hooks: Bıdık’ın Otomatik Refleksi
Şimdi ikinci güç: hooks (kanca / tetikleyici). Hook, “belli bir olay olduğunda otomatik çalışan” bir komuttur. Sen söylemezsin — olay olunca kendiliğinden olur.
Hook = otomatik refleks. Doktor dizine vurunca bacağın zıplar — sen “zıpla” demezsin, refleks kendiliğinden olur. Hook da öyle: bir olay olur (mesela bir dosya kaydedilir), Bıdık bir şeyi otomatik yapar.
Gerçek hayattan örnekler:
- Olay: Eve girdin → Refleks: Işığı açtın.
- Olay: Telefon çaldı → Refleks: Ekrana baktın.
Bıdık’ta:
- Olay:
app.jsdosyası değişti → Refleks: Otomatik bir kontrol çalıştır. - Olay: Bıdık bir cevabı bitirdi → Refleks: “Kaydettin mi?” hatırlatması.
Hooks Nerede Tanımlanır? .claude/settings.json
Hook’lar projedeki .claude/settings.json adlı bir ayar dosyasına yazılır. Bu dosya, Bıdık’ın “otomatik refleks listesi” gibidir: “şu olay olunca şu komutu çalıştır” diye yazar.
.claude/settings.json= otomatik refleks defteri. İçine “ne olunca ne olsun” yazarsın. Bıdık o olayı her gördüğünde refleksi kendiliğinden çalıştırır.
Şimdi Dene: “Kod Değişince Otomatik Kontrol” Hook’u
Örnek projemize basit bir refleks kuralım: app.js her değiştiğinde, Bıdık otomatik olarak “dosyada bariz bir hata var mı” diye baksın. Bıdık’a şunu ver:
Bu projeye bir hook kur. .claude/settings.json dosyasına ekle:
- Olay: app.js dosyası her değiştirildiğinde (yazıldığında).
- Refleks: kısa bir kontrol çalıştır — dosyada eksik parantez,
yarım kalmış satır gibi bariz bir hata var mı diye bak ve sonucu
bana tek satırda bildir.
Hook'u kur ve nasıl çalıştığını bana anlat.
Bıdık hook’u kuracak:
● .claude/settings.json güncelleniyor...
Hook eklendi:
"app.js her değiştiğinde → hızlı sözdizimi kontrolü → sonucu bildir"
✓ Artık app.js'i her güncellediğimde otomatik kontrol edeceğim,
sen söylemesen bile.
Şimdi test et. Bıdık’a app.js’te küçük bir değişiklik yaptır:
app.js'te "Uyut" butonunun enerji artışını 15'ten 20'ye çıkar.
Bıdık değişikliği yapacak ve sen istemeden hook devreye girecek:
● app.js güncellendi (enerji artışı 20 oldu)
● [otomatik hook] Hızlı kontrol: ✓ sözdizimi temiz, hata yok
O [otomatik hook] satırını sen istemedin — refleks kendiliğinden çalıştı. İşte hook’un büyüsü bu.
Dikkat: Hook’lar güçlüdür ama dikkatli kurulmalı. Yanlış kurulan bir hook her seferinde gereksiz çalışıp can sıkabilir. Basit başla, gerektikçe ekle. Emin değilsen bir büyüğüne danış.
İkisi Birlikte: Akıllı Akış
Bugün iki şey öğrendin ve birlikte kullanılırlar:
- Dynamic workflow → komutun karar vermesi (“geçti mi? geçmediyse düzelt”).
- Hook → bir olayda otomatik refleks (“dosya değişti → kontrol et”).
Bu ikisi, Bıdık’ı “söyleneni yapan” bir araçtan “kendi kendine düşünüp toparlayan” bir ortağa çevirir.
Kontrol Noktası ✅
-
/siradaki-ozellikkomutunu akıllı yaptım: test geçmezse kendi düzeltiyor. - “Dynamic workflow = eğer-ise kararı” cümlesini anlatabiliyorum.
-
.claude/settings.json’a bir hook kurdum (app.js değişince otomatik kontrol). - app.js’i değiştirdim,
[otomatik hook]satırının kendiliğinden çalıştığını gördüm.
Bugün Ne Öğrendin?
- Dynamic workflow, “eğer-ise” kararıyla duruma göre davranan iş akışıdır.
- Akıllı komut, test geçmezse durup düzeltir; sadece gerçekten çalışınca onaya sunar.
- Hook, bir olayda otomatik çalışan bir reflekstir;
.claude/settings.json’a yazılır. - İkisi birlikte Bıdık’ı kendi kendine toparlayan bir ortağa çevirir.
Ebeveyn Notu
Bu ders iki ileri kavramı çocuk diline indirir. Dinamik (şartlı) iş akışı, komutun koşullara göre dallanmasıdır — programlamadaki “if/else” mantığının yumuşak bir tanıtımı. Hook ise olay-tetikli otomasyondur: .claude/settings.json’da tanımlanan ve belirli bir olayda (dosya kaydı, oturum başı, komut sonu) otomatik çalışan bir tetikleyici. Çocuğunuz “otomatik refleks” metaforuyla bunu somutlaştırır. Hook’ların güçlü ama dikkatle kurulması gereken araçlar olduğunu vurgulamak iyi olur — bilinçli otomasyon kültürünün başlangıcı.
Etkinlik (Elle Yapılacak)
Bir kağıda iki bölüm yapın:
1. “Eğer-İse” kartları: Günlük hayattan 5 tane şartlı kural yazın:
- “Eğer yağmur yağıyorsa → şemsiye al.”
- “Eğer çubuk kırmızıysa → hayvanı besle.”
- … (çocuğunuz 3 tane daha bulsun)
2. “Otomatik refleks” listesi: 3 tane otomatik tetikleyici hayal edin:
- “Eve girince → ışık otomatik yansın.”
- “Ödev klasörüne dosya eklenince → otomatik yedek alınsın.”
- … (çocuğunuz 1 tane daha bulsun)
Bu etkinlik, “şartlı karar” ile “otomatik tetikleyici” arasındaki farkı pekiştirir.
Yarın
Yarın P — Kanıtla modülüne geçiyoruz ve çok önemli bir konu var: izinler ve güvenlik. Bıdık’a “göster bana” demeyi, izin kalkanını, otomatik modu, /loop komutunu ve tehlikeli “tüm izinleri atla” düğmesini (ne zaman kullanılır, ne zaman kullanılmaz) öğreneceksin!