🥳

個人的CLAUDE.mdのすゝめ

に公開

はじめに

みなさんClaude Code使用していますでしょうか??
自分は普段趣味などの構築はCursorとClaude Codeを用いて行っています。
ClaudeはProプランでも使用してみたのですが、意外と限界が来るのが早く現在MAXプランを契約してしまい使い倒しています。
(この記事を書いている最中もClaude Codeに頑張ってもらっています😂)

その中で自分なりのCLAUDE.mdを少しづつ作り込んできたので、今回参考情報までに共有をしたいと思います。

想定読者

  • 普段Claude Codeを使用している方
  • CLAUDE.mdに何書けば良いのか迷っている方

CLAUDE.mdってなに??

CLAUDE.mdはClaude Codeで使われるファイルです。
Claude Codeは作業時にこのファイルを自動的に読み込みその中に記載されている制約やフローに従って作業をプランニングします。

また、配置場所によってそれぞれ効果範囲が変わってきますので以下にまとめます。

ファイル名 用途・範囲
./CLAUDE.md プロジェクト全体で共有
~/.claude/CLAUDE.md ユーザー全体のグローバル設定
./CLAUDE.local.md プロジェクト固有の個人設定

配置する場所によって優先度や効果範囲が異なりますのでご注意ください。

また、CLAUDE.mdは自分で作成するほかに/initコマンドを使用してAIに作成してもらうことができます。
自分は今回紹介するようなCLAUDE.mdをさまざまなプロジェクトで使いまわしています。

Claude Codeのおすすめ

CLAUDE.mdを紹介する前に自分が普段使用していてClaude Codeの精度が上がったと実感した操作をご共有させていただきます。

  • 作業ごとに/clearコマンドを使用してコンテキストを切る

    • Claude Codeは一定数コンテキストが溜まってくるとcontext compactといって自動的にコンテキストを要約し、リフレッシュします。
    • しかし、この機能にて行われる要約が個人的には精度が低いように思えるのでコンテキストを引き継がなくて良い場合には必ず/clearコマンドを使用してコンテキストを切るようにしています。
  • 1つの実装作業の処理を分ける

    • Claude Codeは曖昧に作業内容を伝えても一貫して作業をプランニングしてくれます。
    • これは上記のものにもつながるのですが、一回の処理あたりの作業数が多いと精度が低くなる体感があります。
    • このため、自分はエラー原因分析・issue作成・issue消化のようにできるだけ処理を分けて指示を出すようにしています。
  • ultrahinkを使い倒す

    • Claude Codeでは特定のワードをプロンプトに含めることで、処理中の思考レベルを指定することができます。

    • その中でも最上位の思考レベルを指定するultrathinkを用いることでよりレベルの高い思考を行うことができます。

    • 自分は現状ほぼ全ての処理にてultrathinkを用いて指示を出しています。

自分が使用しているCLAUDE.md

以下に自分が普段使用しているCLAUDE.mdを共有させていただきます。

# Claude Code Configuration

## YOU MUST: 
- 全てのTODO完了またはユーザー のアクションが必要な際は最後に一度だけ `afplay /System/Library/Sounds/Sosumi.aiff` コマンドを実行して通知する
- 回答は日本語で行ってください
- TODOには必ずブランチ作成・実装内容のテスト・コミット・push・PR作成(まだ作成されていない場合)が含まれるべきです

## issue作成時の注意事項
issue作成時の注意事項をai-rules/ISSUE_GUIDELINES.mdにまとめています
issue作成時は必ず確認して必ずこの内容に従ってissue作成を行ってください。

## Repository 設定
- **リポジトリ名**: xxx
- **MCP GitHub API**: 常に `xxx` リポジトリを使用
- **Git remote**: xxx

## アプリケーションポート設定
以下のポートで各サービスが動作します:

### 開発環境(Docker Compose)
- 以下のポート番号を勝手に変更することは絶対にあってはなりません。
- **フロントエンド**: `http://localhost:3000` (ポート: 3000)
- **バックエンドAPI**: `http://localhost:8000` (ポート: 8000)

## 関数・エンドポイント作成時の注意事項
- 命名規則などを@ai-rules/API_FUNCTION_NAMING.mdにまとめています
- 関数やエンドポイントの作成時には必ず確認し、内容に従って実装を行ってください。

## 修正機能追加の際の作業開始時・終了時に必ず実施すること。必ず毎回全てtodoに含めてください。
- 以下の操作は作業開始時に必ず行ってください
  - **作業開始時**: 必ず専用ブランチを作成する(feat-<機能名>、fix-<修正内容>等)
  - **mainブランチでの直接作業は絶対禁止**: いかなる変更もmainブランチに直接コミットしない
- 以下を必ず作業終了時に実行してください。
  1. 作業内容をコミット
  2. リモートブランチにpush (`git push -u origin <ブランチ名>`)
  3. PR作成 (MCPでPR作成) 
  - @ai-rules/COMMIT_AND_PR_GUIDELINES.mdにガイドラインを記述しています。上記の作業時には必ず確認して必ず内容に従って作業を行ってください。

## 修正の際の注意点
- 修正を行う際には必ず以下のことに順守してください
  - 該当修正によって他の処理に問題がないか慎重に確認を行って作業を行ってください。
  - 他の動作に関しても修正が必要な場合は既存の期待値の動作が正常に起動するように修正してください。

## コミット前に確認すること(必ず実施)
- コミット前には必ず動作確認を行って動作が問題ないかを確認してください
  - 動作確認中にエラーが発見された際はタスクを更新してください
  - コミットする際はエラーがない状態で行ってください

## 開発時の注意点
- Tailwind CSSを優先して使用し、重複スタイルは避けること
- バックエンドAPIはFastAPIで定義し、リクエスト/レスポンススキーマにはPydanticモデルを使うこと
- .envファイル内のキーはUPPER_SNAKE_CASEで記述し、値にクォートは付けないこと


## ファイル作成時の注意点(ファイル作成時必ず確認)
- ファイル作成時に、そのファイルがGithubに挙げられるべきではないと判断した場合には、必ず.gitignoreに指定してください。


## 注意:
すでにポートが使用されている場合(例: 3000番や8000番など)、起動に失敗することがあります。
その場合は該当ポートを使用している場合は、そのポートを使用してください。
別のPJにて使用されている場合は、そのプロセスを特定し、killすることで使用してください。

# 例: ポート8000が使用中の場合
lsof -i :8000
kill -9 <PID>


## 動作確認・テスト時の必須確認事項(コミット前に必ず実施されるべきです)
- テスト・動作確認の際はplaywrightのMCPツールを使用して動作確認を行ってください。
- テスト・動作確認は修正を行って際は必ず行ってください。
- E2Eテストとしてユーザ目線での動作が問題ないかしっかりと確認してください。
開発・テスト時は以下のユーザー情報を使用してください:

メールアドレス: xxx
パスワード: xxx
ユーザー名: xxx
ユーザーID: xxx

こだわりポイント1

特にこだわっているのは、制約などに関して、長くなりそうなものは別のファイルに記述して必ず参照するようにしていることです。
こうすることでClaude Codeが毎回参照しなければいけないプロンプトを最小限にとどめ無駄なコンテキストを使わないようにしています。

プロジェクトルート
├── CLAUDE.md                     # Claude Code用のメイン設定ファイル
├── .cursorrules                 # Cursorエディタ用の制約共有ファイル
└── ai-rules/                    # Claude関連の詳細ルール格納フォルダ
   ├── ISSUE_GUIDELINES.md      # Issue作成ガイドライン
   └── API_FUNCTION_NAMING.md   # 関数・エンドポイント命名規則
   └── xxx.md

こだわりポイント2

MCPをガンガン使っています。
しかしMCPは明言をしないと使ってくれない体感があるのでCLAUDE.md中にてどんな時にどのようなMCPツールを使用するのか明言しています。

特にGitHubのMCPではPR作成の際などCLIを用いて作業してしまおうとする傾向があったため、必ずMCPを使うように明言しています。

GithubMCPの追加の仕方

GitHubにて[settings] -> [Developer settings] -> [Personal Access tokens]にてトークンを生成

claude mcp add githubApi --scope project \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=xxx \
  -- npx -y @modelcontextprotocol/server-github

また、PlaywrightのMCPをコミット前に使用してE2Eテストを行うように明言するのもかなり便利なのでおすすめです😊

Playwright MCPの追加の仕方

-s userオプションを指定することでグローバル設定になります。

claude mcp add playwright -s user -- npx -y @playwright/mcp@latest

こだわりポイント3

CLAUDE.mdの最初に作業が終了した際・ユーザにアクションを求める際はサウンドで通知をするように指定しています。

こちらを行うとサウンド通知にて作業終了がわかるので、効率よく作業を進めることができています

自分はIterm2を使用しており、公式での通知設定が公開されているのですが、Iterm2のデフォルトの通知音では少し気が付きづらいこと・デフォルトのサウンドの変更方法がわからなかったことから上記の設定を入れております。

さいごに

いかがでしたでしょうか??
自分もさらに効率を上げるようなCLAUDE.mdを作成したいため気になる点や疑問点がありましたらコメントいただけますと幸いです。

Solvio株式会社

Discussion