Davet et, 1 ay ücretsiz Pro kazanNasıl çalışır?

Gemini CLI ile Flask Projesi Geliştirme Rehberi

Gemini CLI’yı Flask projelerinde GEMINI.md, blueprint, application factory, Jinja, SQLAlchemy ve pytest ile pratik olarak adım adım öğrenin.

Solviera Teknoloji 6 dk okuma

Gemini CLI’yi Flask projenizde terminalden gemini komutuyla başlatıp GEMINI.md ile blueprint, application factory, Jinja, SQLAlchemy ve pytest kurallarını verirseniz, ajan bağlamı bilerek çalışır. Bu rehberde kurulum, çalışma döngüsü, tipik görevler ve test doğrulama adımlarını Flask’a özel olarak anlatıyorum.

Gemini CLI neden Flask işine uyar

Flask, katı bir yapı dayatmadığı için ajanın doğru desenleri kavraması projeden projeye değişir. GEMINI.md ile blueprint ve application factory kurallarını açıkça verdiğinizde Gemini CLI, route eklerken mevcut url_for isimlerini korur, yeni blueprint’leri create_app içine doğru sırayla kaydeder ve Jinja şablonlarında yalnızca route bağlamındaki değişkenleri kullanır. SQLAlchemy tarafında oturum yönetimini ve ilişki yüklemelerini bilir; pytest tarafında ise app.test_client() fixture’larıyla test yazabilir. Bu da Flask projelerinde tekrarlayan işlerin çoğunu güvenle devredebileceğiniz anlamına gelir.

Örneğin bir e-ticaret projesinde sipariş listesi endpoint’i eklemek istediğinizde ajan, mevcut blueprint yapısına uygun bir orders.py oluşturabilir, url_prefix değerini projedeki diğer blueprint’lerden öğrenir, SQLAlchemy sorgusunu route içinde yazar ve şablona yalnızca gereken verileri geçirir. Aynı işi elle yaptığınızda birkaç dosyayı elle açmanız gerekir; Gemini CLI bunu tek istekte toplar. Ancak bunun çalışması için proje kurallarının ajan tarafından net görülmesi şarttır. İşte bu yüzden GEMINI.md hazırlığı kritiktir.

Flask projesini ajan için hazırlama

Reponun köküne GEMINI.md ekleyin. gemini komutu bu dosyayı otomatik okur; ekstra bayrak vermeniz gerekmez. Genel kurulum için Gemini CLI nasıl kullanılır? Adım adım rehber sayfasına bakabilirsiniz; burada doğrudan Flask projesine odaklanıyorum. Dosyanın kısa ve net olması önemli; ajan uzun anlatımlarda önemli kuralı atlayabilir.

# GEMINI.md

## Proje komutları
- Kurulum: python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
- Çalıştırma: export FLASK_APP=run.py && flask run --debug
- Test: pytest -q
- Lint: ruff check .
- Format kontrolü: ruff format --check .

## Klasör düzeni
- app/__init__.py: create_app application factory
- app/extensions.py: db, migrate gibi eklentiler
- app/blueprints/: her blueprint ayrı klasörde
- app/templates/ ve app/static/
- tests/: pytest testleri, conftest.py fixture'ları burada

## Flask kuralları
- Modül seviyesinde `from app import create_app` yapma; döngüsel import çıkar.
- Route içinde `current_app`, `db` gibi nesneleri import etmeden kullan.
- Blueprint route'larında `url_for('blueprint.endpoint')` isimlerini koru.
- SQLAlchemy sorgularını şablonda değil route içinde çöz.
- Testler application factory üzerinden `app.test_client()` kullansın.

Bu örnek, ajanın doğru test ve lint komutlarını kullanmasını, klasör beklentilerini bilmesini ve Flask’a özgü tuzaklardan kaçınmasını sağlar. GEMINI.md’yi model değişikliklerinde veya yeni blueprint eklendiğinde güncel tutun. Ayrıca GEMINI.md içine Python sürümü ve bağımlılık yönetimi ile ilgili notlar da ekleyebilirsiniz; örneğin pip freeze yerine requirements.txt kullanıldığını belirtmek ajanın yanlış paket yüklemesini engeller. Dosyayı çok uzatmaktan kaçının; 30–50 satır ideal ölçüdür. Ajan her istekte bu dosyayı bağlam olarak işler, bu yüzden güncel olmayan bilgiler hatalı kod üretimine yol açar.

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

Çalışma şu döngüde ilerler: önce ajanın neyi değiştireceğini küçük bir adım olarak planlayın, sonra gemini içinde o adımı isteyin, değişiklikten sonra pytest -q ve ruff check . çalıştırın, en son git diff ile üretilen kodu satır satır inceleyin. Flask projelerinde tek seferde çok fazla blueprint veya model değişikliği istemek yerine her seferinde bir katmanı hedefleyin. Daha etkili istekler için kodlama ajanları için prompt nasıl yazılır rehberine göz atabilirsiniz.

  • app/auth/routes.py içindeki giriş endpoint’ini blueprint’e uygun şekilde düzenle; url_for('auth.login') kullanan tüm dosyaları kontrol et ve gerekirse güncelle.
  • Yeni app/orders blueprint’ini application factory’ye kaydet; /orders listesi için SQLAlchemy sorgusunu route içinde yap, Jinja şablonunu oluştur ve pytest ile iki test ekle.
  • app/extensions.py üzerindeki db nesnesini kullanarak kullanıcı-rol ilişkisini modelleyen SQLAlchemy değişikliğini yap; mevcut testleri bozma.
  • tests/conftest.py içinde uygulama fabrikası kullanan bir client fixture’ı yaz ve tüm testlerin bu fixture’ı kullanmasını sağla.
  • Jinja şablonlarındaki form alanlarını CSRF ve otomatik kaçış açısından incele; güvenli olmayan |safe kullanımlarını raporla.

Bu istekleri verirken her zaman beklenen dosya ve davranışı açıkça yazın. Örneğin “application factory’ye kaydet” demek yerine “app/init.py içindeki create_app fonksiyonunda app.register_blueprint çağrısını ekle” demek daha kesin sonuç verir. Ajanın bir seferde yaptığı işi küçük tutmak, diff incelemesini kolaylaştırır ve geri almayı ucuzlaştırır. Çalışma döngüsünde git commit’lerini her adımdan sonra atmayı alışkanlık haline getirin; böylece ajanın yanlış bir değişikliğini izole edebilirsiniz.

İyi gittiği işler ve dikkat edilecek yerler

Gemini CLI, tekrar eden Flask işlerinde iyidir: blueprint ayırma, test üretme, SQLAlchemy ilişkilerini düzeltme, Jinja şablonlarını yeniden düzenleme. Ancak aşağıdaki tabloda sık görülen hataları diff aşamasında yakalamanız gerekir.

BileşenDikkat edilecek tipik hata
app/__init__.pyAjan bazen create_app içine modül seviyesinde import yazar; döngüsel import oluşur
Blueprint route’larıUç nokta adını değiştirip şablonlardaki url_for bağlantılarını bozar
Jinja şablonlarıİş mantığını veya sorguyu şablona taşır; gereksiz `
SQLAlchemy modelleriLazy load ilişkilerini şablonda tetikler; N+1 sorgu üretir
pytest fixture’larıGlobal app nesnesi kullanır; app.test_client() yerine yanlış bağlam kurar

Bunların dışında Flask’a özgü üç noktaya özellikle dikkat edin: döngüsel import, uygulama bağlamı ve request sonrası SQLAlchemy oturumunun kapanması. Ajan bazen db.session.remove() çağrısını unutabilir; bu da testlerde kirliliğe yol açar. Blueprint kayıt sırasını değiştirirse url_for hataları çıkabilir; her değişiklikten sonra Flask uygulamasını gerçekten başlatıp kritik route’ları elle test edin.

Özellikle şablonlarda {{ user.orders }} gibi lazy load ifadeleri ajan tarafından sıkça üretilir. Bu, template render sırasında DB sorgusuna neden olur ve performans düşer; ayrıca request bitince oturum kapandığı için hata da verebilir. Bu yüzden GEMINI.md’ye “ilişkileri route içinde joinedload veya selectinload ile yükle” kuralını eklemek faydalıdır. Ajan bu tür ince ayrıntıları kendiliğinden bilemeyebilir; diff incelemesi sırasında lazy='joined' gibi model değişikliklerini aramalısınız. Bir diğer yaygın hata, create_app içinde app.config['SECRET_KEY'] atamasını unutup session kullanımında hata alınmasıdır; bu da testlerde ortaya çıkar.

Flask’ta test ve doğrulama

Ajanın ürettiği her değişiklikten sonra testleri siz çalıştırın; ajanın söylediği başarılı sonuç yeterli değildir. pytest -q komutu hızlı geri bildirim verir; ruff check . stil hatalarını yakalar. Flask testlerinde conftest.py içinde application factory kullanan bir client fixture’ı tanımlayın ve her testin bu fixture’ı kullanmasını isteyin. SQLAlchemy ile çalışırken test başına geçici bir veritabanı kullanmak en temiz yoldur; ajanın db.create_all() ve db.drop_all() çağrılarını fixture içine yerleştirdiğinden emin olun. Son olarak git diff üzerinde yalnızca beklenen dosyaların değiştiğini doğrulayın; beklenmedik bir app/__init__.py değişikliği neredeyse her zaman döngüsel import habercisidir.

Testlerin kapsamını yalnızca route düzeyinde tutmayın; ajanın ürettiği SQLAlchemy sorguları için basit bir model testi de eklemesini isteyin. Örneğin User.query.filter_by(email=...).first() çağrısının doğru sonuç döndürdüğünü doğrulayan bir pytest testi, ilişki hatalarını erken ortaya çıkarır. Test veritabanı olarak SQLite in-memory kullanılabilir; ancak production PostgreSQL davranışlarını taklit etmese de döngüsel import ve bağlam hatalarını yakalamak için yeterlidir. Ajanın testlerini çalıştırmadan önce conftest.py dosyasının sys.path eklemeleri yapmadığından emin olun; bu tür hack’ler ajan tarafından önerilebilir. Bunun yerine paket yapınızı doğru kurun ve pip install -e . kullanın. Ajanın test için monkeypatch kullanması normaldir; ancak app nesnesini global değiştirmesine izin vermeyin. Her testin kendi uygulama örneğini yaratması en güvenlisidir.

Aynı Flask projesinde birden çok ajan: AgentVera

Birden çok Gemini CLI ajanını aynı Flask projesinde paralel çalıştırmak istediğinizde AgentVera’nın gerçek terminal panelleri işe yarar; her ajan kendi git worktree’sinde çalıştığı için biri app/auth üzerinde değişiklik yaparken diğeri app/orders blueprint’ini güvenle geliştirebilir. Ajan turu bittiğinde ikinci bir model kod incelemesi yapar ve Flask’ta sık görülen döngüsel import veya yanlış current_app kullanımını dosya:satır olarak işaretler. Checkpoint sayesinde hatalı bir create_app değişikliği tek tıkla geri alınır; token bütçesi ise ajanın kontrolden çıkmasını önler. Windows’ta bu akışla ilgili paralel ajanlar rehberine bakabilirsiniz.

Bu yaklaşım özellikle birden fazla blueprint üzerinde aynı anda çalışırken faydalıdır; ancak her ajanın GEMINI.md dosyasını aynı sürümde gördüğünden emin olun. Git worktree kullanmak, ana dalın stabil kalmasını sağlar; ajanlar kendi dalında çalışır ve merge sırasında çakışmalar daha kolay çözülür. Kod incelemesi modeli, Flask’a özgü kuralları bilerek url_for endpoint isimlerinin tutarlılığını ve db.session kullanımını kontrol edebilir. Token bütçesi ajanın uzun süre takılmasını engeller, böylece tek bir blueprint’te sonsuz döngüye girmez.

Sonuç

Gemini CLI, doğru GEMINI.md ve test disipliniyle Flask projelerinde blueprint, Jinja, SQLAlchemy ve pytest işlerinin çoğunu güvenilir şekilde yürütür. Yine de ajanın ürettiği her diff’i Flask’a özgü riskler açısından incelemek ve birden çok ajanı kontrollü bir ortamda çalıştırmak gerekir. Küçük adımlarla ilerleyip testleri hep siz çalıştırırsanız, Gemini CLI Flask geliştirme hızınızı ciddi şekilde artırır.

Sık sorulanlar

Gemini CLI Flask projesinde nasıl başlatılır?

Terminalde proje klasörüne gidip gemini yazmanız yeterlidir. GEMINI.md dosyası varsa ajan otomatik okur; proje komutlarını orada tutmak doğru test ve lint komutlarını kullanmasını sağlar.

Gemini CLI Flask için GEMINI.md dosyasına ne yazılmalı?

Blueprint yapısı, application factory (create_app), test ve lint komutları, klasör düzeni, current_app kullanımı ve SQLAlchemy kuralları gibi projeye özel talimatlar yazılmalıdır. Dosyanın kısa ve net olması ajanın kural atlamasını azaltır.

Gemini CLI Flask’ta döngüsel import hatalarını çözebilir mi?

Evet, çoğu zaman çözebilir ama diff’i incelemek gerekir. GEMINI.md’ye modül seviyesinde app import etmeme kuralı koymak ve ajanın extensions.py ile current_app kullanmasını istemek hataları azaltır.

Gemini CLI ile Flask pytest testleri yazdırabilir miyim?

Evet, application factory ve app.test_client() fixture’ları kullanarak test üretir. Ancak testlerin gerçekten geçtiğini kendiniz pytest -q ile doğrulamalı ve SQLAlchemy temizliğini kontrol etmelisiniz.

Ajanlarını bir masaya topla.

AgentVera’yı ücretsiz indir; kurulu CLI’ların hazır.

Diğer Gemini CLI rehberleri

Flask için diğer ajanlar