# Sinasabi ng GEMINI.md kay Gemini ang mga rules mo. Hindi ang code mo.

Canonical source: https://maguyva.ai/fil/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).

Itinatakda ng GEMINI.md ang working context. Hinahayaan ng MCP si Gemini na abutin ang mga tool. Ang Maguyva ang MCP server na nagbibigay kay Gemini ng queryable na mapa ng repo mo, kaya ang unang edit ay hindi isang hula sa file structure.

> Ang GEMINI.md ang context. Ang MCP ang channel. Ang Maguyva ang mapa.

## Ang layered stack

Apat na ideya. Isang trabaho ang ginagawa ng bawat isa.

### GEMINI.md

Kung paano dapat kumilos si Gemini sa repo na ito.

### MCP

Kung paano inaabot ni Gemini ang mga external tool at context.

### Maguyva

Ang MCP server na nagbabalik ng naka-ground na repo facts.

### Workspaces, hindi seats

Hindi nagbabayad ng seats ang mga agent. [Tingnan ang pricing](https://maguyva.ai/fil/pricing)

## Ang GEMINI.md ay isang working context. Gamitin ito.

Ang mga persistent na instruction ay nabibilang sa `GEMINI.md`. Ito ang tamang lugar para sa:

- Build, test, at lint commands na dapat patakbuhin ni Gemini.
- Mga guardrail na “laging gawin ang X / huwag kailanman gawin ang Y” na naka-scope sa isang directory.
- Naming conventions at refactor preferences.
- Mga pointer sa canonical decision logs at architecture notes.

Panatilihing maikli. I-scope ito. I-commit ito.

Pero ang `GEMINI.md` ay hindi kailanman idinisenyo para maging queryable na index ng bawat symbol, file, at call site sa repo mo.

## Kung saan hindi na sapat ang GEMINI.md lang

Apat na failure mode, isa kada card.

### // hindi index ang context

Ang pagsasabi kay Gemini *kung paano magtrabaho* ay hindi nagsasabi sa kanya *kung ano ang umiiral*. Ang unang edit sa isang hindi pamilyar na package ay isang hula tungkol sa file paths at function names. Hindi kayang ilista ng GEMINI.md ang bawat symbol, at hindi mo naman gugustuhin iyon.

### // nagd-drift ang doc mula sa code

Tama ang isang GEMINI.md block na naglalarawan sa queue topology mo hanggang may magpakilala ng bagong consumer. Ang code na ngayon ang source of truth at lipas na ang doc pero tiwala pa rin ang pagkakasulat nito. Ang mali ang binabasa ni Gemini.

### // isang graph problem ang rename

“Ano ang tumutukoy sa class na ito?” ay hindi kayang sagutin ng isang markdown file. Mag-grep-and-pray si Gemini sa buong monorepo o hihilingin sa iyong i-paste ang mga call site sa chat.

### // hindi libre ang context window

Hindi pareho ang malaking window sa isang queryable na index. Ang pagla-load ng GEMINI.md hanggang “sapat na” ang alam ni Gemini ay ipinagpapalit pa rin ang reasoning budget para sa static na context volume.

## Paano nagtutulungan ang tatlong layer

Nag-iisip na sa ganitong hugis ang mga user ng Gemini. Dapat gawing malinaw ito ng pahina.

- **GEMINI.md**: ang context (kung paano kumikilos si Gemini)
- **MCP**: ang channel (kung paano ito umaabot)
- **Maguyva**: mga fact ng codebase (kung ano ang nakikita nito)

- **GEMINI.md**: kung paano kumikilos si Gemini sa repo na ito.
- **MCP**: kung paano inaabot ni Gemini ang mga tool at context. [(spec)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: kung ano ang nakikita ni Gemini kapag nagtatanong siya sa codebase. Ibinabalik ang semantic, AST, graph, at text search na may file paths at line numbers.

> Sinasabi ng GEMINI.md kay Gemini *kung paano magtrabaho*.
> Binibigyan ng Maguyva si Gemini ng *isang bagay na pagbabatayan*.

## Tatlong workflow

Gemini-specific. Naka-ground sa aktwal na call graph, hindi sa grep ni Gemini.

### 01. Palitan ang pangalan ng isang shared class, hanapin muna ang bawat dependent

```text
gemini> rename PaymentClient → BillingClient

graph::callers(PaymentClient)            12 references across 7 packages
graph::importers(src/payments/client.ts)  9 importers
graph::extends(PaymentClient)             2 subclasses (RetryClient, MockClient)

→ Nagmumungkahi si Gemini ng 21-edit na migration na may file list na inline.
[exit 0]
```

Tinatanong ni Gemini ang Maguyva tungkol sa mga dependent *bago* siya magsimulang mag-edit. Bumabalik ang migration list na naka-ground sa aktwal na graph, hindi sa alaala ni Gemini.

### 02. Hanapin ang tunay na implementation, hindi ang test stub

```text
gemini> paano hinahandle ng normalizePhoneNumber ang E.164?

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]
```

Nagsisinungaling ang mga pangalan. Natatabunan ng mocks ang tunay na code. Inilalagay ng Maguyva ang tunay na implementation sa itaas ng test mock.

### 03. Suriin ang saklaw ng epekto bago ang isang refactor

```text
gemini> ano ang tumatawag sa QueueDispatcher.publish?

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

Lumilitaw ang cross-package na call-site nang inline. Naka-ground ang diff sa tunay na importer, hindi sa grep ni Gemini.

## Setup sa Gemini CLI

Tatlong hakbang. Free tier: 3 repository, Hanggang 50K na naka-index na linya ng repo, walang card.

### 01. I-index ang isang repo sa maguyva.ai

Pumili ng isa na kilala mo nang husto, para kaya mong i-verify ang mga sagot.

### 02. Idagdag ang Maguyva bilang MCP server sa settings ng Gemini CLI mo

`~/.gemini/settings.json`

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

### 03. Magtanong ng isang tanong na alam mo na ang sagot

Huwag magsimula sa buong kompanya mo. Magsimula sa isang repo at isang verifiable na tanong.

## I-index ang isang repo na kilala mo na.

I-connect ang Gemini sa pamamagitan ng MCP. Magtanong ng isang tanong na kaya mong i-verify ang sagot.
