# GEMINI.md, Gemini’ye kurallarınızı söyler. Kodunuzu değil.

Canonical source: https://maguyva.ai/tr/for-gemini

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

GEMINI.md çalışma bağlamını belirler. MCP, Gemini’nin araçlara uzanmasını sağlar. Maguyva, Gemini’ye reponuzun sorgulanabilir bir haritasını veren MCP sunucusudur; böylece ilk düzenleme dosya yapısına dair bir tahmin olmaz.

> GEMINI.md bağlamdır. MCP kanaldır. Maguyva haritadır.

## Katmanlı yığın

Dört fikir. Her biri tek bir iş yapar.

### GEMINI.md

Gemini’nin bu repoda nasıl davranması gerektiği.

### MCP

Gemini’nin harici araçlara ve bağlama nasıl uzandığı.

### Maguyva

Temellendirilmiş repo bilgilerini döndüren MCP sunucusu.

### Koltuk değil, çalışma alanı

Ajanlar koltuk için ödemez. [Fiyatlandırmayı görün](https://maguyva.ai/tr/pricing)

## GEMINI.md bir çalışma bağlamıdır. Onu kullanın.

Kalıcı talimatlar `GEMINI.md` içinde yer alır. Şunlar için doğru yerdir:

- Gemini’nin çalıştırması gereken derleme, test ve lint komutları.
- Bir dizine sınırlandırılmış “her zaman X yap / asla Y yapma” kuralları.
- Adlandırma kuralları ve refactor tercihleri.
- Kanonik karar günlüklerine ve mimari notlarına işaretçiler.

Kısa tutun. Kapsamını belirleyin. Commit’leyin.

Ama `GEMINI.md` hiçbir zaman reponuzdaki her sembolün, dosyanın ve çağrı noktasının sorgulanabilir bir dizini olarak tasarlanmadı.

## Yalnız başına GEMINI.md’nin tükendiği yer

Dört başarısızlık modu, kart başına bir tane.

### // bağlam bir dizin değildir

Gemini’ye *nasıl çalışacağını* söylemek, ona *repoda ne bulunduğunu* söylemez. Bilinmeyen bir paketteki ilk düzenleme, dosya yolları ve fonksiyon isimleri hakkında bir tahmindir. GEMINI.md her sembolü listeleyemez, zaten bunu istemezsiniz.

### // doküman koddan savrulur

Kuyruk topolojinizi açıklayan bir GEMINI.md bloğu, biri yeni bir tüketici ekleyene kadar doğrudur. Kod artık gerçeğin kaynağıdır ve doküman kendinden emin bir şekilde eskimiştir. Gemini yanlış olanı okur.

### // yeniden adlandırma bir graf problemidir

“Bu sınıfa ne referans veriyor?” bir markdown dosyasından yanıtlanamaz. Gemini ya monorepo genelinde grep atıp dua eder ya da çağrı noktalarını sohbete yapıştırmanızı ister.

### // bağlam pencereleri bedava değildir

Büyük bir pencere, sorgulanabilir bir dizinle aynı şey değildir. Gemini “yeterince bilene” kadar GEMINI.md yüklemek, yine de akıl yürütme bütçesini statik bağlam hacmiyle takas eder.

## Üç katman birlikte nasıl çalışır

Gemini kullanıcıları zaten bu şekilde düşünüyor. Sayfa bunu bariz kılmalı.

- **GEMINI.md**: bağlam (Gemini nasıl davranır)
- **MCP**: kanal (nasıl uzanır)
- **Maguyva**: kod tabanı bilgileri (ne görür)

- **GEMINI.md**: Gemini’nin bu repoda nasıl davrandığı.
- **MCP**: Gemini’nin araçlara ve bağlama nasıl uzandığı. [(spesifikasyon)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: Gemini, kod tabanına bir soru sorduğunda ne gördüğü. Dosya yolları ve satır numaralarıyla döndürülen anlamsal, AST, graf ve metin araması.

> GEMINI.md Gemini’ye *nasıl çalışacağını* söyler.
> Maguyva Gemini’ye *üzerine çalışacak bir şey* verir.

## Üç iş akışı

Gemini’ye özgü. Gemini’nin grep’ine değil, gerçek çağrı grafına temellendirilmiş.

### 01. Paylaşılan bir sınıfı yeniden adlandırın, önce her bağımlıyı bulun

```text
gemini> Şöyle yeniden adlandır: PaymentClient → BillingClient

graph::callers(PaymentClient)            7 pakette 12 referans
graph::importers(src/payments/client.ts)  9 içe aktaran
graph::extends(PaymentClient)             2 alt sınıf (RetryClient, MockClient)

→ Gemini, dosya listesini de içeren 21 düzenlemelik bir geçiş önerir.
[exit 0]
```

Gemini, düzenlemeye başlamadan *önce* Maguyva’dan bağımlıları ister. Geçiş listesi, Gemini’nin hatırladığına değil, gerçek grafa temellendirilmiş olarak döner.

### 02. Test taslağını değil, gerçek uygulamayı bulun

```text
gemini> normalizePhoneNumber, E.164 biçimini nasıl işliyor?

semantic::query("normalize phone E.164")
  src/util/phone.ts:88   normalizePhoneNumber()   ← real impl
  test/util/phone.spec.ts:14  jest.mock(...)      ← stub
[exit 0]
```

İsimler yalan söyler. Mock’lar gerçek kodu gölgeler. Maguyva, gerçek uygulamayı test mock’unun üzerinde sıralar.

### 03. Bir refactor’dan önce etki yarıçapını kontrol edin

```text
gemini> QueueDispatcher.publish metodunu ne çağırıyor?

graph::callers(QueueDispatcher.publish)
  3 in src/billing/*    1 in src/audit/*    1 in src/notifications/*
[exit 0]
```

Paketler arası çağrı noktaları satır içinde ortaya çıkar. Diff, Gemini’nin grep’ine değil, gerçek import edenlere temellendirilir.

## Gemini CLI’de kurulum

Üç adım. Free katmanı: 3 repo, 50K'ya kadar dizinlenmiş repo satırı, kart gerektirmez.

### 01. maguyva.ai’de bir repo dizinleyin

Yanıtları doğrulayabilmeniz için iyi bildiğiniz birini seçin.

### 02. Gemini CLI ayarlarınızda Maguyva’yı bir MCP sunucusu olarak ekleyin

`~/.gemini/settings.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "httpUrl": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${MAGUYVA_API_KEY}"
      }
    }
  }
}
```

### 03. Yanıtını zaten bildiğiniz bir soru sorun

Tüm şirketinizle başlamayın. Bir repo ve doğrulanabilir bir soruyla başlayın.

## Zaten bildiğiniz bir reponuzu dizinleyin.

Gemini’yi MCP üzerinden bağlayın. Yanıtını doğrulayabileceğiniz bir soru sorun.
