【コピペで使える】CLAUDE.md設定テンプレート5選
Claude Codeに「このプロジェクトはTypeScriptで書いてね」と伝える。
次のチャットでまた「TypeScriptで」と伝える。
3回目にはさすがに面倒になる。
「インデントはスペース2つ」「コンポーネントはこのフォルダに」「テストはVitestで」。
覚えていてほしいことが増えるほど、説明の時間も増えていきます。
この問題、CLAUDE.mdで解決できます。
CLAUDE.mdは、プロジェクトのルートに置く設定ファイルです。
ここに書いた内容を、Claude Codeが毎回自動で読み込みます。
一度書けば、次から何も言わなくてもプロジェクトのルールを守ってくれる。
ただ、何を書けばいいのかがわかりにくい。
公式ドキュメントを見ても、具体的なサンプルが少ない。
そこで、プロジェクト別のCLAUDE.mdテンプレートを5つ用意しました。
コピペして、自分のプロジェクトに合わせて編集するだけで使えます。
CLAUDE.mdの基本
テンプレートの前に、CLAUDE.mdの基本を確認しておきます。
配置場所
プロジェクトのルートディレクトリに置きます。
your-project/
├── CLAUDE.md ← ここ
├── src/
├── package.json
└── ...書くべきこと
公式が推奨しているのは以下の内容です。
よく使うコマンド(ビルド、テスト、デプロイ)
コードスタイルのルール(インデント、命名規則)
プロジェクト固有のアーキテクチャ
開発環境の注意点(必要な環境変数など)
よくある落とし穴
書かなくていいこと
コードを読めばわかること
標準的な言語の規約(Claudeは既に知っている)
頻繁に変わる情報
「クリーンなコードを書く」のような当たり前のこと
長さの目安
300行以内が推奨です。
長すぎると、Claudeが読み込む情報が多くなりすぎて、肝心な指示を見落とすことがあります。
重要な情報を簡潔に。
詳細は別ファイルに分けて、必要なときだけ参照させるのがコツです。
テンプレート一覧
今回用意したのは5種類です。
Webフロントエンド(React/Next.js) → SPAやSSRプロジェクト向け
バックエンドAPI(Python/FastAPI) → REST API開発向け
フルスタック(TypeScript統一) → フロント・バック両方をTypeScriptで書くプロジェクト向け
データ分析(Python/Jupyter) → 分析・機械学習プロジェクト向け
個人開発(シンプル版) → 小規模プロジェクト向け
それぞれ、実際のプロジェクトで使える形にしています。
使い方
自分のプロジェクトに近いテンプレートを選ぶ
プロジェクトルートにCLAUDE.mdを作成
テンプレートをコピペ
自分のプロジェクトに合わせて編集
使いながら育てていく
最初から完璧にする必要はありません。
使っていくうちに「これも書いておけばよかった」と気づいたら、追記していけばOKです。
ここからは、テンプレート本体とカスタマイズのポイントです。
テンプレート1: Webフロントエンド(React/Next.js)
React/Next.jsを使ったフロントエンド開発向けのテンプレートです。
# プロジェクト概要
{プロジェクト名}のフロントエンドリポジトリ。
Next.js 14 (App Router) + TypeScript + Tailwind CSS。
## 開発コマンド
- `npm run dev` → 開発サーバー起動(http://localhost:3000)
- `npm run build` → 本番ビルド
- `npm run lint` → ESLint実行
- `npm run test` → Vitest実行
## コードスタイル
- インデント: 2スペース
- セミコロン: なし
- クォート: シングルクォート
- コンポーネント: 関数コンポーネント + アロー関数
- 命名: コンポーネントはPascalCase、それ以外はcamelCase
## ディレクトリ構成
- `src/app/` → App Routerのページ
- `src/components/` → 共通コンポーネント
- `src/components/ui/` → 基礎UIコンポーネント(Button, Input等)
- `src/hooks/` → カスタムフック
- `src/lib/` → ユーティリティ関数
- `src/types/` → 型定義
## 重要なルール
- 新しいページを作るときは `src/app/` 配下にディレクトリを作成
- コンポーネントは1ファイル1コンポーネント
- スタイルはTailwind CSSのみ使用(CSS Modulesは使わない)
- APIコールは `src/lib/api.ts` に集約
- 状態管理はReact Server Components + useStateで対応(Redux等は不使用)
## 注意点
- `use client` ディレクティブを忘れずに(クライアントコンポーネントの場合)
- 画像は `next/image` を使用
- リンクは `next/link` を使用
- 環境変数は `.env.local` に定義(NEXT_PUBLIC_ プレフィックス必須)カスタマイズのポイント
プロジェクト名を入れる
冒頭の `{プロジェクト名}` を実際の名前に置き換えてください。
使用ライブラリを追加
状態管理にZustandを使っているなら、その旨を追記。
UIライブラリにshadcn/uiを使っているなら、そのディレクトリ構成も追記。
独自ルールを追加
チーム固有のルール(PRの規約、ブランチ命名など)があれば追記。
テンプレート2: バックエンドAPI(Python/FastAPI)
Python + FastAPIでREST APIを開発するプロジェクト向けです。
# プロジェクト概要
{プロジェクト名}のバックエンドAPI。
Python 3.11 + FastAPI + SQLAlchemy + PostgreSQL。
## 開発コマンド
- `uvicorn app.main:app --reload` → 開発サーバー起動
- `pytest` → テスト実行
- `pytest -v` → テスト実行(詳細表示)
- `ruff check .` → Linter実行
- `ruff format .` → フォーマット実行
## 環境構築
```bash
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtディレクトリ構成
`app/` → アプリケーション本体
`app/main.py` → FastAPIアプリのエントリーポイント
`app/routers/` → APIエンドポイント定義
`app/models/` → SQLAlchemyモデル
`app/schemas/` → Pydanticスキーマ
`app/services/` → ビジネスロジック
`app/db/` → データベース接続設定
`tests/` → テストコード
コードスタイル
フォーマッター: ruff
型ヒント: 必須
docstring: Google形式
命名: snake_case(クラスのみPascalCase)
APIの書き方
エンドポイントは `app/routers/` に機能ごとに分割
レスポンスは必ずPydanticスキーマを使用
エラーは `HTTPException` で返す
認証が必要なエンドポイントは `Depends(get_current_user)` を使用
注意点
環境変数は `.env` に定義し、`python-dotenv` で読み込む
DBマイグレーションは `alembic` を使用
テストはpytestで書く(`tests/` ディレクトリ)
本番環境ではuvicornをgunicornと組み合わせて使用
### カスタマイズのポイント
**DBの種類を変更**
MySQLやSQLiteを使う場合は、接続設定の部分を変更。
**認証方式を追記**
JWT認証、OAuth2など、使用している認証方式があれば追記。
**外部サービス連携**
S3、Redis、外部APIなど、連携しているサービスがあれば追記。
---
## テンプレート3: フルスタック(TypeScript統一)
フロントエンドもバックエンドもTypeScriptで書くプロジェクト向けです。monorepo構成を想定しています。
```markdown
# プロジェクト概要
{プロジェクト名}のフルスタックリポジトリ。
TypeScript統一、monorepo構成(pnpm workspace)。
## 構成
- `apps/web/` → Next.js フロントエンド
- `apps/api/` → Hono バックエンドAPI
- `packages/shared/` → 共通の型定義・ユーティリティ
## 開発コマンド
- `pnpm dev` → 全サービス起動
- `pnpm dev:web` → フロントエンドのみ起動
- `pnpm dev:api` → APIのみ起動
- `pnpm build` → 全サービスビルド
- `pnpm test` → 全テスト実行
- `pnpm lint` → 全Lint実行
## コードスタイル
- インデント: 2スペース
- セミコロン: なし
- 型定義: 厳格モード(strict: true)
- 共通の型は `packages/shared/src/types/` に定義
## 重要なルール
- フロントとバックで共通の型は `packages/shared` に置く
- APIのレスポンス型は `packages/shared/src/types/api.ts` で定義
- 環境変数は各アプリの `.env.local` に定義
- 新しいパッケージを追加したら `pnpm install` を実行
## ディレクトリ間の依存
apps/web → packages/shared
apps/api → packages/shared
web と api は直接依存しない。共通のものは shared を経由する。
## 注意点
- パッケージ追加は `pnpm add -w` または各ワークスペースで実行
- 型エラーは放置しない(CIで落ちる)
- `packages/shared` を変更したら、依存先のビルドも確認カスタマイズのポイント
ツールチェーンを変更
Turborepo、Nx、Lernaなど、使用しているツールに合わせて変更。
パッケージを追加
UIコンポーネント、設定ファイルなど、共通化しているものがあれば追記。
テンプレート4: データ分析(Python/Jupyter)
データ分析や機械学習プロジェクト向けです。
# プロジェクト概要
{プロジェクト名}のデータ分析リポジトリ。
Python 3.11 + pandas + scikit-learn。
## 環境構築
```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
jupyter labディレクトリ構成
`notebooks/` → Jupyter Notebook(探索・分析用)
`src/` → 再利用可能なPythonモジュール
`data/raw/` → 生データ(gitignore対象)
`data/processed/` → 加工済みデータ
`models/` → 学習済みモデル(gitignore対象)
`outputs/` → 分析結果・図表
命名規則
Notebook: `01_データ探索.ipynb` のように連番+内容
モジュール: snake_case
変数: snake_case(DataFrameは `df_` プレフィックス推奨)
コードスタイル
フォーマッター: black
Linter: ruff
型ヒント: 推奨(必須ではない)
重要なルール
生データは `data/raw/` に置き、直接編集しない
加工処理は再現可能な形でNotebookまたはスクリプトに残す
最終的な分析コードは `src/` にモジュール化
大きなファイルはgitignoreに追加
注意点
データファイルはGitにコミットしない
Notebookのセル出力は適宜クリアしてからコミット
機密データを扱う場合は `.env` で管理
再現性のためにランダムシードを固定する(`random_state=42`)
### カスタマイズのポイント
**使用ライブラリを追記**
PyTorch、TensorFlow、LightGBMなど、使用しているライブラリを追記。
**データソースを追記**
S3、BigQuery、社内DBなど、データの取得元を追記。
---
## テンプレート5: 個人開発(シンプル版)
小規模な個人開発向けのシンプルなテンプレートです。
```markdown
# プロジェクト概要
{プロジェクトの1行説明}
## 技術スタック
- 言語: {使用言語}
- フレームワーク: {使用フレームワーク}
- データベース: {使用DB、なければ削除}
## 開発コマンド
- `{開発サーバー起動コマンド}`
- `{テストコマンド}`
- `{ビルドコマンド}`
## ディレクトリ構成
- `src/` → ソースコード
- `tests/` → テスト
## 注意点
- {プロジェクト固有の注意点があれば記載}カスタマイズのポイント
このテンプレートは最小限の構成です。
必要に応じて以下を追加してください。
コードスタイルのルール
デプロイ方法
環境変数の説明
テンプレートを育てる
テンプレートをコピペした後は、使いながら育てていくのがおすすめです。
追記するタイミング
「毎回同じ説明をしている」と気づいたとき
Claudeが間違った提案をしてきたとき
新しいライブラリやツールを導入したとき
削除するタイミング
書いてある情報が古くなったとき
使わなくなったルールがあるとき
CLAUDE.mdは「生きたドキュメント」です。
プロジェクトと一緒に進化させていってください。
まとめ
CLAUDE.mdを設定しておくと、「毎回同じ説明をする」時間がなくなります。
まずはテンプレートをコピペして始める
自分のプロジェクトに合わせてカスタマイズ
使いながら育てていく
最初から完璧にしなくていいので、まずは入れてみてください。「あ、これ言わなくても伝わってる」と感じる瞬間が来ます。
CLAUDE.mdの設定ができたら、次はClaude Codeのskills機能を使ってみるのがおすすめです。
CLAUDE.mdがプロジェクトの「記憶」なら、skillsは「できること」を増やす機能。
議事録の要約やコードレビューなど、定型業務をコマンド一つで実行できるようになります。
