Zum Inhalt springen

Für GitHub-Copilot-CLI-Nutzer

Copilot startet jede Sitzung blind.

Benutzerdefinierte Anweisungen sagen Copilot, wie es sich verhalten soll. Sie sagen ihm nicht, was in deinem Repo steckt. Maguyva indiziert die Codebasis und liefert sie über MCP zurück, damit GitHub Copilot CLI bearbeitet, als hätte es den Code bereits gelesen.

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

Nutze Anweisungen für Verhalten. Nutze Maguyva für aktuelle Fakten der Codebasis.

Der geschichtete Stack

Vier Ideen. Jede erfüllt eine Aufgabe.

// vereinbarung

copilot-instructions.md

Wie Copilot sich in diesem Repo verhalten soll.

// transport

MCP

Wie Copilot nach externen Tools und Kontext greift.

// codebase

Maguyva

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

// wer zahlt

Workspaces, keine Seats

Agenten zahlen keine Seats. Preise ansehen

Benutzerdefinierte Anweisungen sind eine Arbeitsvereinbarung. Nutze sie.

# .github/copilot-instructions.md
- Bevorzuge die bestehenden Modulgrenzen.
- Führe den Test-Befehl des Repos aus, bevor du einen Merge vorschlägst.
- Erfinde keine Dateipfade. Frag nach, bevor du ein neues Paket erstellst.

Dauerhafte Anweisungen gehören in .github/copilot-instructions.md. Dort gehören hin:

  • Build-, Test- und Lint-Befehle, die Copilot ausführen soll.
  • “Immer X tun / nie Y tun”-Leitplanken, beschränkt auf dieses Repo.
  • Namenskonventionen und Review-Präferenzen.
  • Verweise auf das Entscheidungsprotokoll — kein Dump jedes Symbols.

Diese Datei war nie ein abfragbarer Index des Repos. Sie sagt Copilot, wie es arbeiten soll. Sie sagt ihm nicht, was da ist.

Wo benutzerdefinierte Anweisungen im großen Maßstab statisch werden

Vier Fehlermodi, die Copilot nicht aus einer Markdown-Datei beheben kann.

// Anweisungen sind kein Index

Telling Copilot how to behave does not tell it which class owns parseConfig, or which package actually implements the public API. Die erste Änderung an einem unbekannten Baum ist eine Vermutung über die Dateistruktur.

// Docs veralten, Code nicht

Ein Anweisungsblock, der den Auth-Flow des letzten Quartals beschreibt, liegt sicher falsch, sobald jemand den Session-Store aufteilt. Copilot will prefer the file you committed over the code that shipped.

// Abhängigkeiten stehen nicht in Markdown

“Was importiert das?” is a graph question. Anweisungen können nicht jeden Aufrufer auflisten, und das solltest du auch nicht wollen.

// Kontextfenster haben ein Budget

Mehr vom Repo in Anweisungen zu stopfen tauscht Reasoning-Tokens gegen eine veraltete Momentaufnahme. Nach ein paar KB zahlst du für eine schlechtere Karte.

Maguyva als zusätzliche Schicht

Copilot denkt bereits in Anweisungen und Tools.

copilot-instructions.md

Vereinbarung

wie Copilot sich verhält

MCP

der Kanal

wie es zugreift

Maguyva

Codebase-Fakten

was es sieht

  • Eine abfragbare Karte des Repos bereitgestellt über MCP als Remote-Streamable-HTTP-Server.
  • 11 kundenorientierte Tools über semantische, strukturelle (AST-), Graph- und Textsuche, plus Symbole, Abhängige und Dateiabruf.
  • Priorisierte Ergebnisse mit Dateipfaden und Zeilennummern über 284+ Sprachen und textbasierte Technologien.
  • Eine Konfiguration Derselbe Workspace antwortet in Copilot, Claude Code, Cursor, Codex und jedem anderen MCP-kompatiblen Client.

Benutzerdefinierte Anweisungen sagen Copilot wie es sich verhalten soll.

Maguyva gibt Copilot eine abfragbare Karte des Codes.

Drei Workflows

Frag die Karte, bevor du den Diff akzeptierst.

// workflow 01

Die echte Implementierung finden, nicht den Test-Stub

copilot> 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

→ Copilot öffnet die Implementierung, nicht den Mock.
[exit 0]

Namen lügen. Mocks verdecken echten Code. Maguyva stuft die echte Implementierung höher ein als den Test-Mock.

// workflow 02

Blast Radius prüfen, bevor du refaktorierst

copilot> was ruft QueueDispatcher.publish auf?

graph::callers(QueueDispatcher.publish)
  3 in src/billing/*    1 in src/audit/*    1 in src/notifications/*

→ Der Diff ist auf echten Importern fundiert.
[exit 0]

Paketübergreifende Aufrufstellen erscheinen inline. Der Diff ist auf echten Importern fundiert, nicht auf Copilots grep.

// workflow 03

Eine gemeinsam genutzte Klasse umbenennen, zuerst jede Abhängigkeit finden

copilot> rename PaymentClient → BillingClient

graph::callers(PaymentClient)            12 Referenzen in 7 Paketen
graph::importers(src/payments/client.ts)  9 Importer
graph::extends(PaymentClient)             2 Unterklassen (RetryClient, MockClient)

→ Copilot schlägt eine Migration mit der Dateiliste inline vor.
[exit 0]

Copilot fragt Maguyva nach Abhängigkeiten, bevor es mit dem Bearbeiten beginnt. Die Migrationsliste ist auf dem echten Graphen fundiert, nicht auf Copilots Erinnerung.

Einrichtung in GitHub Copilot CLI

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

  1. // step 01

    Ein Repo auf maguyva.ai indizieren

    Wähle eins, das du bereits kennst, damit du die Antworten bewerten kannst. Kostenlos registrieren, GitHub verbinden, auf die Indizierung warten.

  2. // step 02

    Maguyva als Remote-MCP-Server in Copilot hinzufügen

    copilot mcp add --transport http --header "Authorization: Bearer mgv_xxxx" maguyva https://maguyva.tools/mcp

    ~/.copilot/mcp-config.json

    {
      "mcpServers": {
        "maguyva": {
          "type": "http",
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer mgv_xxxx"
          }
        }
      }
    }
  3. // step 03

    Eine Frage stellen, deren Antwort du schon kennst

    Fang nicht mit der ganzen Firma an. Stelle eine Frage, deren Antwort du schon kennst, und öffne dann die zitierte Datei.