Masayan tech blog.

  1. ブログ記事一覧>
  2. Claude Code クラッシュコース基礎編 - 実践で使える必須テクニック

Claude Code クラッシュコース基礎編 - 実践で使える必須テクニック

公開日
最終更新日

要約

  • Claude Codeを効率的に利用する上で必ず押さえておきたい機能やTIPSを解説
  • スラッシュコマンド、スキル、Model Context Protocol(MCP)による外部サービス連携について
  • スラッシュコマンド、スキル、MCPの違いと使い分けについて
  • フック機能とその活用事例を多数紹介

この記事は、Claude Codeのベストプラクティス、公式ドキュメント、著者自身のClaude Maxプランでの利用体験に基づいています。

この記事を読むことで得られるメリット

  • スラッシュコマンド、スキル、MCPそれぞれの実用的な使い方、各機能の違いと使い分けが理解できる
  • フック機能の基本と設定方法が理解できる

この記事を読むのにかかる時間

約15〜20分

環境

  • OS: MacOS Apple M4 Max Sequoia 15.1
  • Node.js: v18以上
  • Claude Code バージョン: 2.0.14

スラッシュコマンド

  • claude起動コマンドを実行した後に、/(スラッシュ)を入力することで、あらかじめ割り当てられたコマンドを使用できる。これはスラッシュコマンドと呼ばれている
  • スラッシュコマンドにはデフォルトで利用できるものと、ユーザーが定義できるカスタムスラッシュコマンドがある

使用イメージ

──────────────────────────────────────────────────────────────────────────────────
> /
──────────────────────────────────────────────────────────────────────────────────
  /add-dir                         Add a new working directory
  /agents                          Manage agent configurations
  /bashes                          List and manage background tasks
  /clear (reset, new)              Clear conversation history and free up
                                   context
  /compact                         Clear conversation history but keep a summary
                                   in context. Optional: /compact [instructions
                                   for summarization]
  /config (theme)

主なスラッシュコマンド

/clear - コンテキストウィンドウのクリア

同じセッションで何度もやりとりしていると、Claudeのコンテキストウィンドウは無関係な会話やファイル内容、コマンドで埋まってしまうことがある。

これはパフォーマンスを低下させ、時にClaudeの注意を散漫にさせる可能性がある。タスクの合間(区切り)には適宜/clearコマンドを使い、コンテキストウィンドウをリセットすることが推奨される

/compact - コンテキストウィンドウの圧縮

  • コンテキストウィンドウの内容を圧縮するコマンド
  • /clearが全ての会話の履歴をリセットするのに対し、/compactは内容を圧縮して以降の会話でも保持する。引数には圧縮を行う際の要約を指定可能
  • デフォルトの設定ではある程度コンテキストウィンドウが大きくなると、自動で/compactが実行されるようになっている。これは後述する/configコマンドでON/OFFを切り替えることが可能。

/rewind - ロールバック

特定のチェックポイント(チャットの入力履歴)まで巻き戻しできる。意図した内容でAIがアウトプットを出してくれなかった時などに任意の履歴に戻れると安心

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Rewind

 Restore the code and/or conversation to the point before…

   /cost
   No code changes

   /pr-comments is fetching PR comments…
   No code changes

 ❯ (current)

/usage - 現在の利用量を確認

サブスクリプションでの利用時のみ実行可能だが、現在のトークンの利用量を確認できる

> /usage
───────────────────────────────────────────────────────────────────────────────────
 Settings:  Status   Config   Usage   (tab to cycle)

 Current session
 ██████                                             12% used

/memory - 設定ファイルの編集

すぐにCLAUDE.mdを編集できる(ユーザー、プロジェクトどちらを編集するか選択可能)

> /memory 

Learn more: https://docs.claude.com/en/docs/claude-code/memory

╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                                                                                               │
│ Select memory to edit:                                                                                                                                                        │
│                                                                                                                                                                               │
│  ❯ 1. Project memory   Saved in ./CLAUDE.md                                                                                                                                   │
│    2. User memory      Saved in ~/.claude/CLAUDE.md                                                                                                                           │
│                                                                                                                                                                               │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

/model - モデルの切り替え

使用するLLMのモデルを切り替えることができる。デフォルトはSonnet4.5なので、複雑なタスクはOpusに切り替える時はここから可能

> /model 
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 Select model
 Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names, specify with --model.1. Default (recommended)   Sonnet 4.5 · Smartest model for daily use ✔
   2. Opus                    Legacy: Opus 4.1 · Reaches usage limits faster
   3. Haiku                   Haiku 4.5 · Fastest model for simple tasks                                                    0% used

/mcp - MCPサーバーの管理

登録済みのMCPサーバーの表示や削除、認証など

> /mcp 

Manage MCP servers                                                                                                                                                            │
│                                                                                                                                                                               │
│ ❯ 1. context7            ✔ connected · Enter to view details                                                                                                                  │
│   2. notion              △ disconnected · Enter to login

/resume

claude --resumeと同様に、特定の過去のセッションを再開できる。頻繁に使うわけではないが途中から再開したいことはたまにある。知っておくと便利なコマンド

> /resume
───────────────────────────────────────────────────────────────────────────────────

Resume Session

❯ YouTube概要欄生成 Chillout
  17 hours ago · 117 messages · -

  bgm制作したい
  17 hours ago · 61 messages · -

  Suno Vaporwave プロンプト作成&YouTube アップロード完了
  4 days ago · 167 messages · -

/config - 設定確認

利用中のモデルやテーマ設定などの現在の設定を確認できる。ここでAuto-compactの切り替え設定も可能

> /config

Configure Claude Code preferences

 ❯ Auto-compact                              true
   Show tips                                 true
   Rewind code (checkpoints)                 true
   Verbose output                            false
   Theme                                     Dark mode
   Notifications                             Auto
   Output style                              default
   Editor mode                               normal
   Model                                     Default (recommended)
   Diff tool                                 auto
   Auto-install IDE extension                true

/terminal-setup - CLI上での改行設定

CLI上での操作時、Shift + Enterキーで改行を挿入できるようになる。

ターミナルによって異なる。Mac標準のターミナルならOption+Enterで改行。Shift + Enterで改行できるようにしたい場合はこのコマンドを実行すること

> /terminal-setup 
  ⎿  Configured Terminal.app settings:
     - Enabled "Use Option as Meta key"
     - Switched to visual bell
     Option+Enter will now enter a newline.
     You must restart Terminal.app for changes to take effect.

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

標準で提供されているスラッシュコマンドに加え、.claude/commandsディレクトリにマークダウンファイルを作成すると、ユーザ定義のコマンドを作成することができる

コマンド実行時に引数を渡すこともでき、与えられた引数は$ARGUMENTSの変数に代入されるので、コマンドの実装側で扱うことが可能

リファクタリングコマンドの例

リファクタリングを実行するカスタムコマンドの例(※あくまでサンプルです。実際はもう少ししっかりと書くことをお勧めする)

.claude/commands/refactor.md

- $ARGUMENTSのコードをExtract Method(メソッド抽出)して責務を分割する
- 関数ではなく、オブジェクト指向でクラスを活用すること
- 条件分岐が複数発生する場合はStrategyStateのデザインパターンを活用すること
  - ポリモーフィズムは積極的に活用すること
- インスタンス生成はファクトリーパターンを積極的に活用すること
- メソッドの引数は2つまで

リファクタリング前のダーティなコード

main_dirty.py

import pandas as pd
import os

# --- 設定値 (リファクタリング候補1: 設定を別ファイルに切り出す) ---
INPUT_CSV_PATH = 'sales_data.csv'
OUTPUT_CSV_PATH = 'high_value_customer_summary.csv'
PRICE_THRESHOLD = 10000
TARGET_YEAR = 2023

def main():
    """
    エントリーポイントとなるメイン関数。
    複数の責務(データ読み込み、加工、ビジネスロジック、出力)が混在している。
    """

    # --- ダミーの入力データを作成 (本来は不要) ---
    if not os.path.exists(INPUT_CSV_PATH):
        print(f"'{INPUT_CSV_PATH}' が存在しないため、ダミーファイルを作成します。")
        dummy_data = {
            'order_id': [1, 2, 3, 4, 5, 6, 7, 8],
            'customer_id': ['A-001', 'B-002', 'A-001', 'C-003', 'B-002', 'A-001', 'D-004', 'C-003'],
            'product_name': ['Laptop', 'Mouse', 'Monitor', 'Keyboard', 'Webcam', 'Docking Station', 'USB Hub', 'External HDD'],
            'price': [150000, 3000, 25000, 8000, 12000, 22000, None, 15000],
            'order_date': ['2023-04-10', '2023-04-11', '2022-05-20', '2023-06-01', '2023-06-15', '2023-07-01', '2024-01-20', '2023-08-01'],
            'unnecessary_column': [0] * 8
        }
        pd.DataFrame(dummy_data).to_csv(INPUT_CSV_PATH, index=False)
        print("ダミーファイルを作成しました。")
    
    # --- 1. データの読み込み ---
    print(f"'{INPUT_CSV_PATH}' からデータを読み込みます...")
    try:
        df = pd.read_csv(INPUT_CSV_PATH)
    except FileNotFoundError:
        print(f"エラー: 入力ファイル '{INPUT_CSV_PATH}' が見つかりません。")
        return

    # --- 2. データの前処理 ---
    print("データの前処理を開始します...")
    if 'unnecessary_column' in df.columns:
        df = df.drop(columns=['unnecessary_column'])
    
    df.dropna(subset=['price'], inplace=True)
    df['order_date'] = pd.to_datetime(df['order_date'])
    print("データの前処理が完了しました。")

    # --- 3. ビジネスロジック ---
    print("ビジネスロジックを実行します...")
    df_filtered_by_year = df[df['order_date'].dt.year == TARGET_YEAR].copy()
    high_value_orders = df_filtered_by_year[df_filtered_by_year['price'] >= PRICE_THRESHOLD]
    customer_summary = high_value_orders.groupby('customer_id')['price'].sum().reset_index()
    customer_summary.rename(columns={'price': 'total_purchase_amount'}, inplace=True)
    print("ビジネスロジックの実行が完了しました。")

    # --- 4. 結果の出力 ---
    print("処理結果を出力します...")
    print("\n--- 高額購入顧客サマリー ---")
    if customer_summary.empty:
        print("該当する顧客はいませんでした。")
    else:
        print(customer_summary.to_string(index=False))
    
    try:
        customer_summary.to_csv(OUTPUT_CSV_PATH, index=False, encoding='utf-8-sig')
        print(f"\n結果を '{OUTPUT_CSV_PATH}' に保存しました。")
    except IOError:
        print(f"エラー: ファイル '{OUTPUT_CSV_PATH}' への書き込みに失敗しました。")

if __name__ == '__main__':
    main()

リファクタリングコマンドの実行

> /refactor main_dirty.py

 コードを確認して、オブジェクト指向設計でリファクタリングします。

・・・

  それでは実装を開始します。

---

 リファクタリングが完了しました。main_refactored.pyを作成しました。

リファクタリング後のコード

実際に使うにはドメインの知識を入れたり等もう少し改善が必要だが、元のコードと比べると圧倒的に読みやすい。

main_refactored.py

# =============================================================================
# エントリーポイント
# =============================================================================
def main():
    """アプリケーションのエントリーポイント"""
    # 設定の初期化
    config = Config(
        input_csv_path='sales_data.csv',
        output_csv_path='high_value_customer_summary.csv',
        price_threshold=10000,
        target_year=2023
    )

    # 依存オブジェクトの生成
    repository = DataRepository(config)
    preprocessor = ProcessorFactory.create_preprocessor()
    business_logic = ProcessorFactory.create_business_logic(config)
    output_handler = ProcessorFactory.create_output_handler(repository)

    # パイプラインの実行
    pipeline = DataPipeline(
        repository,
        preprocessor,
        business_logic,
        output_handler
    )

    try:
        pipeline.execute()
    except (FileNotFoundError, IOError) as e:
        print(f"エラー: {e}")

if __name__ == '__main__':
    main()

そのほかConventional Commits形式でコミットとメッセージを生成してもらうコマンドを作ったりするのもお勧め

コマンド用ディレクトリの階層化

.claude/commands/git/pr-xxx.mdのようにcommands直下にサブディレクトリを作成しコマンドファイルを作成することもでき、この場合実行する際は/git:pr-xxxのようにコロンをつけて実行できる。

マーケットプレイス

カスタムコマンドもマーケットプレイスが存在するので、自分で作成するレパートリーがなくなったら、参考にしてみるといいかも

なお、カスラムスラッシュコマンドを使った「ビジネスシーン、開発で必要なドキュメント作成を劇的に効率化するための記事」はこちらで徹底解説している

スキル

Agent Skillについてはこちらの記事で徹底解説している。自然言語の指示で専門的かつ複数手順が必要な作業も実行でき、MCPよりもコンテキスト消費が少なく最適化されている。スラッシュコマンドとは違い、プログラム(スクリプト)を含めることができる

Model Context Protocol(MCP)

MCPとは

MCPは、Claudeが外部サービスと連携するためのプロトコルである。MCPサーバーを追加することで、Notion、Figma、Context7などの外部サービスのデータをClaude Codeから直接操作できるようになる。MCPに関しては以下2つの記事で徹底解説している

/mcp - MCPサーバー管理

/mcpコマンドでMCPサーバーを管理できる。有効なMCPサーバーがあれば、表示してくれる

> /mcp
╭────────────────────────────────────────────────────────────────────────────────╮
│ Manage MCP servers                                                             │
│                                                                                │
│ ❯ 1. context7            ✘ failed · Enter to view details                      │
│   2. serena              ✔ connected · Enter to view detail

MCPサーバーの追加方法

Notion MCPを追加してみる

claude mcp add --transport http notion https://mcp.notion.com/mcp

これにより、/Users/<username>/.claude.jsonに以下の設定が追加される。

"mcpServers": {
  "notion": {
    "type": "http",
    "url": "https://mcp.notion.com/mcp"
  }
}

/mcpを実行すると、notionのMCPが表示される。

> /mcp 
╭──────────────────────────────────────────────────────────────────────────────╮
│ Manage MCP servers                                                           │
│                                                                              │
│ ❯ 1. notion

notion MCPを選択するとブラウザが起動するのでログインして戻ってくると、Claude Codekから利用できるようになる。

Notionから記事を取得する例

> notionで記事取得したい 

⏺ Notionで記事を取得する方法を説明します。

  利用可能なNotion操作

  このClaude Code環境では、以下のNotion操作が可能です:

  1. 検索機能 (mcp__notion__notion-search)

> NotionページのID(32文字のUUID形式)

⏺ Notionページ「CLASSIC BARBER SHOP - 完全版コンテンツ」を取得しました。

  取得した内容の概要

  理髪店「CLASSIC BARBER SHOP」の完全なWebサイトコンテンツで、以下のセクションが含まれています:

  主要コンテンツ

  - 🏪 店舗基本情報 - キャッチコピー、コンセプト
  ...

MCPサーバーの削除

claude mcp remove notion

その他のMCPサーバー

serena MCP サーバー

コードベースの理解と操作、トークン効率を最適化してくれるサーバー

Python のパッケージマネージャーuvを使用する方法が推奨

curl -LsSf https://astral.sh/uv/install.sh | sh

追加方法(MCPサーバーをプロジェクトに追加):

claude mcp add serena -s project -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd)

プロジェクトのルートに .mcp.json ファイルが作成される。このプロジェクトでclaudeを起動するとserenaが実行される

Context7

最新のドキュメント情報を取得することでハルシネーションを防止できる、正確なAPIリファレンスを提供してくれるサーバー

追加方法:

claude mcp add --transport sse context7 -s project https://mcp.context7.com/sse

実行例:

> Laravelのeloquentの書き方を調べて 

⏺ LaravelのEloquent ORMの基本的な書き方について調べて、まとめます。

⏺ context7 - resolve-library-id (MCP)(libraryName: "laravel")
  ⎿  Available Libraries (top matches):                                                    

     Each result includes:
     … +245 lines (ctrl+o to expand)

そのほか、Google Analytics MCPサーバーやFigma MCPサーバーなどがある

リクエストヘッダーを指定

MCPサーバーの中には、専用のトークンやリクエストヘッダーが必要なものがあるのでその場合の指定方法

claude mcp add --transport http server-name https://・・・/mcp --header "X-: 値"

Claude Desktop からインポート

claude mcp add・・・が面倒な方で、すでに Desktop版 Claudeに追加済みの場合はそれらのMCPサーバーを一気にインポートできる

claude mcp add-from-claude-desktop

スラッシュコマンド、スキル、MCPの違いと使い分け

機能

特徴

得意分野

実行方法

使用例

こんな時に使う

スラッシュコマンド

単純作業の自動化

繰り返し実行する定型作業

コマンド実行(明示的指示)

・コードレビュー
・自動テスト作成
・ドキュメント・仕様書作成
・GitHubプロジェクトセットアップ

1コマンドでサクッと実行したい日常的な定型作業

スキル

複雑な処理の自動化

多段階のワークフロー

自然言語で実行可能

・画像から文字起こし→クリップボードコピー
・記事リライト→投稿
・Xポスト内容生成→投稿
・動画からYouTube概要欄・タイトル・ハッシュタグ生成→投稿

MCPだと大袈裟だけど複雑な処理やプログラムが必要な時。コンテキスト使用が最適化されている

MCP

外部サービスとの統合

外部API・ツールとの連携

自然言語で実行可能

・外部APIとの連携
・データベース操作
・Figma、GAなどツール接続

Claude Codeを「ハブ」として外部サービスをシームレスに統合したい時

使い分けのポイント

  • 単純な繰り返し作業 → スラッシュコマンド
  • 複雑な多段階処理 → スキル(ベンダーロックインされる点は注意
  • 外部サービスとの連携 → MCP

応用テクニック: スキルからMCPを利用することも可能🔥

注意点

MCPは入れすぎるとコンテキストを圧迫するので注意

/hooks - フック機能

Claude Codeのライフサイクルの特定のタイミングで実行できるコマンドを設定できる機能

> /hooks  
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  /hooks     Manage hook configurations for tool events

フックイベント

イベント

トリガータイミング

受け取るデータ

PreToolUse

Claudeがツールパラメータを作成後、処理前

tool_name, tool_input, セッション情報

PostToolUse

ツール実行完了直後

tool_name, tool_input, tool_response, セッション情報

Notification

権限リクエストやアイドル通知時

message, セッション情報

UserPromptSubmit

ユーザーがプロンプト送信後、Claude処理前

prompt, セッション情報

Stop

メインのClaude Codeエージェントが応答完了時

session_id, transcript_path, stop_hook_active

SubagentStop

サブエージェント(Task tool)が応答完了時

Stopイベントと同様のデータ

PreCompact

コンパクト操作実行前

trigger ("manual" or "auto"), custom_instructions

SessionStart

セッション開始または再開時

source ("startup", "resume", "clear", "compact")

SessionEnd

セッション終了時

reason (clear, logout, prompt_input_exit, other)

ツールについては公式ドキュメントの「Claudeが利用できるツール」を参照。Bash、Read、WebFetch(Web検索)、カスタムスラッシュコマンドがある。

通知音の設定例

例えば、処理実行後にMacで通知音を鳴らしたい場合、Stopを指定する。

Select hook event:

↑ 3.  Notification - When notifications are sent
  4.  UserPromptSubmit - When the user submits a prompt
  5.  SessionStart - When a new session is started
❯ 6.  Stop - Right before Claude concludes its response
↓ 7.  SubagentStop - Right before a subagent (Task tool call) concludes its response

「Add new hook」を選択し、Commandにafplay /System/Library/Sounds/Glass.aiffを指定する。

.claude/settings.local.jsonに以下のように追加される。

{
  "permissions": {
    "allow": [
      "Bash(git:*)",
      "Bash(ls:*)"
    ],
    "deny": [],
    "ask": []
  },
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

セキュリティ警告

フックを追加する際は、以下のセキュリティ警告には十分目を通すこと

  • フックは、確認なしに、あなた(ユーザー)の完全な権限で任意のシェルコマンドを実行する
  • フックが安全であることを保証するのは、あなた自身の責任である
  • フックは、あなたのユーザーアカウントがアクセスできるすべてのファイルを変更、削除、またはアクセスできる
  • 悪意のある、または不適切に作成されたフックは、回復不可能なデータの損失やシステムの損傷を引き起こす可能性がある
  • Anthropicは、フックの使用に起因するいかなる損害についても、一切の保証を提供せず、一切の責任を負わない
  • データ漏洩を防ぐため、信頼できるソースからのフックのみを使用すること
  • タイムアウト: 60秒

そのほか、ある開発プロジェクトでコード更新→Githubにpushまでプロンプトで実行した後、処理実行後にVercelのダッシュボードを開くということもできたり、

"hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "open https://vercel.com/・・・/deployments"
          }
        ]
      }
    ]
  }

破壊的な変更を加えた場合にCHANGELOGを生成させることも可能

"hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|NotebookEdit",
        "hooks": [
          {
            "type": "command",
            "command": "./.claude/hooks/log-code-changes.sh"
          }
        ]
      }
    ]
  },

CHANGELOG.md

# Code Changes Log

このファイルには、Claude Codeによるコード変更の履歴が記録されます。

---


## 2025年11月08日

### ✏️ Edited `LinkCardReplacer.tsx` - 2025-11-08 19:24:06

**変更内容**: console.logを削除

**ファイルパス**: `src/features/LinkCard/LinkCardReplacer.tsx`

_※ 変更内容が大きいため省略_

---

そのほか活用例

とにかくいろんなことができる

カテゴリ

ユースケース

使用するフック

実現内容

コード品質

自動コードフォーマット

PostToolUse (Write/Edit)

ファイル作成・編集後に自動でPrettier/Black/gofmt等を実行

セキュリティ

機密情報検出

UserPromptSubmit

プロンプトにAPIキーや秘密情報、顧客情報が含まれていないかチェック、含まれていればブロック

セキュリティ

コミット前セキュリティスキャン

PreToolUse (Bash)

git commit実行前に秘密情報スキャンツール(gitleaks等)を自動実行

テスト自動化

コード変更後の自動テスト

PostToolUse (Write/Edit)

ソースコード編集後に関連するユニットテストを自動実行

ドキュメント

自動ドキュメント生成

PostToolUse (Write)

新規関数/クラス作成時にJSDoc/docstringを自動追加

権限管理

特定ファイルの読み取り自動許可

Notification

package.json, tsconfig.json等の設定ファイルは自動承認

コスト管理

トークン使用量監視

PostToolUse (全ツール)

累積トークン使用量を記録し、閾値超過時に警告

セッション管理

プロジェクト環境変数自動ロード

SessionStart

.envファイルや開発環境設定を自動読み込み

Git管理

コミットメッセージ規約チェック

PreToolUse (Bash:git commit)

Conventional Commits形式に従っているか検証

コード品質

Lintエラー自動修正

PostToolUse (Write/Edit)

ESLint/Pylint実行し、auto-fix可能なエラーを自動修正

パフォーマンス

コマンド最適化提案

PreToolUse (Bash)

grepripgrep, findfd等の高速代替コマンドを提案

セキュリティ

依存関係脆弱性チェック

PostToolUse (Write:package.json)

npm audit/pip-audit等を実行し脆弱性を検出

品質管理

型チェック自動実行

PostToolUse (Write/Edit:*.ts)

TypeScript/mypy等の型チェックを自動実行

タスク管理

完了条件の自動判定

Stop

LLMで作業完了を判定し、未完了なら継続を促す

バックアップ

重要ファイル編集時のバックアップ

PreToolUse (Edit)

編集前に自動でバックアップファイルを作成

統合開発

ビルド後の動作確認

PostToolUse (Bash:build)

ビルド成功後に軽量なスモークテストを自動実行

コンプライアンス

ライセンスヘッダー自動挿入

PostToolUse (Write)

新規ファイルに会社のライセンスヘッダーを自動追加

デバッグ

エラー発生時の詳細ログ

PostToolUse (Bash)

コマンド失敗時に環境情報とスタックトレースを詳細記録

プロジェクト管理

作業時間の自動記録

SessionStart/SessionEnd

セッション開始・終了時刻を記録し工数管理に活用

コマンドで定型的な処理をするだけではなく自然言語でプロンプトを実行することも可能

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "prompt",
            "prompt": "Evaluate if Claude should stop: $ARGUMENTS. Check if all tasks are complete."
          }
        ]
      }
    ]
  }
}

まとめ

Claude Codeを効率的に活用するための完全ガイド。スラッシュコマンドによる定型作業の自動化、Agent Skillでの複雑な処理実行、MCPによる外部サービス連携、そしてフック機能による開発ワークフローの自動化について詳しく解説します。各機能の違いと使い分けのポイント、セキュリティチェックやコード品質管理の自動化など、実践的な活用例を豊富に紹介。Claude Maxプランでの実体験に基づいた、すぐに使えるベストプラクティス集です。読了時間約15〜20分で、ClaudeCodeを使いこなすための必須知識が身につきます。