Cursor は、VS Code をもとにした AI 付きのコードエディタです。Cmd+I(Windows は Ctrl+I)で開く Agent に依頼すると、ファイルの編集やコマンドの実行まで進めてくれます。 毎回伝えたい決まりごとは、.cursor/rules/ に置く .mdc ファイル(Cursor Rules)か、プロジェクト直下の AGENTS.md に書きます。

やりたいこと 操作(Mac / Windows・Linux)
Agent(チャット)を開く Cmd+I または Cmd+L / Ctrl+I または Ctrl+L
選んだコードをその場で直す(Inline Edit) Cmd+K / Ctrl+K
モードを切り替える(Agent・Ask・Plan・Debug) Shift+Tab
補完を受け入れる Tab
プロジェクトのルールを書く .cursor/rules/名前.mdc
単純な指示を書く プロジェクト直下の AGENTS.md
MCP サーバーを足す .cursor/mcp.json(全体は ~/.cursor/mcp.json)

確認方法:Cursor はデスクトップアプリで、この記事の作業環境では動かせません。仕様・ショートカット・ファイル形式は、Cursor の公式ドキュメント(cursor.com/docs・cursor.com/help)の原文で確かめました。Rules の雛形は、frontmatter(ファイル先頭の --- で囲んだ設定部分)が YAML として読めることを PyYAML 6 で、globs が想定したファイルに当たることを見本のフォルダ構成と Python の glob で確かめています(確認日 2026年10月12日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Cursor 使い方|Cursor Rulesの書き方・ショートカット・雛形」

Cursor でできること:4 つの入り口

Cursor の AI 機能は、使う場面で 4 つに分かれます。 Rules が効くのは、このうち Agent(チャット)だけです。

機能 開き方 何をするか Rules
Tab 入力中に自動で出る 次に書くコードを提案。Tab で受け入れ 効かない
Inline Edit Cmd+K / Ctrl+K 選んだ範囲をその場で書き換え 効かない
Agent(チャット) Cmd+I / Ctrl+I 複数ファイルの編集・コマンド実行・調査 効く
ターミナルの Cmd+K ターミナルで Cmd+K 依頼文からコマンドを作る 記載なし

ドキュメントの FAQ には「Rules only apply to Agent (Chat)」とあり、Tab 補完・Inline Edit・Bugbot(PR レビュー)には使われないと書かれています。User Rules についても「Inline Edit(Cmd/Ctrl+K)には使われない」と明記されています。

Agent のモード:Agent・Ask・Plan・Debug

Agent パネルの入力欄で Shift+Tab を押すと、モードが順に切り替わります。 モード選択のドロップダウンからも選べます。

モード ドキュメントの説明 向いている場面
Agent ファイルの編集・コマンド実行まで行う既定のモード 手順が決まっている変更
Ask 読み取り専用。質問に答え、コードを調べるが編集しない コードの理解・調査
Plan コードを書く前に、詳しい実装計画を作って見直せる 大きな変更・設計が要る作業
Debug 仮説を立て、ログを入れ、実行時の情報から原因を絞る 原因が分からない不具合

ドキュメントでは、Plan モードの計画は既定でホームディレクトリに保存され、複雑そうな依頼を打つと Plan モードを勧められることがあるとされています。Ask で調べた結果を変更につなげるときは、Agent に戻します。

チェックポイントで元に戻す

Agent が変えたファイルは、会話の流れの中にあるチェックポイントをクリックすると、その時点の状態を見て戻せます。ドキュメントでは、戻るのはファイルだけで会話は消えないこと、チェックポイントは Git とは別に手元に保存されることが書かれ、恒久的な履歴は Git で管理するよう勧められています。

ショートカット一覧

公式ドキュメント「Keyboard Shortcuts」の表を、Mac と Windows・Linux に分けて並べました。 すべてのショートカットは Cmd+R → Cmd+S(Windows・Linux は Ctrl+R → Ctrl+S)で一覧が開き、鉛筆のアイコンから割り当てを変えられます。

全体

動作 Mac Windows・Linux
サイドパネルの表示・非表示 Cmd+I / Cmd+L Ctrl+I / Ctrl+L
Agent のレイアウト切り替え Cmd+E Ctrl+E
モードのメニューを開く Cmd+. Ctrl+.
AI モデルを順に切り替える Cmd+/ Ctrl+/
Cursor の設定を開く Cmd+Shift+J Ctrl+Shift+J
一般の設定を開く Cmd+, Ctrl+,
コマンドパレット Cmd+Shift+P Ctrl+Shift+P
音声モード Cmd+Shift+Space Ctrl+Shift+Space

チャット(Agent)

動作 Mac Windows・Linux
メッセージを順番待ちに入れる(既定) Return Enter
すぐ送る(入力中) Cmd+Return Ctrl+Enter
生成を止める Cmd+Shift+Backspace Ctrl+Shift+Backspace
選んだコードを文脈に足す Cmd+Shift+L Ctrl+Shift+L
提案された変更をすべて受け入れる Cmd+Return Ctrl+Enter
提案された変更をすべて取り消す Cmd+Shift+Backspace Ctrl+Shift+Backspace
モードを切り替える Shift+Tab Shift+Tab
モデルの切り替え Cmd+Opt+/ Ctrl+Alt+/
新しいチャット Cmd+N / Cmd+R Ctrl+N / Ctrl+R
新しいチャットのタブ Cmd+T Ctrl+T
前のチャット / 次のチャット Cmd+[ / Cmd+] Ctrl+[ / Ctrl+]
チャットを閉じる Cmd+W Ctrl+W

Inline Edit・コードの選択

動作 Mac Windows・Linux
Inline Edit を開く Cmd+K Ctrl+K
Inline Edit の入力欄へ移る Cmd+Shift+K Ctrl+Shift+K
すばやく質問する Opt+Return Alt+Enter
@ メンション / / コマンド @ / / @ / /
選んだ範囲を新しいチャットへ Cmd+L Ctrl+L
チャットでコードベースを検索 Cmd+Return Ctrl+Enter

Tab 補完・ターミナル

動作 Mac Windows・Linux
補完を受け入れる Tab Tab
補完を 1 単語だけ受け入れる Cmd+→ Ctrl+→
ターミナルで依頼文の入力欄を開く Cmd+K Ctrl+K
作られたコマンドを実行 Cmd+Return Ctrl+Enter

Cmd+K のように、VS Code では別の操作の始まりになるキーが、Cursor では AI の機能に割り当てられているものがあります。VS Code の一般的なショートカットは、関連記事「VSCodeショートカット一覧|Win/Mac対応130項目とAI操作・変更方法」で扱っています。

Cursor Rules とは:4 つの置き場所

Cursor Rules は、Agent に毎回渡す「このプロジェクトの決まりごと」です。 ドキュメントでは、次の 4 種類が挙げられています。

種類 置き場所 共有のされ方
Project Rules .cursor/rules/*.mdc Git でチームと共有
User Rules 設定画面の Customize → Rules Cursor アカウントに保存。端末間で同期
Team Rules Cursor のダッシュボード(Team・Enterprise) 組織全体。管理者が必須にできる
AGENTS.md プロジェクト直下・サブフォルダ Git でチームと共有

ぶつかったときは Team Rules → Project Rules → User Rules の順に、前のものが優先されます(ドキュメントの記載)。~/.cursor/rules(Windows は %USERPROFILE%\.cursor\rules)に置いたファイルは、その端末だけで同期されません。

CLAUDE.md も読まれます。 ドキュメントには「Cursor reads CLAUDE.md files the same way it reads AGENTS.md」とあり、alwaysApply に関係なく、すべての会話に入るとされています。プロジェクト直下の .cursorrules は「legacy and will be deprecated(以前の形式で、廃止予定)」です。

.mdc の書き方:frontmatter と 4 つの適用方法

Project Rules は、拡張子 .mdc のファイルです。 先頭の frontmatter に description・globs・alwaysApply の 3 つを書き、その下に本文(Markdown)を書きます。.cursor/rules/ に .md を置いても、frontmatter が無いため Rules としては無視されます。

---
description: バックエンドの API の書き方
globs: src/main/java/**/*.java
alwaysApply: false
---

- Controller は薄く保ち、処理は Service に置く
- 例は @OrderController.java を見る

どの組み合わせで書くかで、いつ読まれるかが決まります。 ドキュメントの表をまとめたものです。

適用方法 alwaysApply description globs いつ読まれるか
Always Apply true 無視 無視 すべてのチャットで
Apply Intelligently false 書く 書かない Agent が説明文を見て要ると判断したとき
Apply to Specific Files false 任意 書く 合うファイルが文脈に入ったとき
Apply Manually false 書かない 書かない チャットで @ルール名 と書いたとき

以前の記事でよく見る「Auto Attached」「Agent Requested」は、今の「Apply to Specific Files」「Apply Intelligently」にあたります。

書くときの注意点

項目 ドキュメントの記載・確かめたこと
複数の globs カンマで区切った 1 つの文字列(例 docs/**/*.md, docs/**/*.mdx)
* で始まる globs globs: **/*.java は PyYAML ではエイリアスと見なされ ScannerError になった。雛形では src/ から書く
長さ 「500 行以内」が目安。大きいものは分ける
ファイル参照 @ファイル名 は場所を伝えるだけで、中身はプロンプトに入らない。必ず要る内容は本文に書く
同じ名前のルール フルパスで区別される。条件が合えば両方使われる
作り方 Agent で /create-rule、またはコマンドパレットで「New Cursor Rule」
効かないとき Apply Intelligently は description、Apply to Specific Files は globs が合っているかを見る

Rules 雛形①:Java(Spring Boot)用

1 つの大きなルールにせず、「いつも読む概要」「Java のファイルを触るとき」「DB マイグレーションのとき(手動)」に分けました。 Maven で、src/main/java がリポジトリ直下にある構成を前提にしています。

.cursor/rules/
├── 00-project.mdc          # Always Apply
├── java-spring.mdc         # Apply to Specific Files(*.java)
└── db-migration.mdc        # Apply Manually(@db-migration で呼ぶ)
---
alwaysApply: true
---

# プロジェクトの概要

- Spring Boot の REST API。Java 21、ビルドは Maven Wrapper
- ビルド:`./mvnw -q -DskipTests package`
- テスト:`./mvnw test`(1 クラスだけなら `./mvnw test -Dtest=OrderServiceTest`)
- パッケージは機能ごとに分ける(`com.example.app.order` に controller・service・repository をまとめる)
- 変更したら、関係するテストを実行して結果を報告する
- 秘密情報(パスワード・API キー)をコードや application.yml に書かない。環境変数から読む
- 回答と説明は日本語で書く
---
description: Spring Boot の Java コードの書き方
globs: src/main/java/**/*.java, src/test/java/**/*.java
alwaysApply: false
---

# Java・Spring Boot の決まり

## 構成
- Controller は入力の受け取りと Service の呼び出しだけにする。業務処理は Service に書く
- 依存はコンストラクタで受け取る(`@Autowired` のフィールド注入は使わない)
- 外に返す型は DTO(`record`)にし、Entity を直接返さない
- 更新系の Service メソッドに `@Transactional` を付ける。参照だけなら `@Transactional(readOnly = true)`

## 入力チェックと例外
- リクエストの DTO に Bean Validation(`@NotBlank`・`@Size` など)を付け、Controller で `@Valid`
- 例外は `@RestControllerAdvice` でまとめて HTTP ステータスに変える
- 見つからないときは独自の `NotFoundException` を投げ、404 にする

## 書き方
- `Optional` を返り値に使い、`null` を返さない
- ログは SLF4J(`private static final Logger log = LoggerFactory.getLogger(...)`)。`System.out` は使わない
- 日時は `java.time`(`LocalDateTime`・`OffsetDateTime`)を使う

## テスト
- JUnit 5 と AssertJ で書く。モックは Mockito
- Controller は `@WebMvcTest`、Repository は `@DataJpaTest`、全体は `@SpringBootTest`
- テストメソッド名は `日本語で条件_結果` の形でもよい(例:`在庫がない_例外になる`)
- 例は @OrderControllerTest.java を見る
---
alwaysApply: false
---

# DB マイグレーション(Flyway)

- ファイルは `src/main/resources/db/migration/V{番号}__{内容}.sql`
- 適用済みのファイルは書き換えない。直すときは新しい番号のファイルを足す
- 列の削除・名前変更は、アプリの変更と分けて 2 段階で行う
- 大きなテーブルへのインデックス追加は、ロック時間を書き添えて相談する

3 つ目は description も globs も無いので「Apply Manually」です。チャットで @db-migration と書いたときだけ読まれます。Spring Boot を Claude Code で扱うときの指示ファイルの例は、関連記事「Claude CodeでSpring Boot開発|CLAUDE.md例と設定一式」で扱っています。

Rules 雛形②:Angular 用

Angular CLI で作ったプロジェクト(src/app 直下にコード)を前提にしています。 書き方は、standalone コンポーネント・signal・@if/@for の制御構文を使う Angular の書き方に合わせました。

.cursor/rules/
├── 00-project.mdc          # Always Apply(フロント用に書き換え)
├── angular.mdc             # Apply to Specific Files(*.ts・*.html)
└── angular-test.mdc        # Apply to Specific Files(*.spec.ts)
---
alwaysApply: true
---

# プロジェクトの概要

- Angular の SPA。パッケージ管理は npm
- 起動:`npx ng serve`、ビルド:`npx ng build`、テスト:`npx ng test --watch=false`
- 部品を足すときは `npx ng generate component 機能名/部品名` を使う
- 変更したら `npx ng build` が通ることを確かめて報告する
- API の URL やキーは `src/environments/` に置き、コードに直接書かない
- 回答と説明は日本語で書く
---
description: Angular のコンポーネント・サービスの書き方
globs: src/app/**/*.ts, src/app/**/*.html
alwaysApply: false
---

# Angular の決まり

## コンポーネント
- standalone コンポーネントで作る。NgModule は新しく作らない
- `changeDetection: ChangeDetectionStrategy.OnPush` を付ける
- 入出力は `input()`・`output()` 関数で書く(`@Input()`・`@Output()` デコレーターは新規に使わない)
- 状態は signal(`signal()`・`computed()`)で持つ
- テンプレートの分岐と繰り返しは `@if`・`@for`(`track` を必ず書く)を使う。`*ngIf`・`*ngFor` は新規に使わない

## 依存と通信
- 依存は `inject()` で受け取る
- HTTP 通信はコンポーネントに書かず、`providedIn: 'root'` のサービスにまとめる
- サービスの戻り値には型を付け、`any` を使わない

## フォーム
- 型付きの Reactive Forms(`FormGroup<{...}>`・`NonNullableFormBuilder`)を使う
- 入力チェックのメッセージは、テンプレートに直接書かず定数にまとめる

## スタイル
- 部品のスタイルは各部品の `.scss` に書く。全体に効かせるものだけ `styles.scss`
---
description: Angular のテストの書き方
globs: src/app/**/*.spec.ts
alwaysApply: false
---

# Angular のテスト

- `TestBed.configureTestingModule({ imports: [対象のコンポーネント] })` で standalone のまま読み込む
- HTTP は `provideHttpClient()` と `provideHttpClientTesting()`、`HttpTestingController` で確かめる
- 画面の確認は、`fixture.nativeElement.querySelector` で要素を取り、表示された文字で判定する
- 1 つのテストで確かめることは 1 つにする

angular.mdc の globs(src/app/**/*.ts)は *.spec.ts にも当たるので、テストのファイルを開いたときは angular.mdc と angular-test.mdc の両方が読まれます。手元の見本の構成では、src/app/**/*.ts, src/app/**/*.html が .ts・.html・.spec.ts の 3 ファイルに当たり、.scss には当たりませんでした。Angular の公式 MCP サーバーを AI ツールにつなぐ方法は、関連記事「Angular MCPサーバーの使い方|v22の9ツール実測とAI設定」で扱っています。

モノレポのとき

バックエンドとフロントエンドが 1 つのリポジトリにあるなら、globs の頭にフォルダ名を足します(例 backend/src/main/java/**/*.java・frontend/src/app/**/*.ts)。見本の構成で Python の glob を使って確かめると、それぞれ想定したファイルだけに当たりました。サブフォルダごとに AGENTS.md を置く方法もあり、ドキュメントでは、入れ子の AGENTS.md は親フォルダの内容と合わせて使われ、より近いものが優先されるとされています。

AGENTS.md と .mdc の使い分け

比べる点 .cursor/rules/*.mdc AGENTS.md
形式 frontmatter つきの Markdown ただの Markdown
いつ読むかの指定 4 種類から選べる 指定できない
ファイルの種類ごとの切り替え globs でできる フォルダ単位(入れ子の AGENTS.md)
ほかのツールとの共有 Cursor 専用 Codex CLI などでも読まれる

Cursor だけで使うなら .mdc で細かく、複数の AI ツールで同じ指示を使うなら AGENTS.md に共通部分を書き、Cursor 固有の条件だけ .mdc にする形にすると、内容の二重管理を減らせます。AGENTS.md の書き方は、関連記事「AGENTS.mdの書き方テンプレ|copilot-instructions比較」で扱っています。

MCP の設定(mcp.json)

MCP サーバーは、プロジェクトなら .cursor/mcp.json、全プロジェクト共通なら ~/.cursor/mcp.json に書きます。 次の雛形は、ドキュメントに書かれた項目(stdio は type・command が必須、args・env・envFile は任意。リモートは url・headers)で組み立てたものです。

{
  "mcpServers": {
    "context7": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    },
    "internal-api": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/tools/mcp-server.js"],
      "env": { "API_TOKEN": "${env:INTERNAL_API_TOKEN}" }
    },
    "docs": {
      "url": "https://example.com/mcp",
      "headers": { "Authorization": "Bearer ${env:DOCS_TOKEN}" }
    }
  }
}
書き方 意味(ドキュメントの記載)
${env:NAME} 環境変数の値
${workspaceFolder} .cursor/mcp.json があるフォルダ(プロジェクトのルート)
${userHome} ホームディレクトリ
envFile 環境変数をファイルから読む(stdio のみ)

変数が使えるのは command・args・env・url・headers の 5 項目です。トークンを直接書かず ${env:…} で渡すと、.cursor/mcp.json を Git で共有しやすくなります。通信方式は stdio・SSE・Streamable HTTP の 3 つで、MCP のツールは既定では使う前に承認を求められます。MCP の仕組みは、関連記事「MCPとは?サーバーとクライアントの仕組みと設定例を図解」で扱っています。

Claude Code・Codex CLI・Gemini CLI との対応表

項目 Cursor Claude Code Codex CLI Gemini CLI
指示ファイル .cursor/rules/*.mdc・AGENTS.md CLAUDE.md AGENTS.md GEMINI.md
ファイル種類で切替 globs .claude/rules/ の paths フォルダ単位 フォルダ単位
他ツールの指示 CLAUDE.md も読む CLAUDE.md が無ければ AGENTS.md 設定で CLAUDE.md も 設定で AGENTS.md も
MCP の設定 .cursor/mcp.json .mcp.json ~/.codex/config.toml .gemini/settings.json
モード切替 Shift+Tab Shift+Tab Shift+Tab Shift+Tab

Claude Code・Codex CLI・Gemini CLI の列は、それぞれの公式ドキュメントと、Codex CLI 0.162.1・Gemini CLI 0.63.0 の手元の画面で確かめた内容です。Claude Code には Cursor の設定を取り込む /import cursor(v2.1.265 以降)があります。CLI 版の詳しい使い方は、関連記事「Codex CLI 使い方|コマンド一覧・config.toml・AGENTS.md」と関連記事「Gemini CLI 使い方|コマンド一覧・設定・GEMINI.md・無料枠」で扱っています。

よくある質問

Q. 返答を日本語にしたい。 A. User Rules(Customize → Rules)に「回答は日本語で書く」と書くと、全プロジェクトの Agent に効きます。チームで揃えるなら、上の雛形のように Always Apply の .mdc に書きます。どちらも Inline Edit(Cmd+K)には効きません。

Q. ルールが効いていない気がします。 A. まず .mdc の拡張子と frontmatter を見ます。.md だと無視されます。Apply Intelligently なら description、Apply to Specific Files なら globs が要ります。globs を * から書いているなら、src/ などのフォルダから書く形にします。

Q. .cursorrules はまだ使えますか。 A. ドキュメントでは「legacy and will be deprecated」とされ、移行手順として、新しいルールを作って中身を写し、種類を Always Apply にして、元のファイルを消す流れが示されています。

Q. ターミナルから Cursor の Agent を動かせますか。 A. Cursor CLI があり、ドキュメントでは curl https://cursor.com/install -fsS | bash で入れ、agent で対話、agent -p "依頼文" で対話なしに動かせるとされています。

Q. GitHub Copilot との違いは? A. どちらも VS Code 系のエディタで補完とチャットを使えます。Copilot の操作と設定は、関連記事「GitHub Copilotの使い方|ショートカット・コマンド一覧と設定」で扱っています。

まとめ

  • AI の入り口は Tab・Inline Edit(Cmd+K)・Agent(Cmd+I)。Rules が効くのは Agent だけ
  • モードは Agent・Ask(読み取り専用)・Plan・Debug。Shift+Tab で切り替え
  • Project Rules は .cursor/rules/*.mdc。alwaysApply・description・globs の組み合わせで 4 つの適用方法
  • AGENTS.md と CLAUDE.md も読まれる。.cursorrules は廃止予定
  • globs はカンマ区切り。* から書かず src/ などから書く
  • MCP は .cursor/mcp.json。トークンは ${env:NAME} で渡す

参考・出典

確認日はいずれも 2026年10月12日です。

  • Cursor Docs「Rules」:https://cursor.com/docs/rules
  • Cursor Docs「Rules」(context):https://cursor.com/docs/context/rules
  • Cursor Help「Rules」:https://cursor.com/help/customization/rules
  • Cursor Docs「Keyboard Shortcuts」:https://cursor.com/docs/configuration/kbd
  • Cursor Help「Keyboard shortcuts」:https://cursor.com/help/customization/keyboard-shortcuts
  • Cursor Help「Ask mode」:https://cursor.com/help/ai-features/ask-mode
  • Cursor Help「Plan mode」:https://cursor.com/help/ai-features/plan-mode
  • Cursor Help「Debug mode」:https://cursor.com/help/ai-features/debug-mode
  • Cursor Docs「Agent overview」(チェックポイント):https://cursor.com/docs/agent/overview
  • Cursor Docs「Model Context Protocol (MCP)」:https://cursor.com/docs/mcp
  • Cursor Docs「CLI overview」:https://cursor.com/docs/cli/overview
  • Claude Code ドキュメント「Commands」:https://code.claude.com/docs/en/commands

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Cursor 使い方|Cursor Rulesの書き方・ショートカット・雛形」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?