この記事で紹介する Cursor / Claude Code × MCP 連携をさらに活用するなら pay-per-call-mcp もチェックしてください。Web検索・メール調査・請求書検証を Claude / Cursor が自律で実行できます。
この記事でわかること
- Cursor Rules(
.cursor/rules/)と CLAUDE.md の根本的な違い - Cursor Rules の 3 種類(Always / Auto Attached / Agent Requested)の使い分け
- 「なぜか Cursor の精度が落ちてきた」を解決する Rules 設計のコツ
- CLAUDE.md から Cursor Rules に移行するときの変換パターン
- 両ツールを併用するチームが採用している共通ルール管理の実例
はじめに
「CLAUDE.md を整理したら Claude Code の精度が上がった」という記事を書いたところ、「Cursor でも同じことをやりたい」という声を多くいただきました。
しかし Cursor Rules は CLAUDE.md とかなり設計思想が違います。同じノリで書くと期待通りに動かないことが多いです。
この記事では、両者の違いを整理した上で、Cursor Rules の効果的な設計方法を解説します。
Cursor Rules と CLAUDE.md の根本的な違い
| CLAUDE.md | Cursor Rules | |
|---|---|---|
| 読み込みタイミング | 毎ターン常に読む | ルールの種類によって変わる |
| 適用スコープ | ファイル単位(グローバル / プロジェクト) | ルールの種類で制御 |
| ファイル形式 | Markdown |
.mdc(Markdown + メタデータ) |
| 条件分岐 | できない | ファイルパターンで自動適用できる |
| 最大推奨サイズ | 60行以下 | ルールあたり 500 行以下 |
最大の違いは「Cursor Rules は場面によって自動的に切り替わる」点です。
Cursor Rules の 3 種類
1. Always(常時適用)
.cursor/rules/always.mdc
---
alwaysApply: true
---
# 絶対ルール
1. `any` 型禁止。`unknown` + type guard を使う
2. コミット前に `npm test` を通す
3. 外部 API 呼び出しには必ずリトライ処理を入れる
使い所: プロジェクト全体で守るべき最重要ルール。3〜5個まで。
2. Auto Attached(ファイルパターンで自動適用)
.cursor/rules/react-components.mdc
---
globs: ["src/components/**/*.tsx", "src/app/**/*.tsx"]
---
# React コンポーネントルール
- Props は interface で定義(type は使わない)
- `use client` は必要な場合のみ(デフォルトは Server Component)
- スタイルは Tailwind のみ(styled-components 禁止)
- コンポーネント名はファイル名と一致させる
.cursor/rules/api-routes.mdc
---
globs: ["src/app/api/**/*.ts", "src/server/**/*.ts"]
---
# API ルールール
- 全エンドポイントで zod バリデーションを使う
- レスポンスは `{ data, error }` 形式に統一
- 認証チェックは middleware で行う(個別ルートでしない)
- エラーログは logger.ts を使う(console.error 禁止)
使い所: フロントエンドとバックエンドで異なるルールがある場合。ファイルを開いた瞬間に自動で適用される。
3. Agent Requested(エージェントが必要と判断したときだけ)
.cursor/rules/database-patterns.mdc
---
description: "Prisma や SQL を使うタスクのときに参照するDB操作ルール"
---
# データベース操作ルール
- N+1 クエリ禁止。`include` / `select` で関連データを一括取得
- トランザクションは `prisma.$transaction` を使う
- マイグレーションは `prisma migrate dev` のみ(直接 SQL 禁止)
- 本番 DB への直接 write は禁止。必ず確認を求める
使い所: 特定の技術領域のルール。DB、認証、決済など。Cursor が「今これが必要」と判断したときだけロードされる。
よくある失敗パターン
❌ 全部 Always に入れてしまう
---
alwaysApply: true
---
# ルール(300行)
## TypeScript
...(50行)
## React
...(80行)
## API
...(70行)
## DB
...(100行)
毎ターン 300 行が丸ごとコンテキストに入るため、精度が落ちます。
✅ 正しい分割
.cursor/rules/
├── critical.mdc (alwaysApply: true、10行以内)
├── typescript.mdc (globs: **/*.ts, *.tsx)
├── react.mdc (globs: src/components/**)
├── api.mdc (globs: src/app/api/**)
├── database.mdc (description: DB操作時に参照)
└── commit.mdc (description: コミット時に参照)
CLAUDE.md からの移行パターン
Before(CLAUDE.md)
## コーディングルール
- TypeScript の any 禁止
- React は Server Component デフォルト
- API は zod バリデーション必須
- DB は Prisma 使用
## コミット規約
- feat: / fix: / docs: を使う
- 50文字以内
## 禁止事項
- console.log を残さない
- magic number 禁止
After(Cursor Rules)
critical.mdc(alwaysApply: true)
→ any 禁止、console.log 禁止の2つだけ
typescript.mdc(globs: **/*.ts)
→ TypeScript 固有ルール
react.mdc(globs: src/**/*.tsx)
→ React / Server Component ルール
api.mdc(globs: src/app/api/**)
→ zod・レスポンス形式
commit.mdc(description: コミット作成時)
→ コミット規約
両ツール併用チームの構成例
Claude Code と Cursor を両方使うチームでよく見られる構成:
project/
├── CLAUDE.md ← Claude Code 用(共通最重要ルール)
├── .cursor/
│ └── rules/
│ ├── critical.mdc ← Cursor 用必須ルール
│ ├── frontend.mdc ← フロントエンド専用
│ └── backend.mdc ← バックエンド専用
└── .claude/
└── rules/
├── coding-style.md ← @include でCLAUDE.mdから参照
└── commit.md
共通ルールは .claude/rules/shared.md に書いて、CLAUDE.md と Cursor Rules の両方から参照する形にすると管理コストが最小になります。
まとめ
| やること | CLAUDE.md | Cursor Rules |
|---|---|---|
| 全体の最重要ルール | ✅ | alwaysApply: true |
| ファイル種別ごとのルール |
@include で分割 |
globs で自動切替 |
| 特定技術のルール | @include |
description で Agent Requested |
| ルールの優先度 | 書く順序 |
alwaysApply > globs > description
|
Cursor Rules の設計ポイントは「常に読ませるルールを最小限にして、必要なときだけ読み込む」です。CLAUDE.md と同じ原則ですが、Cursor は globs という強力な自動振り分け機能があるため、より細かく制御できます。
よくある質問(FAQ)
Q. .cursorrules(旧形式)と .cursor/rules/ はどちらを使うべきですか?
A. .cursor/rules/ を推奨します。旧形式の .cursorrules は単一ファイルで Always 相当の動作のみです。新形式は複数ファイルに分割でき、Auto Attached / Agent Requested が使えます。
Q. Cursor Rules は .gitignore に入れるべきですか?
A. チームで共有するルールはコミット推奨です。個人設定(フォント・テーマなど)は .gitignore に入れてください。
Q. CLAUDE.md と Cursor Rules に同じルールを二重管理するのは辛いです。
A. 共通ルールを独立したファイル(例: .ai-rules/common.md)に書き、CLAUDE.md は @include、Cursor Rules は globs: [".ai-rules/**"] で参照する方法があります。
Q. Cursor Rules の文字数制限はありますか?
A. 公式の制限はありませんが、1ファイルあたり 500 行以下を推奨します。それ以上になるとコンテキスト消費が増え精度が落ちます。