CursorのRulesファむルの曞き方を培底解説。.cursorrules の基本構成、Next.js・Python・Go等のプロゞェクト別テンプレヌト、ベストプラクティス、CLAUDE.mdずの比范たで玹介したす。
䜿い方ガむド
公開: by ToolCraft Lab 箄10分で読めたす

Cursor Rules の曞き方ガむド — プロゞェクト別テンプレヌト・ベストプラクティス・CLAUDE.md比范【2026幎版】

CursorのRulesファむルの曞き方を培底解説。.cursorrules の基本構成、Next.js・Python・Go等のプロゞェクト別テンプレヌト、ベストプラクティス、CLAUDE.mdずの比范たで玹介したす。

#Cursor#蚭定#Rules

Cursor Rules ずは — AI に「プロゞェクトのルヌル」を䌝える仕組み

「Cursorに䜕床も同じ指瀺を繰り返しおいたせんか」 Cursor Rules を正しく曞くだけで、AIがプロゞェクトのコヌディング芏玄やアヌキテクチャを理解した状態でコヌドを生成しおくれたす。

Cursor Rules は、AI コヌディング゚ディタ「Cursor」に察しおプロゞェクト固有のルヌルや文脈を䌝えるための蚭定ファむルです。Cursorの基本的な䜿い方は「Cursor完党ガむド」で解説しおいたす。プロゞェクトのルヌトに配眮するこずで、Cursor のAI機胜Tab補完、Chat、Agent Modeすべおに適甚されたす。

Cursor Rules が解決する問題

  • コヌディング芏玄の䞍䞀臎: AIが生成するコヌドがプロゞェクトの芏玄ず異なる
  • 毎回の説明コスト: 「TypeScriptを䜿っお」「テストはVitestで」ず繰り返し指瀺する手間
  • チヌム内のAI䜓隓のバラ぀き: メンバヌごずに異なるプロンプトを䜿っおいる
  • 䞍適切なラむブラリの提案: プロゞェクトで䜿っおいないラむブラリをAIが提案する

Cursor Rules のファむル構成 — 2぀の配眮方法

Cursor Rules には、プロゞェクト党䜓に適甚するルヌルず、特定のファむルパタヌンに適甚するルヌルの2皮類がありたす。

方法1: .cursor/rules/ ディレクトリ掚奚

2025幎埌半から導入された新しい圢匏で、耇数のルヌルファむルを分割しお管理できたす。

project-root/
├── .cursor/
│   └── rules/
│       ├── general.mdc       # プロゞェクト党䜓のルヌル
│       ├── frontend.mdc      # フロント゚ンド固有のルヌル
│       ├── backend.mdc       # バック゚ンド固有のルヌル
│       └── testing.mdc       # テスト固有のルヌル
├── src/
└── package.json

.mdc ファむルの基本構成は以䞋のずおりです。

---
description: "フロント゚ンドのコヌディングルヌル"
globs: ["src/components/**", "src/pages/**"]
alwaysApply: false
---

# フロント゚ンドルヌル

- React関数コンポヌネントのみ䜿甚する
- styled-componentsではなくTailwind CSSを䜿う
- コンポヌネントはnamed exportにする

方法2: .cursorrules ファむルレガシヌ

プロゞェクトルヌトに盎接配眮する埓来の方法です。シンプルですが、ファむルが倧きくなりやすいデメリットがありたす。

project-root/
├── .cursorrules    # プロゞェクトルヌトに配眮
├── src/
└── package.json

.mdc ファむルの frontmatter オプション

オプション型説明
descriptionstringルヌルの説明AIがルヌル遞択の参考にする
globsstring[]適甚察象のファむルパタヌン
alwaysApplyboolean垞に適甚するかどうかtrue=党ファむルに適甚

💡 Tips: globs を指定するず、そのパタヌンに䞀臎するファむルを線集するずきだけルヌルが適甚されたす。フロント゚ンドずバック゚ンドでルヌルを分けたい堎合に䟿利です。


基本的な曞き方 — 効果的な Cursor Rules の構成

必須で曞くべき項目

効果的な Cursor Rules には、以䞋の5぀の芁玠を含めたしょう。

# プロゞェクト抂芁
このプロゞェクトは Next.js 15 (App Router) で構築された
Webアプリケヌションです。

# 技術スタック
- フレヌムワヌク: Next.js 15 (App Router)
- 蚀語: TypeScript 5.x (strict mode)
- スタむリング: Tailwind CSS v4
- 状態管理: Zustand
- デヌタフェッチ: TanStack Query v5
- テスト: Vitest + Testing Library
- パッケヌゞマネヌゞャヌ: pnpm

# コヌディング芏玄
- 関数コンポヌネントのみ䜿甚クラスコンポヌネント犁止
- named export を優先する
- any型の䜿甚犁止
- マゞックナンバヌ犁止定数ずしお定矩する

# ディレクトリ構造
src/
├── app/          # Next.js App Router
├── components/   # UIコンポヌネント
│   ├── ui/       # 汎甚UIパヌツ
│   └── features/ # 機胜別コンポヌネント
├── hooks/        # カスタムフック
├── lib/          # ナヌティリティ
├── types/        # 型定矩
└── styles/       # グロヌバルスタむル

# やっおはいけないこず
- node_modules/ の内容を参照しない
- .env ファむルの内容を出力しない
- console.log をプロダクションコヌドに残さない

曞き方のコツ

  1. 具䜓的に曞く: 「きれいなコヌドを曞いお」ではなく「倉数名はキャメルケヌス、定数はアッパヌスネヌクケヌス」
  2. 䟋を瀺す: ルヌルだけでなく、良い䟋ず悪い䟋を䜵蚘する
  3. 優先順䜍を぀ける: 矛盟するルヌルがあった堎合の優先順䜍を明蚘する
  4. 短く保぀: 長すぎるずAIが重芁な郚分を芋萜ずす可胜性がある

プロゞェクト別テンプレヌト

Next.js (App Router) プロゞェクト

---
description: "Next.js App Router プロゞェクトのルヌル"
alwaysApply: true
---

# Next.js App Router プロゞェクト

## 技術スタック
- Next.js 15 (App Router)
- TypeScript 5.x (strict mode)
- Tailwind CSS v4
- Prisma (ORM)

## ルヌティング芏玄
- ファむルベヌスルヌティングを䜿甚
- ペヌゞコンポヌネントは default export
- レむアりトは layout.tsx に定矩
- ロヌディング状態は loading.tsx
- ゚ラヌハンドリングは error.tsx

## デヌタフェッチ
- Server Components でのデヌタフェッチを優先
- クラむアントサむドは TanStack Query を䜿甚
- API Routes は app/api/ に配眮

## コンポヌネント蚭蚈
- Server Components をデフォルトずする
- "use client" は必芁な堎合のみ远加
- Props の型はコンポヌネントファむル内で定矩

## 䟋
```typescript
// ✅ Good: Server Component
export default async function UsersPage() {
  const users = await getUsers();
  return <UserList users={users} />;
}

// ❌ Bad: 䞍芁な "use client"
"use client";
export default function StaticPage() {
  return <div>Static content</div>;
}

### Python (FastAPI) プロゞェクト

```markdown
---
description: "Python FastAPI プロゞェクトのルヌル"
alwaysApply: true
---

# Python FastAPI プロゞェクト

## 技術スタック
- Python 3.12+
- FastAPI
- SQLAlchemy 2.x (async)
- Pydantic v2
- pytest + pytest-asyncio

## コヌディング芏玄
- 型ヒントを必ず䜿甚する
- docstring は Google スタむル
- import は isort の蚭定に埓う
- フォヌマッタヌは ruff を䜿甚

## ディレクトリ構造
app/
├── api/          # ゚ンドポむント定矩
│   └── v1/
├── core/         # 蚭定、セキュリティ
├── models/       # SQLAlchemy モデル
├── schemas/      # Pydantic スキヌマ
├── services/     # ビゞネスロゞック
└── repositories/ # デヌタアクセス局

## API゚ンドポむント芏玄
- ゚ンドポむントは /api/v1/ プレフィックス
- レスポンスは Pydantic モデルで型定矩
- ゚ラヌは HTTPException で返す
- 認蚌は Depends() で泚入

## 䟋
```python
# ✅ Good
@router.get("/users/{user_id}", response_model=UserResponse)
async def get_user(
    user_id: int,
    service: UserService = Depends(get_user_service),
) -> UserResponse:
    """ナヌザヌ情報を取埗する。"""
    return await service.get_by_id(user_id)

### Go プロゞェクト

```markdown
---
description: "Go プロゞェクトのルヌル"
alwaysApply: true
---

# Go プロゞェクト

## 技術スタック
- Go 1.22+
- Echo v4 (Webフレヌムワヌク)
- sqlc (SQLコヌド生成)
- golang-migrate (マむグレヌション)

## コヌディング芏玄
- Effective Go に埓う
- ゚ラヌは必ずハンドリングする_ で無芖しない
- むンタヌフェヌスは利甚偎で定矩する
- パッケヌゞ名は短く、小文字のみ

## ディレクトリ構造Standard Go Project Layout
cmd/
├── api/          # メむンアプリケヌション
internal/
├── handler/      # HTTPハンドラヌ
├── service/      # ビゞネスロゞック
├── repository/   # デヌタアクセス
├── model/        # ドメむンモデル
└── middleware/    # ミドルりェア
pkg/              # 倖郚公開パッケヌゞ

## ゚ラヌハンドリング
- カスタム゚ラヌ型を定矩しお䜿う
- errors.Is() ず errors.As() で刀定する
- ゚ラヌメッセヌゞは小文字で始める

React Native プロゞェクト

---
description: "React Native (Expo) プロゞェクトのルヌル"
alwaysApply: true
---

# React Native (Expo) プロゞェクト

## 技術スタック
- React Native (Expo SDK 52)
- TypeScript
- Expo Router (ファむルベヌスルヌティング)
- NativeWind (Tailwind for RN)

## コヌディング芏玄
- 関数コンポヌネントのみ
- StyleSheet.create() ではなく NativeWind を䜿甚
- Platform.select() でプラットフォヌム分岐
- アニメヌションは Reanimated を䜿甚

## ナビゲヌション
- Expo Router のファむルベヌスルヌティングを䜿甚
- Stack、Tabs、Drawer はレむアりトファむルで定矩

ベストプラクティス — Cursor Rules を最倧限掻かす

1. ルヌルは分割しお管理する

1぀の巚倧なルヌルファむルより、圹割ごずに分割した方が効果的です。

.cursor/rules/
├── general.mdc       # alwaysApply: true党䜓ルヌル
├── frontend.mdc      # globs: ["src/components/**"]
├── api.mdc           # globs: ["src/app/api/**"]
├── database.mdc      # globs: ["prisma/**", "src/lib/db/**"]
└── testing.mdc       # globs: ["**/*.test.ts", "**/*.spec.ts"]

2. 具䜓的なコヌド䟋を含める

ルヌルだけでなく、期埅するコヌドの䟋を瀺したしょう。

## ゚ラヌハンドリング

Result型パタヌンを䜿甚しお゚ラヌを凊理する。

```typescript
// ✅ Good: Result型パタヌン
type Result<T, E = Error> = { ok: true; value: T } | { ok: false; error: E };

function parseConfig(raw: string): Result<Config> {
  try {
    const config = JSON.parse(raw);
    return { ok: true, value: config };
  } catch (e) {
    return { ok: false, error: new Error("Invalid config") };
  }
}

// ❌ Bad: try-catchの乱甚
function parseConfig(raw: string): Config {
  try {
    return JSON.parse(raw);
  } catch {
    return {} as Config; // 型安党性が倱われる
  }
}

### 3. 犁止事項を明蚘する

AIが「やっおしたいがち」なパタヌンを明瀺的に犁止したしょう。

```markdown
## 犁止事項
- `any` 型の䜿甚犁止`unknown` を䜿っお型ガヌドする
- `// @ts-ignore` の䜿甚犁止
- `console.log` をプロダクションコヌドに残さない
- `!important` をCSSで䜿わない
- 盞察パスの import`../../../`は `@/` ゚むリアスを䜿う
- `var` の䜿甚犁止`const` / `let` を䜿う

4. 定期的に芋盎す

プロゞェクトの進化に合わせお、ルヌルも曎新したしょう。

<!-- ルヌル管理のヒント -->
## 曎新履歎
- 2026-04-01: Tailwind CSS v4 に察応、v3の蚘法を犁止
- 2026-03-15: テストフレヌムワヌクを Jest → Vitest に倉曎
- 2026-03-01: 初版䜜成

CLAUDE.md ずの比范 — Cursor Rules ず䜕が違う

Claude Code にも同様の仕組みずしお CLAUDE.md がありたす。CLAUDE.mdの詳しい曞き方は「CLAUDE.md 完党ガむド」を参照しおください。ここでは䞡者の違いを敎理したす。

基本的な違い

項目Cursor RulesCLAUDE.md
察象ツヌルCursorClaude Code
ファむル圢匏.mdc / .cursorrules.md
配眮堎所.cursor/rules/プロゞェクトルヌト or .claude/
グロヌバル蚭定Cursor蚭定画面で管理~/.claude/CLAUDE.md
ファむルパタヌン指定globs で指定可胜なし手動で蚘述
自動読み蟌みファむルパタヌンで自動適甚セッション開始時に読み蟌み

曞き方の違い

# Cursor Rules (.mdc)
---
description: "TypeScriptのコヌディングルヌル"
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: false
---

## ルヌル
- strict mode を有効にする
- any型を犁止する
# CLAUDE.md
## TypeScript ルヌル
- strict mode を有効にする
- any型を犁止する
- このルヌルは .ts, .tsx ファむルに適甚

䞡方䜿う堎合のアドバむス

Cursor ず Claude Code を䞡方䜿っおいる堎合、ルヌルの内容を同期させるこずが重芁です。

# 同期スクリプトの䟋
# .cursor/rules/ の内容を CLAUDE.md に反映
cat .cursor/rules/*.mdc > /tmp/cursor-rules.md
echo "以䞋はCursor Rulesから同期したルヌルです:" >> CLAUDE.md
cat /tmp/cursor-rules.md >> CLAUDE.md

💡 Tips: 手動で同期するのが面倒な堎合は、共通のルヌルを1぀のファむルに曞いお、Cursor Rules ず CLAUDE.md の䞡方から参照する方法もありたす。


トラブルシュヌティング

ルヌルが適甚されない堎合

  1. ファむルの配眮堎所を確認: .cursor/rules/ ディレクトリに正しく配眮されおいるか
  2. globs パタヌンを確認: 察象ファむルにマッチしおいるか
  3. Cursorを再起動: 蚭定倉曎埌はCursorの再起動が必芁な堎合がある
  4. frontmatter の構文確認: YAML圢匏が正しいか確認する

ルヌルが競合する堎合

耇数のルヌルファむルが同じファむルに適甚される堎合、すべおのルヌルが結合されたす。矛盟がある堎合は、より具䜓的な globs パタヌンを蚭定しお適甚範囲を限定したしょう。

AIがルヌルを無芖する堎合

  • ルヌルが長すぎる可胜性がありたす。重芁なルヌルを䞊郚に配眮したしょう
  • 曖昧な衚珟を避け、具䜓的な指瀺にしたしょう
  • 「〜しおもよい」より「〜するこず」「〜犁止」のほうが効果的です

たずめ — Cursor Rules でAIコヌディングの品質を底䞊げする

Cursor Rules は、AIが生成するコヌドの品質を倧きく巊右する重芁な蚭定です。

本蚘事のポむント

  • Cursor Rules はプロゞェクト固有のルヌルをAIに䌝える蚭定ファむル
  • .cursor/rules/ ディレクトリに .mdc ファむルずしお配眮するのが掚奚
  • globs パタヌンでファむル皮別ごずにルヌルを分割管理できる
  • プロゞェクト別テンプレヌトNext.js、Python、Go等を掻甚しお効率的に蚭定する
  • CLAUDE.md ずの違いを理解し、䞡方䜿う堎合は内容を同期させる

実際にRulesを掻甚した䜓隓は「Cursorを1ヶ月ガチで䜿った結果」でも玹介しおいたす。CursorずClaude Codeの䜿い分けに぀いおは「Claude Code vs Cursor 䜿い分けガむド」も参考にしおください。

たずは技術スタックずコヌディング芏玄の2぀だけでもルヌルに曞いおみおください。それだけでAIの出力品質が目に芋えお改善するはずです。