拡張する(スキル・Hooks・MCP) — Claude Code 活用ガイド

1基本に慣れたら“自分仕様”に!拡張の4つの柱

基本操作にだいぶ慣れてきましたか?それなら次は、Claude Code をあなた専用の道具に育てていく番です。実は Claude Code は、後から機能を「足し算」できる仕組みをたくさん持っています。中級

🧩
たとえるなら、Claude Code は素のスマートフォン。最初から電話やカメラは使えますが、アプリ(=追加機能)を入れると一気に便利になりますよね。拡張は、その「アプリを入れる」作業にそっくりです。

拡張の方法は大きく分けて4つ。それぞれ「いつ使うと便利か」が違います。まずはざっくり全体像をつかみましょう。細かい使い方はこの後のセクションでひとつずつ解説します。

📘

スキル(SKILL.md)

よく繰り返す作業を「手順書」としてフォルダに保存。関連する場面で Claude が自動で読み込んだり、/名前で呼び出したりできます。

⚡

カスタム・スラッシュコマンド

自分だけの/コマンドを作る仕組み。今はスキルに統合されていて、ファイルを置くだけで使えます。

🪝

Hooks(フック)

「保存したら自動で整形」「危ないコマンドはブロック」など、決まったタイミングで自動実行するガードレール(=安全柵)。

🔌

MCP

GitHub・ブラウザ・データベースなど、外部のツールと Claude をつなぐ規格。Claude に「追加の道具」を持たせます。

💡
全部を一度に覚える必要はありません!「これ毎回手作業でめんどうだな」と感じたものから、ひとつずつ試すのがコツです。

2スキル(SKILL.md)を作る

スキルは、Claude にできることを増やす一番の基本です。SKILL.md というファイルに「手順」を書いておくと、Claude がそれを道具箱に追加してくれます。

🧩
同じ説明文を毎回チャットに貼り付けていませんか?それは、料理のたびにレシピを口頭で説明し直すようなもの。スキルは、そのレシピをカードにして道具箱にしまっておくイメージです。必要なときだけ取り出すので、ふだんは場所を取りません。

📁スキルはフォルダに置く

スキルは「フォルダ+その中の SKILL.md」という形です。置く場所で「誰が使えるか」が変わります。公式ドキュメントの内容をまとめると、こうなっています。

種類置き場所(パス)適用される範囲
個人用(Personal)~/.claude/skills/名前/SKILL.mdすべてのプロジェクト
プロジェクト用.claude/skills/名前/SKILL.mdそのプロジェクトだけ

📝いちばん小さい SKILL.md

SKILL.md は2つの部分でできています。上の --- で囲まれた frontmatter(=先頭の設定欄)と、その下の本文(指示)です。公式の例をもとにした、最小のスキルがこちらです。

~/.claude/skills/summarize-changes/SKILL.md
# --- ここから frontmatter(設定欄)---
---
description: コミット前の変更点を要約し、危なそうな所を指摘する。「何を変えた?」と聞かれたときに使う。
---

# --- ここから本文(Claudeへの指示)---
## 現在の変更
!`git diff HEAD`

## 指示
上の変更を2〜3個の箇条書きで要約し、
気づいたリスク(抜けたエラー処理・直書きの値など)を一覧にしてください。
📌
description はとても大事!Claude はこの説明文を読んで「このスキルを使うべきか」を判断します。だから「ユーザーが自然に言いそうな言葉」を入れておくのがコツです。
※必須なのは description だけ。他の項目は全部おまけ(任意)です。
✅
本文の先頭にある !`git diff HEAD` は動的コンテキスト注入(=その場でコマンドを実行して結果を埋め込む機能)。Claude が読む前に実行され、結果に置き換わります。だから「いまの本物の変更」をもとに答えてくれます。

🚀作って呼び出す3ステップ

  1. フォルダを作るmkdir -p ~/.claude/skills/summarize-changes でスキル用のフォルダを用意します。
  2. SKILL.md を書くそのフォルダの中に SKILL.md を作り、上の内容を保存します。フォルダ名がそのままコマンド名になります。
  3. 呼び出す「何を変えた?」と聞けば Claude が自動で発動。または /summarize-changes と打って直接呼び出しもできます。
🔄 スキルが呼び出される流れ
sequenceDiagram
    participant U as あなた
    participant C as Claude Code
    participant S as スキル(SKILL.md)
    U->>C: 「何を変えた?」と質問
    C->>C: descriptionを見て該当スキルを判断
    C->>S: SKILL.md を読み込む
    S-->>C: 手順と現在のdiffを渡す
    C->>U: 要約とリスク一覧を回答
    
質問 → 説明文で判断 → スキル読込 → 実行、という流れで動きます
💡
うまく発動しないときは、description をもっと具体的に。逆に発動しすぎるときは disable-model-invocation: true を足すと「/名前で呼んだときだけ」動くようになります。

もっと詳しく学びたい人は公式へ。フォルダ構成や応用パターンが満載です。
👉 公式ドキュメント:スキルで Claude を拡張する


3カスタム・スラッシュコマンド

「自分専用の /コマンド を作りたい!」——その願いは、ファイルを1つ置くだけでかないます。

📌
カスタムコマンドはスキルに統合されました。公式によると、.claude/commands/deploy.md というファイルでも .claude/skills/deploy/SKILL.md というスキルでも、どちらも /deploy という同じコマンドになります。昔ながらの .claude/commands/ も今まで通り使えます。

🗂️ファイル名がコマンド名になる

仕組みはとてもシンプル。.claude/commands/ の中に「コマンド名.md」を置くだけ。拡張子 .md を除いたファイル名が、そのまま /名前 になります。

置いたファイル使えるコマンド
.claude/commands/deploy.md/deploy
.claude/skills/deploy-staging/SKILL.md/deploy-staging

🎯引数を受け取る($ARGUMENTS)

コマンドに「材料」を渡したいときは $ARGUMENTS を使います。これは、コマンド名の後ろに打った言葉に置き換わる差し込み欄です。公式の例で見てみましょう。

.claude/skills/fix-issue/SKILL.md
---
name: fix-issue
description: GitHubの課題を番号を指定して修正する
disable-model-invocation: true
---

GitHubの課題 $ARGUMENTS を、私たちのコーディング規約に従って修正してください。
1. 課題の説明を読む
2. 要件を理解する
3. 修正を実装する
4. テストを書く
5. コミットを作る
terminal
# 「123」が $ARGUMENTS に差し込まれる
/fix-issue 123
✅
/fix-issue 123 と打つと、Claude は「GitHubの課題 123 を…修正してください」という文を受け取ります。順番ごとに分けて使いたいときは $ARGUMENTS[0](=1つ目)や短縮形の $0 も使えます。
🧩
$ARGUMENTS は、手紙の「○○様」の○○の部分。テンプレ(型)を1回作っておけば、宛名だけ変えて何度でも使い回せる——そんな便利さです。

4Hooks(フック)でガードレールを作る

Hooks は、決まったタイミングで自動的にコマンドを実行する仕組みです。「ファイルを編集したら自動で整形」「危ないコマンドはブロック」など、Claude の動きに確実なルールを作れます。

🧩
Hooks はボウリングのガードレール(=両脇の柵)。ボールがガターに落ちそうになると、柵が止めてくれますよね。Claude が「うっかり」危ないことをしそうなとき、ルールで確実に止める・整える——それが Hooks の役目です。「AI の気分まかせ」ではなく「必ず実行される」のがポイント。

⚙️どこに書く?どう見る?

Hooks は settings.json という設定ファイルの hooks ブロックに書きます。今どんな Hooks が設定されているかは、Claude Code の中で /hooks と打つと一覧で確認できます(このメニューは見るだけ=読み取り専用です)。

🛡️例:危ないコマンドをブロック

公式の例をもとにした「drop table を含むコマンドを止める」フックです。イベントが発火 → フックが判定 → ブロック、という流れになります。

フックが呼ぶスクリプトの中身
#!/bin/bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

# 「drop table」が含まれていたら止める
if echo "$COMMAND" | grep -q "drop table"; then
  echo "ブロック: テーブル削除は禁止です" >&2
  exit 2   # exit 2 = アクションをブロック
fi
exit 0     # exit 0 = 異議なし。通常通り進む
📌
仕組みのキモは終了コード。exit 0 なら「異議なし=そのまま進む」、exit 2 なら「ブロック=止める」。exit 2 のとき、stderr(=エラー出力)に書いた理由が Claude に伝わるので、Claude は別の方法に切り替えられます。

📅主なイベント(発火するタイミング)

Hooks は「いつ動くか」をイベントで選びます。公式から代表的なものを抜き出しました。

イベント名発火するタイミング使い道の例
PreToolUseツールを使う前(ブロック可能)危険なコマンドを止める
PostToolUseツールが成功した後編集後に自動で整形する
Notification入力や許可を待っているときデスクトップ通知を出す
SessionStartセッション開始・再開時圧縮後にメモを再注入
✅
公式の定番が「編集後に自動フォーマット」。PostToolUse に Edit|Write というマッチャー(=絞り込み条件)を付けて、ファイルを編集したときだけ Prettier(整形ツール)を走らせます。手作業ゼロでコードがきれいに整います。
🪝 Hooks が働く流れ
flowchart TD
    A["Claudeがツールを使おうとする"] --> B["対応するイベントが発火"]
    B --> C{"マッチャーに一致?"}
    C -->|"いいえ"| D["何もせず通常通り進む"]
    C -->|"はい"| E["フック(スクリプト)が実行"]
    E --> F{"終了コードは?"}
    F -->|"exit 0"| G["そのまま進む"]
    F -->|"exit 2"| H["ブロックして理由を伝える"]
    
イベント発火 → 条件チェック → フック実行 → 終了コードで結果が決まる
💡
フックは自分で書かなくても大丈夫。「ファイル保存時に prettier を走らせるフックを作って」と Claude にお願いすれば、設定 JSON を書いてくれます。

イベントの全種類や JSON の書き方は公式が詳しいです。
👉 公式ドキュメント:hooks でアクションを自動化する


5MCP:外部ツールとつなぐ

MCP(=Model Context Protocol)は、Claude Code を外部のツールやデータにつなぐためのオープンな規格です。ひとことで言えば、Claude に「追加の道具」を持たせる仕組み。

🧩
いつも別のツール(課題管理・データベースなど)から、結果をコピペして Claude に貼っていませんか?MCP はそのコピペをなくす配管工事。つなぐと Claude が、貼り付けを待たずにそのシステムを直接読んで・操作できるようになります。電源タップに道具を1つずつ挿していくイメージです。

🔧MCP でできること

🐙

GitHub と連携

「PR #456 をレビューして改善案を出して」など、コードレビューを直接お願いできます。

🗄️

データベースを照会

「今月の総収益は?」と自然な言葉で聞くだけ。Claude が代わりに調べます。

🌐

ブラウザ・外部API

監視ツール・デザインツールなど、数百のサービスとつながります。

➕サーバーを追加する

MCP の「道具」はサーバーという形で追加します。公式の GitHub 連携の例を見てみましょう。

terminal
# GitHub のリモートMCPサーバーを追加する例
$ claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer あなたのGitHubトークン"

# 追加できたか確認
$ claude mcp list
📌
Claude Code の中では /mcp でサーバーの状態を確認・認証できます。ファイルから設定を読み込ませたいときは --mcp-config フラグも使えます。接続範囲(スコープ)は3種類。local(このプロジェクトだけ・自分用)/project(チーム共有)/user(全プロジェクトで使える)です。
🔌 MCP のしくみ
flowchart LR
    U["あなたの指示"] --> C["Claude Code"]
    C --> M["MCPサーバー(=追加の道具)"]
    M --> G["GitHub"]
    M --> D["データベース"]
    M --> B["ブラウザ・外部API"]
    G -->|"結果を返す"| C
    D -->|"結果を返す"| C
    
MCPサーバーが橋渡し役になり、Claudeが外部ツールを直接使えるようになります
⚠️
つなぐ前に、そのサーバーを信頼できるかを必ず確認!外部のコンテンツを取り込むサーバーには、プロンプトインジェクション(=悪意ある指示を紛れ込ませる攻撃)のリスクがあります。

サーバーの追加方法や認証の詳しい手順は公式へ。
👉 公式ドキュメント:MCP を使用して Claude Code をツールに接続する


6導入の入口:/plugin とマーケットプレイス

「自分でゼロから作るのは大変そう…」——大丈夫!便利なスキルや拡張は、すでに用意されたものをまとめて導入できます。

その入口が /plugin コマンドとマーケットプレイス(=拡張機能の置き場)です。たとえば公式が公開しているスキル集は、次のコマンドで導入できます。

terminal
# 公式スキルのマーケットプレイスを追加
/plugin marketplace add anthropics/skills
🧩
マーケットプレイスはアプリストアそのもの。自分でアプリを開発しなくても、ストアから選んでインストールするだけで便利になりますよね。それと同じで、まずは公式のものを入れて「拡張ってこういう感じか!」を体験するのがおすすめです。
💡
どんな拡張があるか、もっと知りたくなったら⑧ リソース・参考集へ。便利なスキルやプラグインの探し方をまとめています。

7安全の注意:強力だからこそ慎重に

拡張はとても強力です。だからこそ、使うときは「信頼できるものだけ」を心がけましょう。

⚠️
信頼できる発行元のものだけ入れる。スキルや MCP サーバー、フックは、あなたのパソコン上でコマンドを実行できる力を持っています。中身がよく分からないものは入れない——これが鉄則です。プロジェクトの .claude/skills/ に入ったスキルを使うときは、ワークスペースを信頼する前に中身を確認しましょう。
🔐

allowed-tools に注意

スキルの allowed-tools は、許可なしで使えるツールを指定する欄。広い権限を与えるものは慎重に。

🛂

権限を味方にする

/permissions や /allowed-tools で、何を許可・拒否するか管理できます。Hooks はバイパスできない「絶対のルール」を作れます。

🚨
公式によると、PreToolUse フックが「拒否(deny)」を返すと、--dangerously-skip-permissions のような権限をスキップするモードでも止められます。逆に、フックが「許可」を返しても、設定の拒否ルールは破れません。つまり「厳しくする方向は確実、ゆるくする方向は限定的」。安全側に倒れる設計になっているので安心です。
✅
拡張は「便利さ」と「安全」のバランスが大事。まずは公式のものから、少しずつ試していけば大丈夫。最初は怖くても、仕組みが分かれば、あなたの強い味方になってくれます。さあ、ひとつ作ってみましょう!

関連する公式ドキュメントもチェックしてみてください。
👉 スキル / Hooks / MCP