İçeriğe geç
Ahmet Eren Lapanta

Projen için bir CLAUDE.md

Bu sayfa, kendi repo'su olan ve kodla çalışan biri için. Claude Code bir repo'da açılınca kök dizindeki CLAUDE.md dosyasını okuyor, test komutunu ve dokunulmaması gereken yerleri oraya yazarsan ajan her oturuma bu kurallarla başlıyor. Soruları cevapla, oluşan dosyayı repo'na koy.

Son kontrol:

Projen ne tür bir proje?

Seçtiğin türe göre dosyaya bir kural daha giriyor. API seçersen bu kural "Bir endpoint'in isteğini ya da cevabını değiştirmeden önce sor" diye başlıyor.

İsteğe bağlı. Ne yaptığını ve neyle yazıldığını bir iki cümleyle anlat, ajan bunu her oturumun başında okuyor.

Dosya hangi dilde olsun?

Ajan iki dili de okuyor. Repo'ya Türkçe bilmeyen biri de bakıyorsa İngilizce seç.

Terminale yazdığın komutun aynısı. Henüz testin yoksa boş bırak, dosya o zaman kod yazılmadan önce bir test aracı seçilmesini istiyor.

İsteğe bağlı, her komutu ayrı satıra yaz. Vitest gibi bazı test araçları tipleri denetlemiyor, o yüzden test komutu hatasız biterken typecheck hata verebilir.

Dosya ve klasör adlarını virgülle ayırarak ya da alt alta yaz. Bunlar Sınırlar bölümüne, ajanın sormadan dokunmaması gereken yerler olarak giriyor.

Değişiklikler main'e nasıl giriyor?

Kararsızsan dosyaya her iş için ayrı bir branch ve PR yazılıyor. Hangisini seçersen seç, ajan push'tan önce sana sorması gerektiğini dosyada okuyor.

İş ne zaman bitmiş sayılsın?

Seçtiğin şart dosyanın Bitti tanımı bölümüne yazılıyor ve ajandan son test çıktısını da göstermesi isteniyor. O çıktıyı görmeden işi bitmiş sayma.

Ajan sana hangi dilde cevap versin?

Kod, dosya adları, branch adları ve commit mesajları her seçenekte İngilizce kalıyor.

Cevapların hiçbir yere gönderilmiyor. Dosya bu sayfada, senin tarayıcında oluşuyor.

Oluşan dosya

Her cevapla birlikte güncelleniyor.

# Yöntem

Bu repo'da her işi bu dosyadaki sırayla yap. Bir şey belirsizse tek bir soru sor, tahmin etme.

## Proje

Bu repo bir web uygulaması.

Arayüzde bir şey değiştiyse değişikliği tarayıcıda nerede göreceğimi söyle.

## Dil

Bana Türkçe cevap ver. Kod, dosya adları, branch adları ve commit mesajları İngilizce olsun.

## Komutlar

Bu projede henüz test yok. Kod yazmadan önce bana bir test aracı öner ve nedenini tek cümleyle söyle. Onay verirsem kur ve test komutunu bu bölüme yaz.

## Başlamadan önce

Görevi önce kendi cümlelerinle bana anlat ve neye bakıp bitti diyeceğini yaz. Ben onay verene kadar kod yazma.

## Çalışma sırası

1. Önce testi yaz ve koştur. Test kırmızı yanınca nedenini bana tek cümleyle söyle.
2. Testi yeşile çeviren en küçük değişikliği yap.
3. Testleri tekrar koştur ve ne değiştiğini bana en fazla üç satırla anlat.
4. Yeşil olan her adımı ayrı bir commit'le kaydet. Commit mesajı değişikliği anlatan tek bir cümle olsun.

Kırmızı bir testi sırf geçsin diye değiştirme. Testin yanlış olduğunu düşünüyorsan önce bana söyle.

## Branch ve PR

- Her işi yeni bir branch'te yap, doğrudan main'e commit atma.
- Kendi diff'ini push'tan önce baştan sona oku. Eksik bir test ya da kimsenin istemediği bir değişiklik bulursan düzelt.
- Branch'i push etmek ve PR açmak için bana sor.
- PR açıklamasına neyin değiştiğini ve son test çıktısını yaz.
- PR'ı merge etme.

## Sınırlar

Şifre ya da anahtar taşıyan bir dosyayı okuma, commit'e de koyma. Yeni bir bağımlılık eklemeden önce sor. `git push --force`, `git reset --hard`, `git clean` ve `rm -rf` komutlarını hiç çalıştırma.

## Bitti tanımı

Komutlar bölümündeki her komut hatasız bitmeden işi bitmiş sayma. İşi bana teslim ederken son test çıktısını da göster.

## Takılırsan

1. Hata veren komutu tekrar koştur ve yalnız ilk hatayı oku. Onu düzelt, sonra baştan al.
2. Bozuk bir halin üstüne düzeltme yığma. Son yeşil commit'i `git log --oneline` ile bul ve oradan yeni bir branch aç.
3. Ekranımda ne gördüğümü bana sor.

Hiçbiri işe yaramazsa bunu açıkça söyle ve işin daha küçük bir halini öner.

Kopyaladıktan ya da indirdikten sonra

Dosyayı repo'nun kök dizinine CLAUDE.md adıyla kaydet ve commit'le. Repo'da zaten bir CLAUDE.md varsa bu bölümleri onun sonuna ekle. Claude Code dosyayı oturum açılırken yüklüyor, yüklendiğini görmek için /context yaz ve Memory files listesine bak.

Ajanın hiç çalıştırmaması gereken komutları .claude/settings.json içindeki deny listesine de yaz. Yasak yalnız CLAUDE.md'de yazılıysa ajan gh pr merge gibi bir komutu yine de çalıştırabilir, çünkü Claude Code o komutu kendiliğinden engellemiyor.

Örnekler

Üç hayali proje için formdan çıkan dosyalar. Birini seçip formu onunla doldur. Dosyayı olduğu gibi de kopyalayabilirsin.

  • Web uygulaması

    Kafeler için masa rezervasyonu alan bir Next.js uygulaması. İş, testler ve build geçince bitiyor.

  • API

    Mobil uygulamaya sipariş ve stok verisi sunan bir Spring Boot API'si. Dosya İngilizce, ajan Türkçe cevap veriyor.

Formdaki kuralların çoğunu ücretsiz rehberimde de kullanıyorum. Rehber, yapay zekayla küçük bir web uygulamasını yayına almayı adım adım anlatıyor. Okumak istersen 2 saatte canlı uygulama sayfasından başla.