4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の拡張性設計 — CLAUDE.md / Skills / Hooks / MCP の役割分担をフローチャートで判断する

4
Posted at

はじめに

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 の拡張がスケールします。


関連: 教材で手を動かして学ぶ

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?