Claude Codeの拡張機能は、すべて同じ種類のプロンプトではない。Rulesは継続的に適用する指針、Skillsは繰り返し再利用する作業手順、Agentsは別のコンテキストで働く役割別の実行者である。3つの機能を正確に区別すれば、プロンプトの繰り返しを減らしながら、メインの会話コンテキストを効率的に管理できる。
この文書では、プロジェクト単位の設定を基準に説明する。Claude Codeのバージョンによって、サポートされるメタデータや画面が異なる場合があるため、動作しないフィールドについては、インストールされているバージョンの公式ドキュメントで改めて確認する必要がある。
ステップ1:.claudeディレクトリと設定範囲を決める
プロジェクトで共有するRules、Skills、Agentsは、一般的にリポジトリルートの.claude配下に置く。
my-project/
├── .claude/
│ ├── rules/
│ │ ├── code-style.md
│ │ └── api.md
│ ├── skills/
│ │ └── fix-issue/
│ │ └── SKILL.md
│ └── agents/
│ ├── code-reviewer.md
│ └── test-runner.md
├── src/
└── package.json
ディレクトリは次のように作成できる。
mkdir -p .claude/rules
mkdir -p .claude/skills/fix-issue
mkdir -p .claude/agents
.claudeに関する2つの誤解
-
.claudeがClaude Codeのすべての指示に必須というわけではない。プロジェクトの指示は、ルートのCLAUDE.mdまたは.claude/CLAUDE.mdでも管理でき、ユーザー個人の設定はホームディレクトリの~/.claude配下に置くことができる。 - ファイル名は、オペレーティングシステムによって大文字と小文字が区別される。Skillのエントリーファイルは、公式形式に合わせて大文字の
SKILL.mdで作成するのが安全である。skill.mdとして保存すると認識されない場合がある。
プロジェクト設定と個人設定の選択基準
| 範囲 | 適した内容 | 例 |
|---|---|---|
| プロジェクト共有 | すべてのコントリビューターが同じように従うべきルールと自動化 | テストコマンド、ディレクトリ構造、API規約 |
| ユーザー個人 | 個人の好みやリポジトリで公開すべきでない設定 | 個人の作業方法、ローカルツールの選択 |
| ローカル専用 | 特定のコンピューターでのみ有効なパスや実験的設定 | ローカルデータのパス、一時的なデバッグ手順 |
チームで共用するファイルだけをGitにコミットする。秘密鍵、トークン、内部サーバーのパスワードは、RulesやSkillsに記録しない。
ステップ2:Rulesで継続的な指示を作成する
Rulesは、Claudeが作業するときに参照すべきプロジェクトの指示を、複数のMarkdownファイルに分けて管理する機能である。.claude/rules配下にあるルールのうち、paths条件がないファイルはプロジェクトの指示として読み込まれ、パス条件を指定したファイルは関連ファイルを扱うときに適用される。
基本的なRuleの例
.claude/rules/code-style.mdは次のように作成できる。
# コード作成の原則
- 新しいアプリケーションコードはTypeScriptで作成する。
- 公開関数では、入力値、戻り値、失敗条件を説明する。
- 既存のテストを削除して失敗を隠さない。
- 変更後に関連するテストと型チェックを実行する。
- 説明は韓国語で作成するが、コードの識別子は既存の命名規則に従う。
良いRuleは検証できる。「コードを格好よく作成する」よりも、「変更後にnpm testとnpm run typecheckを実行する」のほうが明確である。
特定のパスにのみ適用するRule
フロントエンドとバックエンドのルールが異なる場合は、YAML front matterのpathsで範囲を絞り込める。
---
paths:
- "src/api/**/*.ts"
- "tests/api/**/*.ts"
---
# APIルール
- すべてのAPI入力をスキーマで検証する。
- 認証失敗と権限不足を異なるエラーとして処理する。
- エンドポイントを変更した場合は、対応するAPIテストも更新する。
パス別のルールは、不要な指示がすべての作業のコンテキストを占有する問題を軽減する。
Rulesに入れるべきでない内容
- 一度だけ実行するマイグレーション手順
- 特定のイシューにのみ必要な詳細要件
- 互いに矛盾する絶対的な指示
- すでにコードやリンター設定で強制されている内容を長々と繰り返す文章
- パスワード、APIキー、顧客情報などの機密データ
Rulesは「必ず従わせる魔法の保証装置」ではない。曖昧または矛盾する指示があると結果が変わる可能性があるため、テスト、リンター、権限制御など、決定的な検証手段を併用する必要がある。
ステップ3:Skillsで反復手順を自動化する
Skillは、説明、作業手順、必要なツール、補助資料を、1つの再利用可能な単位にまとめる。プロジェクトSkillの基本構造は.claude/skills/<skill-name>/SKILL.mdであり、必要に応じて同じディレクトリにテンプレートやスクリプトを追加できる。
Rulesとは異なり、Skillは特定の作業で必要なときに使用される。ClaudeがSkillの説明を見て自動的に選択することも、ユーザーが/<skill-name>形式で明示的に呼び出すこともできる。必ず手動でのみ動作するわけではない。
イシュー修正Skillの例
.claude/skills/fix-issue/SKILL.mdの例は次のとおりである。
---
name: fix-issue
description: バグを再現して原因を絞り込んだ後、最小限の修正と回帰テストを実施する。
disable-model-invocation: true
allowed-tools: Read, Grep, Glob, Edit, Bash(npm test:*)
---
# イシュー修正手順
対象イシュー:$ARGUMENTS
1. 関連するコードと既存のテストを調査する。
2. 修正前に再現方法と期待される動作を整理する。
3. 根本原因を1つの段落で説明する。
4. 影響範囲が最も小さい修正を適用する。
5. 回帰テストを追加するか、既存のテストが問題を検証しているか確認する。
6. 許可されたテストを実行し、結果を要約する。
7. 変更ファイル、残存リスク、手動確認項目を報告する。
このSkillは次のように呼び出せる。
/fix-issue ログイン後にプロフィール写真が更新されない問題
disable-model-invocation: trueは、Claudeが任意にこのSkillを実行せず、ユーザーが直接呼び出すよう制限するときに役立つ。サポートされるfront matterのフィールドは、Claude Codeのバージョンによって異なる場合がある。
設計優先Skillの例
すぐにコーディングするのではなく、先に設計文書を作成させる場合は、次の流れをSkillに入れられる。
- 要件と曖昧な部分を分ける。
- 既存の構造と再利用可能なモジュールを調査する。
- データフロー、インターフェース、失敗条件を設計する。
-
docs/design/配下に設計文書を作成する。 - ユーザーの承認または明示された承認条件を確認してから実装する。
- テストとロールバック方法を提示する。
良いSkillの条件
- 入力と最終成果物が明確である。
- 手順の順序と中断条件が明示されている。
- 必要なツールのみを許可する。
- 長い参考資料は別ファイルに分ける。
- 失敗したときに任意で続行せず、報告するようにする。
- 1つのSkillに過度に多くの目的を持たせない。
コミット作成、コードレビュー、リリース確認、API設計のように、繰り返し行われ、開始と終了が明確な作業がSkillに適している。