ルール優先順位システム
プロジェクト別AIガイドラインを効率的に管理してください。Caretのルール優先順位システムは複数のルールファイルの重複を自動的にブロックしてトークン使用量を節約し、明確な優先順位で設定競合を防止します。
ルールシステムとは?
プロジェクトルートにルールファイルを置くと、AIが自動的に読んで従います:
my-project/
├── .caretrules # Caret専用ルール (優先順位 1)
├── .clinerules # Cline互換ルール (優先順位 2)
├── .cursorrules # Cursor互換ルール (優先順位 3)
└── src/
効果: AIがプロジェクトのコーディングスタイル、命名規則、アーキテクチャパターンを自動的に従います。
Caret vs Cline vs Cursor
| 項目 | Cline | Cursor | Caret |
|---|---|---|---|
.clinerules | ✅ サポート | ❌ 非サポート | ✅ サポート |
.cursorrules | ❌ 非サポート | ✅ サポート | ✅ サポート |
.caretrules | ❌ 非サポート | ❌ 非サポート | ✅ サポート |
| 優先順位システム | ❌ なし | ❌ なし | ✅ あり |
| 多重ファイルマージ | ❌ なし | ❌ なし | ✅ サポート |
サポートファイル形式
.caretrules (推奨)
Caret専用ルールファイルで最も高い優先順位:
# プロジェクトルール
## コーディングスタイル
- TypeScript strictモード使用
- 関数コンポーネントのみ
- Tailwind CSS使用
## 命名
- コンポーネント: PascalCase
- 関数: camelCase
- 定数: UPPER_SNAKE_CASE
## 禁止事項
- classコンポーネント使用禁止
- any型使用禁止
- console.logコミット禁止
.clinerules
Clineからのマイグレーション時に互換:
Use TypeScript for all files
Follow React Hooks best practices
.cursorrules
Cursorからのマイグレーション時に互換:
Always use arrow functions
Prefer const over let
優先順位システムの核心: トークン節約
Caretのルール優先順位システムが他のAIコーディングアシスタントと異なる最も重要な点は重複防止です。
問題: 他のツールの重複ローディング
ClineやCursorのようなツールは.clinerules、.cursorrules、.windsurfrulesをすべて同時にロードします。これは次のような問題を引き起こします:
トークン浪費: 3つのファイルに似た内容があってもすべてAIに送信され、毎リクエストごとに数千の不要なトークンを消費します。
設定競合: ファイルごとに異なるルールがある時、どれが優先かが不明確で、AIが混乱します。
プロンプト肥大化: 複数のルールファイルが積み重なるとプロンプトが過度に長くなり、重要なコードコンテキストを含むスペースが減少します。
解決: Caretの単一選択方式
Caretは複数のルールファイルがあっても1つだけを選択してロードします。これは次のような明確な優先順位に従います:
1位: .caretrules
2位: .clinerules
3位: .cursorrules
4位: .windsurfrules
自動動作: .caretrulesファイルがあれば、他のすべてのルールファイルは自動的に無効化されます。.caretrulesがなければ.clinerulesを探し、それもなければ.cursorrulesを探す方式です。
実際の動作例:
プロジェクトフォルダ:
├── .caretrules ← これだけ読む
├── .clinerules ← 自動無効化
└── .cursorrules ← 自動無効化
.caretrules 削除後:
├── .clinerules ← 今度はこれを読む
└── .cursorrules ← 自動無効化
この方式でトークン使用量を最大70%削減でき、設定競合も根本的に防止します。
実践活用例
例1: Reactプロジェクト
# .caretrules
## 技術スタック
- React 18 + TypeScript
- Viteビルド
- Tailwind CSS + shadcn/ui
## コンポーネント作成ルール
- すべてのコンポーネントは関数型で作成
- Props型はinterfaceで定義
- ファイル名はコンポーネント名と同じ (PascalCase.tsx)
## スタイルルール
- Tailwindユーティリティ優先
- カスタムCSSは最小化
- ダークモード対応必須
## 状態管理
- ローカル状態: useState
- グローバル状態: Zustand
- サーバー状態: TanStack Query
## 禁止事項
- styled-components使用禁止
- Redux使用禁止
- classコンポーネント禁止
例2: NestJSバックエンド
# .caretrules
## アーキテクチャ
- Controller → Service → Repositoryパターン
- DTO必須使用
- すべてのエンドポイントにSwagger文書化
## 命名
- Controller: `*.controller.ts`
- Service: `*.service.ts`
- DTO: `*.dto.ts`
- Entity: `*.entity.ts`
## エラー処理
- HttpException使用
- カスタムエラークラス定義
- すべてのエラーをログ記録
## セキュリティ
- JWT認証必須
- Rate limiting適用
- 入力validation必須
例3: 多言語プロジェクト
# .caretrules
## 言語ルール
- コード: 英語
- コメント: 日本語
- コミットメッセージ: 日本語
- 文書: 日本語
## コード例
```typescript
// ✅ 正しい例
function calculateTotal(items: Item[]): number {
// 合計金額を計算
return items.reduce((sum, item) => sum + item.price, 0)
}
// ❌ 間違った例
function 合計計算(items: Item[]): number {
// Calculate total
return items.reduce((sum, item) => sum + item.price, 0)
}
## ルール有効化確認
### 設定で確認
1. 設定を開く (⚙️)
2. **一般** タブ → **ルール** セクション
3. "プロジェクトルール有効化" を確認
### ステータス表示
チャットヘッダーにルール有効化表示:
🎯 Caret | Agentモード | 📋 ルール有効化
### 手動無効化
特定の作業のみルールを無視:
プロンプトで明示: "ルールを無視して素早くプロトタイプを作成して"
## 高度な機能
### 条件付きルール
ディレクトリ別に異なるルールを適用:
```markdown
# .caretrules
## 基本ルール
- TypeScript strict
## /admin ディレクトリ
- 追加セキュリティ検証必須
- 管理者権限確認
## /public ディレクトリ
- 簡素化されたコード
- 高速ローディング優先
チーム別ルール
.caretrules/ ディレクトリで細分化:
.caretrules/
├── frontend.md # フロントエンドチームルール
├── backend.md # バックエンドチームルール
└── common.md # 共通ルール
外部ルール参照
# .caretrules
## スタイルガイド
- Airbnb JavaScript Style Guide準拠
- Google TypeScript Style Guide参考
## 参考文書
- https://github.com/airbnb/javascript
- https://google.github.io/styleguide/tsguide.html
ルールデバッグ
AIがルールに従わない場合
確認事項:
- ファイル名は正確か? (
.caretrulesnotcaretrules) - プロジェクトルートに配置されているか?
- ルールが曖昧ではないか?
- 優先順位がより高い他のルールファイルはないか?
解決方法:
"プロジェクトルールを再読み込みして適用してください"
ルール優先順位確認
"現在適用中のルールを表示してください"
→ AIが読んだルールファイルと優先順位を表示
ルールテンプレート
React + TypeScript
# プロジェクトルール
- TypeScript strictモード
- 関数コンポーネントのみ
- Props interface必須
- Tailwind CSS使用
- テストカバレッジ80%以上
Node.js API
# プロジェクトルール
- Express + TypeScript
- RESTful API設計
- Joi validation
- Winstonログ記録
- Jest単体テスト
フルスタックモノレポ
# プロジェクトルール
## 共通
- TypeScript
- ESLint + Prettier
- Conventional Commits
## /apps/web
- Next.js 14
- App Router
- Tailwind CSS
## /apps/api
- NestJS
- Prisma ORM
- PostgreSQL
マイグレーションガイド
Cline → Caret
既存の.clinerulesを維持して.caretrulesを追加:
# 既存ルールをコピー
cp .clinerules .caretrules
# .caretrulesを編集してCaret機能を追加
Cursor → Caret
.cursorrulesを.caretrulesに変換:
mv .cursorrules .caretrules
# 必要に応じて形式を調整
よくある質問
Q: ルールファイルのサイズ制限は? A: 推奨10KB以下。長すぎるとAIがすべての内容を記憶できない可能性があります。
Q: ルールを修正すると即座に反映されますか? A: はい、次のメッセージからすぐに適用されます。
Q: 複数のルールファイルの内容が競合したら?
A: .caretrules → .clinerules → .cursorrules の順序で優先順位が適用されます。
Q: ルールに機密情報を含めても良いですか? A: いいえ。ルールファイルはAIに送信されるため、APIキーなどを含めないでください。
次のステップ
統合ルールシステムはCaretの独占機能です。 Clineは.clinerulesのみをサポートし、Cursorは.cursorrulesのみをサポートします。