こんにちは。Claude CodeにはPlan modeという強力な機能があります。変更を実行する前に計画を立案してくれる機能で、「どのファイルを」「どう変えるか」をClaude Codeが事前に整理してくれます。
ただ、計画の出力フォーマットが毎回バラバラになりがちで、ある時は箇条書き、ある時は見出し付き、ある時は表形式…。普段使いはもちろん、モブプロペアプロしている最中に自分自身も読みづらく苦労することないでしょうか。
この記事では ~/.claude/rules/plan-template.md を使って、Plan modeの出力フォーマットを固定する方法を紹介します。
課題: Plan modeの計画フォーマットが毎回バラバラ
Plan modeで計画を出力させると、こんな感じになることがあります。
あるときの出力:
## 変更内容
- auth.tsを修正
- テストを追加
## 手順
まずauth.tsを開いて...
別のときの出力:
# 実装計画
### 1. ファイル修正
| ファイル | 変更内容 |
| --- | --- |
...
### 2. 検証
- [ ] ビルド確認
同じような作業でも出力が変わるため、計画書としての一貫性がありません。
解決策: rules/plan-template.md でフォーマットを固定する
Claude Codeには ~/.claude/rules/ ディレクトリを自動で読み込む仕組みがあります。このディレクトリに plan-template.md を置くと、Plan modeが使うフォーマットを固定できます。
~/.claude/rules/ の自動読み込みの仕組み
Claude Codeは起動時に以下のファイルを自動で読み込みます:
-
~/.claude/CLAUDE.md- グローバルな指示・設定 -
~/.claude/rules/*.md- ルールファイル群(すべて読み込まれる) - プロジェクト内の
CLAUDE.md- プロジェクト固有の指示
rules/ 以下のファイルはすべて読み込まれ、Claudeへの継続的な指示として機能します。ここに計画フォーマットのテンプレートを置くことで、Plan modeの出力を統一できます。
実際の plan-template.md
以下が実際に使用している ~/.claude/rules/plan-template.md の内容です:
# Plan Template
## Plan mode での計画フォーマット
Plan mode で計画を作成する際は、以下の固定5セクション構成に従うこと。
### 必須セクション
| # | セクション | 内容 | 形式 |
|---|-----------|------|------|
| 1 | なぜやるか | 変更の目的・背景・動機 | 散文(3行以内) |
| 2 | 何を変えるか | 対象ファイルと操作の一覧 | テーブル(ファイル/操作/変更内容) |
| 3 | どう実装するか | 具体的な実装手順 | 番号付きリスト |
| 4 | 検証方法 | 完了を確認する方法 | チェックリスト |
| 5 | リスク・注意点 | 副作用・破壊的変更・依存関係 | 箇条書き |
### 記述ルール
- 各セクションは **10行以内** に収める。超える場合は粒度を上げて分割する
- セクション名は日本語で統一する(英語にしない)
- 「何を変えるか」は必ずテーブル形式で、ファイルパス・操作(新規/修正/削除)・変更概要を記載する
- 「どう実装するか」は実行順に番号付きで記載し、各ステップで対象ファイル・関数レベルまで具体化する
- 「検証方法」はチェックリスト(`- [ ]`)形式にする
### 省略ルール
- **小タスク**(単一ファイルの変更、影響範囲が自明な場合): 「リスク・注意点」セクションは省略可
- **調査タスク**: 「検証方法」を「調査結果の確認項目」に読み替え可
- 省略しても最低4セクションは維持すること
### テンプレート
```markdown
# <計画タイトル>
## なぜやるか
<変更の目的を簡潔に。3行以内>
## 何を変えるか
| ファイル | 操作 | 変更内容 |
|----------|------|----------|
| `path/to/file` | 新規作成/修正/削除 | 変更の概要 |
## どう実装するか
1. <具体的な手順。対象ファイル・関数を明記>
2. ...
## 検証方法
- [ ] <確認項目>
- [ ] ...
## リスク・注意点
- <副作用、破壊的変更、依存関係など>
```
Before / After: 適用前後の計画書比較
Before(テンプレートなし)
## 実装方針
認証機能を追加します。JWTを使用し、ミドルウェアで検証します。
### ファイル
- middleware/auth.ts を作成
- routes/user.ts を修正
### 確認
ビルドが通ること、テストが通ること
フォーマットがゆるく、「何を」「どう変えるか」が混在しています。
After(テンプレートあり)
# 認証ミドルウェアの追加
## なぜやるか
現状、APIエンドポイントに認証がなく、誰でも叩ける状態になっている。
JWTベースの認証ミドルウェアを追加し、保護されたルートへのアクセスを制限する。
## 何を変えるか
| ファイル | 操作 | 変更内容 |
|----------|------|----------|
| `middleware/auth.ts` | 新規作成 | JWT検証ミドルウェア |
| `routes/user.ts` | 修正 | 認証ミドルウェアを適用 |
| `types/auth.ts` | 新規作成 | JWTペイロードの型定義 |
## どう実装するか
1. `types/auth.ts` にJWTペイロード型 `AuthPayload` を定義する
2. `middleware/auth.ts` を作成し、`Authorization` ヘッダーからトークンを取得・検証する
3. `routes/user.ts` の保護対象ルートに `authMiddleware` を適用する
## 検証方法
- [ ] `npm run build` が通ること
- [ ] `npm test` が全件パスすること
- [ ] 認証なしのリクエストが401を返すこと
- [ ] 有効なJWTを持つリクエストが通ること
## リスク・注意点
- 既存の統合テストが認証なしで呼び出している箇所があれば修正が必要
- JWTのシークレットキーを `.env` で管理すること(ハードコード禁止)
構造が明確になり、レビューしやすくなりました。
導入方法
個人での導入
-
~/.claude/rules/ディレクトリを作成する(なければ) -
~/.claude/rules/plan-template.mdを新規作成する - テンプレート内容を記述して保存する
- Claude Codeを再起動する(設定は起動時に読み込まれる)
チームでの導入
プロジェクトリポジトリに .claude/rules/plan-template.md として配置すれば、チーム全員に適用できます。
my-project/
├── .claude/
│ └── rules/
│ └── plan-template.md ← ここに配置
├── src/
└── ...
プロジェクト内の .claude/rules/ もグローバルの ~/.claude/rules/ と同様に自動読み込みされます。
グローバルとプロジェクト両方に配置する場合
両方に同名ファイルがある場合、プロジェクト内のファイルが優先されます。チームごとにテンプレートをカスタマイズしたい場合は、グローバルをベースにしてプロジェクト側で上書きするのが便利です。
自分に合ったテンプレートに育てる
紹介したテンプレートはあくまで出発点です。AIでコーディングする前、つまりAIを使わずに自分で実装計画を立てていた時代に、頭の中でどんな思考プロセスを踏んでいたかを振り返ってみてください。
「影響範囲を先に洗い出す」「ロールバック手順を考える」「命名規則を事前に決める」…そういった自分なりの思考の癖をテンプレートのセクションとして明示することで、AIにも同じプロセスを踏ませることができます。
自分の思考プロセスを可視化してテンプレートに落とし込むほど、Claude Codeの計画書が自分のスタイルに近づいていきます。
まとめ
- Claude Code の
~/.claude/rules/に置いたファイルはすべて自動で読み込まれる -
plan-template.mdを配置することで Plan mode の出力フォーマットを固定できる - チームリポジトリの
.claude/rules/に配置すればチーム全体に展開できる
計画フォーマットを統一すると、レビューのコストが下がり、実装後に計画を振り返りやすくなります。ぜひ試してみてください。