Gemini CLI, React Native proje klasöründe terminalde gemini komutuyla başlatılır; GEMINI.md dosyasıyla proje komutlarını ve kurallarını bildiğinizde navigasyon, native modül, Metro ve Jest işlerini doğrudan yönetebilir. Bu rehber, mevcut React Native bilginizi ajanla verimli kullanmanız için pratik bir çalışma düzeni sunar.
Gemini CLI React Native işlerine neden uygun?
React Native projeleri genellikle çok katmanlıdır: JavaScript/TypeScript mantığı, platforma özel dosyalar, Metro yapılandırması, native modüller ve Jest testleri. Gemini CLI tüm repo’yu okuyup değişiklikleri dosya bazında uygulayabildiği için bu katmanlar arasında tutarlı düzenlemeler yapabilir. Örneğin bir ekran eklerken hem bileşeni oluşturur, hem React Navigation navigatörünü günceller, hem de route tipini düzeltir. Aynı şekilde Jest’te çıkan native modül hatasını jest.setup.js içine mock ekleyerek çözer.
Ajanın en büyük avantajı, React Native’in platforma özel dosya yapısını bilmesidir: Button.ios.tsx ve Button.android.tsx gibi ayrım gerektiren durumlarda uygun dosyaları oluşturup import’ları otomatik yönetebilir. Expo managed workflow’da native klasörlerin olmadığını anlar ve expo install gibi komutları önerebilir; bare workflow’da ise pod install ve gradle senkronizasyonu gerektiğini bilir. Yine de bu bilgiye körü körüne güvenilmemeli; çünkü ajanın eğitim verisi belirli bir sürüme göre olabilir ve projenizdeki gerçek yapılandırma farklılık gösterebilir. Bu yüzden GEMINI.md ile projenin gerçek durumunu aktarmak kritiktir.
Projeyi ajan için hazırlama ve GEMINI.md
En önemli adım proje köküne GEMINI.md eklemektir. Ajan bu dosyayı her oturumda okur; komutları bilmeden tahmin yürütmesini önler. React Native projesi için şunları yazın: kullanılan paket yöneticisi, Expo mu bare mi, geliştirme/test/lint komutları, klasör yapısı, native klasörler için kurallar, Jest mock stratejisi, TypeScript durumu. Ayrıca npx expo start --clear gibi Metro önbellek temizleme komutunu belirtin; ajan bu komutu kendiliğinden bilmeyebilir. Gemini CLI nasıl kullanılır rehberindeki genel kurulum adımlarını uyguladıktan sonra aşağıdaki gibi bir GEMINI.md başlangıç noktası yeterlidir.
# GEMINI.md
## Komutlar
- Bağımlılık: `npm ci`
- Geliştirme: `npx expo start` (Expo) veya `npx react-native start` (bare)
- Test: `npx jest --runInBand`
- Lint: `npx eslint .`
- Tip: `npx tsc --noEmit`
- Native rebuild: `npx expo run:ios` / `npx expo run:android`
## Klasörler
- `src/` uygulama kodu; `src/navigation/` React Navigation; `src/screens/`, `src/components/`
- `__tests__/` Jest testleri
- `android/` ve `ios/` native klasörler: sadece açık istek varsa düzenle.
## Kurallar
- React Native 0.7x, React Navigation 7.x, TypeScript strict.
- Yeni ekran `src/screens/` altına, navigatörde kayıt etmeden olmaz.
- Native modül ya da pod gerektiren değişiklikte `pod install` çalıştır ve bunu commit mesajında belirt.
- Jest mock'ları için `jest.setup.js` kullan; native modülleri mocklamadan test yazma.
- Metro önbellek hatası varsa `npx expo start --clear` öner.
Bu dosyadaki Komutlar bölümü, ajanın test veya lint çalıştırması gerektiğinde doğru komutu seçmesini sağlar; Klasörler bölümü yanlış dosyaya dokunmayı engeller; Kurallar ise React Native’e özgü tuzakları önceden haber verir. GEMINI.md’yi proje geliştikçe güncelleyin; özellikle yeni bir native modül eklendiğinde veya test stratejisi değiştiğinde dosyayı güncellemezseniz ajan eski varsayımlarla çalışır. Ajanın GEMINI.md’yi kendiliğinden değiştirmesine izin vermeyin; bu dosya sizin kontrolünüzde kalmalıdır.
Çalışma döngüsü: plan, küçük adım, test, diff
Terminalde proje klasöründeyken gemini yazıp Enter’a basın. Ajan açıldığında önce kısa ve net bir görev verin; tüm projeyi baştan yazmasını istemeyin. Her turdan sonra git diff ile değişiklikleri inceleyin, ajanın çalıştırdığı komutların çıktısına bakın. Eğer testler kırılırsa hatayı ajanla paylaşın. Kodlama ajanları için prompt nasıl yazılır yazısındaki ilkeleri React Native bağlamına uyarlayın.
Pratik döngü şöyle işler: önce ajanın plan önermesini isteyin, örneğin “React Navigation’a Profil ekranı eklemeden önce adımlarını listele”. Ajan; bileşen oluşturma, navigatöre kayıt, route tipini güncelleme, test yazma gibi adımları sıralayacaktır. Bu planı inceleyin; eksik veya riskli gördüğünüz adımları düzeltmesini isteyin. Onayladıktan sonra uygulamasını söyleyin. Ajan değişiklikleri yaptıktan sonra siz npx jest --runInBand komutunu kendiniz çalıştırın (veya ajanın çalıştırmasını isteyin) ve git diff ile tam olarak ne değiştiğini görün. Bu döngüyü her görev için tekrarlayın; asla birden fazla büyük değişikliği tek turda yapmasına izin vermeyin.
Örnek promptlar:
- React Navigation 7’de
Profilekranını ekle;src/navigation/AppNavigator.tsxiçine kaydet, route parametrelerini tiplendir ve mevcut testleri çalıştır. - Jest’te
@react-native-async-storage/async-storagenative modül hatası veriyor;jest.setup.jsiçine gerekli mock’u ekle venpm test -- --runInBandçalıştır. FlatListrender performansını iyileştir;renderItemfonksiyonunuuseCallbackile sarmala,keyExtractorekle ve değişiklikleri göster.- Metro
ENOENThatası döndürüyor; log dosyasını incele, muhtemel önbellek sorunununpx expo start --clearile çöz ve doğrula. - Derin bağlantı için mevcut
LinkingAPI’sini kullan; navigasyon konfigürasyonunu güncelle, ekranı test et ve commit mesajı öner.
Tipik görevler ve dikkat edilecek noktalar
Gemini CLI şu React Native görevlerinde iyi çalışır: TypeScript tip hatalarını düzeltme, React Navigation ekran ekleme, Jest mock ve testlerini yazma, platforma özel dosyalar oluşturma, StyleSheet düzenleme, bağımlılık sürümlerini güncelleme. Ancak şu alanlarda sıkı denetim gerekir: native klasör düzenlemeleri (ios/, android/), pod kurulumu ve gradle senkronizasyonu, Expo managed ile bare workflow arasındaki farklar, Metro önbellek sorunları, React Hooks kuralları ve native modüllerin gerçek cihazda davranışı. Ajan bazen doğrudan ios/ altında değişiklik yapmaya çalışabilir; bunu yalnızca açıkça istediğinizde yapmasını GEMINI.md’ye yazın.
| Görev | İyi prompt | Ajanın tipik hatası |
|---|---|---|
| Yeni ekran | React Navigation’a Ayarlar ekranını ekle, route tipini güncelle, test yaz. | Navigatör tipini güncellemeden ekran ekleme |
| Native modül mock | Jest’te bu native modülü jest.setup.js içinde mockla, hatayı göster. | Gerçek native çağrıyı test ortamında taklit etmeden düzeltmeye çalışma |
| Metro hatası | Metro logunu incele, önbellek temizleme komutunu çalıştır, doğrula. | --clear gibi gerçek komutları kullanmak yerine varsayımsal çözüm üretme |
| Platforma özel bileşen | Android için ayrı bileşen yaz, .android.tsx dosyası oluştur, import’u güncelle. | Ortak dosyaya Platform.OS koşulu ekleyip dosya yapısını bozma |
Bu tabloda görülen hataların çoğu, ajanın React Native projesinin çalışma bağlamını tam anlamadan hızlı çözüm üretmesinden kaynaklanır. Özellikle native modül eklerken sadece JavaScript tarafını değiştirip pod install veya gradle senkronizasyonunu atlayabilir; bu durumda build hatası alırsınız. Aynı şekilde React Navigation’da ekran eklerken RootStackParamList tipini güncellemeyi unutabilir, bu da tip hatalarına yol açar. Metro hatalarında ise gerçek log çıktısını okumadan varsayımsal çözümler önerebilir; bu yüzden ajanın her zaman terminal çıktısını paylaşmasını isteyin.
React Native’de test ve doğrulama
Ajan her değişiklikten sonra testleri çalıştırmalıdır; GEMINI.md’de npm test -- --runInBand veya npx jest --runInBand komutunu tanımlayın. React Native projelerinde Jest testleri bazen native modül ve ESM dönüşüm hataları verir; ajanın önce jest.setup.js dosyasını kontrol etmesini isteyin. Ayrıca npx tsc --noEmit ile tip kontrolü yapın; ajanın eklediği yeni ekranların route tiplerini güncellemediği durumları yakalar. Birim testler geçse bile UI davranışını simülatörde veya cihazda siz doğrulayın; ajanın çalıştırdığı komutlar yalnızca terminal çıktısı üretir, dokunma ve animasyonları göremez. Son olarak git diff --stat ile ajanın hangi dosyalara dokunduğunu özetleyin.
Doğrulama için şu sırayı izleyin: önce npx tsc --noEmit çalıştırın; tip hatası yoksa npx eslint . ile statik kontrol yapın; ardından npx jest --runInBand ile testleri koşun. Testler geçerse uygulamayı başlatıp ilgili ekranı manuel test edin. Native modül değişikliği varsa pod install veya gradle sync yapıldığından emin olun; ajan bunu atlamış olabilir. Özellikle iOS’ta yeni bir pod eklendiyse projeyi yeniden derleyin ve cihazda çalıştığını doğrulayın.
Birden fazla ajanı tek React Native projesinde çalıştırmak: AgentVera
AgentVera, Gemini CLI dahil birçok terminal ajanını tek pencerede yan yana çalıştırır. React Native projesinde aynı anda navigasyon, Jest mock’ları ve native yapılandırma üzerinde çalışan ajanlar için en kritik özellik ayrı git worktree desteğidir: her ajan kendi çalışma kopyasında değişiklik yapar, böylece birbirlerinin dosyalarını ezmez. Tur bittiğinde ikinci bir model kod incelemesi yapar ve bulguları file:line olarak işaretler; Metro veya pod kurulum hatalarını yakalamak için değerlidir. Ayrıca her turun anlık görüntüsü tek tıkla geri alınabilir ve token bütçeleri günlük maliyeti sınırlar.
Sonuç
Gemini CLI, React Native projelerinde doğru GEMINI.md ve küçük adımlı çalışma döngüsüyle ciddi zaman kazandırır; ancak native katman, Metro ve test mocks konularında sizin gözetiminiz şarttır. Ajanın ürettiği her diff’i inceleyin, testleri çalıştırın ve UI’ı manuel doğrulayın. Paralel çalışma ihtiyacınız varsa AgentVera’nın worktree ve checkpoint özellikleri işleri güvenli tutar.