02-02 CLAUDE.md 設計。自分のミニプロジェクト用 CLAUDE.md を設計・作成する。
自分のミニプロジェクト用 CLAUDE.md を設計・作成する演習です。
所要時間: 約 70 分
前提: /learn-ce-analyze(02-01)完了済み
スキル対応: Context Engineering(情報環境の設計)
データの保存先: この演習で作成する CLAUDE.md は
learn-workspace/にローカル保存されます。ProjSight には送信されません。
受講者に選択肢を提示する:
/learn-pc-write(01-03)で作成したプロジェクトのテーマを使う「02-01 で ProjSight の CLAUDE.md を分析しました。
今度は自分のプロジェクト用に CLAUDE.md を書いてみましょう。」
テンプレートを提示する前に、02-01 で発見したパターンを振り返る橋渡しを行う。
「02-01 で ProjSight の CLAUDE.md を分析したとき、いくつかの良いパターンを発見しましたね。
たとえば環境変数の一覧、DB 設計の詳細、認可パターン、デプロイ手順などです。
あなたのプロジェクトには、どんな情報が必要でしょうか?
以下のベーステンプレートを参考に、必要なセクションを選んでください。
足りなければ自由に追加して構いません。」
以下を提示し、受講者が自分のプロジェクトに合わせてセクションを選択・追加・削除できることを伝える:
# CLAUDE.md テンプレート
## プロジェクト概要
<!-- 何を作るか、なぜ作るか -->
<!-- 例: タスク管理 CLI ツール。個人の日次タスクをターミナルから管理する。
チーム利用は想定しない。ローカルファイル保存。-->
## 技術スタック
<!-- 言語、フレームワーク、ツール -->
<!-- 例: TypeScript 5.x / Node.js 22 / Commander.js / Vitest
パッケージマネージャは pnpm を使用 -->
## アーキテクチャ
<!-- ディレクトリ構成、主要コンポーネント -->
<!-- 例: src/commands/ — CLI コマンド定義
src/store/ — JSON ファイルの読み書き
src/types/ — 型定義 -->
## 設計パターン
<!-- 命名規則、エラー処理方針、テスト方針 -->
<!-- 例: 関数名は camelCase、ファイル名は kebab-case
外部 I/O のエラーは Result 型で返す(throw しない) -->
## ワークフロー
<!-- ブランチ戦略、デプロイ手順 -->
<!-- 例: main ブランチに直接コミット(個人プロジェクト)
npm publish 前に pnpm test && pnpm build を実行 -->
## やらないこと
<!-- スコープ外の明記 -->
<!-- 例: GUI は作らない。Web ダッシュボードは対象外。
マルチユーザー対応はしない -->
「これはあくまでベースです。02-01 で見つけた要素を思い出してください。
たとえば環境変数セクション、DB 設計セクション、認可ルールなど、
あなたのプロジェクトに必要なセクションがあれば追加しましょう。
逆に不要なセクション(個人プロジェクトならワークフローは簡略でよい等)は省いて構いません。」
ヒント:
「AI が初めてこのプロジェクトに参加する新メンバーだと想像してください。
何を知っていれば、あなたに質問せずに作業を始められますか?」
受講者に 1 セクションずつ 書いてもらい、各セクション完了ごとにフィードバックを返す。これがデフォルトの進め方とする。
各セクションのフィードバック時に、必要に応じて以下のような質問で深掘りする:
| セクション | 深掘り質問の例 |
|---|---|
| プロジェクト概要 | 「このプロジェクトのユーザーは誰ですか?」「解決したい課題は何ですか?」 |
| 技術スタック | 「バージョンは固定ですか?」「なぜそのフレームワークを選びましたか?」 |
| アーキテクチャ | 「ディレクトリ構成を書けますか?」「データの流れを説明してください」 |
| 設計パターン | 「その命名規則の具体例を 1 つ挙げてください」「テストはどの粒度で書きますか?」 |
| ワークフロー | 「デプロイは手動ですか?自動ですか?」「CI で何をチェックしますか?」 |
| やらないこと | 「将来やるかもしれないけど今はやらないことは?」「よく要望されるが対象外は?」 |
書かれた CLAUDE.md を以下の観点で評価する:
| 観点 | チェック内容 |
|---|---|
| 実装着手可能か | AI がこの CLAUDE.md だけで実装を始められるか |
| 技術制約の明記 | 使うべき/使うべきでない技術が明確か |
| スコープ外 | 「やらないこと」が書かれているか(Context Eng. の重要要素) |
| 具体性 | 抽象的すぎないか(例: 「良いコードを書く」→ 具体的な規約に) |
| 一貫性 | セクション間で矛盾がないか |
フィードバックを提供し、改善を促す。レビュー→改善は 1 回で完了 とする。継続的な改善は実プロジェクトで行う。
書いた CLAUDE.md を実際に AI に使わせて、不足を体験するステップ。
「では、書いた CLAUDE.md が実際に機能するか試してみましょう。
私がこの CLAUDE.md だけを見た新メンバーになりきります。
プロジェクトの小さなタスクを 1 つ指定してください。
(例:『○○の初期実装を始めて』『○○の API エンドポイントを作って』)」
受講者がタスクを指定したら、CLAUDE.md の情報だけに基づいて作業を開始する ふりをする。情報が不足している箇所では「CLAUDE.md に書かれていないので質問します: ○○は?」と質問する。
「AI が質問してきた内容 = CLAUDE.md に不足している情報です。
今の質問をもとに、CLAUDE.md に追記してみてください。」
受講者が追記したら、Step 5 は完了。
「CLAUDE.md を書くことで、プロジェクトの全体像を言語化する力が身につきます。
これは人間のチームメンバーへのオンボーディング資料としても使えます。
ポイント:
- 『やらないこと』の明記は過剰実装を防ぐ最も効果的な Context Engineering
- 完璧を目指さない。CLAUDE.md は生きたドキュメント — 成長させていくもの
- まず書く → AI に使わせる → 足りない部分を追記、のサイクルが最善
(Step 5 で体験したサイクルを、実プロジェクトでも繰り返しましょう)」
受講者に問いかけて、体験を振り返らせる:
「2 つ質問させてください:
1. 書いてみて一番難しかったセクションはどこですか? なぜ難しかったですか?
2. もう一度最初から書くとしたら、何を変えますか?」
受講者の回答を受けて、個別のコメントを返した上で、タスクを complete_work(taskId) で完了にする。