# GEMINI.md memberi tahu Gemini aturan Anda. Bukan kode Anda.

Canonical source: https://maguyva.ai/id/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 menetapkan konteks kerja. MCP memungkinkan Gemini menjangkau tool. Maguyva adalah server MCP yang memberi Gemini peta repo Anda yang bisa di-query, jadi edit pertama bukan tebakan soal struktur file.

> GEMINI.md adalah konteksnya. MCP adalah salurannya. Maguyva adalah petanya.

## Stack berlapis

Empat gagasan. Masing-masing menjalankan satu tugas.

### GEMINI.md

Bagaimana Gemini seharusnya berperilaku di repo ini.

### MCP

Bagaimana Gemini menjangkau tool dan konteks eksternal.

### Maguyva

Server MCP yang mengembalikan fakta repo yang berlandaskan bukti nyata.

### Workspace, bukan pengguna

Tidak ada biaya terpisah per agen. [Lihat harga](https://maguyva.ai/id/pricing)

## GEMINI.md adalah konteks kerja. Pakai itu.

Instruksi yang bersifat permanen ada di `GEMINI.md`. Ini tempat yang tepat untuk:

- Perintah build, test, dan lint yang harus dijalankan Gemini.
- Guardrail “selalu lakukan X / jangan pernah lakukan Y” yang dibatasi ke satu direktori.
- Konvensi naming dan preferensi refactor.
- Rujukan ke log keputusan kanonis dan catatan arsitektur.

Buat singkat. Batasi cakupannya. Commit.

Tapi `GEMINI.md` memang tidak pernah dirancang jadi index yang bisa di-query untuk setiap symbol, file, dan call site di repo Anda.

## Di mana GEMINI.md sendirian kehabisan daya

Empat mode kegagalan, satu per kartu.

### // konteks bukan index

Memberi tahu Gemini *cara bekerja* tidak memberi tahu *apa yang ada*. Edit pertama di package yang belum dikenal adalah tebakan soal path file dan nama fungsi. GEMINI.md tidak bisa mendaftar setiap symbol, dan Anda pun tidak akan mau itu terjadi.

### // dokumennya ngedrift dari kodenya

Blok GEMINI.md yang mendeskripsikan topologi queue Anda itu benar sampai seseorang memperkenalkan consumer baru. Kodenya sekarang jadi sumber kebenaran, dan dokumennya basi dengan percaya diri. Gemini membaca yang salah.

### // rename itu masalah graf

“Apa yang mereferensikan class ini?” tidak bisa dijawab dari file markdown. Gemini akhirnya grep-lalu-berdoa di seluruh monorepo, atau minta Anda paste call site ke chat.

### // context window itu tidak gratis

Window yang besar itu tidak sama dengan index yang bisa di-query. Memuat GEMINI.md sampai Gemini “tahu cukup” tetap saja menukar budget reasoning dengan volume konteks statis.

## Bagaimana ketiga lapisan ini saling terhubung

Pengguna Gemini sudah berpikir dengan pola ini. Halaman ini seharusnya membuatnya jelas.

- **GEMINI.md**: konteks (bagaimana Gemini berperilaku)
- **MCP**: salurannya (bagaimana ia menjangkau)
- **Maguyva**: fakta codebase (apa yang ia lihat)

- **GEMINI.md**: bagaimana Gemini berperilaku di repo ini.
- **MCP**: bagaimana Gemini menjangkau tool dan konteks. [(spesifikasi)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: apa yang dilihat Gemini saat mengajukan pertanyaan ke codebase-nya. Pencarian semantik, AST, graf, dan teks dikembalikan dengan path file dan nomor baris.

> GEMINI.md memberi tahu Gemini *cara bekerja*.
> Maguyva memberi Gemini *sesuatu untuk mulai bekerja*.

## Tiga workflow

Khusus untuk Gemini. Berlandaskan graf panggilan yang sesungguhnya, bukan grep Gemini.

### 01. Rename class yang dipakai bersama, temukan dulu semua yang bergantung padanya

```text
gemini> rename PaymentClient → BillingClient

graph::callers(PaymentClient)            12 referensi di 7 package
graph::importers(src/payments/client.ts)  9 importer
graph::extends(PaymentClient)             2 subclass (RetryClient, MockClient)

→ Gemini mengusulkan migrasi 21 edit lengkap dengan daftar file-nya.
[exit 0]
```

Gemini bertanya ke Maguyva soal dependent-nya *sebelum* mulai mengedit. Daftar migrasinya kembali berlandaskan graf yang sesungguhnya, bukan ingatan Gemini.

### 02. Temukan implementasi sesungguhnya, bukan stub test

```text
gemini> bagaimana normalizePhoneNumber menangani E.164?

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

Nama itu bisa menipu. Mock menutupi kode asli. Maguyva meranking implementasi asli di atas mock test.

### 03. Cek cakupan dampak sebelum melakukan refactor

```text
gemini> apa yang memanggil QueueDispatcher.publish?

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

Call-site lintas package langsung muncul inline. Diff-nya berlandaskan importer sungguhan, bukan grep Gemini.

## Setup di Gemini CLI

Tiga langkah. Paket Free: 3 repository, Hingga 50K baris repo terindeks, tanpa kartu kredit.

### 01. Indeks repo di maguyva.ai

Pilih repo yang Anda kenal baik, supaya bisa memverifikasi jawabannya.

### 02. Tambahkan Maguyva sebagai server MCP di setting Gemini CLI Anda

`~/.gemini/settings.json`

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

### 03. Ajukan satu pertanyaan yang jawabannya sudah Anda tahu

Jangan mulai dari seluruh perusahaan Anda. Mulai dari satu repo dan satu pertanyaan yang bisa diverifikasi.

## Indeks satu repo yang sudah Anda kenal.

Hubungkan Gemini lewat MCP. Ajukan satu pertanyaan yang jawabannya bisa Anda verifikasi.
