本文へスキップ

GitHub Copilot CLIユーザー向け

Copilotは毎回のセッションを何も知らない状態で始めます。

カスタム指示はCopilotにどう振る舞うべきかを伝えますが、リポジトリの中身までは伝えません。Maguyvaはコードベースをインデックスし、MCP経由で返すことで、GitHub Copilot CLIがすでにコードを読んだかのように編集できるようにします。

Freeプラン:リポジトリ3個, インデックス済みリポジトリ行数、最大5万行、カード不要。

振る舞いには指示を使い、最新のコードベースの事実にはMaguyvaを使いましょう。

レイヤー構造

4つの考え方。それぞれがひとつの役割を果たします。

// 合意事項

copilot-instructions.md

このリポジトリで、Copilotがどう振る舞うべきか。

// 伝送路

MCP

Copilotが、外部ツールやコンテキストにどう手を伸ばすか。

// コードベース

Maguyva

根拠のあるリポジトリの事実を返す、MCPサーバー。

// 支払うのは誰か

課金対象はワークスペース、シートではありません

エージェントはシート料金を払いません。料金を見る

カスタム指示は作業上の取り決めです。活用しましょう。

# .github/copilot-instructions.md
- 既存のモジュール境界を優先する。
- マージを提案する前にリポジトリのテストコマンドを実行する。
- ファイルパスをでっち上げない。新しいパッケージを作る前に確認する。

永続的な指示は .github/copilot-instructions.mdに置くべきものです。ここは次の内容に適した場所です:

  • Copilotが実行すべきbuild、test、lintコマンド。
  • このリポジトリに限定された「常にXする/絶対にYしない」というガードレール。
  • 命名規則とレビューの好み。
  • 意思決定ログへのポインタ — すべてのシンボルの羅列ではありません。

そのファイルはこれまで一度もリポジトリのクエリ可能なインデックスではありませんでした。Copilotにどう作業すべきかを伝えますが、そこに何があるかは伝えません。

カスタム指示が大規模になると通用しなくなる場面

Copilotがmarkdownファイルだけでは解決できない4つの失敗モード。

// 指示はインデックスではない

Telling Copilot how to behave does not tell it which class owns parseConfig, or which package actually implements the public API. 見知らぬツリーへの最初の編集は、ファイル構造に対する推測に過ぎません。

// ドキュメントは古くなるが、コードは古くならない

前四半期の認証フローを説明する指示ブロックは、誰かがセッションストアを分割した日に明らかに間違ったものになります。 Copilot will prefer the file you committed over the code that shipped.

// 依存関係はmarkdownには書かれない

“これをインポートしているのは何?” is a graph question. 指示はすべての呼び出し元を列挙できませんし、そうしたいとも思わないはずです。

// コンテキストウィンドウには予算がある

リポジトリの内容を指示にもっと詰め込むことは、推論トークンを古いスナップショットと引き換えにすることです。数KBを超えると、より劣った地図に対価を払っていることになります。

追加レイヤーとしてのMaguyva

Copilotはすでに指示とツールで考えています。

copilot-instructions.md

取り決め

Copilotの振る舞い方

MCP

チャネル

どう到達するか

Maguyva

コードベースの事実

何が見えるか

  • リポジトリのクエリ可能なマップ リモートのstreamable-HTTPサーバーとしてMCP経由で提供されます。
  • 11個の顧客向けツール セマンティック、構造(AST)、グラフ、テキスト検索に加え、シンボル、依存先、ファイル取得にわたります。
  • ファイルパスと行番号付きのランク付けされた結果 284以上の言語とテキストベースの技術にわたります。
  • 1つの設定 同じワークスペースがCopilot、Claude Code、Cursor、Codex、その他あらゆるMCP対応クライアントで回答します。

カスタム指示はCopilotにどう振る舞うべきかを伝えます。

Maguyvaは Copilotにコードのクエリ可能なマップを提供します。

3つのワークフロー

差分を受け入れる前にマップに尋ねましょう。

// workflow 01

テストスタブではなく、実際の実装を見つける

copilot> normalizePhoneNumberはE.164をどう処理する?

semantic::query("normalize phone E.164")
  src/util/phone.ts:88   normalizePhoneNumber()   ← 実際の実装
  test/util/phone.spec.ts:14  jest.mock(...)      ← スタブ

→ Copilotはモックではなく実装を開きます。
[exit 0]

名前は嘘をつきます。モックは本物のコードを覆い隠します。Maguyvaはテストモックより実際の実装を上位に表示します。

// workflow 02

リファクタリング前に影響範囲を確認する

copilot> QueueDispatcher.publishを呼び出しているのは?

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

→ 差分は実際のインポート元に基づいています。
[exit 0]

パッケージ横断の呼び出し箇所がその場に表示されます。差分はCopilotのgrepではなく、実際のインポート元に基づいています。

// workflow 03

共有クラスをリネームし、まず全ての依存先を見つける

copilot> rename PaymentClient → BillingClient

graph::callers(PaymentClient)            7パッケージで12件の参照
graph::importers(src/payments/client.ts)  9件のインポート元
graph::extends(PaymentClient)             2つのサブクラス(RetryClient、MockClient)

→ Copilotはファイル一覧付きで移行を提案します。
[exit 0]

Copilotは編集を始める前に依存先についてMaguyvaに尋ねます。移行リストはCopilotの記憶ではなく、実際のグラフに基づいて返ってきます。

GitHub Copilot CLIでのセットアップ

3ステップ。Freeプラン:リポジトリ3個, インデックス済みリポジトリ行数、最大5万行、カード不要。

  1. // step 01

    maguyva.aiでリポジトリをインデックスする

    回答を評価できるよう、すでに知っているリポジトリを選びましょう。無料でサインアップし、GitHubを接続して、インデックス完了を待ちます。

  2. // step 02

    CopilotにMaguyvaをリモートMCPサーバーとして追加する

    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

    すでに答えを知っている質問を1つしてみる

    会社全体から始めないでください。すでに答えを知っている質問を1つして、引用されたファイルを開いてみましょう。