はじめに
Cursorは強力なAI機能を備えていますが、プロジェクト固有のコーディング規約やアーキテクチャをAIに理解させることで、さらに精度の高いコード生成が可能になります。
本記事では、CursorのRules機能とコードベースインデックスを設定し、AIがプロジェクトのコンテキストを理解する環境を構築する方法を解説します。この記事を読むことで、以下のことができるようになります。
- Project Rules(.cursor/rules)を作成し、プロジェクト固有のルールをAIに伝えられる
- AGENTS.mdを使ったシンプルな指示の記述方法がわかる
- コードベースインデックスの仕組みを理解し、セマンティック検索を活用できる
- User Rules/Project Rules/Team Rulesを適切に使い分けられる
実行環境と前提条件
本記事の内容を実践するための環境要件は以下のとおりです。
| 項目 | 要件 |
|---|---|
| オペレーティングシステム | Windows 10以上、macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上 |
| Cursor バージョン | 2.3以降(2025年12月時点の安定版) |
| インターネット接続 | 必須(AIモデル利用・インデックス同期に必要) |
前提条件
- Cursorがインストールされ、アカウントでログイン済みであること
- プロジェクトがワークスペースとして開かれていること
- Gitの基本操作(commit、pushなど)を理解していること(Team Rulesのバージョン管理に有用)
期待される結果
本記事の手順を完了すると、以下の状態になります。
- プロジェクト固有のRulesが作成され、AIがコーディング規約を理解している
- コードベースインデックスが有効化され、セマンティック検索でコードを見つけられる
- 適切なRulesの使い分けができ、個人・プロジェクト・チームでルールを管理できる
Rulesとは何か
Rulesは、Cursor Agentに対するシステムレベルの指示を提供する機能です。大規模言語モデルは各補完のあいだで状態を保持しませんが、Rulesを使うことでプロンプトレベルで永続的かつ再利用可能なコンテキストを提供できます。
ルールが適用されると、その内容がモデルのコンテキストの先頭に含まれます。これにより、AIはコード生成、編集内容の解釈、ワークフロー支援の際に一貫した指針を得られます。
Rulesの4つの種類
Cursorは以下の4種類のルールをサポートしています。
| ルール種別 | 保存場所 | 適用範囲 | 用途 |
|---|---|---|---|
| Project Rules | .cursor/rules |
特定のプロジェクト | コードベース固有のドメイン知識、ワークフロー、規約 |
| User Rules | Cursor Settings → Rules | すべてのプロジェクト | 個人の好みの会話スタイル、共通のコーディング規約 |
| Team Rules | Cursorダッシュボード | チーム全体のプロジェクト | 組織標準、共通規約(Team/Enterpriseプラン) |
| AGENTS.md | プロジェクトルート | 特定のプロジェクト | シンプルで読みやすい指示 |
ルールの優先順位
ルールは次の順序で適用されます。
- Team Rules(最優先)
- Project Rules
- User Rules
指示内容が競合する場合は、先に適用されるソースが優先されます。
Project Rulesの作成
Project Rulesは .cursor/rules ディレクトリに配置され、バージョン管理されるプロジェクト固有のルールです。
ディレクトリ構造
Project Rulesは以下のような構造で管理します。
.cursor/rules/
├── frontend-components/
│ └── RULE.md
├── api-design/
│ └── RULE.md
│ └── scripts/
│ └── generate-openapi.sh
└── testing/
└── RULE.md
各ルールフォルダには以下を含めることができます。
RULE.md: フロントマターのメタデータと指示を含むメインのルールファイルscripts/: ルールから参照される追加のスクリプト(任意)- その他の参照ファイル(任意)
ルールの作成方法
ルールを作成する方法は2つあります。
コマンドパレットから作成
- コマンドパレットを開く(
Ctrl + Shift + P/Cmd + Shift + P) - 「New Cursor Rule」を検索して選択
- ルール名を入力
.cursor/rules/[ルール名]/RULE.mdが自動作成される
設定画面から作成
Ctrl + Shift + J(macOSはCmd + Shift + J)でCursor設定を開く- 「Rules, Commands」に移動
- 「+ Add Rule」をクリック
- ルール名を入力して作成
RULE.mdの基本構造
RULE.md ファイルは、フロントマターのメタデータと本文からなるMarkdownファイルです。
|
|
ルールタイプの設定
フロントマターの設定によって、ルールの適用方法を制御できます。
| タイプ | 設定値 | 動作 |
|---|---|---|
| Always Apply | alwaysApply: true |
すべてのチャットセッションに自動的に適用 |
| Apply Intelligently | alwaysApply: false, globs: なし |
descriptionをもとに関連があるとAgentが判断した場合に適用 |
| Apply to Specific Files | globs: ["src/**/*.tsx"] |
ファイルが指定したパターンに一致する場合に適用 |
| Apply Manually | descriptionなし, alwaysApply: false |
チャット内で@メンションされた場合に適用(例: @my-rule) |
ルールタイプ別の設定例
Always Apply(常に適用)
プロジェクト全体で常に従うべき基本ルールに使用します。
|
|
Apply to Specific Files(特定ファイルに適用)
特定のファイルタイプや領域にのみ適用するルールに使用します。
|
|
Apply Intelligently(インテリジェント適用)
AIが関連性を判断して自動適用するルールに使用します。
|
|
効果的なルールの記述パターン
良いルールは、焦点が明確で、実行可能で、スコープが適切に絞られています。
ベストプラクティス
効果的なルールを書くためのポイントは以下のとおりです。
- ルールは500行以内に収める
- 大きなルールは分割し、複数の組み合わせ可能なルールにする
- 具体的な例や参照ファイルを提示する
- あいまいな指示は避け、社内ドキュメントのように明確に記述する
- チャットで同じようなプロンプトを繰り返す場合は、ルール化を検討する
実践的なルール例
TypeScript/Reactプロジェクトのルール例
|
|
API設計のルール例
|
|
AGENTS.mdによるシンプルな指示
AGENTS.md は、エージェント用の指示を定義するためのシンプルなMarkdownファイルです。Project Rulesの代替として、プロジェクトのルートディレクトリに配置して使用できます。
AGENTS.mdの特徴
| 項目 | Project Rules | AGENTS.md |
|---|---|---|
| ファイル形式 | RULE.md + フロントマター | プレーンMarkdown |
| メタデータ | globs、alwaysApply等 | なし |
| 複雑な設定 | 対応 | 非対応 |
| 用途 | 構造化されたルール | シンプルで読みやすい指示 |
AGENTS.mdの記述例
|
|
ネストされたAGENTS.mdのサポート
Cursorは、プロジェクトのルートディレクトリだけでなく、サブディレクトリ内のAGENTS.mdもサポートします。
project/
├── AGENTS.md # プロジェクト全体の指示
├── frontend/
│ └── AGENTS.md # フロントエンド固有の指示
└── backend/
└── AGENTS.md # バックエンド固有の指示
各ディレクトリのAGENTS.mdは、そのディレクトリ内のファイルを編集する際に参照されます。
Project RulesとAGENTS.mdの使い分け
| シナリオ | 推奨 |
|---|---|
| シンプルなコーディング規約を素早く定義したい | AGENTS.md |
| ファイルパターンごとに異なるルールを適用したい | Project Rules |
| AIにルールの適用判断を任せたい | Project Rules(Apply Intelligently) |
| チームで共有しやすい形式にしたい | AGENTS.md |
| スクリプトや参照ファイルを含めたい | Project Rules |
User Rulesの設定
User Rulesは、すべてのプロジェクトに適用されるグローバルな設定です。個人の好みの会話スタイルやコーディング規約を設定するのに最適です。
User Rulesの設定方法
Ctrl + Shift + J(macOSはCmd + Shift + J)でCursor設定を開く- 「Rules」セクションに移動
- 「User Rules」テキストエリアにルールを入力
User Rules記述例
簡潔なスタイルで返信してください。不要な繰り返しや冗長な表現は避けてください。
コードを提案する際は以下に従ってください:
- 日本語でコメントを記述する
- 変数名・関数名は英語を使用する
- エラーハンドリングを必ず含める
User Rulesの適用範囲
- Agent(Chat)で使用される
- Tab補完やインライン編集(Ctrl+K)には適用されない
- Project RulesやTeam Rulesより優先度が低い
Team Rulesの活用
Team Rulesは、Cursorダッシュボードから管理されるチーム全体のルールです。Team/Enterpriseプランで利用可能で、組織標準をすべてのプロジェクトで維持できます。
Team Rulesの作成
- Cursorダッシュボードにアクセス
- チーム管理者としてログイン
- 「Team Rules」セクションで「Add Rule」をクリック
- ルール名と内容を入力
- 適用オプションを設定
Team Rulesの設定オプション
| オプション | 説明 |
|---|---|
| このルールをすぐに有効化 | チェックすると作成と同時に有効化。チェックしない場合は下書き保存 |
| このルールを強制する | 有効にするとチームメンバーが無効化できない必須ルールになる |
Team Rulesの特性
- プレーンテキスト形式(Project Rulesのようなフォルダ構造やメタデータはなし)
- 有効なTeam Ruleは、チームのすべてのリポジトリとプロジェクトでAgentのモデルコンテキストに含まれる
- Team Rules → Project Rules → User Rules の順で優先適用される
Team Rules活用のポイント
組織全体で統一したい基本方針をTeam Rulesに設定します。
# 組織コーディング標準
## セキュリティ
- 機密情報をハードコードしない
- 環境変数または secrets manager を使用する
- SQLインジェクション対策としてパラメータ化クエリを使用する
## ドキュメント
- 公開APIには必ずJSDocコメントを付ける
- READMEには実行方法を記載する
## レビュー
- PRには必ずユニットテストを含める
- 破壊的変更にはマイグレーションガイドを添付する
コードベースインデックスの仕組み
Cursorのコードベースインデックスは、プロジェクト全体をセマンティック解析し、自然言語クエリに対応した検索を可能にする機能です。
インデックス作成の流れ
コードベースインデックスは以下の7つのステップで構築されます。
flowchart LR
A[ワークスペース] --> B[ファイル同期]
B --> C[チャンク化]
C --> D[AI埋め込み]
D --> E[ベクターDB]
F[検索クエリ] --> G[クエリ埋め込み]
G --> H[類似検索]
E --> H
H --> I[検索結果]- ワークスペースのファイルがCursorサーバーと安全に同期される
- ファイルが関数・クラス・論理的なコードブロックなど意味のあるチャンクに分割される
- 各チャンクがAIモデルでベクトル表現に変換される
- 埋め込みが専用のベクトルデータベースに保存される
- 検索時にクエリも同じAIモデルでベクトルに変換される
- クエリのベクトルと保存済みの埋め込みが比較され、類似するコードチャンクが特定される
- セマンティックな類似度でランク付けされた検索結果が返される
インデックスの自動同期
インデックスは以下のタイミングで自動的に更新されます。
| 操作 | 動作 |
|---|---|
| 新規ファイル | 自動でインデックスに追加 |
| 変更済みファイル | 既存の埋め込みを削除し、新規の埋め込みを作成 |
| 削除済みファイル | すぐにインデックスから削除 |
| 定期チェック | 5分ごとにワークスペースとインデックスを同期 |
セマンティック検索 vs Grep
セマンティック検索は、従来のgrep検索と比較して以下の利点があります。
| 観点 | セマンティック検索 | Grep |
|---|---|---|
| 速度 | 高速(インデックス済み) | ファイル数に比例 |
| 精度 | 概念的な一致が可能 | 完全一致のみ |
| 用途 | 「何をするか」で検索 | 特定のパターン検出 |
例えば、Agentに「トップナビゲーションを更新して」と指示すると、ファイル名に「navigation」が含まれていなくても、セマンティック検索は header.tsx を見つけられます。
インデックス設定の確認と管理
インデックス状況の確認
Ctrl + Shift + J(macOSはCmd + Shift + J)でCursor設定を開く- 「Indexing & Docs」セクションに移動
- インデックスの進捗状況を確認(80%で検索が利用可能に)
インデックス対象ファイルの確認
- 設定画面の「Indexing & Docs」セクションで「View included files」をクリック
- インデックス済みの全ファイルを一覧した
.txtファイルが開く
インデックス対象の制御
Cursorは .gitignore や .cursorignore に指定されたファイルを除くすべてのファイルをインデックスします。大きなコンテンツファイルを無視することで、回答の精度が向上します。
.cursorignoreの設定例
# 生成ファイル
dist/
build/
node_modules/
# 大きなデータファイル
*.csv
*.json
data/
# ドキュメント
docs/
# テスト用のモックデータ
__mocks__/
fixtures/
プライバシーとセキュリティ
コードベースインデックスのセキュリティは以下の層で保護されています。
- ファイルパスはサーバー送信前に暗号化され、プロジェクト構造は秘匿される
- コード本体が平文でサーバーに保存されることはない
- コードはインデックス作成中のみメモリに保持され、その後破棄される
Rulesのインポートと共有
GitHubからのリモートルールインポート
アクセス権のある任意のGitHubリポジトリ(パブリック/プライベート)から、ルールを直接インポートできます。
- Cursor Settings → Rules, Commandsを開く
- 「Project Rules」の横にある「+ Add Rule」をクリック
- 「Remote Rule (GitHub)」を選択
- ルールを含むGitHubリポジトリのURLを貼り付け
- Cursorがそのルールを取得してプロジェクトに同期
インポートしたルールは元のリポジトリと継続的に同期されるため、リモートルールを更新するとプロジェクトにも自動的に反映されます。
Agent Skillsからのインポート
CursorはAgent Skillsシステムからルールを読み込むことができます。
- Cursor Settings → Rulesを開く
- 「Import Settings」セクションを見つける
- 「Agent Skills」をオンに切り替え
Agent Skillsはエージェント決定ルールとして扱われ、コンテキストに基づいて関連性があるかどうかをCursorが判断します。
レガシールールからの移行
.cursorrules(レガシー)
プロジェクトルートにある .cursorrules ファイルは引き続きサポート対象ですが、将来的に廃止される予定です。Project RulesまたはAGENTS.mdへの移行を推奨します。
.mdc形式のルール
Cursor 2.2以降も .mdc 形式のルールは引き続き利用できますが、新しく作成されるルールはすべて .cursor/rules 配下のフォルダとして作成されます。
まとめ
本記事では、CursorのRules機能とコードベースインデックスの設定方法を解説しました。
- Project Rules(.cursor/rules)でプロジェクト固有のコーディング規約をAIに伝えられる
- AGENTS.mdでシンプルな指示を素早く定義できる
- コードベースインデックスにより、セマンティック検索でコードを見つけられる
- User Rules/Project Rules/Team Rulesは、個人・プロジェクト・組織の各レベルで適切に使い分ける
これらの設定を適切に行うことで、CursorのAIがプロジェクトのコンテキストを理解し、より精度の高いコード生成やアシスタンスを提供できるようになります。