Claude Code initコマンドの挙動 — CLAUDE_CODE_NEW_INIT=1で対話式に
/initは既定では確認なしにCLAUDE.mdを自動生成しますが、環境変数CLAUDE_CODE_NEW_INIT=1を立てるとSkillsやHooksまで対話式に選べる複数フェーズの初期化に変わります。
/initには2つの動き方がある
/initは新規プロジェクトでCLAUDE.mdを生成するコマンドです。ただしその挙動は1通りではありません。既定の動きと、環境変数CLAUDE_CODE_NEW_INIT=1を設定したときの動きで、生成プロセスそのものが別物になります。
既定の/initは確認なしに動きます。Claudeがコードベースを分析し、ビルドコマンド・テスト手順・プロジェクト規約を書き出したCLAUDE.mdを自動生成します。すでにCLAUDE.mdがある場合は上書きせず、改善案を提示する動きに切り替わります。
/init一方CLAUDE_CODE_NEW_INIT=1を設定した状態で/initを実行すると、対話式の複数フェーズフローに変わります。まず何を生成するか(CLAUDE.md・Skills・Hooks)を質問されます。その後コードベースをサブエージェントで探索し、足りない情報は追加の質問で埋めます。最後にファイルを書き込む前に、レビュー可能な提案として提示されます。既定の「聞かずに書く」動きと、「聞いてから書く」動きの違いが、この環境変数1つで切り替わります。
export CLAUDE_CODE_NEW_INIT=1どちらを使うべきか
既定の/initは「とにかく雛形が欲しい」場面に向きます。1コマンドで完結し、後から/memoryで手直しする前提の運用です。実際の記述パターンはCLAUDE.mdの実装パターン10選にまとめています。
CLAUDE_CODE_NEW_INIT=1の対話式フローは、CLAUDE.mdだけでなくSkillsやHooksの初期構成まで一度に設計したい場面に向きます。Claudeに聞かれて答える形式のため、既定フローよりも1回あたりの所要時間は長くなりますが、「Skillsに何を切り出すか」「どのタイミングでHooksを挟むか」まで含めて相談しながら決められます。CLAUDE.md・自動メモリ・セッションの役割分担を先に押さえておくと、対話中の判断がぶれません。三層の使い分けはClaude Code memoryの三層構造で扱っています。
対話式フローが読み込む他ツールのルールファイル
/initは既定でも、他のコーディングエージェント向けの設定ファイルを検出してCLAUDE.mdに取り込みます。ただし検出対象はフローによって範囲が違います。
| フロー | 検出するルールファイル |
|---|---|
既定の/init | 検出するルールファイルCursor rules(.cursor/rules/または.cursorrules)、Copilot rules(.github/copilot-instructions.md) |
CLAUDE_CODE_NEW_INIT=1の対話式フロー | 検出するルールファイル上記に加えてAGENTS.md、.devin/rules/、.windsurf/rules/または.windsurfrules、.clinerules |
対話式フローのほうが対応ツールが広く、Devin・Windsurf・Clineの設定まで拾います。読むファイルはツールごとに決まっています。Devinは.devin/rules/、Windsurfは.windsurf/rules/(または.windsurfrules)、Clineは.clinerulesです。いずれもCLAUDE.mdと同じ役割のプロジェクト指示ファイルです。複数のコーディングエージェントを併用しているチームほど、この検出範囲の差が効いてきます。他のエージェントから移ってきたばかりのプロジェクトでは、CLAUDE_CODE_NEW_INIT=1を立ててから/initを実行したほうが、既存の規約を取りこぼしにくくなります。
なお、この検出はあくまでCLAUDE.md生成時の一度きりの取り込みです。
/importへの自動誘導
/initにはもう1つ、既定・対話式フローの両方に共通する仕組みがあります。/initが検出したファイルの提供元が、/importが対応するコーディングエージェント(OpenAI CodexとGoogle Gemini CLI)のものだったとします。この場合/initは、その設定を/importで取り込むことを提案してきます。
/initが取り込むのは指示ファイルの内容だけですが、/importはMCPサーバー・カスタムコマンド・サブエージェント・Skillsまで含めて移行対象にする、より広い範囲のコマンドです。/init実行中に/importへの案内が出たら、指示ファイルだけで足りるのか、MCPサーバーやSkillsごと持ってきたいのかで、どちらに進むかを判断します。/import自体の使い方や、動かないときの切り分けはclaude importが使えない「not yet available in this build」の意味と対処にまとめています。
CLAUDE.local.mdの自動生成
対話式フローには、個人用の設定を分ける選択肢もあります。CLAUDE_CODE_NEW_INIT=1を設定した状態で/initを実行し、質問の中で「個人用」の選択肢を選びます。すると、ClaudeがCLAUDE.local.mdを作成したうえで.gitignoreへの追記まで自動で行います。
既定の/initにはこの分岐がなく、CLAUDE.local.mdを作るなら手動でファイルを作成し、.gitignoreにも自分で追記する必要があります。チーム共有の規約とプロジェクト固有の個人メモを最初から分けて管理したい場合、対話式フローのほうが手数が少なく済みます。
/forkでバックグラウンドセッションに渡したときの扱い
/initは「プロンプトを展開する組み込みコマンド」の1つとして扱われます。これが効いてくるのは/forkでバックグラウンドセッションを作るときです。/forkのあとに続けて/initと入力すると、新しいバックグラウンドセッションの最初のプロンプトとしてそのまま送られ、対話なしですぐに実行が始まります。これは自作のSkillやコマンドと同じ扱いです。/compactのようなプロンプトを展開しない組み込みコマンドとは挙動が異なります。後者は「アタッチして実行してください」という案内だけが表示され、実行はされません。
CLAUDE_CODE_NEW_INIT=1の対話式フローをバックグラウンドセッションで使う場合、質問への回答もそのセッション内でのやり取りになります。メインのセッションから離れて別プロジェクトの初期化を並行して進めたいときに使える組み合わせです。
Bundled Skillsを無効化していると/initはどう見えるか
環境変数CLAUDE_CODE_DISABLE_BUNDLED_SKILLS(またはsettings.jsonのdisableBundledSkills)を有効にすると、Claude Code同梱のskillsとworkflowsが丸ごと無効になります。この設定下でも、/initのような組み込みコマンドは事情が違います。入力自体は引き続きでき、ただしモデルからは見えなくなります。つまり自分でタイプすれば/initは動きますが、Claudeが自発的に「/initを実行しましょうか」と提案してくることはなくなります。同梱skillsを一括で切っている環境で/initが急に使われなくなったように見えたら、この設定が原因の候補です。
新規リポジトリでは/initが最初の一手になる
公式のクイックスタートは、新しいリポジトリでの最初のセッションを/initから始める順序を示しています。
/initでCLAUDE.mdの雛形を作る/memoryで内容を整える- 必要なMCPサーバーを
/mcpで追加する - サブエージェントをClaudeに作らせる
/permissionsで承認ルールを設定する
CLAUDE_CODE_NEW_INIT=1を使う場合、この最初の一手そのものがSkills・Hooksの設計まで含む対話に置き換わります。
困り事別 — どちらの/initを選ぶか
| 状況 | おすすめ |
|---|---|
とにかく雛形のCLAUDE.mdが今すぐ欲しい | おすすめ既定の/init(質問なしで即生成) |
| Skillsやフックの構成まで一緒に設計したい | おすすめCLAUDE_CODE_NEW_INIT=1の対話式フロー |
| Devin・Windsurf・Clineから移ってきたばかりのプロジェクト | おすすめCLAUDE_CODE_NEW_INIT=1(検出対象が広い) |
| Cursor・Copilotの設定だけ引き継げれば十分 | おすすめどちらでも検出される(既定でも対応済み) |
| チーム共有の規約と個人メモを最初から分けたい | おすすめCLAUDE_CODE_NEW_INIT=1(CLAUDE.local.mdを自動生成) |
| CodexやGemini CLIからMCPサーバーやSkillsごと移行したい | おすすめ/initではなく/import(検出時に案内が出る) |
対話式フローを毎回使いたいなら、シェルの起動ファイルにCLAUDE_CODE_NEW_INIT=1を恒常的に設定しておく方法もあります。逆に、普段は既定の速い/initを使い、大きな節目のプロジェクトだけ対話式で丁寧に設計したい場合は、そのセッションを起動する直前だけexportする運用が向いています。どちらの運用にするかは、チームで扱うプロジェクトの数や、初期化のたびにSkills・Hooksの構成まで練り直したいかどうかで決めるとよいでしょう。単発のスクリプトや使い捨てのリポジトリでは既定の/initで十分なことが多く、長く保守するプロダクトのリポジトリほど対話式フローの恩恵を受けやすい傾向があります。
よくある質問
CLAUDE_CODE_NEW_INITはセッション単位の設定か
環境変数なので、シェルで設定してからclaudeを起動したセッションに対して効きます。CIやスクリプトから毎回対話式フローを使いたい場合は、シェルの起動ファイル(.zshrcなど)に恒常的に設定しておくと、/initを打つたびに切り替える手間が省けます。
既存のCLAUDE.mdがあるプロジェクトで対話式フローを使うとどうなるか
既定の/initと同じく、対話式フローでも既存のCLAUDE.mdを無条件に上書きすることはありません。改善提案として扱われる点は両フローで共通です。対話の質問内容が既存ファイルの有無でどこまで変わるかまでは、公式ドキュメントに詳細な記載がありません。
対話式フローはどのモデルで動くか
公式ドキュメントには使用モデルの明記がなく、通常のセッションと同じ設定(現在選択中のモデル)で動作すると考えられます。コードベース探索にサブエージェントを使う点だけが仕様として明記されています。
/initはSkillツール経由でも呼び出せるか
呼び出せます。/initと/security-reviewは、組み込みコマンドの中でもSkillツール経由での呼び出しに対応している数少ない例です。/compactのような他の組み込みコマンドはこの経路に対応していません。
まとめ
/initは既定では確認なしにCLAUDE.mdを自動生成する1コマンド完結の動きです。CLAUDE_CODE_NEW_INIT=1を設定すると、CLAUDE.md・Skills・Hooksを対話しながら決める複数フェーズのフローに変わります。対話式フローは検出できる他ツールのルールファイルの範囲も広く、CLAUDE.local.mdの自動生成と.gitignore追記まで面倒を見てくれます。どちらのフローでも、検出した設定がCodexやGemini CLIのものであれば/importへの案内が出る点は共通です。
同じ/initという1コマンドでも、環境変数1つで「すぐ結果が欲しい人向け」と「じっくり設計したい人向け」の2つの顔を使い分けられる設計です。まずは既定のまま試し、Skills・Hooksまで含めて構成を練りたくなったらCLAUDE_CODE_NEW_INIT=1を立てる、という段階的な移行でも構いません。対話式フローでHooksを提案されたあと、実際にHookを組む具体的な手順はClaude Code Hooksの設定方法にまとめています。