# GEMINI.md forteller Gemini reglene dine. Ikke koden din.

Canonical source: https://maguyva.ai/nb/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 setter arbeidskonteksten. MCP lar Gemini strekke seg etter verktøy. Maguyva er MCP-serveren som gir Gemini et søkbart kart over repoet ditt, slik at den første endringen ikke er en gjetning om filstrukturen.

> GEMINI.md er konteksten. MCP er kanalen. Maguyva er kartet.

## Den lagdelte stacken

Fire ideer. Hver gjør én jobb.

### GEMINI.md

Hvordan Gemini skal oppføre seg på dette repoet.

### MCP

Hvordan Gemini strekker seg etter eksterne verktøy og kontekst.

### Maguyva

MCP-serveren som gir forankrede repo-fakta.

### Arbeidsområder, ikke lisenser

Agenter utløser ingen lisenskostnader. [Se priser](https://maguyva.ai/nb/pricing)

## GEMINI.md er en arbeidskontekst. Bruk den.

Vedvarende instruksjoner hører hjemme i `GEMINI.md`. Det er riktig sted for:

- Bygge-, test- og lint-kommandoer Gemini skal kjøre.
- “Gjør alltid X / aldri Y”-regler avgrenset til en mappe.
- Navnekonvensjoner og refaktoreringspreferanser.
- Henvisninger til de kanoniske beslutningsloggene og arkitekturnotatene.

Hold det kortfattet. Avgrens det. Commit det.

Men `GEMINI.md` ble aldri designet til å være en søkbar indeks over hvert symbol, hver fil og hvert kallsted i repoet ditt.

## Hvor GEMINI.md alene går tom

Fire feilmoduser, én per kort.

### // kontekst er ikke en indeks

Å fortelle Gemini *hvordan den skal jobbe*, forteller den ikke *hva som finnes*. Den første endringen i en ukjent pakke er en gjetning om filbaner og funksjonsnavn. GEMINI.md kan ikke liste opp hvert symbol, og det ville du heller ikke ønsket.

### // dokumentet kommer ut av takt med koden

En GEMINI.md-blokk som beskriver kø-topologien din, stemmer helt til noen introduserer en ny konsument. Koden er nå sannheten, og dokumentet er selvsikkert foreldet. Gemini leser feil kilde.

### // omdøping er et grafproblem

«Hva refererer til denne klassen?» kan ikke besvares fra en markdown-fil. Gemini må enten grep-og-håpe på tvers av monorepoet eller be deg lime inn kallsteder i chatten.

### // kontekstvinduer er ikke gratis

Et stort vindu er ikke det samme som en søkbar indeks. Å laste GEMINI.md til Gemini «vet nok» bytter fortsatt bort resonneringsbudsjett mot statisk kontekstvolum.

## Hvordan de tre lagene henger sammen

Gemini-brukere tenker allerede i denne formen. Siden bør gjøre det åpenbart.

- **GEMINI.md**: kontekst (hvordan Gemini oppfører seg)
- **MCP**: kanalen (hvordan den når verktøyene)
- **Maguyva**: kodebasefakta (hva den ser)

- **GEMINI.md**: hvordan Gemini oppfører seg på dette repoet.
- **MCP**: hvordan Gemini strekker seg etter verktøy og kontekst. [(spesifikasjon)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: hva Gemini ser når den stiller kodebasen et spørsmål. Semantisk søk, AST-søk, grafsøk og tekstsøk levert med filbaner og linjenumre.

> GEMINI.md forteller Gemini *hvordan den skal jobbe*.
> Maguyva gir Gemini *noe å jobbe ut fra*.

## Tre arbeidsflyter

Gemini-spesifikke. Forankret i den faktiske kallgrafen, ikke Geminis grep.

### 01. Omdøp en delt klasse, finn all avhengig kode først

```text
gemini> omdøp PaymentClient → BillingClient

graph::callers(PaymentClient)            12 referanser fordelt på 7 pakker
graph::importers(src/payments/client.ts)  9 importører
graph::extends(PaymentClient)             2 underklasser (RetryClient, MockClient)

→ Gemini foreslår en migrering med 21 endringer og fillisten direkte i svaret.
[exit 0]
```

Gemini spør Maguyva om avhengig kode *før* den begynner å redigere. Migreringslisten kommer tilbake forankret i den faktiske grafen, ikke Geminis hukommelse.

### 02. Finn den faktiske implementasjonen, ikke test-stubben

```text
gemini> hvordan håndterer normalizePhoneNumber E.164?

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

Navn lyver. Mocks skygger for ekte kode. Maguyva rangerer den ekte implementasjonen over test-mocken.

### 03. Sjekk påvirkningsradiusen før en refaktorering

```text
gemini> hvilken kode kaller QueueDispatcher.publish?

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

Kallsteder på tvers av pakker dukker opp direkte. Diffen er forankret i faktiske importører, ikke Geminis grep.

## Oppsett i Gemini CLI

Tre steg. Free-planen: 3 repoer, Opptil 50K indekserte kodelinjer, uten kredittkort.

### 01. Indekser et repo på maguyva.ai

Velg ett du kjenner godt, slik at du kan verifisere svarene.

### 02. Legg til Maguyva som en MCP-server i Gemini CLI-innstillingene dine

`~/.gemini/settings.json`

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

### 03. Still ett spørsmål du allerede vet svaret på

Ikke start med hele selskapet ditt. Start med ett repo og ett verifiserbart spørsmål.

## Indekser ett repo du allerede kjenner.

Koble Gemini til over MCP. Still ett spørsmål du kan verifisere svaret på.
