- Authors

- Name
- Youngju Kim
- @fjvbn20031
目次
- CLAUDE.md / AGENT.md とは何か
- 効果的なCLAUDE.mdの書き方
- 禁止パターンとルール設定の核心
- Skillsファイル完全攻略
- プロジェクト別CLAUDE.md実践例
- AIコーディング生産性を10倍高めるプロンプト戦略
- AIコーディングワークフローの実践
- チームのAI活用原則の策定
- マルチエージェントコーディング(未来展望)
- クイズ
1. CLAUDE.md / AGENT.md とは何か
AIコーディングアシスタントのメモリ問題
AIコーディングアシスタントは非常に強力ですが、根本的な制約があります。会話セッションが終わると、以前のコンテキストをすべて忘れてしまいます。「このプロジェクトはTypeScriptを使っていて、関数は50行以下で書き、console.logはプロダクションコードに使わない」というルールを毎回新しいセッションごとに説明し直さなければならないとすれば、莫大な非効率が生まれます。
この問題を解決するのが CLAUDE.md と AGENT.md です。
2つのファイルの違い
CLAUDE.md はAnthropicのClaude Code専用の設定ファイルです。Claude Codeはプロジェクトを開くと自動的にこのファイルを読み込み、プロジェクトのコンテキストを把握します。Claude Codeのすべての機能と深く統合されており、メモリシステム、許可/禁止コマンド設定、カスタムコマンド(Skills)などと連携します。
AGENT.md は汎用エージェント設定ファイルです。Claude Code以外にも、Cursor、GitHub Copilot Workspace、Devin、OpenHandsなど様々なAIコーディングツールで共通して使えるよう設計された標準フォーマットです。複数のAIツールを組み合わせて使うチームであれば、AGENT.mdをベースにしてツール固有の設定は別ファイルに分離する戦略が有効です。
ファイルの場所と階層構造
ファイルはプロジェクトのルートに置きます。
my-project/
CLAUDE.md # プロジェクト全体の設定
src/
CLAUDE.md # srcディレクトリ固有の設定
components/
CLAUDE.md # コンポーネント固有の設定
backend/
CLAUDE.md # バックエンド固有の設定
Claude Codeは現在作業中のファイルの場所からルートに向かってすべてのCLAUDE.mdを読み込み、マージします。これにより階層的な設定が可能になります。
- ルートCLAUDE.md:プロジェクト全体の共通ルール(コーディング標準、コミットメッセージ形式など)
- サブディレクトリCLAUDE.md:その領域に特化したルール(バックエンドAPI変更時は必ずOpenAPIスペックを更新するなど)
なぜこれが重要なのか
適切なコンテキストを提供されたAIアシスタントは、著しく高品質なコードを生成します。CLAUDE.mdがなければ、AIは一般的なベストプラクティスに従おうとしますが、プロジェクト固有の規約やアーキテクチャ上の決定事項を知ることができません。その結果、チームのコードスタイルと合わないコードを生成したり、禁止されたパターンを使ったり、既存のユーティリティ関数を再発明したりする失敗を繰り返します。
よく書かれたCLAUDE.mdは、AIをチームのシニアデベロッパーのように振る舞わせます。チームの決定事項と規約を深く理解した上で、それに合ったコードを生成するようになります。
2. 効果的なCLAUDE.mdの書き方
基本構造
効果的なCLAUDE.mdは以下のセクションで構成されます。
# Project Overview
プロジェクトの目的、技術スタック、アーキテクチャ概要
# Tech Stack
- Language: TypeScript 5.x
- Framework: Next.js 15 (App Router)
- Database: PostgreSQL + Prisma ORM
- Testing: Vitest + Testing Library
# Project Structure
src/
app/ # Next.js App Router
components/ # Reactコンポーネント
lib/ # ユーティリティ関数
types/ # TypeScript型定義
# Coding Standards
- 関数は最大50行
- any型の使用禁止
- すべての関数にJSDoc必須
- コンポーネントはnamed exportのみ使用
# Testing Requirements
- すべてのユーティリティ関数:単体テスト必須
- APIルート:統合テスト必須
- カバレッジ80%以上
# Git Conventions
- Conventional Commits準拠
- PRあたり200行以下
# Forbidden Patterns
- console.logをプロダクションコードで使用禁止
- any型禁止
- ハードコードされたURL禁止
Project Overviewセクション
最初のセクションはAIがプロジェクトの全体像を理解するためのものです。以下を含めましょう。
プロジェクトの目的:何を作るのか、誰が使うのか、核心的な価値は何かを2〜3文で明確に記述します。
ドメイン概念:プロジェクト固有のビジネス用語やドメイン概念を説明します。例えば「Order(注文)はDraft、Pending、Confirmed、Shipped、Delivered状態を持ち、各状態遷移にはビジネスルールがある」といった情報は、AIが正しいコードを生成する上で決定的です。
アーキテクチャの決定:モノレポ vs マルチレポ、マイクロサービス vs モノリス、レイヤードアーキテクチャ vs ヘキサゴナルアーキテクチャなど、主要なアーキテクチャの決定事項を記録します。
Tech Stackセクション
バージョンまで含めることが重要です。「React」ではなく「React 19」と明記することで、AIがそのバージョンの最新機能とパターンを使用します。Next.js 14のPages RouterとNext.js 15のApp Routerではコードパターンがまったく異なります。
Project Structureセクション
単にディレクトリを列挙するよりも、各ディレクトリの役割をコメントで説明する方が効果的です。
# Project Structure
src/
app/ # Next.js App Router - ページとレイアウト
(auth)/ # 認証が必要なルートグループ
(public)/ # 公開ルートグループ
api/ # API Route Handlers
components/ # 再利用可能なReactコンポーネント
ui/ # shadcn/uiベースの基本UIコンポーネント
features/ # 機能別コンポーネント(auth、dashboardなど)
lib/ # 純粋なユーティリティ関数(フレームワーク依存なし)
hooks/ # カスタムReact Hooks
stores/ # Zustand状態管理
types/ # TypeScript型定義
server/ # サーバー専用コード(DB、外部APIなど)
Coding Standardsセクション
抽象的な原則より具体的なルールの方が効果的です。
悪い例:「クリーンなコードを書く」 良い例:「関数は50行以下、パラメータは4個以下、ネストしたif文は2段階以下」
悪い例:「エラーハンドリングをうまくやる」 良い例:「すべての非同期関数はtry-catchで囲み、エラーは必ずlogger.error()で記録し、ユーザー向けエラーメッセージには'USER_FACING_ERROR'タグを付ける」
最新情報の維持
CLAUDE.mdはリビングドキュメントであるべきです。新しいライブラリを導入したらTech Stackに追加し、新しい禁止パターンを発見したらForbidden Patternsに追加してください。コードレビューで繰り返されるフィードバックがあれば、それをCoding Standardsに追加することで、AIが最初から正しいコードを生成するようになります。
3. 禁止パターンとルール設定の核心
「やってはいけないこと」を明示することの重要性
AIコーディングアシスタントと作業していると、特定の失敗が繰り返されることに気づきます。例えば:
- TypeScriptプロジェクトで型が複雑になると
anyを使う傾向 - 一時的に追加した
console.logデバッグコードを削除しない傾向 - 環境変数を使わずURLをハードコードする傾向
- 既存のユーティリティ関数を探さずに新しく作る傾向
このようなパターンをCLAUDE.mdのForbidden Patternsセクションに明示することで、AIが最初からこれらを避けるようになります。
実際のプロジェクトで発見された禁止パターン一覧
# Forbidden Patterns
## 型関連
- `any`型の使用禁止 → `unknown`または具体的な型を使用
- `@ts-ignore`の使用禁止 → 型エラーの根本原因を解決
- `as any`型キャスト禁止
## コード品質
- `console.log`、`console.debug`をプロダクションコードで使用禁止 → loggerを使用
- TODOコメントなしで未完成のコードをコミットしない(TODOにはissueリンクが必須)
- マジックナンバー禁止 → 名前付き定数として抽出
## アーキテクチャ
- コンポーネントから直接fetchを呼び出すことを禁止 → カスタムhookまたはserver actionを使用
- クライアントコンポーネントからDBを直接クエリすることを禁止
- ハードコードされたURL禁止 → 環境変数を使用
## セキュリティ
- ユーザー入力を直接SQLに挿入することを禁止 → Prisma ORMを使用
- クライアントにシークレットキーを公開することを禁止
- 認証なしに管理者用APIエンドポイントを作成することを禁止
## パフォーマンス
- useEffect内で無限ループを引き起こす依存配列のエラーに注意
- 大量のデータセットをクライアントサイドでフィルタリングすることを禁止 → DBレベルでフィルタリング
既存パターンを優先して使用する指示
AIに「新しく作る前に既存のコードを探せ」と指示することも重要です。
# Before Creating New Code
新しいコードを書く前に、常に以下を確認してください:
1. src/lib/にすでに実装されたユーティリティがないか
2. src/hooks/に類似のカスタムフックがないか
3. src/components/ui/に再利用可能なコンポーネントがないか
4. src/server/に再利用可能なサーバーアクションがないか
重複実装はコードベースの保守性を著しく低下させます。
4. Skillsファイル完全攻略
Skills(カスタムコマンド)とは
Skillsは再利用可能なAIコマンドテンプレートです。よく使うプロンプトをファイルとして保存しておき、スラッシュ(/)コマンドで素早く実行できます。Claude Codeでは.claude/commands/ディレクトリにMarkdownファイルとして保存し、チームメンバー全員が同じ高品質なプロンプトを一貫して使えるようにします。
.claude/
commands/
commit.md
pr-description.md
test.md
review.md
docs.md
refactor.md
security-check.md
performance-check.md
必須Skills詳細ガイド
/commit - インテリジェントなコミットメッセージ生成
現在のステージされた変更を分析し、Conventional Commits形式で
コミットメッセージを作成してください。日本語で記述。
形式:
type(scope): subject
body(任意、変更理由と影響の説明)
footer(任意、Breaking ChangeまたはIssue番号)
typeの選択基準:
- feat: 新機能追加
- fix: バグ修正
- refactor: 機能変更なしのコード改善
- test: テストの追加/修正
- docs: ドキュメント変更
- chore: ビルド/設定変更
- perf: パフォーマンス改善
scopeは変更されたモジュール/コンポーネント名を使用。
subjectは50文字以下、命令形で記述。
/pr-description - PR説明の自動生成
現在のブランチの変更を分析してPR説明を作成してください。
## 変更サマリー
- (箇条書きで主要な変更点を列挙)
## 変更理由
(なぜこの変更が必要かを説明)
## テスト方法
- [ ] (検証方法のチェックリスト)
## スクリーンショット
(UI変更がある場合、スクリーンショットが必要かどうかを明示)
## 注意事項
(レビュアーが知っておくべき特記事項)
/test - テストコードの自動生成
選択されたコードの単体テストを作成してください。
Vitest + Testing Libraryを使用。
以下を含めること:
1. 正常系(ハッピーパス)
2. 境界値テスト
3. エラーケース(例外処理)
4. エッジケース(null、undefined、空配列など)
テスト命名: should [expected behavior] when [condition] 形式
モックは最小限に抑え、実際の実装に近い形で記述。
/review - コードレビューの自動化
このコードをレビューしてください。以下の観点から分析し、
各項目に深刻度(Critical/Major/Minor)を表示してください:
1. バグの可能性
- 論理エラー、未処理のエッジケース、競合状態など
2. セキュリティの脆弱性
- 認証/認可エラー、インジェクション脆弱性、機密情報の露出など
3. パフォーマンス問題
- 不要な再レンダリング、N+1クエリ、メモリリークなど
4. 可読性の改善点
- 複雑なロジック、不明確な変数名、重複コードなど
5. テスタビリティ
- 依存性の注入、純粋関数の使用、モックのしやすさなど
各指摘事項には改善コード例を含めてください。
/docs - ドキュメントの自動生成
このコードのJSDocドキュメントを作成してください。
各関数/クラス/型について:
- @description: 機能説明(2〜3文)
- @param: 各パラメータの型、説明、サンプル値
- @returns: 戻り値の型と説明
- @throws: 発生しうる例外
- @example: 実際の使用例コード
複雑なビジネスロジックがある場合はアルゴリズムの説明も含めてください。
/refactor - リファクタリング提案
このコードをリファクタリングしてください。
目標:
- 重複の除去(DRY原則)
- 可読性の向上(複雑度の削減)
- SOLID原則の適用
- テスタビリティの向上
制約:
- 既存の機能は変更しないこと
- パブリックAPI(関数シグネチャ、モジュールインターフェース)は維持すること
- 段階的にリファクタリング(一度に多く変えすぎない)
リファクタリング前後を比較して示し、各変更の理由を説明してください。
/security-check - セキュリティ脆弱性チェック
このコードのセキュリティ脆弱性をOWASP Top 10基準で確認してください。
特に確認すること:
1. インジェクション(SQL、コマンド、XSS)
2. 認証/認可エラー
3. 機密データの露出
4. セキュリティ設定の誤り
5. 既知の脆弱性を持つコンポーネントの使用
各脆弱性について:
- リスクレベル(High/Medium/Low)
- 攻撃シナリオの説明
- 修正方法とコード例
/performance-check - パフォーマンス分析
このコードのパフォーマンス問題を分析してください。
確認項目:
1. アルゴリズムの複雑度(時間/空間)
2. 不要な再計算(メモ化の可否)
3. データベースクエリの最適化(N+1、インデックス活用)
4. ネットワークリクエストの最適化(バッチ処理、キャッシュ)
5. レンダリングの最適化(Reactコンポーネントの場合)
各問題に対して改善コード例を含めてください。
Skillsを書くためのヒント
良いSkillファイルの特徴:
-
明確な出力形式の指定:「分析して」より「次の形式で分析結果を書いて」の方が一貫した結果を生みます。
-
制約条件の明示:何をすべきかと同じくらい、何をすべきでないかも重要です。
-
コンテキストの自動含有:
$SELECTION、$FILE、$PROJECTなどの変数を活用して現在のコンテキストを自動的に含めます。 -
漸進的な改善:最初から完璧なSkillを作ろうとせず、使いながら不足している点を継続的に補完します。
5. プロジェクト別CLAUDE.md実践例
Next.jsフルスタックアプリ
# E-Commerce Platform
## Overview
B2Cイーコマースプラットフォーム。顧客ショッピング、
注文管理、管理者ダッシュボードで構成。
MAU 50万、1日5千件の注文を処理。
## Tech Stack
- Next.js 15 (App Router, RSC)
- TypeScript 5.x (strictモード)
- PostgreSQL 16 + Prisma ORM
- Redis(セッション、キャッシュ)
- Stripe(決済)
- Vercel(デプロイ)
## Domain Model
- User: 顧客アカウント、複数配送先対応
- Product: SKUベースの在庫管理、カテゴリツリー
- Order: Draft to Pending to Confirmed to Shipped to Delivered to Cancelled
- Cart: Redisベース、未ログインユーザーも対応(セッションベース)
## Architecture Rules
- サーバーコンポーネントからDBを直接クエリ(Prisma)
- クライアントからのAPI呼び出しは/apiルート経由
- 複雑なビジネスロジックはsrc/server/services/に配置
- 決済関連コードは必ずサーバーサイドで
## Forbidden
- クライアントコンポーネントでPrismaを直接使用
- 決済金額をクライアントで計算(必ずサーバーで)
- any型
- ハードコードされた価格/割引率
Goマイクロサービス
# Order Service
## Overview
注文処理マイクロサービス。gRPC内部通信、REST外部公開。
目標: 秒間500 TPS処理。
## Tech Stack
- Go 1.23
- Fiber(HTTP)、gRPC(内部通信)
- PostgreSQL + sqlc(型安全クエリ)
- Redis(分散ロック、キャッシュ)
- OpenTelemetry(分散トレーシング)
## Code Style
- エラーは必ず上位に伝搬(errors.Wrapを使用)
- すべてのDBクエリにコンテキストを含める(ctxパラメータ必須)
- ログはzerolog構造化ログのみ使用
- インターフェースを先に定義し、実装は後で
## Project Layout (Standard Go Layout)
cmd/ # mainパッケージ
internal/ # 外部に公開しないコード
domain/ # ドメインモデルとインターフェース
service/ # ビジネスロジック
repository/ # DBアクセス層
handler/ # HTTP/gRPCハンドラ
pkg/ # 外部公開可能なユーティリティ
## Forbidden
- recoverなしのpanic使用禁止
- ハンドラでcontext.Background()を直接使用禁止
- グローバル状態禁止
- goroutineリークを引き起こすパターン
Java Spring Boot
# Payment Service
## Overview
決済処理サービス。PCI-DSS準拠が必須。
Kafkaイベントベースの非同期処理。
## Tech Stack
- Java 21(Virtual Threads活用)
- Spring Boot 3.x
- Spring Data JPA + Hibernate
- Apache Kafka(イベントストリーミング)
- Vault(シークレット管理)
## Architecture
Hexagonal Architecture(Ports & Adapters):
- domain/: 純粋なドメインモデル(依存なし)
- application/: ユースケース、ポートインターフェース
- infrastructure/: アダプター(DB、Kafka、外部API)
- interfaces/: コントローラー、DTO
## Rules
- ドメイン層にSpringの依存なし
- すべての金額はBigDecimal(doubleやfloatは絶対禁止)
- 外部決済API呼び出しにはCircuit Breakerパターンを適用
- 補償トランザクションパターンで分散トランザクションを処理
## Forbidden
- BigDecimalの代わりにdoubleで金額計算
- 決済情報をマスキングなしでログ出力
- 同期決済API呼び出しのタイムアウト未設定
6. AIコーディング生産性を10倍高めるプロンプト戦略
Context-firstプロンプティング
AIへのリクエスト時に、背景 → 制約 → リクエストの順序でプロンプトを構成すると、より良い結果が得られます。
悪い例:
決済処理関数を作って
良い例:
【背景】イーコマースプラットフォームでStripeを使って決済を処理しています。
現在src/server/services/payment.tsファイルに決済関連ロジックがあります。
【制約】
- 金額は必ずサーバーで計算する(クライアント入力を信頼しない)
- 決済失敗時のリトライは最大3回、指数バックオフを使用
- すべての決済イベントはaudit logに保存
【リクエスト】
カートのチェックアウト時にStripe Payment Intentを作成する
processCheckout関数を書いてください。TypeScript、async/awaitを使用。
段階的な分解リクエスト
複雑な機能を一度に要求すると、AIが重要な詳細を見落としたり、誤った設計を選択したりすることがあります。大きな機能を小さな単位に分解して、段階的にリクエストしましょう。
ステップ1: 「ユーザー認証システムのデータベーススキーマを設計して」
ステップ2: 「このスキーマをベースにPrismaモデルを作成して」
ステップ3: 「ログインのビジネスロジックをサービス層に実装して」
ステップ4: 「このサービスを使うAPIルートハンドラを作って」
ステップ5: 「各レイヤーのテストを書いて」
例示(Few-shot Prompting)
既存のコードパターンを例として提供すると、AIがチームのスタイルに合ったコードを生成します。
私たちのプロジェクトはこのパターンでAPIルートを書いています:
【例】
export async function GET(req: NextRequest) {
try {
const session = await getServerSession(authOptions)
if (!session) return unauthorized()
const data = await getUserData(session.user.id)
return ok(data)
} catch (error) {
logger.error('Failed to get user data', { error })
return internalError()
}
}
このパターンで注文リストを取得するAPIルートを作成してください。
「絶対にやってはいけないこと」の明示
プロンプトでも禁止事項を明確にすることで、AIの逸脱を防ぎます。
商品検索機能を実装してください。
絶対にやってはいけないこと:
- クライアントサイドで全データを取得してフィルタリング(パフォーマンス問題)
- 検索ワードをSQLに直接挿入(インジェクション脆弱性)
- キャッシュなしで毎リクエストDBをフルスキャン
チェーン・オブ・ソートの誘導
複雑な問題はAIに段階的に考えさせると、より正確な結果が得られます。
このコードにパフォーマンス問題があるか分析してください。
分析前に以下の順序で進めてください:
1. コードがどんな作業をしているかを説明
2. 時間/空間計算量の分析
3. 潜在的なボトルネックの特定
4. 改善案の提示
7. AIコーディングワークフローの実践
朝のルーティン
効果的なAIコーディングの1日の始め方:
- CLAUDE.mdの確認:昨日チームが新しいルールを追加したか確認
- Issueの把握:今日処理するIssueの要件を明確に理解
- AIに実装計画を依頼:コードを書く前にアプローチ方法をレビュー
- 段階的な実装:計画した順序でAIに実装を依頼
- レビュー:
/reviewskillでAI一次レビュー、人による二次レビュー
コードレビューワークフロー
AIコードレビューと人によるコードレビューを組み合わせる方法:
AI一次レビュー(自動化):
- PR作成時にCIから
/reviewskillを自動実行 - バグ、セキュリティ、パフォーマンス問題の自動検出
- コーディング標準への準拠確認
人による二次レビュー(核心に集中):
- AIが発見した技術的問題はすでに対処済み
- ビジネスロジックの適切さに集中
- アーキテクチャ決定の長期的な影響を評価
- チームの知識共有とメンタリング
デバッグワークフロー
エラー発生 → コンテキスト収集 → AIに分析依頼 → 解決策の検証
コンテキスト収集チェックリスト:
- エラーメッセージ全文(スタックトレース含む)
- エラー発生時の入力値
- 最近変更されたコード(git diff)
- 関連ログ(エラーの前後30行)
- 環境情報(開発/ステージング/プロダクション)
AIへのリクエスト時:
「上記のエラーが発生しました。考えられる原因を3つ分析して、
それぞれのデバッグ方法を教えてください」
ドキュメント化ワークフロー
コード完成後のドキュメント化をAIで自動化:
- 機能実装完了
/docsskillでJSDocを自動生成- 自動生成されたドキュメントをレビューしてビジネスコンテキストを補完
- READMEの更新(新機能の場合)
- APIドキュメントの自動生成(OpenAPIスペックの更新)
8. チームのAI活用原則の策定
AI活用ガイドラインのドキュメント化
チーム全体がAIを一貫して安全に活用するには、明確なガイドラインが必要です。
# チームAI活用ガイドライン
## 許可される範囲
- コード生成とリファクタリング
- テストコードの作成
- ドキュメント化とコメント
- デバッグ支援
- コードレビューの補助
## 常に人がレビューすべき領域
- セキュリティ関連コード(認証、認可、暗号化)
- 決済および金融処理ロジック
- 個人情報処理コード
- アーキテクチャレベルの決定
## AI生成コードの管理
- AIが生成したコードでも、コミット前に必ず理解してレビューする
- 「AIが作ったから正しいはずだ」は禁止
- 理解できないコードはAIに説明を依頼する
AI依存度の管理
AIツールに過度に依存すると、開発者の核心的な能力が退化する可能性があります。健全なバランスを保つ方法:
毎日自分でコーディング:AIの助けなしに小さな機能やバグを自分で解決する練習を維持します。これは緊急事態(AIツールの障害、インターネットがない環境)にも備え、基礎的な能力を維持させます。
AIの結果物を理解する:AIが生成したコードをそのままコピーせず、なぜそのように書かれたのかを理解します。わからない部分はAIに説明を依頼し、このプロセスが学習の機会となります。
判断力の維持:AIはツールです。アーキテクチャの決定、ビジネスロジックの適切さ、セキュリティレビューなどの核心的な判断は常に人が行います。
ジュニア開発者向けAIガイドライン
ジュニア開発者がAIを誤った方法で活用すると、成長が妨げられる可能性があります。
推奨される方法:
- AIにコードを生成させ、そのコードを学習資料として活用する
- AIに概念の説明を依頼し、自分で実装を試みる
- AIが生成したコードの代替案を自分で考えてみる
避けるべき方法:
- 理解せずにAIのコードをコピーする
- エラーが出たらすぐにAIに渡す(まず自分で30分は試みる)
- 設計の考察をすべてAIに委任する
9. マルチエージェントコーディング(未来展望)
複数のAIエージェントが同時にコーディングする時代
2026年現在、単一のAIエージェントが一度に一つの作業を処理する方式から、複数のエージェントが並行して異なる機能を同時に開発する方式への移行が始まっています。
例えば:
- エージェントA: 新しい決済APIの実装(feature/payment-v2ブランチ)
- エージェントB: 決済APIのテスト作成(feature/payment-v2-testsブランチ)
- エージェントC: 既存バグの修正(fix/order-status-bugブランチ)
- 人間: エージェントのPRレビューとマージの判断
エージェント間の競合防止戦略
複数のエージェントが同時に作業すると、コードの競合は必然的に発生します。これを防ぐ戦略:
作業領域の分離:各エージェントに明確に分離されたファイル/モジュール領域を割り当てます。共有ファイル(設定ファイル、型定義など)は一度に一つのエージェントだけが修正するよう調整します。
頻繁なリベース:各エージェントのブランチをmainに頻繁にリベースして、競合を早期に発見し解決します。
インターフェース優先の契約:エージェントが共有するインターフェース(APIスペック、型定義)をまず確定し、各エージェントが独立して実装します。
Worktreeベースの並行開発
Git Worktreeを活用すると、同じリポジトリで複数のブランチを同時にチェックアウトして並行開発が可能になります。
# 最初の作業スペース
git worktree add ../project-feature-a feature/payment-v2
# 2番目の作業スペース(別ディレクトリ、別ブランチ)
git worktree add ../project-feature-b feature/user-profile-v2
# ワークツリーの一覧を確認
git worktree list
Claude Codeはこのワークツリーパターンを認識し、各ワークツリーで独立して動作できます。将来は各ワークツリーごとにAIエージェントが割り当てられ、チームの開発速度がエージェントの数に比例して増加する時代が来るでしょう。
CLAUDE.mdの未来
マルチエージェント時代において、CLAUDE.mdはさらに重要になります。複数のエージェントが一貫した方法でコードを書くための唯一の「共通言語」となるからです。将来的にCLAUDE.mdは単なる設定ファイルを超えて、AIエージェントチームのためのチーム憲法となるでしょう。
10. クイズ
Q1. CLAUDE.mdとAGENT.mdの最大の違いは何ですか?
答え: CLAUDE.mdはClaude Code専用の設定ファイルで、AGENT.mdは複数のAIツールで汎用的に使える標準フォーマットです。
解説: CLAUDE.mdはAnthropicのClaude Codeと深く統合されており、メモリシステム、許可/禁止コマンド、Skillsと連携します。AGENT.mdはCursor、GitHub Copilot Workspace、Devinなど様々なAIツールと互換性のある汎用設定フォーマットです。複数のAIツールを組み合わせて使うチームでは、AGENT.mdをベースにしてツール固有の設定は別ファイルに分離する戦略が有効です。
Q2. CLAUDE.mdの階層的な設定構造において、サブディレクトリのCLAUDE.mdはどのように適用されますか?
答え: Claude Codeは現在作業中のファイルの場所からルートに向かってすべてのCLAUDE.mdを読み込み、マージします。より具体的な(下位ディレクトリの)設定が上位の設定を上書きまたは補完します。
解説: ルートCLAUDE.mdにプロジェクト全体の共通ルールを定義し、サブディレクトリCLAUDE.mdにその領域に特化したルールを追加します。例えば、ルートにはTypeScript標準を定義し、backend/ディレクトリには「すべてのAPIエンドポイント変更時にOpenAPIスペックの更新が必須」などのバックエンド固有ルールを追加できます。
Q3. Skills(.claude/commands/)ファイルを使う最大のメリットは何ですか?
答え: チーム全体が一貫した高品質なプロンプトを再利用できるため、個人の能力に依存せず、標準化された方法でAIを活用できます。
解説: Skillsがなければ、各自が異なる品質のプロンプトを使うことになり、AIの出力品質がチームメンバーによって異なります。/review skillを共有すれば、すべてのチームメンバーが同じ基準(バグ、セキュリティ、パフォーマンス、可読性)でAIコードレビューを受けられます。SkillsはGitでバージョン管理されるため、チームのAI活用方法が継続的に改善されます。
Q4. Context-firstプロンプティングの正しい順序はどれですか?
答え: 背景(Background) → 制約(Constraints) → リクエスト(Request)の順序です。
解説: 背景ではどんなプロジェクトか、どの技術スタックを使っているか、関連する既存コードは何かを説明します。制約ではパフォーマンス要件、セキュリティ要件、使うべきパターンなどを明示します。最後に具体的なリクエストをします。この順序は、AIがリクエストを処理する際に最も適切なコンテキストを最初に把握し、制約の中で最善の解決策を見つけるよう誘導します。
Q5. マルチエージェントコーディング環境でコードの競合を防ぐ最も効果的な戦略は何ですか?
答え: 作業領域の分離、頻繁なリベース、インターフェース優先の契約の3つの戦略を組み合わせることです。
解説: 各エージェントに明確に分離されたファイル/モジュール領域を割り当て(作業領域の分離)、各エージェントのブランチをmainに頻繁にリベースして競合を早期発見し(頻繁なリベース)、エージェントが共有するインターフェースをまず確定して独立して実装します(インターフェース優先の契約)。Git Worktreeを活用すると、同じリポジトリで複数のブランチを同時にチェックアウトして並行開発が可能になります。
おわりに
CLAUDE.md、AGENT.md、Skillsは単なる設定ファイルではありません。これらはAIと人間が共に働く方法を定義するチームのAIコラボレーション契約書です。
よく書かれたCLAUDE.md一つで、AIはチームのシニアデベロッパーのように行動し、よく設計されたSkillsでチーム全体が一貫した高品質なコードを生産します。AIツールが進化するほど、これらの設定ファイルの重要性はさらに高まります。
今日すぐにプロジェクトにCLAUDE.mdを作り、最もよく使うプロンプト一つをSkillとして作ってみましょう。最初は小さく始めて、使いながら少しずつ発展させていくのが最善の方法です。