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.aiff、Pop.aiff、Hero.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を接続できる。ただし日常で使うのはここで紹介した設定が中心だ。