
CLAUDE.md / AGENTS.md に何を書くべきか
AI エージェントに "プロジェクトの地図" を渡すための実践テンプレート。
この記事の結論
CLAUDE.md(Claude Code) とAGENTS.md(Codex) は、AI に毎回プロジェクト文脈を渡すための 設定ファイル です。同じ役割で、書き方も似ています。- 書くべき項目は 8 つ: 概要 / アーキテクチャ / コマンド / テスト / 規約 / セキュリティ / 触らない場所 / PR チェックリスト。
- 書きすぎは逆効果です。プロジェクト全体に効くものだけを残し、タスク固有の詳細は別ファイルに分けます。
- 運用しながら更新します。「AI が同じミスを 2 回した」ら、ルールに追加する が改善サイクル。
- モノレポでは階層別に置けます。下位ファイルが上位を上書き / 追加する設計で、領域ごとのルールを分離できます。
「CLAUDE.md / AGENTS.md って、何を書けばいいんですか」
AI コーディングツールをチームに導入するときに、最初にぶつかる質問です。テンプレートが公式にあるわけでもなく、組織ごとに最適解が違うので、最初は手探りになります。
この記事では、min's で実際に運用しているテンプレートを公開しつつ、書くべきこと・書きすぎてはいけないこと・運用しながらの更新方法を整理します。
CLAUDE.md / AGENTS.md とは何か
Anthropic の Claude Code には CLAUDE.md という仕組みがあり、リポジトリに置いておくと Claude の system prompt に自動的に含められる 設計です (Using CLAUDE.md files / Anthropic)。OpenAI の Codex にも AGENTS.md という同じ役割のファイルがあり、グローバル (~/.codex)、プロジェクト (Git ルートから現在のディレクトリ)、サブディレクトリの 3 階層で重なる設計です (Custom instructions with AGENTS.md / OpenAI Developers)。
つまり、これらのファイルは AI に「プロジェクトの地図」を渡す ためのものです。
- 何を作っているか
- どんな構造か
- どんな規約があるか
- どんなコマンドを使うか
- 何に触ってはいけないか
これらを書いておけば、AI は毎回ゼロから学ばずに作業を始められます。
なぜ 1 つのファイルで済むのか
「README に書けばいいのでは?」と思うかもしれません。違いは 「AI が必ず読む」「人間が読むときには重要ではない情報も入る」 ことです。
README は人間向けに「使い方」「インストール」「ライセンス」を書きます。CLAUDE.md / AGENTS.md は AI 向けに「触る前提」「制約」「規約」を書きます。両方を使い分けるのが現実的です。
書くべき 8 項目
実際に運用しているテンプレートを、項目ごとに紹介します。コード例はサンプルなので、自社プロジェクトに合わせて読み替えてください。
1. プロジェクト概要 (Project Overview)
最初の数行で、プロジェクトの目的を AI に伝えます。
## Project Overview
This is a multi-tenant booking SaaS for hair salons.
- Frontend: Next.js 15 App Router, TypeScript, Tailwind
- Backend: Vercel serverless, Supabase (Postgres + RLS)
- Auth: Clerk
- Payments: Stripe Subscriptions
- Currently in private beta with 5 customers.
「何を作っているか」「主要な技術スタック」「現在のフェーズ」を 1 段落で。事業フェーズ (PoC / MVP / 本番運用) を書いておくと、AI が品質ラインを推測しやすくなります。
2. アーキテクチャ (Architecture)
ディレクトリ構成と、各ディレクトリの責務を明示します。
## Architecture
- `app/` — Next.js routes (Server Components + Server Actions)
- `lib/domain/` — domain models, business rules (pure functions)
- `lib/db/` — Supabase repositories (only place that calls SQL)
- `lib/auth/` — Clerk wrapper (only place that reads session)
- `lib/integrations/` — external SaaS clients (Stripe, SendGrid)
- `components/` — UI components (presentational)
Rule: business logic lives in `lib/domain/`. Routes only call use cases.
Rule: no direct SQL outside `lib/db/`.
Rule: no direct `auth()` calls outside `lib/auth/`.
「ディレクトリの責務」「触っていい / 触ってはいけない境界」をルールとして書きます。
3. コマンド (Commands)
開発・テスト・デプロイで使うコマンドを一覧で。
## Commands
- Development: `pnpm dev`
- Type check: `pnpm typecheck`
- Lint: `pnpm lint`
- Test (unit): `pnpm test`
- E2E: `pnpm e2e`
- Build: `pnpm build`
- Migration (new): `pnpm db:migration:new <name>`
- Migration (apply): `pnpm db:migrate`
Before opening a PR, run: typecheck, lint, test.
AI が「PR を出す前に何を実行すべきか」を判断できるよう、「必ず実行すべきコマンドの順序」を明示 します。
4. テスト (Testing)
テスト方針と、AI に守ってほしいルールを書きます。
## Testing
- Unit tests with Vitest, located next to source files (`*.test.ts`).
- E2E tests with Playwright in `e2e/`.
- When adding a new function in `lib/domain/`, add a unit test.
- Tests should cover happy path + at least 2 edge cases.
- For mutations (Server Actions), add integration tests in `lib/integrations/__tests__/`.
- Snapshot tests are discouraged. Prefer explicit assertions.
「どこに、どんなテストを書くか」を明示します。AI はこのルールに従ってテストを自動追加するようになります。
5. コーディング規約 (Coding Rules)
スタイル、命名、責務分割のルール。
## Coding Rules
- TypeScript strict mode. No `any` (use `unknown` + type narrowing).
- Domain functions are pure. Side effects only in `lib/db/`, `lib/integrations/`,
and route handlers.
- Server Actions for mutations, not API routes (App Router).
- Component file names: kebab-case. Component names: PascalCase.
- Use `zod` for input validation at API boundaries.
- Date handling: `date-fns` only. No `moment`, no native `Date` for arithmetic.
- Use `Result` type for fallible operations, not exceptions.
「文字色やスタイルの好み」より、「設計上の判断」 を中心に書きます。
6. セキュリティ (Security)
セキュリティ上の重要なルール。
## Security
- Always filter by `tenant_id` in repositories. Supabase RLS is the safety net,
not the primary defense.
- Never log user PII, payment tokens, or Stripe signatures.
- Use `process.env.STRIPE_WEBHOOK_SECRET` for verification. Don't hardcode.
- Permission checks happen at the use case level, not in components.
- No raw SQL strings. Always use parameterized queries via Supabase client.
- Input from external sources (Webhooks, file uploads) must be validated with
zod before reaching domain code.
セキュリティに関する 「絶対やってはいけないこと」 を明示します。AI への警告線になります。
7. 触らない場所 (Do Not Touch)
AI に触らせたくないファイル / ディレクトリ。
## Do Not Touch
- `supabase/migrations/` — do not edit existing migrations. Add new ones only
via `pnpm db:migration:new`.
- `.env*` — never commit, never reference values directly.
- `lib/billing/stripe-webhook.ts` — discuss before changing. Idempotency is fragile.
- `lib/auth/clerk-server.ts` — discuss before changing. Auth boundary.
- Anything in `infra/` — infrastructure config, human review required.
- `package.json` "dependencies" — propose, but don't add without review.
「触らない場所」を明示しないと、AI が勝手にマイグレーションを書き換えたり、依存ライブラリを追加したりする事故が起きます。
8. PR チェックリスト (PR Checklist)
PR を出す前に AI が自分で確認することを並べます。
## PR Checklist
Before opening a PR, ensure:
- [ ] `pnpm typecheck` passes
- [ ] `pnpm lint` passes
- [ ] `pnpm test` passes
- [ ] New domain functions have unit tests
- [ ] No new direct DB queries outside `lib/db/`
- [ ] No PII in logs
- [ ] PR description includes a 1-line summary and tested scenarios
- [ ] If changing authentication or billing, request explicit review
このチェックリストは PR テンプレートにも貼り付けて、人間レビュアーと AI で同じ観点を共有します。
ここまでで「自社の CLAUDE.md / AGENTS.md を作りたい」と感じたら、現状のコードベースに合わせてテンプレートをカスタマイズします。
CLAUDE.md / AGENTS.md の整備を相談する →
書きすぎてはいけないこと
OpenAI の Codex ベストプラクティスでは、AGENTS.md が 肥大化したらタスク別ドキュメントへ分ける ことが推奨されています (Codex Best Practices / OpenAI Developers)。Anthropic の CLAUDE.md ファイル解説でも、簡潔で読みやすく保つ ことが推奨されています (Using CLAUDE.md files / Anthropic)。
以下は書かないほうがいい項目です。
| 書かないもの | 代わりに置く場所 |
|---|---|
| 個別機能の実装詳細 | docs/features/<name>.md |
| 個別 API の仕様 | OpenAPI / Swagger、または docs/api/ |
| 個別バグの修正履歴 | PR 履歴と issue で十分 |
| 設計の歴史的経緯 | docs/decisions/ の ADR |
| 全機能のリスト | README で十分 |
| 開発環境のセットアップ手順 | README で十分 |
| ライブラリの選定理由 | ADR (Architecture Decision Records) |
CLAUDE.md / AGENTS.md は、毎回読まれる ので、長すぎると AI のコンテキスト消費が増えます。「全プロジェクト共通で効くルール」だけを残します。
適切なサイズの目安
- ルート
CLAUDE.md/AGENTS.md: 200〜400 行 - サブディレクトリ用: 30〜100 行
- これを超えそうなら、別ファイルに分割するサイン
言語・フレームワーク別の書き方
技術スタックによって、強調すべき項目が変わります。
TypeScript / Next.js プロジェクト
- 型の使い方 (any 禁止、Result 型、zod)
- App Router 固有の慣習 (Server Actions vs API Routes)
- フロント・バック境界での型共有
Python / FastAPI プロジェクト
- 型ヒントの方針 (mypy strict、Pydantic モデル)
- async / sync の使い分け
- 依存性注入のパターン
- venv / poetry / pip の使い分け
Ruby on Rails プロジェクト
- ActiveRecord のスコープ、コールバックの方針
- Strong Parameters の徹底
- Service Object の使い方
- N+1 クエリ防止の運用
Go プロジェクト
- エラーハンドリングのパターン
- インターフェースの設計方針
- ディレクトリ構成 (
cmd/,internal/,pkg/)
それぞれ書くべき項目は違いますが、「設計判断」「絶対やらないこと」「コマンド」「テスト方針」 という骨格は共通です。
モノレポ・サブディレクトリの扱い
モノレポなどでは、ディレクトリ階層に応じて CLAUDE.md / AGENTS.md を置けます。Codex は親ディレクトリから現ディレクトリまでをマージして読む設計です (Custom instructions with AGENTS.md / OpenAI Developers)。
/AGENTS.md ← 全体ルール (共通の規約、セキュリティ、コマンド)
/apps/web/AGENTS.md ← Web 固有のルール (Next.js 固有、UI 規約)
/apps/api/AGENTS.md ← API 固有のルール (FastAPI 固有、Pydantic)
/packages/shared/AGENTS.md ← 共通ライブラリ固有のルール
下位のファイルが上位の指示を上書き / 追加できる構造なので、領域ごとにルールを分けたいときに便利です。
サブディレクトリ AGENTS.md の例
## apps/api Specific Rules
- All endpoints use Pydantic models for input/output.
- Database access only via `app.db.repositories.*`.
- Async by default. Sync allowed only in CLI scripts.
- Tests in `tests/` mirror the structure of `app/`.
ルートに書くのではなく、ディレクトリ固有のルールはサブディレクトリの AGENTS.md に書く方が、AI のコンテキスト消費を抑えられます。
運用しながら更新する
CLAUDE.md / AGENTS.md は、一度作って終わり ではありません。運用しながら更新していきます。
更新タイミング
- AI が同じミスを 2 回した
- レビューで同じ指摘を 2 回した
- 新しい開発標準を導入した (新ライブラリ、新パターン)
- セキュリティインシデントの再発防止策を入れる
- 採用したアーキテクチャ判断を周知したい
更新ワークフロー
- レビュー時に「これ、ルールに追記したい」と気づく
- その場で 1〜2 行のドラフトをコミットメッセージか PR コメントに残す
- 週次の振り返り (15 分) で、追記候補をまとめてレビュー
- 合意したものを CLAUDE.md / AGENTS.md にコミット
- チーム全員に Slack で通知
更新内容は、1〜2 行の簡潔な指示 に絞ります。長くなりすぎたら、別ファイルに分割します。
陳腐化対策
3〜6 ヶ月に 1 回、全文を読み直して陳腐化した項目を整理します。Anthropic の Claude Code 解説でも、設定は古いモデルに合わせたまま放置すると制約として働いてしまう ため、3〜6 ヶ月に 1 回見直すことが推奨されています (Claude Code docs / Anthropic)。
陳腐化のサイン:
- 使っていないライブラリの注意事項
- 廃止したエンドポイントへの言及
- もう違う方針に変えた設計判断
- 一度しか起きていない事故の注意 (一般化できないなら削る)
min's での運用例
min's の案件で実際に使っているテンプレートのフルバージョンは、相談時に共有しています。一般的に、以下のサイズで運用しています。
| 規模 | 行数 | 更新頻度 |
|---|---|---|
ルート CLAUDE.md / AGENTS.md | 200〜400 行 | 月 2〜4 回 |
| サブディレクトリ用 | 30〜100 行 | 月 1〜2 回 |
| 四半期に 1 回 | — | 全文レビュー |
多言語・多技術スタックでの運用
複数言語のリポジトリ (TypeScript + Python など) では、共通ルールをルートに置き、各言語固有のルールをサブディレクトリに置きます。これによって AI が、作業対象のファイルに応じて適切なルールを参照できます。
CLAUDE.md / AGENTS.md の整備を依頼したい方へ
min's では、CLAUDE.md / AGENTS.md のテンプレート整備、既存リポジトリの AI フレンドリー化、運用ルールの設計を支援しています。
以下のような状態であれば、ご相談ください。
-
CLAUDE.md / AGENTS.md のテンプレートが欲しい
-
既存のコードベースに合わせて整備したい
-
運用ルールを定期的に見直す体制を作りたい
-
モノレポでの階層分割の設計を相談したい
-
多言語スタック (TS + Python など) での運用を相談したい
次に読む記事
参考
- Custom instructions with AGENTS.md / OpenAI Developers — AGENTS.md の階層 (グローバル / プロジェクト / サブディレクトリ) とマージ動作
- Codex Best Practices / OpenAI Developers — AGENTS.md の肥大化対策、タスク別ドキュメントへの分割
- Using CLAUDE.md files / Anthropic — CLAUDE.md の役割、自動的に system prompt に含まれる仕組み、簡潔さの重要性
- Claude Code docs / Anthropic — ハーネス全体の設計、3〜6 ヶ月での設定見直しの推奨