• #claude-code
  • #tips
  • #設定
  • #カスタマイズ
開発claude-code-toolsメモ

Claude Codeはデフォルトのままでも動く。だが「自分のClaude Code」にするには、いくつかの設定とフックを仕込むだけでいい。

ここでは実際に効果を感じた5つのカスタマイズを紹介する。ほとんどはClaude自身に「こうして」と頼めば設定してくれる。手動で調整したい人向けに、裏側のJSONも併記する。

この記事は 8 Claude Code Settings to Customize in Minutes を元に、実用性の高い設定に絞って日本語で再構成したものだ。

1. CLAUDE.mdを書く

CLAUDE.mdはClaude Codeの振る舞いに最も影響するファイルだ。セッションをまたいで指示が残る。

~/.claude/CLAUDE.md に置けば全プロジェクトに適用される。Claudeに頼む:

~/.claude/CLAUDE.mdを作って。pnpmを使う、interfaceよりtypeを優先、テストはVitest、PRの説明は簡潔に。

こんな内容が生成される:

# Global preferences

- Use pnpm, not npm
- Prefer types over interfaces
- When writing tests, use Vitest not Jest
- Keep PR descriptions concise — summary + test plan only

50行以内に収める。指示が増えるほど遵守率が落ちる。「pnpmを使え」のような具体的で短いルールはよく守られるが、「きれいなコードを書け」のような曖昧な指示はほぼ無視される。

プロジェクト単位の指示は /init でリポジトリ直下にCLAUDE.mdを生成できる。ただし出力が冗長になりがちなので、不要な部分は削って必要な指示だけ残す。

会話が長くなったら /compact で履歴を要約できる。/clear はタスク切り替え時に全消去。CLAUDE.mdにコンパクト時の保持ルールを書いておくと、要約で消えてほしくない情報を守れる:

When compacting, always preserve:

- Current file paths being edited
- Test failure messages
- Architecture decisions made this session

2. ステータスラインを追加する

ステータスラインは、Claudeが1ターン応答するたびに実行されるシェルスクリプトだ。ターミナル下部にダッシュボードのような情報を表示する。

手っ取り早いのは Claude Code 内で /statusline を実行すること。何を表示したいか聞かれるので答えれば、スクリプトを生成してくれる。

自分で書く場合の例を示す。カレントディレクトリ、gitブランチ(未コミット変更ありなら印つき)、コンテキスト使用量(50%未満で緑、50〜80%で黄、80%超で赤)を表示する:

#!/bin/bash
input=$(cat)

# JSONからデータを取得
cwd=$(echo "$input" | jq -r '.workspace.current_dir')
input_tokens=$(echo "$input" | jq -r '.context_window.current_usage.input_tokens // 0')
cache_creation=$(echo "$input" | jq -r '.context_window.current_usage.cache_creation_input_tokens // 0')
cache_read=$(echo "$input" | jq -r '.context_window.current_usage.cache_read_input_tokens // 0')
context_window_size=$(echo "$input" | jq -r '.context_window.context_window_size // empty')

current_dir=$(basename "$cwd")

# gitブランチ+未コミット状態
git_info=""
if git -C "$cwd" rev-parse --git-dir > /dev/null 2>&1; then
    branch=$(git -C "$cwd" --no-optional-locks branch --show-current 2>/dev/null)
    if [ -n "$branch" ]; then
        if [ -n "$(git -C "$cwd" --no-optional-locks status --porcelain 2>/dev/null)" ]; then
            git_info=" git:($branch)*"
        else
            git_info=" git:($branch)"
        fi
    fi
fi

# コンテキスト使用量(色分け)
context_info=""
ctx_color=""
total_input=$((input_tokens + cache_creation + cache_read))
if [ "$total_input" -gt 0 ] && [ -n "$context_window_size" ] && [ "$context_window_size" -gt 0 ]; then
    input_k=$(printf "%.0f" "$(echo "$total_input / 1000" | bc -l)")
    window_k=$(printf "%.0f" "$(echo "$context_window_size / 1000" | bc -l)")
    percentage=$(( (total_input * 100 + context_window_size / 2) / context_window_size ))
    context_info=" ctx:${input_k}k/${window_k}k (${percentage}%)"
    if [ "$percentage" -lt 50 ]; then ctx_color="\\033[32m"
    elif [ "$percentage" -lt 80 ]; then ctx_color="\\033[33m"
    else ctx_color="\\033[31m"; fi
fi

printf "\\033[36m%s\\033[0m" "$current_dir"
[ -n "$git_info" ] && printf "\\033[34m%s\\033[0m" "$git_info"
[ -n "$context_info" ] && printf "${ctx_color}%s\\033[0m" "$context_info"

スクリプトは標準入力でセッション情報のJSONを受け取る。アクティブモデルやセッションコストなど、好きな情報を表示できる。

3. 編集時にフォーマッターを自動実行する

Claudeがファイルを編集するたびにフォーマッターが走る。コードが常に整形された状態を保つ。

Claudeに頼む:

プロジェクト設定にPostToolUseフックを追加して。EditかWriteの後にPrettierを実行するようにして。

プロジェクトの .claude/settings.json にPostToolUseフックが追加される:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

ツールをチェーンすることもできる。Prettierの後にESLintを走らせるなら:

{
  "matcher": "Edit|Write",
  "hooks": [
    {
      "type": "command",
      "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
    },
    {
      "type": "command",
      "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
    }
  ]
}

フォーマッターはプロジェクト固有なので、プロジェクトの .claude/settings.json に追加する。末尾の || true はフック失敗時にClaudeをブロックしないためのもの。フォーマットはベストエフォートでいい。

4. 完了時にサウンドを鳴らす

この設定で作業スタイルが変わる。タスクを投げてから別の作業に移り、音が鳴ったら戻る。「待つ」から「並行作業してコールバックを受ける」に変わる。

Claudeに頼む:

ユーザー設定にStopフックを追加して。応答が終わったらサウンドを鳴らして。

~/.claude/settings.json にStopフックが追加される。macOSの場合:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/bin/afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

Windowsの場合:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -Command \"(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()\""
          }
        ]
      }
    ]
  }
}

macOSなら /System/Library/Sounds/ にあるシステムサウンドから選べる(Glass.aiffPop.aiffHero.aiff など)。Windowsなら C:\Windows\Media\ 以下のwavファイルが使える。好きな効果音をダウンロードして任意のパスを指定してもいい。

5. 出力スタイルを設定する

出力スタイルはClaudeの応答形式を制御する。/config から選ぶか、Claudeに頼む:

出力スタイルをConciseにして

組み込みの選択肢:

スタイル用途
Explanatory詳細なステップバイステップの説明(学習向き)
Concise簡潔で行動重視の応答(作業を進めたいとき)
Technical正確で専門用語を使う応答(深い作業向き)

カスタムスタイルも作れる。~/.claude/output-styles/ にYAMLフロントマター付きのMarkdownファイルを置けば、/config の選択肢に表示される。「コードレビュー」スタイルを作れば指摘事項だけを端的に返し、「ドキュメント」スタイルを作れば構造化された丁寧な出力を返す。

関連する設定として、showTurnDuration は各応答の所要時間を表示する(モデル切り替えの判断材料になる)。

まとめ

一番困っていることから1つ始める。CLAUDE.md(#1)が最も効果が高いので、まだ書いていないならそこからがいい。

ほとんどはClaudeに頼めば設定してくれる。裏側で使われるのは2箇所だけ:

  • ~/.claude/settings.json(グローバル設定とフック)
  • ~/.claude/CLAUDE.md(セッションをまたぐ指示)

この5つを整えた後は、MCPサーバーを試す価値がある。データベースやブラウザ自動操作など、外部ツールとClaudeを接続できる。ただし日常で使うのはここで紹介した設定が中心だ。