Claude Codeは、Anthropicが提供するAIを活用したCLIツールです。
コードの生成・修正・説明といった基本的な使い方に加え、 プロジェクト固有の設定やカスタム動作を定義することで、より効率的に開発できます。
この記事では以下の機能について紹介します。
CLAUDE.mdはプロジェクトルートに配置するMarkdownファイルです。
Claude Codeが起動するたびに自動で読み込まれ、プロジェクト固有のルール・慣習・コンテキストをAIに伝えることができます。
配置場所
CLAUDE.md (プロジェクトルート) ... そのプロジェクト専用の設定~/.claude/CLAUDE.md ... 全プロジェクト共通のグローバル設定記述例
# プロジェクト概要 Ruby on Rails + React で構築した社内管理ツール。 # 開発ルール - Rubyのバージョンは3.3を使用 - テストはRSpecで書く。FactoryBotを使用すること - コミットメッセージは日本語で書く # よく使うコマンド - テスト実行: `bundle exec rspec` - サーバー起動: `bin/dev` - Lintチェック: `bundle exec rubocop` # 注意事項 - db/schema.rbは直接編集しない - 環境変数は.env.localに記載する(.gitignoreに含まれている)
CLAUDE.mdに記載しておくことで、毎回同じ説明をしなくて済むようになります。
特に「このプロジェクトのテストはどう書くか」「使ってはいけないコマンドは何か」といった、 コードを読むだけではわからない情報を書いておくと効果的です。
HooksはClaude Codeの特定のイベントに対してシェルコマンドを自動実行する機能です。
設定は .claude/settings.json に記述します。
設定できるイベント
PreToolUse ... Claude がツール(ファイル編集・Bashコマンドなど)を実行する前PostToolUse ... Claude がツールを実行した後Notification ... Claude が通知を送るときStop ... Claude の応答が終了したとき設定例: ファイル編集後に自動でLintを実行する
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "bundle exec rubocop --autocorrect" } ] } ] } }
matcher にはツール名を正規表現で指定します。
上の例では、Edit または Write ツールが実行された後に RuboCop が走ります。
設定例: 作業完了時にデスクトップ通知を送る
{ "hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Claude Codeの作業が完了しました\" with title \"Claude Code\"'" } ] } ] } }
長時間かかる処理を依頼したときに、終わったことをすぐ気づけるので便利です。
設定例: 危険なコマンドをブロックする
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -q 'rm -rf' && echo 'rm -rfは禁止されています' && exit 1 || exit 0" } ] } ] } }
Hookコマンドが終了コード1以外を返した場合、Claudeはツールの実行を中止します。
これにより、意図しない破壊的な操作を防ぐことができます。
MCPはClaude Codeに外部ツールやデータソースへのアクセスを追加するプロトコルです。
例えば、以下のような連携が可能になります。
設定方法
MCPサーバーの設定は .claude/settings.json に記述します。
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx" } } } }
npx で起動するタイプのMCPサーバーが多く、初回起動時に自動でパッケージをダウンロードします。
よく使われるMCPサーバー
@modelcontextprotocol/server-github ... GitHub操作@modelcontextprotocol/server-slack ... Slack操作@modelcontextprotocol/server-filesystem ... ローカルファイルシステム操作@modelcontextprotocol/server-postgres ... PostgreSQLへのアクセスグローバル設定との使い分け
プロジェクトに関係なく使いたいMCPサーバー(SlackやGitHubなど)は
~/.claude/settings.json に記述することで全プロジェクトで使えるようになります。
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx" } } } }
Skillsは /code-review や /run のように、スラッシュで呼び出せるカスタムコマンドです。
よく使う処理をSkillとして定義しておくと、毎回同じプロンプトを書かずに済みます。
Skill ファイルの配置場所
.claude/commands/ ... プロジェクト専用のSkill~/.claude/commands/ ... 全プロジェクト共通のSkill作成方法
Markdownファイルを作成するだけです。ファイル名がコマンド名になります。
# .claude/commands/review.md を作成すると /review で呼び出せる touch .claude/commands/review.md
設定例: コードレビューSkill
# /review 変更されたファイルのコードレビューを行います。 以下の観点でレビューしてください。 - バグや論理的な誤りがないか - セキュリティ上の問題がないか - パフォーマンスに影響する処理がないか - Rubyのベストプラクティスに従っているか レビュー結果はMarkdown形式でまとめてください。
設定例: テスト作成Skill
# /gen-test 選択しているコードに対してRSpecのテストを生成します。 - FactoryBotを使用すること - 正常系・異常系の両方を網羅すること - describeとcontextを適切に使い分けること - itブロックには日本語で説明を書くこと
引数を使う
$ARGUMENTS を使うと、コマンド呼び出し時に引数を渡せます。
# /deploy $ARGUMENTS 環境へのデプロイ手順を確認し、問題なければデプロイを実行してください。 デプロイ前に以下を確認してください。 - テストがすべてパスしていること - マイグレーションが必要な場合は事前に確認すること
上記の場合、/deploy staging のように呼び出すと $ARGUMENTS が staging に置き換わります。
これらを組み合わせることで、Claude Codeをプロジェクトに最適化した開発ツールとして活用できます。