Skip to main content

ルール優先順位システム

プロジェクト別AIガイドラインを効率的に管理してください。Caretのルール優先順位システムは複数のルールファイルの重複を自動的にブロックしてトークン使用量を節約し、明確な優先順位で設定競合を防止します。

ルールシステムとは?

プロジェクトルートにルールファイルを置くと、AIが自動的に読んで従います:

my-project/
├── .caretrules # Caret専用ルール (優先順位 1)
├── .clinerules # Cline互換ルール (優先順位 2)
├── .cursorrules # Cursor互換ルール (優先順位 3)
└── src/

効果: AIがプロジェクトのコーディングスタイル、命名規則、アーキテクチャパターンを自動的に従います。

Caret vs Cline vs Cursor

項目ClineCursorCaret
.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がルールに従わない場合

確認事項:

  1. ファイル名は正確か? (.caretrules not caretrules)
  2. プロジェクトルートに配置されているか?
  3. ルールが曖昧ではないか?
  4. 優先順位がより高い他のルールファイルはないか?

解決方法:

"プロジェクトルールを再読み込みして適用してください"

ルール優先順位確認

"現在適用中のルールを表示してください"
→ 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のみをサポートします。