Creating Rules
.claude/rules/ディレクトリにベストプラクティスに沿ったルールファイルを作成する。
ワークフロー
1. 要件の確認
ユーザーに以下を確認:
- •ルールのトピック(例:コードスタイル、テスト、セキュリティ)
- •対象ファイル(特定のパスに限定するか)
- •サブディレクトリに配置するか
2. ルールファイルの作成
ディレクトリ構造
code
.claude/rules/
├── code-style.md # 全体に適用
├── testing.md # 全体に適用
├── frontend/ # サブディレクトリで整理
│ ├── react.md
│ └── styles.md
└── backend/
├── api.md
└── database.md
ファイル形式
条件なしルール(全ファイルに適用):
markdown
# [トピック名] - ルール1 - ルール2
条件付きルール(特定ファイルのみ適用):
markdown
--- paths: src/**/*.ts --- # [トピック名] - ルール1 - ルール2
paths globパターン
| パターン | マッチ対象 |
|---|---|
**/*.ts | 全ディレクトリのTypeScriptファイル |
src/**/* | src/以下の全ファイル |
*.md | ルートのMarkdownファイル |
src/**/*.{ts,tsx} | src/以下のTS/TSXファイル |
{src,lib}/**/*.ts, tests/**/*.test.ts | 複数パターンの組み合わせ |
3. ベストプラクティス
詳細は references/best-practices.md を参照。
要点:
- •焦点を絞る: 1ファイル1トピック
- •説明的なファイル名: 内容が分かる名前
- •条件付きルールは控えめに: 本当に必要な場合のみ
pathsを使用 - •サブディレクトリで整理: 関連ルールをグループ化
- •具体的に記述: 「コードを適切にフォーマット」より「2スペースインデントを使用」
4. 作成後の検証
作成したルールファイルを検証:
- •配置確認:
.claude/rules/に正しく配置されているか - •構文確認: frontmatterのYAML構文が正しいか
- •パターン確認:
pathsのglobパターンが意図通りか - •内容確認: ルールが具体的で実行可能か
検証コマンド例:
bash
# ファイル一覧を確認 ls -la .claude/rules/ # frontmatterの構文確認(pathsが正しいか) head -10 .claude/rules/[ファイル名].md
問題があれば修正し、再度検証する。
5. 完了確認
- •ルールが正しく読み込まれることを確認
- •
/memoryコマンドで読み込み状況を確認可能
重要な注意事項
ファイル配置の原則
- •すべてのルールファイルは
.claude/rules/配下に配置 - •サブディレクトリを使って論理的にグループ化
- •ファイル名は内容を明確に表現する
paths frontmatterの使用
- •本当に必要な場合のみ使用(大半のルールは全ファイルに適用で十分)
- •globパターンは正確に記述
- •複数パターンはカンマ区切りで記述可能
ルール記述の品質
- •具体的で実行可能なルールを記述
- •抽象的な表現を避ける
- •例を含めることで理解を促進
実行例
例1: TypeScript用のコーディングルール作成
ユーザー: 「TypeScriptのコーディングルールを作成して」
実行内容:
- •トピック確認: コードスタイル(TypeScript)
- •対象ファイル確認:
**/*.ts,**/*.tsx - •ファイル作成:
.claude/rules/frontend/typescript.md
markdown
---
paths: **/*.{ts,tsx}
---
# TypeScript コーディングルール
- `any` 型の使用を禁止
- すべての関数に戻り値の型を明示
- オプショナルチェイニング (`?.`) を積極的に使用
例2: テストファイル用のルール作成
ユーザー: 「テストファイルの命名規則を追加して」
実行内容:
- •トピック確認: テスト規約
- •対象ファイル確認: テストファイルのみ(
**/*.test.*,**/*.spec.*) - •ファイル作成:
.claude/rules/testing.md
markdown
---
paths: **/*.{test,spec}.{ts,tsx,js,jsx}
---
# テスト命名規則
- テストファイル名は `[対象ファイル名].test.[拡張子]` 形式
- describe ブロックはコンポーネント/関数名と一致
- it ブロックは「should + 動詞」で開始