# GEMINI.md fortæller Gemini dine regler. Ikke din kode.

Canonical source: https://maguyva.ai/da/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 fastlægger arbejdskonteksten. MCP lader Gemini tilgå værktøjer. Maguyva er MCP-serveren, der giver Gemini et søgbart kort over dit repo, så den første rettelse ikke er et gæt på filstrukturen.

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

## Den lagdelte stack

Fire idéer. Hver løser én opgave.

### GEMINI.md

Hvordan Gemini bør opføre sig på dette repo.

### MCP

Hvordan Gemini rækker ud efter eksterne værktøjer og kontekst.

### Maguyva

MCP-serveren, der leverer forankrede repo-fakta.

### Arbejdsområder, ikke brugere

Agenter medfører ingen ekstra gebyrer pr. bruger. [Se priser](https://maguyva.ai/da/pricing)

## GEMINI.md er en arbejdskontekst. Brug den.

Vedvarende instruktioner hører hjemme i `GEMINI.md`. Det er det rette sted til:

- Build-, test- og lint-kommandoer, Gemini bør køre.
- “Gør altid X / gør aldrig Y”-sikkerhedsregler afgrænset til en mappe.
- Navngivningskonventioner og refaktoreringspræferencer.
- Henvisninger til de kanoniske beslutningslogge og arkitekturnoter.

Hold den kortfattet. Afgræns den. Commit den.

Men `GEMINI.md` blev aldrig designet til at være et søgbart indeks over hvert symbol, hver fil og hvert kaldested i dit repo.

## Hvor GEMINI.md alene ikke længere er nok

Fire svigttilstande, én pr. kort.

### // kontekst er ikke et indeks

At fortælle Gemini *hvordan den skal arbejde* fortæller den ikke *hvad der findes*. Den første rettelse på en ukendt pakke er et gæt på filstier og funktionsnavne. GEMINI.md kan ikke opremse hvert symbol, og det ville du heller ikke ønske.

### // dokumentet driver væk fra koden

En GEMINI.md-blok, der beskriver din kø-topologi, er korrekt, indtil nogen introducerer en ny consumer. Koden er nu den eneste sandhed, og dokumentet er selvsikkert forældet. Gemini læser det forkerte.

### // omdøbning er et grafproblem

“Hvad refererer til denne klasse?” kan ikke besvares ud fra en markdown-fil. Enten grep'er-og-håber Gemini sig gennem monorepoet, eller også beder den dig indsætte kaldesteder i chatten.

### // kontekstvinduer er ikke gratis

Et stort kontekstvindue er ikke det samme som et søgbart indeks. At indlæse GEMINI.md indtil Gemini “ved nok” bytter stadig ræsonnementsbudget for statisk kontekstvolumen.

## Hvordan de tre lag hænger sammen

Gemini-brugere tænker allerede i denne form. Siden bør gøre det tydeligt.

- **GEMINI.md**: kontekst (hvordan Gemini opfører sig)
- **MCP**: kanalen (hvordan den tilgår værktøjer)
- **Maguyva**: kodebasefakta (hvad den ser)

- **GEMINI.md**: hvordan Gemini opfører sig på dette repo.
- **MCP**: hvordan Gemini rækker ud efter værktøjer og kontekst. [(spec)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: hvad Gemini ser, når den stiller kodebasen et spørgsmål. Semantisk, AST-, graf- og tekstsøgning leveret med filstier og linjenumre.

> GEMINI.md fortæller Gemini *hvordan den skal arbejde*.
> Maguyva giver Gemini *noget at arbejde ud fra*.

## Tre workflows

Gemini-specifikke. Forankret i den faktiske kaldgraf — ikke Geminis grep.

### 01. Omdøb en delt klasse, find alle afhængige først

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

graph::callers(PaymentClient)            12 referencer på tværs af 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 rettelser med fillisten direkte i svaret.
[exit 0]
```

Gemini spørger Maguyva om afhængige *før* den begynder at rette. Migreringslisten kommer tilbage forankret i den faktiske graf — ikke Geminis erindring.

### 02. Find den rigtige implementering, ikke teststubben

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

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

Navne lyver. Mocks overskygger rigtig kode. Maguyva rangerer den rigtige implementering over test-mock'en.

### 03. Tjek blast radius før en refaktorering

```text
gemini> hvad kalder QueueDispatcher.publish?

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

Kaldesteder på tværs af pakker dukker op direkte. Diffen er forankret i de rigtige importører — ikke Geminis grep.

## Opsætning i Gemini CLI

Tre trin. Free-niveau: 3 repos, Op til 50K indekserede repo-linjer, intet kreditkort.

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

Vælg ét, du kender godt, så du kan verificere svarene.

### 02. Tilføj Maguyva som en MCP-server i dine Gemini CLI-indstillinger

`~/.gemini/settings.json`

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

### 03. Stil ét spørgsmål, du allerede kender svaret på

Start ikke med hele din virksomhed. Start med ét repo og ét verificerbart spørgsmål.

## Indekser ét repo, du allerede kender.

Forbind Gemini over MCP. Stil ét spørgsmål, du kan verificere svaret på.
