Claude Code’u Kotlin ve Android projesinde terminalde claude komutuyla başlatabilirsiniz; ajan, CLAUDE.md dosyanızdaki Gradle ve test komutlarını okuyarak kod üretir, düzenler ve doğrular. Bu rehberde Compose, ViewModel, coroutines, JUnit ve Espresso ağırlıklı bir projede ajanı verimli kullanmanın pratik yollarını anlatıyorum. Daha fazla başlangıç bilgisi için Claude Code sayfasına bakabilirsiniz.
Neden Claude Code Kotlin ve Android işlerine uygun?
Claude Code, proje dosyalarını doğrudan okuyup değiştirebildiği için Kotlin kaynak dosyalarında refactor, yeni composable ekleme ve test yazma gibi işleri hızlı yapar. Android projelerinde Gradle bağımlılıkları, modül yapısı ve Compose’un deklaratif yapısı hakkında bağlamı CLAUDE.md ve mevcut kod üzerinden kurar. Özellikle ViewModel ve coroutines gibi tekrar eden desenlerde doğru şablonları üretir; hata durumunda test çıktısını okuyup düzeltme önerir. Yine de ajanın önerdiği her şeyi gözden geçirmek gerekir; Kotlin null-safety ve Compose recomposition konularında yanlış varsayımlar yapabilir.
Projeyi ajan için hazırlama: CLAUDE.md
Kök dizinde CLAUDE.md oluşturun; ajan her turda bu dosyayı okur ve komutları, modül yapısını, kod kurallarını bağlam olarak kullanır. Aşağıdaki örnek, bir Compose tabanlı Android projesi için yeterli başlangıçtır:
# CLAUDE.md
## Proje yapısı
- `app/` ana Android modülü; `feature/` altında ekranlar.
- `core/` ortak modüller: network, database, model.
- UI: Jetpack Compose + Material 3; mimari: MVVM + Repository.
## Sık kullanılan komutlar
- Derle: `./gradlew :app:assembleDebug`
- Birim test: `./gradlew :app:testDebugUnitTest`
- Tek test: `./gradlew :app:testDebugUnitTest --tests 'com.example.MyViewModelTest'`
- Lint: `./gradlew :app:lintDebug`
- UI testi: `./gradlew :app:connectedDebugAndroidTest`
## Kod kuralları
- Kotlin: null-safety kullan; `!!` kullanma; data class'lar immutable olsun.
- Compose: state hoisting uygula; `rememberSaveable` gereken yerde `remember` kullanma.
- ViewModel: `AndroidViewModel` yerine `ViewModel`; state `StateFlow` ile tut.
- Coroutines: `viewModelScope` ve `Dispatchers.IO`; `GlobalScope` kullanma.
- Test: JUnit4, kotlinx-coroutines-test, Compose test rule; Espresso için idling resource ekle.
- Yeni bağımlılık eklemeden önce version catalog dosyasını kontrol et.
Bu dosyayı hazırlarken modül adlarını ve Gradle görevlerini gerçek projeye göre güncelleyin. Version catalog dosyasının yolu (genellikle gradle/libs.versions.toml) ve minSdk/targetSdk değerleri de kritik bağlamdır; ajan API seviyesi farklarını bilmeden java.time gibi sınıfları önerebilir. local.properties dosyasını asla CLAUDE.md’e eklemeyin; SDK yolu gibi makineye özel bilgiler bağlam kirletir.
Çalışma döngüsü ve örnek istekler
Claude Code ile çalışırken şu döngüyü izleyin: önce isteği dosya ve davranış düzeyinde netleştirin; ajanın plan önermesini isteyin, sonra küçük değişiklikleri uygulatıp test ve lint çalıştırın; en son diff’i inceleyin. Plan adımı için Claude Code plan modu: önce planla, sonra yaptır sayfasındaki yaklaşımı kullanabilirsiniz; genel kontrol listesi de Claude Code en iyi pratikler: uygulamalı kontrol listesi makalesinde var. Tipik Kotlin ve Android görevleri için şu istekleri deneyebilirsiniz:
- LoginViewModel’deki
login()fonksiyonunu StateFlow ile yeniden yaz; hata durumunu sealed class ile temsil et, mevcut testleri güncelle. - ProfileScreen’de avatar yükleme composable’ını Coil kullanacak şekilde güncelle; importları ve gerekli bağımlılığı version catalog’a ekle.
- Room entity’sine
updatedAtalanı ekle; migration yaz; DAO ve repository testlerini güncelle. - Onboarding akışı için Espresso testi yaz; ActivityScenarioRule kullan, RecyclerViewActions ile kaydırmayı doğrula.
- Bu modüldeki
mutableStateOfkullanımlarını bul; ViewModel içinde olanları StateFlow veya SharedFlow ile değiştir, Compose tarafında collectAsStateWithLifecycle kullan.
Her istekten sonra sadece ilgili testi çalıştırın; birim test ./gradlew :app:testDebugUnitTest --tests 'com.example.LoginViewModelTest' gibi hedefli olursa döngü hızlanır. Ajanın yaptığı değişiklikleri gözden geçirirken git diff kullanmayı alışkanlık haline getirin; böylece istenmeyen importlar veya kaldırılan extension fonksiyonları yakalanır.
Hangi işler iyi gider, nerelerde dikkatli olmalı?
Claude Code özellikle tekrar eden şablon işlerinde iyidir; ancak Compose recomposition, coroutine context ve Android API seviyeleri konusunda yanlış varsayımlar yapabilir. Aşağıdaki tablo tipik görevler için dikkat noktalarını özetler:
| Görev | Ajan için istek | Dikkat edilecek nokta |
|---|---|---|
| Yeni Compose ekranı | Detay ekranını state hoisting ile oluştur | State sahipliği; process ölümünde rememberSaveable eksikliği |
| ViewModel dönüşümü | LiveData’yı StateFlow’a çevir | viewModelScope ve test dispatcher kurulumu |
| Gradle bağımlılığı | Coil’i version catalog’a ekle ve kullan | Sürüm çakışması; katalog dosyasını atlamak |
| UI testi | Şu akış için Compose testi yaz | Compose test rule senkronizasyonu; Espresso idling resource |
| Lint düzeltme | lintDebug çıktısındaki hataları düzelt | Suppress önerilerine kapılmak; API seviyesi kontrolleri |
Örneğin ajan, remember ile rememberSaveable arasındaki farkı göz ardı edebilir, ViewModel içinde mutableStateOf önerebilir veya ağ çağrısını ana thread üzerinde bırakabilir. Üretilen diff’i bu üç alan üzerinden hızlıca denetleyin. Ayrıca ajan bazen !! operatörünü kullanma kuralını ihlal edebilir; null-safety’yi requireNotNull veya erken return ile çözmek daha uygundur. Compose’da derivedStateOf ve remember kullanımı gereksiz recomposition’a yol açabilir; ajanın önerdiği yapıyı profiler ile doğrulamak gerekebilir.
Test ve doğrulama
Ajanın ürettiği kodu kabul etmeden önce birim testleri ve lint’i çalıştırın: ./gradlew :app:testDebugUnitTest :app:lintDebug. Cihaz veya emülatör varsa ./gradlew :app:connectedDebugAndroidTest ile Espresso veya Compose UI testlerini çalıştırın. Ajan, test çıktısındaki hata satırlarını okuyup düzeltebilir; ancak siz de özellikle coroutine testlerinde StandardTestDispatcher/UnconfinedTestDispatcher seçimi ve Espresso’da idling resource eksiklerini kontrol edin. JUnit testlerinde runTest kullanımı, viewModelScope için Dispatchers.setMain gibi kurulumların doğru yapıldığından emin olun. ViewModel testlerinde Turbine ile StateFlow akışını doğrulamak, zamanlama hatalarını azaltır. Compose UI testlerinde test tag’lerini eklemeyi unutmayın; ajan Modifier.testTag eklemeyi önerebilir ama siz de ekranlarda eksik tag kalmadığını kontrol edin. Lint çıktısındaki NewApi uyarıları, ajanın hedeflediği API seviyesine göre yanlış kod ürettiğini gösterir; her uyarıyı inceleyin.
Birden fazla ajanla paralel çalışma: AgentVera
Kotlin ve Android projelerinde birden çok Claude Code ajanını AgentVera nasıl kullanılır: ilk proje, ajanlar ve ızgara üzerinden ayrı git worktree’lerde çalıştırabilirsiniz; böylece biri Compose UI üzerinde çalışırken diğeri repository veya testleri değiştirebilir, dosya çakışması olmaz. Aynı dosyayı düzenleme riskini ortadan kaldırmak için her ajan kendi worktree’sinde ilerler ve değişiklikler daha sonra birleştirilir. Her tur sonunda otomatik kod incelemesi, yanlış mutableStateOf kullanımı veya eksik coroutine iptali gibi Android’e özgü hataları yakalayabilir. Checkpoint’ler sayesinde riskli bir refactor’u tek tıkla geri alabilirsiniz; token bütçeleri de ajanların maliyetini sınırlar.
Sonuç
Claude Code, CLAUDE.md ile doğru yapılandırıldığında Kotlin ve Android projelerinde günlük işleri hızlandırır. Test döngüsünü aksatmadan küçük adımlarla ilerlemek ve üretilen diff’i Compose ve coroutines açısından gözden geçirmek yeterli. Birden çok işi paralelleştirmek isterseniz AgentVera worktree’lerle güvenli bir zemin sunar.