# GEMINI.md sagt Gemini deine Regeln. Nicht deinen Code.

Canonical source: https://maguyva.ai/de/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 legt den Arbeitskontext fest. MCP lässt Gemini nach Tools greifen. Maguyva ist der MCP-Server, der Gemini eine abfragbare Karte deines Repos liefert, damit der erste Edit keine Vermutung über die Dateistruktur ist.

> GEMINI.md ist der Kontext. MCP ist der Kanal. Maguyva ist die Karte.

## Der geschichtete Stack

Vier Ideen. Jede erfüllt eine Aufgabe.

### GEMINI.md

Wie Gemini sich in diesem Repo verhalten soll.

### MCP

Wie Gemini nach externen Tools und Kontext greift.

### Maguyva

Der MCP-Server, der quellenbelegte Repo-Fakten liefert.

### Workspaces, keine Seats

Agents zahlen keine Seats. [Preise ansehen](https://maguyva.ai/de/pricing)

## GEMINI.md ist ein Arbeitskontext. Nutz ihn.

Dauerhafte Anweisungen gehören in `GEMINI.md`. Das ist der richtige Ort für:

- Build-, Test- und Lint-Befehle, die Gemini ausführen soll.
- „Immer X / nie Y“-Guardrails, die auf ein Verzeichnis begrenzt sind.
- Namenskonventionen und Refactoring-Präferenzen.
- Verweise auf die kanonischen Entscheidungsprotokolle und Architekturnotizen.

Halte es kompakt. Begrenze den Scope. Committe es.

Aber `GEMINI.md` war nie dafür gedacht, ein abfragbarer Index jedes Symbols, jeder Datei und jeder Aufrufstelle in deinem Repo zu sein.

## Wo GEMINI.md allein an seine Grenzen stößt

Vier Fehlermodi, einer pro Karte.

### // kontext ist kein index

Gemini zu sagen, *wie* es arbeiten soll, sagt ihm nicht, *was existiert*. Der erste Edit an einem unbekannten Package ist eine Vermutung über Dateipfade und Funktionsnamen. GEMINI.md kann nicht jedes Symbol auflisten, und das sollte es auch nicht.

### // das doc driftet vom code weg

Ein GEMINI.md-Block, der deine Queue-Topologie beschreibt, stimmt, bis jemand einen neuen Consumer einführt. Der Code ist jetzt die Quelle der Wahrheit, und das Doc ist zuverlässig veraltet. Gemini liest das falsche.

### // umbenennen ist ein graph-problem

„Was referenziert diese Klasse?“ lässt sich aus einer Markdown-Datei nicht beantworten. Gemini durchsucht entweder das gesamte Monorepo mit grep und hofft auf das Beste oder bittet dich, Aufrufstellen in den Chat zu pasten.

### // context windows sind nicht kostenlos

Ein großes Fenster ist nicht dasselbe wie ein abfragbarer Index. GEMINI.md so lange zu laden, bis Gemini „genug weiß“, tauscht trotzdem Reasoning-Budget gegen statisches Kontextvolumen.

## Wie die drei Schichten zusammenpassen

Gemini-Nutzer denken schon in dieser Struktur. Die Seite sollte das nur sichtbar machen.

- **GEMINI.md**: kontext (wie Gemini sich verhält)
- **MCP**: der kanal (wie es zugreift)
- **Maguyva**: codebase-fakten (was es sieht)

- **GEMINI.md**: wie Gemini sich in diesem Repo verhält.
- **MCP**: wie Gemini nach Tools und Kontext greift. [(Spezifikation)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: was Gemini sieht, wenn es der Codebase eine Frage stellt. Semantische, AST-, Graph- und Textsuche, geliefert mit Dateipfaden und Zeilennummern.

> GEMINI.md sagt Gemini, *wie es arbeiten soll*.
> Maguyva gibt Gemini *etwas, womit es arbeiten kann*.

## Drei Workflows

Gemini-spezifisch. Verankert im echten Call-Graphen, nicht im Grep von Gemini.

### 01. Eine gemeinsam genutzte Klasse umbenennen, zuerst alle davon abhängigen Stellen finden

```text
gemini> PaymentClient → BillingClient umbenennen

graph::callers(PaymentClient)            12 Referenzen über 7 Packages
graph::importers(src/payments/client.ts)  9 importierende Module
graph::extends(PaymentClient)             2 Subklassen (RetryClient, MockClient)

→ Gemini schlägt eine 21-Edit-Migration mit der Dateiliste inline vor.
[exit 0]
```

Gemini fragt Maguyva nach den davon abhängigen Stellen, *bevor* es mit dem Editieren beginnt. Die Migrationsliste kommt verankert im echten Graphen zurück, nicht in der Erinnerung von Gemini.

### 02. Die echte Implementierung finden, nicht den Test-Stub

```text
gemini> wie behandelt normalizePhoneNumber E.164?

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

Namen lügen. Mocks überschatten echten Code. Maguyva reiht die echte Implementierung über dem Test-Mock ein.

### 03. Auswirkungsradius prüfen, bevor ein Refactoring beginnt

```text
gemini> was ruft QueueDispatcher.publish auf?

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

Paketübergreifende Aufrufstellen tauchen inline auf. Der Diff ist in den tatsächlich importierenden Modulen verankert, nicht im Grep von Gemini.

## Einrichtung in Gemini CLI

Drei Schritte. Free-Stufe: 3 Repositories, Bis zu 50K indexierte Repo-Zeilen, keine Kreditkarte.

### 01. Ein Repo auf maguyva.ai indexieren

Wähl eines, das du gut kennst, damit du die Antworten überprüfen kannst.

### 02. Maguyva als MCP-Server in deinen Gemini CLI-Einstellungen hinzufügen

`~/.gemini/settings.json`

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

### 03. Eine Frage stellen, deren Antwort du schon kennst

Fang nicht mit deiner ganzen Firma an. Fang mit einem Repo und einer überprüfbaren Frage an.

## Indexiere ein Repo, das du schon kennst.

Verbinde Gemini über MCP. Stell eine Frage, deren Antwort du überprüfen kannst.
