# Gemini CLI ile Laravel projesi yönetimi: pratik rehber

Adres: https://agentvera.dev/blog/gemini-cli-ile-laravel/ · Yayın: 2026-11-01

Gemini CLI’yı Laravel projesinde etkili kullanın: GEMINI.md hazırlama, Eloquent ve migration görevleri, test döngüsü ve paralel ajan yönetimi.

**Kısaca:**

- Gemini CLI, proje kökündeki GEMINI.md dosyasını okuyarak Laravel konvansiyonlarına göre kod üretir ve test çalıştırır.
- Görevleri küçük parçalara bölüp her çıktıyı Pest veya PHPUnit ile doğrulamak ajanın hata oranını düşürür.
- Çoklu ajan kullanımında worktree ve checkpoint özellikleri migration gibi kritik değişiklikleri güvenle yönetmenizi sağlar.

Gemini CLI, Laravel projesinde `gemini` komutuyla başlatılır ve proje kökündeki GEMINI.md dosyasını okuyarak Laravel’e özgü kurallarla çalışır. Eloquent modelleri, migration’lar, Artisan komutları, Blade, queue ve test süreçleri için somut görevler verdiğinizde terminal üzerinden kod üretir ve testleri çalıştırır. Ajan, proje dosyalarını bağlam olarak kullanır; böylece mevcut controller, model ve migration yapınızı görerek ona uygun kod üretir. Aşağıda bu iş akışını Laravel’de verimli kurmanın yolları var.

## Gemini CLI neden Laravel projeleri için iyi çalışır

[Gemini CLI](/ajanlar/gemini-cli/), proje dosyalarını ve GEMINI.md talimatlarını bağlam olarak kullandığı için Laravel’in klasör yapısını, servis container’ını ve Artisan komutlarını modellemekte iyidir. Ajan, `composer` ve `php artisan` komutlarını kendi terminalinde çalıştırabilir; böylece migration oluşturma, model ve factory üretme gibi tekrarlı işleri sizin adınıza yaparken sonucu hemen test tabanınızla doğrulayabilir. Laravel işlerinde özellikle iyi olduğu alanlar şunlardır: mevcut migration’lardan şema çıkarımı, `$fillable` ve ilişkiler, Form Request kuralları, queue job iskeletleri ve Pest testleri. Ajan ayrıca `App\Models` altındaki sınıfları import etmeyi, `belongsTo` ve `hasMany` ilişkilerini doğru kurmayı, `$casts` ve `$hidden` gibi model özelliklerini tamamlamayı genellikle başarır. Ancak bu doğruluk, ajanın önüne net bir GEMINI.md koymanıza bağlıdır; aksi halde varsayılan PHP alışkanlıkları Laravel’in güvenlik ve organizasyon kalıplarından sapabilir. Ajan, Laravel koleksiyonları ile dizi işleme arasında seçim yaparken çoğunlukla koleksiyon kullanmayı tercih eder; bu da okunabilirliği artırır. Controller’ları ince tutma, `Form Request` sınıflarına doğrulama taşıma gibi iyi pratikleri siz istediğinizde uygular.

## Projeyi ajana hazırlama

Laravel projesinin köküne GEMINI.md ekleyin. Ajan her oturumda bu dosyayı okur; build, test, lint komutlarıyla birlikte sizin tercih ettiğiniz Laravel kurallarını yazın. Örnek dosya:

```markdown
# GEMINI.md

## Komutlar
- Kurulum: `composer install`
- Test: `./vendor/bin/pest`
- Tek test: `./vendor/bin/pest --filter=ExampleTest`
- Lint: `./vendor/bin/pint --test`
- Statik analiz: `./vendor/bin/phpstan analyse`
- Artisan: `php artisan`

## Klasörler
- `app/Models`: Eloquent modelleri
- `app/Http/Controllers`: Controller'lar
- `app/Http/Requests`: Form Request sınıfları
- `app/Actions`: İş mantığı
- `database/migrations`: Migration dosyaları
- `tests`: Pest testleri

## Laravel kuralları
- Migration'lar geri alınabilir olmalı; `down()` metodunu eksiksiz yaz.
- Eloquent modellerinde toplu atama için `$fillable` tanımla, `$guarded` kullanma.
- İş mantığını controller'a yazma; Action veya Service sınıfı kullan.
- Blade dosyalarında ham PHP kullanma; component ve directive tercih et.
- Testlerde `RefreshDatabase` kullan.
- Yeni kod için mutlaka test ekle.
- Çalıştırmadan önce yapacağın adımları kısa bir plan olarak söyle.
```

Bu dosya, ajanın Laravel sürümünüze göre davranmasını sağlar. Proje PHPUnit kullanıyorsa test komutunu `./vendor/bin/phpunit` olarak değiştirin; ajan bunu gördüğünde Pest varsaymaz. Ayrıca `composer.json` içindeki Laravel sürümünü okuyup uyumlu syntax üretebilir. GEMINI.md’e projeye özel bilgileri ekleyin: örneğin `app/Support` altında yardımcı sınıflar varsa, ajanın onları bilmesi iyi olur. Güvenlik katmanı olarak `DB::transaction` kullanımını zorunlu tutun; ajan böylece birden fazla model kaydını transaction içine alır. [Kodlama ajanları için prompt nasıl yazılır?](/blog/kodlama-ajanlari-icin-prompt-yazmak/) rehberindeki net hedef yazma alışkanlıklarını GEMINI.md kurallarıyla birleştirebilirsiniz.

## Çalışma döngüsü ve örnek komutlar

Ajanla çalışma döngüsü şöyle: önce görevi küçük adımlara bölmesini isteyin, sonra yalnızca bir adımı uygulamasını söyleyin. Değişiklikten sonra ilgili testi çalıştırmasını isteyin ve `git diff` çıktısını gözden geçirin. Hata varsa aynı oturumda düzeltme isteyin; çalışan kodu ancak testler geçtikten sonra commit edin. Ajanın her adımda ne yaptığını terminalde görmek için kısa özet isteyin; böylece beklenmedik dosya değişikliklerini erken fark edersiniz. Büyük görevleri küçük parçalara bölmek ajanın bağlamını korumasını sağlar; örneğin "tüm CRUD’u yaz" yerine "index ve show endpoint’lerini testle birlikte yaz" daha güvenlidir.

Örnek Laravel komutları:

- “`users` tablosuna nullable `phone` alanı ekle; migration oluştur, `User` modeline `$fillable` ve `$casts` güncellemesini yap, ilgili Pest testini çalıştır.”
- “`Post` modeli için `published` scope ekle; sadece yayınlanmış postları döndüren controller metodu ve Pest testini yaz.”
- “`SendWelcomeEmail` adında `ShouldQueue` bir job oluştur; `Registered` event’inden dispatch et, testte `Queue::fake()` kullan.”
- “`App\Actions\CreateOrder` sınıfını yaz; stok kontrolü yap, eksik stokta exception fırlat, testini ekle.”
- “Blade bileşeni `alert` yap; `type` ve `message` prop’ları alsın, mevcut iki view’da kullan.”
- “`Order` ve `OrderItem` ilişkisini `hasMany` ile kur; `Order` modelinde `total_price` accessor ekle, factory’leri düzenle, ilişki testini yaz.”

Bu komutlarda hedef net olduğu için ajan daha az sapma yapar ve ürettiği test size güven verir. Komutlarda dosya yollarını tam belirtmek, ajanın doğru sınıfları bulmasını kolaylaştırır.

## Laravel’de güçlü olduğu yerler ve dikkat edilmesi gerekenler

Ajan, net talimat verildiğinde Laravel’in tekrarlı işlerinde hızlıdır. Ama Laravel’e özgü bazı noktaları atlayabildiği için diff ve test çıktısını kontrol edin.

| Görev | İyi prompt | Dikkat |
|---|---|---|
| Migration + model | “`products` tablosu için migration ve `Product` modeli oluştur; `price` decimal(10,2), `stock` integer olsun.” | Mevcut migration’ı değiştirmek yerine yeni migration eklediğinden emin olun; timestamps ve foreign key isimlerini kontrol edin. |
| Form Request | “`StorePostRequest` için `title` zorunlu, en fazla 255 karakter; `body` zorunlu olsun.” | `authorize()` metodunun `true` dönmesi gerektiğini ajan bazen unutur; `failedValidation` özel durumlarını kontrol edin. |
| Queue job | “`SendInvoice` job’ını `ShouldQueue` ile yaz; `InvoiceCreated` event’inden dispatch et.” | Job `implements ShouldQueue` olmazsa senkron çalışır; connection/queue adını projeye göre belirtmezseniz yanlış kuyruğa gidebilir. |
| Pest testi | “`User` modelinin `orders` ilişkisini test eden Pest testi yaz.” | `RefreshDatabase` kullanmayı unutabilir; test verisi için factory yerine elle DB insert edebilir. |
| Artisan komutu | “`users:export` adında bir komut ekle; CSV çıktısı üretsin, `User` modelini kullansın.” | Komut imzasını `signature` özelliğine doğru koymayabilir; `handle()` içinde progres bar kullanmayı atlayabilir; test yazmazsa elle doğrulamak gerekir. |

En sık gördüğüm sorunlar şunlardır: Ajan `$fillable` yerine `$guarded` kullanabilir veya hiç tanımlamaz; bu toplu atama açığı yaratır. Mevcut migration dosyasını günceller veya `migrate:fresh` çalıştırmayı önerir; geliştirme veritabanında geri dönüşü zor sonuçlar doğurabilir. Laravel sürümüne göre eski `Str::slug` veya `Request::validate` kullanımı üretebilir. Ayrıca `app/Models` altındaki sınıf adlarını import etmeden kullanabilir; `php artisan route:list` ve `composer dump-autoload` ile kontrol edin. Blade tarafında component prop’larını yanlış geçirebilir; test veya `php artisan view:cache` ile sözdizimini doğrulayın. Queue işlerinde `dispatch` sonrası test için `Queue::fake()` yerine gerçek kuyruk çalıştırmayı deneyebilir. İlişki kurarken `foreignId` yerine manuel integer sütun ekleyebilir; migration’da `constrained()` kullanmasını isteyin. Model factory’lerinde `definition()` metodunu eksik bırakabilir; test verisi için gerekli tüm alanları eklediğinden emin olun.

## Laravel’de test ve doğrulama

Ajan bir değişiklik yaptığında önce hedefe özel testi çalıştırın: `./vendor/bin/pest --filter=CreateOrderTest`. Sonra tüm paketi çalıştırın: `./vendor/bin/pest`. Kod stili Pint ile zorunluysa `./vendor/bin/pint --test` çıktısını isteyin; ajan düzeltme yapabilir. Migration içeren işlerde `php artisan migrate:rollback` ile geri almayı test ettirin; ardından `php artisan migrate` ile tekrar uygulayın. `php artisan route:list` ve `php artisan test --coverage` gibi komutları görevin parçası yapın. Ajanın ürettiği testlerin gerçekten iddia ettiği davranışı doğruladığını `git diff` üzerinden gözden geçirin; özellikle `assertDatabaseHas` ve ilişki testleri yanıltıcı geçebilir. Son olarak `php artisan tinker` yerine test veya komut kullanmasını isteyin; böylece üretim dışı denemeler tekrarlanabilir olur. Ek doğrulamalar: `php artisan view:cache` ile Blade hatalarını, `php artisan config:cache` ile env bağımlılıklarını yakalayın. Queue işlerinde test ortamında `QUEUE_CONNECTION=sync` ayarıyla job’ların senkron çalışmasını sağlayın; böylece iş mantığı hatalarını testlerde görürsünüz. Migration’ların sırası ve dependency’leri için `php artisan migrate:status` çıktısını kontrol edin. Ajan bir migration eklediğinde `Schema::table` ile mevcut tabloyu değiştirmesini, `down()` metodunda tam geri almayı yazmasını isteyin. Test verisi için factory ve seeder kullanmasını zorunlu tutun; böylece testler taşınabilir kalır.

## Aynı projede birden fazla ajan: AgentVera

AgentVera, Gemini CLI ile diğer ajanları aynı pencerede gerçek terminal panellerinde çalıştırır; Laravel projelerinde en kritik özelliği her ajanı kendi git worktree’sine yönlendirebilmesidir. Böylece biri migration ve model düzenlerken diğeri aynı dosyaları ezmez. Ajan sırası bittiğinde ikinci bir modelin yaptığı otomatik kod incelemesi, migration hatalarını `dosya:satır` bağlantılarıyla gösterir. Checkpoint’ler ise yanlış bir `migrate:fresh` veya model değişikliğini tek tıkla geri almanızı sağlar; bu Laravel’de hızlı deneme-yanılma için büyük kolaylıktır. [Windows’ta kodlama ajanlarını yönetmek: paralel ajanlar](/blog/windowsta-kodlama-ajanlari/) sayfasından paralel ajan yönetimini inceleyebilirsiniz.

## Sonuç

Gemini CLI’yı Laravel’de etkili kullanmanın yolu, projeyi GEMINI.md ile netleştirmek, görevleri küçük tutmak ve her çıktıyı testlerle doğrulamaktır. Ajan Eloquent, migration, Blade ve queue işlerini hızlandırır; asıl kontrol sizde kalır. Birden fazla ajanı aynı projede koşturacaksanız AgentVera’nın worktree ve checkpoint özellikleri güvenli bir zemin sağlar.

## Sık sorulanlar

**Gemini CLI Laravel projesinde nasıl başlatılır?** Proje klasöründe terminali açıp gemini komutunu çalıştırın. Ajan, kök dizindeki GEMINI.md dosyasını okur ve sizin verdiğiniz görevlere göre kod üretmeye başlar.

**GEMINI.md dosyasına Laravel için neler yazmalıyım?** Build, test ve lint komutlarını, klasör yapısını ve Laravel’e özel kuralları yazın. Örneğin ./vendor/bin/pest, php artisan, $fillable kullanımı ve migration geri alınabilirliği gibi kurallar ajanın doğru çalışmasını sağlar.

**Gemini CLI Eloquent modelleri ve migration’ları güvenli şekilde üretebilir mi?** Evet, net talimat verirseniz migration, model ve factory üretebilir. Yine de $fillable, foreign key isimleri ve mevcut migration’ı değiştirmeme gibi noktaları diff üzerinden kontrol edin.

**Gemini CLI ile test çalıştırabilir miyim?** Evet, GEMINI.md’de tanımladığınız ./vendor/bin/pest veya php artisan test komutlarını çalıştırabilir. Ajan test sonuçlarına göre hataları düzeltebilir; siz de tam paketi çalıştırıp doğrulayın.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
