はじめに
Claude Code を実務で運用していて最近痛感するのは、「何を CLAUDE.md に書き、何を Skills にし、何を Hooks にし、何を MCP に外出しするか」の判断が雑だと、運用が破綻するということです。
似た情報が複数箇所に散らばると、
- ルール変更時にどこを直すか分からなくなる
- 競合した時の優先順位が読めない
- セッションを跨いだ時の挙動が予測できない
になります。
この記事では、Claude Code の4つの拡張ポイントを「誰が・いつ・どんな粒度で変えるか」で整理し、判断フローを示します。
4つの拡張ポイントの基本性質
| ポイント | 適用タイミング | 粒度 | 変更頻度 |
|---|---|---|---|
CLAUDE.md |
常時(全タスク) | プロジェクト全体の方針 | 月次 |
| Skills | 明示トリガー or 関連時 | 単一の手順・手続き | 週次 |
| Hooks | イベント発火時 | 強制的なガード | 設定済みなら不変 |
| MCP | ツール呼び出し時 | 外部システム連携 | 機能追加時 |
頭の中では「常時/トリガー/イベント/外部」と思っておくと整理しやすいです。
役割分担の判断フロー
具体例で見る判断
ケース1: 「コミット時はテストを必ず通したい」
- 常時? → Yes
- イベント発火? → Yes(コミット時)
- → Hooks (PreToolUse) が正解
これを CLAUDE.md に「コミット前にテスト通してください」と書いても、Claude が忘れる可能性がある。Hooks ならスクリプトで強制できる。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash.*git commit",
"hooks": [{"type": "command", "command": ".claude/hooks/run-tests.sh"}]
}
]
}
}
ケース2: 「Slack に投稿する」
- 外部システム連携 → Yes
- → MCP が正解
CLAUDE.md に「Slack API は curl で叩いて...」と書くと、毎回コンテキスト消費する。MCP なら関数呼び出し1個で完結。
ケース3: 「コード書く時は日本語コメント禁止」
- 常時適用 → Yes
- プロジェクト固有 → Yes
- → CLAUDE.md が正解
これは「方針」なので、毎セッション最初から効いて欲しい。
ケース4: 「PRレビューのワークフロー」
- 常時 → No(PR レビュー時だけ)
- 明示トリガー → Yes(「PRレビューして」と呼ばれる)
- → Skills が正解
.claude/skills/pr-review/skill.md に手順を書いておけば、必要な時だけロードされる。
「CLAUDE.md か Skills か」の判断ライン
特に迷いやすいのがこのライン。判断ポイントは2つです。
1. 常時必要 vs 特定トリガー時
- 常時: 「コード規約・命名規則」「禁止事項」→ CLAUDE.md
- 特定時: 「リリース手順」「障害対応フロー」→ Skills
2. 読みやすさ vs トークン消費
CLAUDE.md は 毎セッション最初から読み込まれる。Skills は トリガー時にのみ読み込まれる。
サイズが大きい手順書(200行超)を CLAUDE.md に書くと、関係ないタスクでもトークン消費する。Skills に外出ししたほうがよい。
逆に、3行程度の方針は Skills にすると「呼び出されない可能性」が出るので CLAUDE.md に置く。
アンチパターン
NG1: CLAUDE.md に手順書を全部書く
# CLAUDE.md
## デプロイ手順
1. main にマージ
2. ステージング確認
3. ...(200行)
→ Skills に分離する。CLAUDE.md は「方針・原則」だけにする。
NG2: Skills を「常時必要」なルールに使う
# .claude/skills/coding-rules/skill.md
コードは TypeScript で書く
→ これは CLAUDE.md に書くべき。Skills は明示呼び出しがないと効かない。
NG3: Hooks で柔軟な判断をさせる
Hooks はスクリプトなので、「状況によって変える」は苦手。固定的なガードに使う。
まとめ: 「誰が何を変えるか」で配置を決める
タイトルにもした通り、私の中での結論はこれです:
- CLAUDE.md: 全員(人もAIも)が常に意識すべき方針 → 月次でメンテ
- Skills: 特定の手順・ワークフロー → 担当者がトリガーで呼び出す
- Hooks: 強制したいガードレール → 設定したら基本不変
- MCP: 外部システム連携の窓口 → 機能追加時に追加
「変更頻度」と「変更責任者」が違うものは、配置先も分ける。これだけ意識すれば、Claude Code の拡張がスケールします。
関連: 教材で手を動かして学ぶ
- まず無料で試したい方: 教材の体験版を GitHub で配布中(
git cloneしてすぐ動かせます) → https://github.com/ayies128/next-ai-camp-trial - 全20セッション完全版+メンタリング → https://menta.work/plan/20251
- YouTubeチャンネル → https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/