Cursor Rules(カーソルルール)完全ガイド【2026年最新】:.mdcファイルの書き方・4種類のルールタイプ・おすすめ設定まで徹底解説
室谷
テキトー教師
室谷MYUUUでも全プロジェクトにCursor Rulesを入れていて、新しいメンバーが入っても即日でチームのコーディング規約に沿ったコードを書いてもらえるようになりましたね。
テキトー教師
室谷ただCursor Rulesの方が、ファイルタイプ別に適用するルールを分けられるという点で、より細かいコントロールができる・・・
テキトー教師それが今回のポイントです。この記事では、Cursor Rulesの基本概念から実際の書き方、フレームワーク別のテンプレートまで全部解説します。
Cursor Rulesとは?役割と概要
室谷
テキトー教師
室谷
テキトー教師.cursor/rules/ ディレクトリの中です。プロジェクトのルートに作成します。拡張子は
.mdc(Markdown with Cursor)という独自形式を使います。
室谷.cursorrules という単一ファイルが主流でしたが、今は .cursor/rules/ ディレクトリに複数の .mdc ファイルを置くのが推奨されています。単一ファイルより、目的別にファイルを分けられる方が管理しやすいんですよね。
テキトー教師.cursorrules ファイルはまだ動くんですが、公式ドキュメントではレガシー扱いです。新しく始めるなら .mdc 形式一択ですね。.cursorrules と .mdc の違い
| 比較項目 | 旧: .cursorrules | 新: .cursor/rules/*.mdc |
|---|---|---|
| ファイル数 | 1ファイルのみ | 複数ファイル |
| 適用条件 | 常に全部適用 | ファイルタイプや状況で分岐可能 |
| 公式サポート | レガシー(非推奨) | 推奨 |
| トークン効率 | 全て常に消費 | 必要な時だけ適用 |
| チーム管理 | 煩雑 | Git管理しやすい |
室谷.mdc なら「このファイルを編集するときだけこのルールを読む」という設定ができるので、よりスマートに動く。
テキトー教師4種類のルールタイプを完全解説

室谷これを理解すると使い方が劇的に変わります。
テキトー教師ルールタイプ一覧
| タイプ | 英語名 | 発動条件 | 向いているルール |
|---|---|---|---|
| 常時適用 | Always | 全セッションで自動適用 | 言語・全体コーディング規約 |
| 自動付与 | Auto Attached | 指定ファイルを開いたとき | フレームワーク・ドメイン別規約 |
| AI判断 | Agent Requested | AIが必要と判断したとき | ツール・特定ワークフロー |
| 手動 | Manual | @ルール名で明示的に呼び出す | 補助的な参考資料 |
室谷Always(常時適用)ルール
室谷alwaysApply: true を設定します。
テキトー教師
室谷MYUUUでも Always ルールは本当に最小限にして、「プロジェクトの基本情報だけ」にしてますね。
---
alwaysApply: true
---
# プロジェクト基本規約
- 言語: TypeScript(any禁止)
- コメント: 日本語で記述
- テスト: 全関数にユニットテストを追加
- エラーハンドリング: 必ず実装
テキトー教師Auto Attached(自動付与)ルール
テキトー教師特定のファイルを編集するときだけ、自動でルールが適用される。
室谷src/components/**/*.tsx というパターンを設定しておくと、Reactコンポーネントを触るときだけそのルールが読み込まれる。APIルートのファイルを触るときは別のルールが読み込まれる、という使い分けができます。
テキトー教師globs を設定します。---
alwaysApply: false
globs: ["src/components/**/*.tsx", "src/pages/**/*.tsx"]
---
# Reactコンポーネント規約
- 関数コンポーネント + TypeScript インターフェースを使用
- named exportのみ(default exportは禁止)
- コンポーネントは150行以内に収める
- Propsの型定義はコンポーネントの直上に書く
室谷ここは後で詳しく解説しましょう。
Agent Requested(AI判断)ルール
室谷description フィールドに「このルールをいつ使うか」を書くと、AIがそれを読んで判断します。
テキトー教師---
alwaysApply: false
description: "Stripe決済フローやサブスクリプションの実装を行うとき"
---
# Stripe実装規約
- Stripe Webhookは必ず署名検証を実装
- 金額はセント単位で扱う(日本円はそのままの整数値)
- エラーは Stripe のエラーコードで分岐して処理
室谷description の書き方が肝で、曖昧に書くとAIが読み込んでくれないんですよね。「決済関連」より「Stripe決済フローやサブスクリプションの実装を行うとき」の方がAIが判断しやすい。
テキトー教師Manual(手動)ルール
テキトー教師@ルール名 と書いて明示的に呼び出すタイプです。
室谷「このルールを参照して」と伝えるだけで読んでくれる。
テキトー教師ファイル構造と配置方法
室谷
テキトー教師your-project/
├── .cursor/
│ └── rules/
│ ├── general.mdc # 常時適用(基本規約)
│ ├── react-components.mdc # Auto: src/components/**
│ ├── api-routes.mdc # Auto: src/api/**
│ ├── database.mdc # Auto: src/db/**
│ ├── stripe.mdc # Agent Requested
│ └── deploy-guide.mdc # Manual
├── src/
├── package.json
└── .gitignore
室谷.cursor/rules/ ディレクトリを Gitに含める こと。これをチームで共有することで、全員が同じAI動作になる。チームのコーディング規約をAIに学習させるのと同義ですよね。
テキトー教師
室谷Cursor Settings > Rules)で設定する、個人の好みの設定です。プロジェクトに関係なく全てのプロジェクトで適用される。
テキトー教師User Rules と Project Rules の使い分け
| 項目 | User Rules | Project Rules(.mdc) |
|---|---|---|
| 設定場所 | Cursor設定画面 | .cursor/rules/*.mdc |
| 適用範囲 | 全プロジェクト | そのプロジェクトのみ |
| Git管理 | されない(個人設定) | される(チームで共有) |
| 向いているもの | 個人の癖・好み | チームの規約・プロジェクト固有設定 |
室谷
テキトー教師.mdcファイルの書き方:フロントマターと本文
室谷.mdc ファイルをどう書くか、という話に行きましょう。構造はシンプルで、YAMLフロントマターと Markdown 本文の2つのパーツで構成されています。
テキトー教師--- で囲んだYAML部分です。ここでルールの動作を制御します。使えるフィールドはこれです。
フロントマターのフィールド一覧
| フィールド | 型 | 用途 |
|---|---|---|
alwaysApply | boolean | true で常時適用、false で条件付き |
globs | 文字列 or 配列 | Auto Attached のファイルパターン |
description | 文字列 | Agent Requested の判断テキスト |
室谷--- の間に3つのフィールドがある。これらの組み合わせでどのタイプのルールかが決まります。
テキトー教師alwaysApply: true→ AlwaysalwaysApply: false+globsあり → Auto AttachedalwaysApply: false+descriptionあり → Agent Requested- 全部なし → Manual
室谷
テキトー教師
室谷
テキトー教師Glob パターンの設定方法
テキトー教師globs パターン、ここでハマる人が多いので、しっかり解説しましょう。
室谷よく使う glob パターン集
# 特定の拡張子を全ファイル
**/*.ts → 全 .ts ファイル
**/*.tsx → 全 .tsx ファイル
**/*.py → 全 .py ファイル
# 特定ディレクトリ配下
src/**/*.ts → src/ 以下の全 .ts
src/components/**/*.tsx → src/components/ 以下の全 .tsx
# 複数パターン(配列)
["src/**/*.ts", "src/**/*.tsx"]
# 特定のファイル名
**/schema.ts → 全ての schema.ts
**/*Controller.ts → Controller で終わる .ts
# ディレクトリ名を含む
src/api/** → src/api/ 以下の全ファイル
tests/**/*.test.ts → tests/ 以下の全テストファイル
テキトー教師
室谷/src/**/*.ts と書いてしまうと動かない。src/**/*.ts が正しい書き方です。
テキトー教師app/ 配下にコンポーネントがあるのに src/components/** を書いてたり(笑)。
室谷
テキトー教師Cursor Rulesの書き方:実践的なベストプラクティス
室谷
テキトー教師
室谷良いルールの5つの原則
テキトー教師1. 短く書く
Always ルールは200字以内、Auto Attached でも500字以内が目安。長いと読まれない、あるいはコンテキスト消費が大きくなります。
2. 具体的に書く
「良いコードを書いて」は意味がないです。「関数は単一責任原則に従い、1つの処理だけを行う」のように具体的に。
3. 行動ベースで書く
「〇〇すること」「〇〇を使う」「〇〇は禁止」のように、AIがどう動けばいいかを明確に指示します。
4. NG/OK例を入れる
特にコードスタイルに関するルールは、NG例とOK例を並べると理解精度が上がります。
5. 定期的に見直す
「3回同じことをAIに教えたらルールに入れる」というのが良い追加タイミング。逆に「使わなくなったルールは消す」こともメンテナンスとして重要です。
室谷これが共通の基準ですね。
テキトー教師
室谷Cursor Rulesのおすすめ設定:言語・フレームワーク別テンプレート
テキトー教師
室谷汎用:プロジェクト基本ルール(Always)
---
alwaysApply: true
---
# プロジェクト概要
## 技術スタック
- フロントエンド: Next.js 15 + TypeScript
- バックエンド: Supabase (PostgreSQL)
- スタイリング: Tailwind CSS
- テスト: Vitest
## 基本規約
- コメントは日本語で記述
- エラーハンドリングは必須
- anyは使用禁止
- コンソールログは本番コードに残さない
テキトー教師
室谷TypeScript プロジェクトルール(Auto Attached)
---
alwaysApply: false
globs: ["**/*.ts", "**/*.tsx"]
---
# TypeScript規約
## 型定義
- 全ての関数に戻り値の型を明記する
- interfaceはI接頭辞なし(UserProfile, not IUserProfile)
- Union型は型エイリアスとして定義する
- anyは使用禁止。unknownまたは具体的な型を使う
## 関数
- アロー関数を推奨(functionキーワードは避ける)
- 非同期処理は async/await(Promiseチェーンは避ける)
- 関数は単一責任、100行以内に収める
## import
- パスエイリアスを使用(@/components/Foo)
- 型のみのimportは import type を使う
テキトー教師interface の命名規則とか、import type の使い方とか、細かいけど地味に統一されてないとコードレビューで毎回指摘しなきゃいけないですよね(笑)。
室谷React / Next.js コンポーネントルール(Auto Attached)
---
alwaysApply: false
globs: ["src/components/**/*.tsx", "app/**/*.tsx"]
---
# Reactコンポーネント規約
## コンポーネント設計
- 関数コンポーネント + TypeScript interfaceで定義
- Propsの型はコンポーネントの直上に書く
- named exportのみ(default exportは禁止)
- コンポーネントは150行以内。超えたら分割を検討
## State管理
- ローカルstateはuseState/useReducer
- サーバーstateはTanStack Query
- グローバルstateはZustand
## スタイリング
- Tailwind CSSのユーティリティクラスを使用
- カスタムCSSは最小限に抑える
- className は cn()ヘルパーで結合する
## アクセシビリティ
- インタラクティブ要素には必ずaria-labelを追加
- 画像にはaltテキストを設定
テキトー教師
室谷AIがルールを覚えてくれると助かります。
Python プロジェクトルール(Auto Attached)
---
alwaysApply: false
globs: ["**/*.py"]
---
# Python規約
## コードスタイル
- PEP 8に準拠
- 型ヒントを全関数に付ける
- docstringはGoogle形式で記述
## 関数・クラス
- 関数は1つの処理のみ(単一責任)
- クラス名: PascalCase
- 変数・関数名: snake_case
- 定数: UPPER_SNAKE_CASE
## 依存関係
- パッケージ管理はuv
- 仮想環境は.venv/に作成
- requirements.txtではなくpyproject.tomlを使用
## テスト
- pytestを使用
- テストファイルはtests/ディレクトリに配置
- テスト関数名はtest_で始める
テキトー教師uvの指定を入れておくのが今の時代では重要ですよね。AIが古いpipで書いてしまうことを防げる。
室谷Laravel(PHP)プロジェクトルール(Auto Attached)
---
alwaysApply: false
globs: ["**/*.php"]
---
# Laravel規約
## コントローラー
- リソースコントローラーを優先
- ビジネスロジックはServiceクラスに分離
- FormRequestでバリデーション
- コントローラーは50行以内を目標に
## Eloquent ORM
- N+1問題を避けるためeager loadingを使用(with())
- スコープで共通クエリをまとめる
- マスアサインメントには$fillableを必ず設定
## セキュリティ
- ユーザー入力は必ずバリデーション
- SQLは必ずEloquentまたはクエリビルダー経由
- 認証にはSanctum/Passportを使用
テキトー教師Cursor Rulesの GitHub での共有・活用
室谷
テキトー教師cursor rules github で調べると、各フレームワーク・言語向けのテンプレートが山ほど出てきますよね。自分でゼロから書かなくても、参考になるものがたくさんある。
室谷awesome-cursorrules というGitHubリポジトリで、さまざまなフレームワーク向けのルール集が集まっています。React, Next.js, FastAPI, Django, Laravel など主要なものはほぼ揃っています。
テキトー教師
室谷
テキトー教師- 全員が同じ AI 動作になる
- ルールの変更が PR でレビューできる
- 新メンバーが入ったときに設定不要
室谷「クローンしてCursorで開くだけでAIがプロジェクトの規約を知っている状態になる」というのは快適です。
Cursor Rules を Git 管理する際の設定
テキトー教師.gitignore に .cursor/ を入れてしまっているプロジェクトが結構あります。これだと Rules が共有されないので注意が必要です。# .gitignore での正しい設定
# NG(全員のCursor設定がgit管理されてしまう)
# .cursor/
# 推奨(rulesだけ共有、settings等は除外)
.cursor/settings/
室谷.cursor/rules/ は共有したいけど、個人の Cursor 設定(.cursor/settings/)は共有したくない、という使い分けが必要ですよね。Cursor Rulesが効かないときのトラブルシューティング
テキトー教師よくある原因をまとめましょう。
室谷よくある問題と解決法
問題1:Auto Attached ルールが発動しない
原因は glob パターンが実際のファイルパスと一致していないケースがほとんどです。
対処法:
- ファイルの実際のパスを確認する(
src/app/なのかapp/なのか) - glob パターンに
/を先頭に付けていないか確認 - 配列形式で複数パターンを指定しているか確認
# NG
globs: "/src/components/**/*.tsx"
# OK
globs: "src/components/**/*.tsx"
# OK(複数パターン)
globs: ["src/components/**/*.tsx", "app/components/**/*.tsx"]
テキトー教師問題2:Agent Requested ルールが読み込まれない
description の書き方が曖昧すぎるケースです。
対処法:
- 「〇〇するとき」という具体的な状況で書く
- 動詞を使う(「実装する」「設定する」「作成する」)
- 固有名詞(ライブラリ名、機能名)を入れる
# NG(曖昧すぎる)
description: "データベース関連"
# OK(具体的)
description: "Supabaseのテーブル設計、RLS設定、クエリを書くとき"
問題3:ルールはあるのに AI が無視している
原因:ルールが長すぎて重要な指示が埋もれている。
対処法:
- Always ルールは200字以内に絞る
- 重要な指示を先頭に書く
- ルールファイルを分割する
室谷問題4:複数のルールが競合している
異なるルールが矛盾した指示をしていると、AI が混乱します。
対処法:
- ルール一覧を見直して、矛盾した指示がないか確認
- 同じトピックについて複数の場所で書かない
- より具体的な方のルール(Auto Attached)が Always より優先される
テキトー教師「Generate Cursor Rules」コマンドで自動生成
室谷
テキトー教師
室谷
テキトー教師
室谷実践:Cursor Rulesを導入するステップ
テキトー教師
室谷Cursor Rules 導入ステップ
ステップ1:ディレクトリを作成する
mkdir -p .cursor/rules
ステップ2:最初の Always ルールを作成する
.cursor/rules/general.mdc というファイルを作成して、プロジェクトの基本情報を書く。
---
alwaysApply: true
---
# プロジェクト概要
(使っている技術スタック、言語、フレームワークを書く)
# 基本規約
(コーディング規約の中で最も重要なものだけ書く)
ステップ3:よく使うファイルタイプに Auto Attached ルールを追加する
.cursor/rules/react.mdc(Reactなら)など、メインの言語・フレームワーク用のルールを1つ追加する。
テキトー教師
室谷general.mdc だけでした。半年かけて5〜6ファイルに育っていった感じです。FAQよくある質問
テキトー教師Q. .cursorrules と .cursor/rules/ の両方があったらどうなる?
室谷.cursor/rules/ が優先されます。移行中に両方ある状態になることもありますが、最終的には .mdc に統一するのがおすすめです。Q. ルールファイルの数に上限はある?
テキトー教師Q. チームの全員が同じバージョンの Cursor を使っていないと問題が起きる?
室谷Q. .mdc ファイルをエディタで普通に編集できる?
テキトー教師YAML フロントマターがあるだけで中身は Markdown です。
Q. User Rules に書けることと Project Rules に書けることは同じ?
室谷.mdc のフロントマターは使えません。Auto Attached 等の細かい設定は Project Rules でしかできないです。
まとめ:Cursor Rulesで AI の出力品質を底上げする
室谷
テキトー教師Cursor Rules のキーポイント:
.cursorrules(レガシー)より.cursor/rules/*.mdc(推奨)を使う- 4種類のルールタイプを使い分ける(Always / Auto Attached / Agent Requested / Manual)
- Always ルールは200字以内に絞る
- Auto Attached の glob パターンは実際のファイルパスに合わせて書く
.cursor/rules/は Git 管理してチームで共有する- 最初は小さく始めて、「毎回説明してること」を都度追加していく
室谷それがAI活用の生産性を上げる最も基本的な方法なんですよね。
テキトー教師それだけの話です。
室谷