// kontext
GEMINI.md
Wie Gemini sich in diesem Repo verhalten soll.
Für Gemini CLI-Nutzer
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.
Free-Stufe: 3 Repositories, Bis zu 50K indexierte Repo-Zeilen, keine Karte.
GEMINI.md ist der Kontext. MCP ist der Kanal. Maguyva ist die Karte.Vier Ideen. Jede erfüllt eine Aufgabe.
// kontext
Wie Gemini sich in diesem Repo verhalten soll.
// transport
Wie Gemini nach externen Tools und Kontext greift.
// codebase
Der MCP-Server, der verankerte Repo-Fakten liefert.
// wer zahlt
Agenten zahlen keine Seats. Preise ansehen
Dauerhafte Anweisungen gehören in GEMINI.md. Das ist der richtige Ort für:
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.
Vier Fehlermodi, einer pro Karte.
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.
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.
„Was referenziert diese Klasse?“ lässt sich aus einer Markdown-Datei nicht beantworten. Gemini greift entweder grep-und-hofft im gesamten Monorepo oder bittet dich, Aufrufstellen in den Chat zu pasten.
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.
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 sagt Gemini, wie es arbeiten soll.
Maguyva gibt Gemini etwas, womit es arbeiten kann.
Gemini-spezifisch. Verankert im echten Call-Graph, nicht im Grep von Gemini.
// workflow 01
gemini> PaymentClient → BillingClient umbenennen graph::callers(PaymentClient) 12 Referenzen über 7 Packages graph::importers(src/payments/client.ts) 9 Importeure 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 Abhängigkeiten, bevor es mit dem Editieren beginnt. Die Migrationsliste kommt verankert im echten Graph zurück, nicht in der Erinnerung von Gemini.
// workflow 02
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.
// workflow 03
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 an echten Importeuren verankert, nicht am Grep von Gemini.
Drei Schritte. Free-Stufe: 3 Repositories, Bis zu 50K indexierte Repo-Zeilen, keine Karte.
// step 01
Wähl eines, das du gut kennst, damit du die Antworten überprüfen kannst.
// step 02
// ~/.gemini/settings.json
{
"mcpServers": {
"maguyva": {
"httpUrl": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
Fang nicht mit deiner ganzen Firma an. Fang mit einem Repo und einer überprüfbaren Frage an.