Claude Media
Claude Code initコマンドの挙動 — CLAUDE_CODE_NEW_INIT=1で対話式に

Claude Code initコマンドの挙動 — CLAUDE_CODE_NEW_INIT=1で対話式に

/initは既定では確認なしにCLAUDE.mdを自動生成しますが、環境変数CLAUDE_CODE_NEW_INIT=1を立てるとSkillsやHooksまで対話式に選べる複数フェーズの初期化に変わります。

/initは環境変数1つで別のコマンドになる

/initは新規プロジェクトでCLAUDE.mdを作るコマンドです。ただし環境変数CLAUDE_CODE_NEW_INIT=1を立てたかどうかで、生成のプロセスそのものが変わります。

くらべる

/initの2つの動き方

聞かずに書く

既定

確認なしで走ります。コードベースを分析し、ビルドコマンド・テスト手順・プロジェクト規約を書いたCLAUDE.mdを自動生成します。CLAUDE.mdが既にあれば上書きせず、改善案を出します。

聞いてから書く

CLAUDE_CODE_NEW_INIT=1

最初に「何を作るか」(CLAUDE.md・Skills・Hooks)を聞かれます。次にサブエージェントがコードベースを探索し、足りない情報は追加の質問で埋めます。ファイルを書く前に、レビューできる提案として提示されます。

/init

この2つの動きは、公式のcommands・memory・env-varsの3ページで記述が一致しています。変数は/initの動き方だけを変えるので、立てっぱなしにしても他の機能には影響しません。

立て方は2通り — シェルか設定ファイルか

一時的に試すなら、起動前にシェルで設定します。

export CLAUDE_CODE_NEW_INIT=1
claude

常用するなら、設定ファイルのenvブロックにも書けます。形は次のとおりです。

{
  "env": {
    "CLAUDE_CODE_NEW_INIT": "1"
  }
}

同じ変数をシェルと設定ファイルの両方に置いた場合、ほとんどのセッションでは設定ファイル側の値が効きます。Claude Codeがenvの各エントリをプロセス環境に書き込み、シェルから引き継いだ値を置き換えるためです。例外はデスクトップアプリやセルフホスト環境のランナーが起動したセッションで、起動環境が先に決めた変数は設定ファイルのenvより優先されます。また、プロジェクト設定の多くのenv値は、フォルダを信頼してから適用されます。「シェルでは0にしたのに対話式になる」と戸惑ったら、設定ファイルのenvを先に疑う価値があります。

雛形がすぐ欲しいのか、構成まで決めたいのか

既定の/initは、1コマンドで雛形を作り、後から/memoryで手直しする運用に向きます。記述の具体例はCLAUDE.mdの実装パターン10選にあります。

対話式は、CLAUDE.mdに加えてSkillsやHooksの初期構成まで一度に決めたいときの選択肢です。質問に答える分、1回あたりの所要時間は伸びます。その代わり「Skillsに何を切り出すか」「どのタイミングでHooksを挟むか」を、探索結果を見ながら決められます。CLAUDE.md・自動メモリ・セッションの役割分担を先に押さえておくと、対話中の判断がぶれません。三層の違いはClaude Code memoryの三層構造で扱っています。

使い分けを状況で引くと次のようになります。

状況向く動き方
雛形のCLAUDE.mdが今すぐ欲しい向く動き方既定
Skills・Hooksの構成も一緒に作りたい向く動き方対話式
Devin・Windsurf・Clineから移ってきた向く動き方対話式(検出対象が広い)
チーム共有の規約と個人メモを分けたい向く動き方対話式
CodexやGemini CLIの設定を丸ごと移したい向く動き方/initではなく/import

移行元のルールファイルをどこまで拾うか

/initは他のコーディングエージェント向けの指示ファイルを検出し、関連部分をCLAUDE.mdに取り込みます。検出範囲は動き方で違います。

検出範囲

/initが検出する指示ファイル

  • 既定でも検出

    Cursor rules(.cursor/rules/または.cursorrules)と、Copilot rules(.github/copilot-instructions.md)です。

  • 対話式でだけ追加

    AGENTS.md、.devin/rules/、.windsurf/rules/(または.windsurfrules)、.clinerulesです。

複数のエージェントを併用してきたチームほど、この差が効きます。他のエージェントから移ったばかりのプロジェクトでは、変数を立ててから/initを実行すると、既存の規約を取りこぼしにくくなります。

AGENTS.mdを共有ファイルとして残したい場合は、取り込みに頼らない手もあります。公式の記載では、CLAUDE.mdの先頭に@AGENTS.mdというインポート行を書き、その下にClaude固有の指示を足せば、Claudeは取り込んだファイルを先に読み、残りを続けて読みます。Claude固有の内容が要らないなら、ln -s AGENTS.md CLAUDE.mdのシンボリックリンクでも通ります。ただしシンボリックリンクの場合、EditツールとWriteツールはリンクを通した書き込みを拒否します。直すときはリンク先のAGENTS.mdを編集することになります。Windowsのメンバーがいるなら@AGENTS.mdのインポートを選びます。シンボリックリンクの作成には管理者権限か開発者モードが要ります。core.symlinksが無効だと、Gitは1行のテキストファイルとして取り出します。

/initは内容をCLAUDE.mdへ書き写すだけなので、元のファイルを後から直してもCLAUDE.mdは変わりません。

CodexやGemini CLIから来たなら/importが近道

/initが検出したファイルの提供元がOpenAI CodexまたはGoogle Gemini CLIだった場合、/initは/importでの取り込みを提案します。この案内はCLAUDE_CODE_NEW_INITの有無を条件にしていません。

違いは取り込む範囲です。/initが持ってくるのは指示ファイルの内容だけです。/importは指示ファイルに加えて、MCPサーバー・カスタムコマンド・サブエージェント・Skillsまで移します。/importはClaude Code v2.1.213以降が必要です。使えない経路は、Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundry・Claude Platform on AWSです。Claude apps gateway経由でも使えません。-pの非対話モードでは、見つけた内容を一覧にして、確定用のコマンドを示します。

シェルから使うclaude importもあります。v2.1.287でclaude import --helpを実行した出力は次のとおりです。

claude import --help
Usage: claude import [options] [source]
 
Import config from another AI coding agent into Claude Code
 
Arguments:
  source      Which agent to import from (codex, gemini, cursor)
 
Options:
  --dry-run   Show what would be imported without writing anything
  -h, --help  Display help for command
  --yes       Skip the interactive picker. On headless surfaces, pass
              --yes=<digest> from the `/import` preview.

sourceにはcodex・gemini・cursorの3つが並びます。/initが/importを案内する対象はCodexとGemini CLIですが、claude importコマンド自体はCursorも指定できます。書き込まずに内容だけ確かめる--dry-runもあるため、移行前の下見に使えます。/importが動かないときの切り分けはclaude importが使えない「not yet available in this build」の意味と対処にまとめています。

個人用の設定を最初から分けたい

対話式の質問で「個人用」の選択肢を選ぶと、CLAUDE.local.mdが作られ、.gitignoreへの追記まで自動で済みます。CLAUDE.local.mdはプロジェクト直下に置く個人用の指示ファイルで、CLAUDE.mdと同じ扱いで読み込まれますが、バージョン管理には載せない前提のものです。

AGENTS.mdで運用しているプロジェクトでは注意点があります。CLAUDE.local.mdも読み込み対象に数えられるため、これが増えた時点でClaudeはAGENTS.mdを直接読まなくなります。両方読ませるには、Project instructionsの設定をclaude-md-and-agents-mdにします。AGENTS.mdの直接読み込みはClaude Code v2.1.277以降が対象です。

既定の/initでこれをやるなら、ファイルの作成と.gitignoreへの追記を自分で行います。チーム共有の規約と自分のメモを初日から分けたいときは、対話式のほうが手数が少なく済みます。

新規リポジトリでの最初の一手

公式のコマンド一覧ページは、新しいリポジトリの最初のセッションを次の順で紹介しています。

手順

新しいリポジトリの最初のセッション

  1. 1

    /initでCLAUDE.mdの雛形を作る

    CLAUDE_CODE_NEW_INIT=1を立てていれば、この一手がSkills・Hooksの設計を含む対話に置き換わります。

  2. 2

    /memoryで内容を整える

    雛形に足りない指示を手で補います。

  3. 3

    /mcpで必要なMCPサーバーを追加する

    プロジェクトで使う外部ツールをここでつなぎます。

  4. 4

    サブエージェントをClaudeに作らせる

    必要な役割があれば、依頼文で作ってもらいます。

  5. 5

    /permissionsで承認ルールを決める

    どの操作を確認なしで通すかを設定します。

バックグラウンドで/initを走らせると質問はどこへ行くか

/initは、プロンプトに展開される組み込みコマンドの1つです。公式のagent viewの説明では、Skills・自作コマンド・/initのようなこの種の組み込みコマンドは、新しいバックグラウンドセッションに最初のプロンプトとしてそのまま送られます。それ以外の組み込みコマンドは実行されず、「attach to a session to run it」という案内が出ます。入力した文字はその案内の横に残るので、直してから使い直せます。

対話式の変数を立てた状態でバックグラウンドの/initを走らせた場合、質問が出ればそのセッションは入力待ちになります。答えるにはセッションへアタッチします。バックグラウンドセッションが起動元シェルの環境変数を引き継ぐかどうかは、公式に記載がありません。変数を確実に効かせたいなら、設定ファイルのenvに書いておく手があります。公式に載っているのはagent viewから送る場合の説明で、/forkにプロンプトとして/initを渡した場合の展開も記載がありません。

Bundled Skillsを切ると/initはどう見えるか

同梱のskillsを切る方法は2つあります。環境変数CLAUDE_CODE_DISABLE_BUNDLED_SKILLSを1にするか、設定でdisableBundledSkillsを有効にします。どちらでも、Claude Codeに同梱されたskillsとworkflowsが取り除かれます。/initのような組み込みコマンドは別扱いで、入力はできるまま、モデルからは見えなくなります。自分で打てば動きますが、Claude側から呼び出す経路は閉じます。同梱skillsを一括で切った環境で/initが使われなくなったように見えたら、この設定が候補です。

よくある質問

既存のCLAUDE.mdがあるプロジェクトで対話式にするとどうなるか

既定の/initは、既存のCLAUDE.mdを上書きせず改善案を出します。対話式フローで既存ファイルがどう扱われるかは、公式ページ(commands・memory・env-vars)に記載がありません。大事なファイルがあるなら、実行前にコミットしておくと戻せます。

/initはSkillツール経由でも呼べるか

呼べます。公式のskillsページによると、組み込みコマンドのうちSkillツール経由で使えるのは/initや/security-reviewなどの一部で、/compactなどは対象外です。

まとめ

/initの初回だけ手早く済ませたいなら既定、Skills・Hooks・個人用ファイルまで初日に決めたいなら対話式という切り分けです。CodexやGemini CLIの設定まで引き継ぐなら、/initの案内に従って/importへ進みます。対話式でHooksを提案されたあと、実際に組む手順はClaude Code Hooksの設定方法にあります。

この記事を共有:XはてブLinkedIn