# Cursorはファイルを編集する。Maguyvaはリポジトリを見る。

Canonical source: https://maguyva.ai/ja/for-cursor

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).

Cursorはエディタです。モノレポの中では、エージェントにはどのファイルが重要かを示す地図が必要です。Maguyvaはあなたのコードベースをインデックス化し、MCP経由で返します(セマンティック、AST、グラフ、テキスト)。だから「認証はどこで行われているか」と聞けば、7個のテストスタブではなく、実際の認証フローが返ってきます。

> Cursorは、あなたが指し示したものを編集します。Maguyvaは、エージェントにどのファイルを指し示すべきかを教えます。

## 各レイヤーの役割

4つのパーツ。それぞれに役割があります。

### Cursor

実際にコードを書く場所。

### @メンション + ピン留め

手動のコンテキストは、リポジトリが大きくなるまでは有効です。

### Maguyva

MCP経由の、自動的なコードベースの事実。

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

エージェントはシート料金を払いません。[料金を見る](https://maguyva.ai/ja/pricing)

## Cursorはエディタです。使いましょう。

IDEが問題なのではありません。Cursorのタブ補完、edit-with-AI、複数ファイル編集、そして`.cursor/rules`はどれも優れていて、あなたはすでにこう使っているはずです:

- 開いているファイルでのインライン提案とedit-with-AI。
- 変更がローカルな場合の複数ファイル編集。
- リポジトリの規約やスタイルガードレールのための`.cursor/rules`。
- 特定のファイルをコンテキストに取り込むための`@`メンション。

それは続けてください。何ひとつなくなりません。

しかし、実際のモノレポ(ワークスペース依存を持つTypeScript、Pythonサービス、混在パッケージ)では、関連するファイルがまだあなたのレーダーに入っていない瞬間、エージェントのコンテキストは崩れます。

## すでに試した手動の対処法と、それが崩れる場所

4つの手動対処法と、それぞれの失敗モード。左 = 今あなたがしていること。右 = それが崩れる場所。

### // ファイルをピン留めする

重要だと思う3つのファイルを`@`メンションします。Cursorはその中で綺麗に編集します。

### // ピン留めは推測に過ぎない

ピン留めがうまくいくのは、どのファイルが関わっているかをすでに知っている場合だけです。コンテキストツールの本質は、あなたがピン留めすべきだと知らなかったファイルを、表に出すことです。

### // スニペットを貼り付ける

別のパッケージから200行をチャットに貼り付けて、エージェントに十分なコンテキストを与えます。

### // 貼り付けたコードは古くなる

午前9時に貼り付けたスニペットは、午前11時にチームメイトが取り込んだリベースを反映していません。エージェントは、パッケージの幻のバージョンに対して編集していることになります。

### // コンテキストドキュメントを書く

`.cursor/rules`ファイルやアーキテクチャのマークダウンを書きます。今日のところは正しい。

### // ドキュメントはコードより速く陳腐化する

手で書いたものは、すべて陳腐化していきます。信頼できる情報源はコードです。キューレイヤーを説明するドキュメントは、1週間は正しくても、その後はずっと間違ったままです。

### // ルールファイルを保持する

命名規則、lint、ビルドコマンドのために`.cursor/rules`を追加します。振る舞いには最適です。

### // ルール ≠ インデックス

`.cursor/rules`は「コミット前に必ずpnpm tsc -bを実行する」を書くのに適した場所です。しかし、モノレポ内のすべてのシンボル、ファイル、呼び出し箇所を問い合わせ可能にするインデックスではありません。

## Maguyvaは、その下にあるレイヤーです

Cursorの代替ではありません。CursorのMCPサポートにぶら下がる、リポジトリコンテキストレイヤーです。

- **Semantic + AST + グラフ + テキスト**: 意味、構造、依存関係、あるいはリテラルで検索。すべての結果に、ファイルパスと行番号が付きます。
- **デフォルトでパッケージ横断**: 現在開いているパッケージだけでなく、モノレポ内のすべてのパッケージにわたる呼び出し箇所とインポートしている箇所。
- **ブランチを認識**: Maguyvaは、Cursorが編集しているバージョンのコードを把握しています。
- **補完的であり、競合ではない**: `.cursor/rules`は引き続きその役割を果たします。`@`メンションも同様です。Maguyvaは、それらが埋められない隙間を埋めます。

> Cursorは、あなたが指し示したファイルを編集する。
> Maguyvaは、エージェントに*どのファイルを指し示すべきか*を教える。

## 3つのモノレポワークフロー

パッケージ横断、言語横断。Cursorのgrepではなく、実際のコールグラフに根ざしています。

### 01. 何もピン留めせずに、パッケージ横断で認証フローを見つける

```text
cursor> このモノレポでは認証はどこで行われていますか?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       ミドルウェア
  packages/api/src/auth/jwt.ts:88           トークン検証
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  RBACチェック

→ 4つのパッケージにまたがる4つのエントリーポイント、呼び出し箇所の密度でランク付け。
[exit 0]
```

ファイルをピン留めしませんでした。スニペットも貼り付けませんでした。エージェントは、重要な4つのファイルを正しいランキングで手にし、根拠のある編集ができます。

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

```text
cursor> normalizePhoneNumberはE.164をどのように処理していますか?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← 実装本体
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← スタブ
[exit 0]
```

名前は嘘をつきます。モックは実際のコードを覆い隠します。Maguyvaは、すべてのパッケージにわたって、実際の実装をテストモックより上位にランク付けします。

### 03. リファクタリングの前に、影響範囲を確認する

```text
cursor> モノレポ全体でQueueDispatcher.publishを呼び出しているのはどこですか?

graph::callers(QueueDispatcher.publish)
  packages/billing/* に3件
  packages/audit/* に1件
  packages/notifications/* に1件
  services/python-worker/* に1件  ← gRPCスタブ経由で言語を横断
[exit 0]
```

パッケージ横断、そしてポリグロットなリポジトリでは言語横断でも、呼び出し箇所がインラインで表示されます。差分は、Cursorのgrepではなく、実際にインポートしている箇所に根ざしています。

## Cursorでのセットアップ

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

### 01. maguyva.aiでリポジトリをインデックス化

コンテキスト不足に最も悩んでいるモノレポを選びましょう。

### 02. CursorのMCPサーバー設定にMaguyvaを追加

`~/.cursor/mcp.json`

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

### 03. 答えをすでに知っている質問をひとつ投げてみる

会社全体から始めないでください。1つのリポジトリと、「パッケージ横断で`formatInvoice`を呼び出しているのは何か?」のような、検証可能な質問1つから始めましょう。

## すでに知っているリポジトリを1つインデックス化。

検証できる質問を1つ、試してみましょう。
