実際に移行されるもの
まず、移行先のOpenCodeのバージョンを確認する
OpenCodeの移行ガイドには、「OpenCode 1とOpenCode 2はどちらもopencodeコマンドを使用し、デフォルトでは並行してインストールされなくなりました」と記載されています。これら2つのバージョンは同じ設定場所を読み込み、ガイドによると、サポートされているV1の動作は「V1との互換性を維持することを意図している」とのことです。しかし、Claude Codeのファイルに関しては動作が異なるため、以下の内容を頼りにする前に、現在どちらのバージョンを実行しているかを確認してください。
指示:CLAUDE.md
V1では、CLAUDE.mdがフォールバックとして機能します。OpenCodeは、プロジェクトにAGENTS.mdが存在しない場合はプロジェクトのCLAUDE.mdを読み込み、グローバルなOpenCodeのAGENTS.mdが存在しない場合は~/.claude/CLAUDE.mdを読み込みます。ルールは「各カテゴリで最初に一致したファイルが優先される」となっています。そのため、プロジェクトにAGENTS.mdを追加すると、そのプロジェクトのCLAUDE.mdは無効になります。
V1にはこの互換性を無効にするスイッチも用意されています。「Claude Codeの互換性を無効にするには、以下の環境変数のいずれかを設定してください」。OPENCODE_DISABLE_CLAUDE_CODEはすべての.claudeサポートをオフにし、OPENCODE_DISABLE_CLAUDE_CODE_PROMPTとOPENCODE_DISABLE_CLAUDE_CODE_SKILLSはグローバルなCLAUDE.mdとスキルを個別にオフにします。
V2では、フォールバックはありません。V2はグローバルなAGENTS.mdをロードし、その後「現在のワークスペースディレクトリからホームディレクトリに向かってすべてのAGENTS.md」をロードします。さらに、プロジェクトのより深い階層にあるファイルは、エージェントがその領域を読み込む際にロードされます。また、1つのファイルを選択するのではなく、それらをスタック(累積)します。「OpenCodeはファイルを結合し、それらの間の競合を解決しません。」
V2の移行ガイドは、Claude Codeユーザーに向けて直接次のように述べています。「V1のセットアップがCLAUDE.mdのフォールバックに依存していた場合は、そのガイダンスを該当するAGENTS.mdに移動してください。」さらに、「V2は現在AGENTS.mdのみを検出する」と付け加え、V1の動作は互換性を維持する方針であるため、ユーザーに対して「影響を受けるプロジェクトの詳細を添えて、互換性に関する問題を報告(file a compatibility issue)してください」と求めています。「現在(currently)」という言葉は重要です。今後変更される可能性はありますが、現時点でV2は単独でCLAUDE.mdをロードしません。
どちらのバージョンでも安全な移行方法は同じです。指示をAGENTS.mdに記述することです。Claude Codeもこれを読み取ることができます(詳細はour guide to Claude Code's AGENTS.md default(Claude CodeのAGENTS.mdデフォルトに関するガイド)を参照)。これにより、1つのファイルで両方のツールに対応できます。
インポートとパススコープのルール
Claude CodeのCLAUDE.mdは、他のファイルを取り込むことができます。「インポートされたファイルは、起動時にそれを参照しているCLAUDE.mdとともに展開され、コンテキストにロードされます。」もしあなたのCLAUDE.mdが主に@docs/...のような行のリストである場合、指示の大部分はそれらの別ファイルに存在していることになります。
OpenCodeのV1ルールに関するドキュメントには、「opencodeはAGENTS.md内のファイル参照を自動的に解析しませんが、2つの方法で同様の機能を実現できます」とあります。推奨される方法は、opencode.jsonのinstructionsフィールドを使用することです。V2でもこれが維持されています。「instructions配列を使用して、検出されたAGENTS.mdファイルとともに、ファイル、globパターン、またはHTTP(S) URLを追加します」。そこにリモートURLを指定する場合、フェッチが遅いときに何が起こるかについては、our guide to mirroring OpenCode's remote instruction files(OpenCodeのリモート指示ファイルのミラーリングに関するガイド)で解説しています。
Claude Codeは、ルールを特定のファイルに制限するpaths:フロントマターを持つ.claude/rules/内のルールもサポートしています。OpenCodeの指示に関するドキュメントでは、AGENTS.mdファイルとinstructions配列について説明されていますが、.claude/rules/はそのリストに含まれていません。OpenCodeでこれに最も近いパターンは、ルールがカバーするディレクトリ内にネストされたAGENTS.mdを配置することです。V2では、エージェントがプロジェクトのその部分を読み込む際に、ネストされたファイルが「最も近いものから順に(nearest-first)」ロードされます。
スキル
スキルは、最も簡単に移行できる部分です。どちらのバージョンも、Claude Codeのスキルフォルダを読み取ることができます。V2では、OpenCode独自の.opencode/skillsと並んで、グローバルな互換性ソースとして~/.claude/skills、プロジェクトの互換性ソースとして.claude/skillsがリストされています。
V2は、Claude Codeのフィールドも1つ理解します。そのテーブルにはdisable-model-invocationがリストされており、「opencode/autoinvoke: falseと同じ効果を得るにはtrueに設定します」という注記があります。オープンスキル標準のフィールドは受け入れられますが、「V2はlicenseやcompatibilityなどのポータビリティフィールドを受け入れますが、それらを解釈しません」となっています。
V2のスキルに関するドキュメントに記載されているフィールドは、name、description、metadata.opencode/autoinvoke、およびdisable-model-invocationです。context、paths、hooks、modelなど、Claude Codeのその他のスキルフィールドは含まれていないため、これらに依存するスキルは書き直す必要があります。もう1つの違いとして、V2では「ファイルパスがスキルIDを決定します。フロントマターのnameは表示用のラベルにすぎません」という点に注意してください。
サブエージェントとコマンド
Claude Codeのサブエージェントは、~/.claude/agents/またはプロジェクトの.claude/agents/に配置されます。OpenCodeのエージェントファイルは、~/.config/opencode/agents/<name>.mdまたは.opencode/agents/<name>.mdに配置され、そのフロントマターはOpenCode独自のもので、mode: subagent設定と権限リストが含まれます。OpenCodeでは「Markdownの本文がエージェントのシステムプロンプトになる」ため、Markdownの本文はそのまま綺麗に引き継がれます。
カスタムコマンドも同じパターンに従います。Claude Codeの.claude/commands/ファイルは、.opencode/commands/<name>.md(グローバルなものは~/.config/opencode/commands/)になります。OpenCodeのコマンドでも$ARGUMENTSが使用され、「.mdファイルのみが検出されます」とされています。
サブエージェントを多用している場合は、our guide to Claude Code subagents not sharing memory(Claude Codeのサブエージェントがメモリを共有しない問題に関するガイド)で、各サブエージェントが何を参照できるかを解説しています。移行後に再確認する価値があります。
残されるもの
自動メモリ。 Claude Codeは独自のメモを書き込みます。「自動メモリにより、ユーザーが何も書かなくても、Claudeはセッションをまたいで知識を蓄積できます。」これらはローカルマシンに保存され、「各プロジェクトは、~/.claude/projects/<project>/memory/ に独自のメモリディレクトリを持ちます。」OpenCodeのドキュメントには、このディレクトリを読み取るという記述はありません。修正内容、好み、プロジェクトの事実など、Claudeがそこで学習した内容は、手動で移動しない限りClaude Codeに残されたままになります。別の移行先における同様のギャップについては、our guide to migrating from Claude Code to Cursor(Claude CodeからCursorへの移行ガイド)で解説しています。
セッション。 OpenCode V1のCLIはセッションデータをJSONとしてエクスポートおよびインポートできますが、それらのコマンドはOpenCode独自のセッションを対象としています。Claude Codeでの会話はClaude Codeに残ります。これらを保持する方法については、our guide to exporting a Claude Code session to another machine(Claude Codeセッションを別のマシンにエクスポートするガイド)で解説しています。
フックとプラグイン。 Claude Codeのフックは設定内に存在します。OpenCodeは代わりにプラグインを通じて動作を拡張しますが、V2のガイドでは「V1のプラグイン実装はV2では動作しません」と警告されています。フックはコピーするのではなく、再構築するものとして扱ってください。
MCPサーバー。 これらは設定として移行します。OpenCodeはこれらをopencode.jsonで定義し、V2ではserversキーの下にグループ化します。必要に応じて、それぞれを再接続し、再度サインインしてください。
手動での移行手順
ステップ1:どちらのバージョンでもOpenCodeが読み取れるAGENTS.mdを1つ作成する
まず、このプロジェクトでClaudeの動作を決定づけるすべての要素を収集します。
- プロジェクトのルート、
.claude/CLAUDE.md、サブディレクトリ、および~/.claude/CLAUDE.mdにあるすべてのCLAUDE.mdファイル。 - それらが
@でインポートしているすべてのファイル。 paths:を使用しているものを確認した上で、すべての.claude/rules/ファイル。- 自動メモリ。
~/.claude/projects/<project>/memory/を開き、MEMORY.mdとそれが指し示すトピックファイルを読み込みます。
次に、その結果をAGENTS.mdに書き込みます。
- プロジェクト全体の指示は、ルートの
AGENTS.mdに記述します。インポートされたファイルの内容をコピーして貼り付けるか、opencode.jsonのinstructions配列にリストして、貼り付けずにロードされるようにします。 - パススコープのルールは、そのルールがカバーするディレクトリ内の
AGENTS.mdに記述します。 - 自動メモリのメモを整理します。現在も有効な修正内容やプロジェクトの事実は、指示(instructions)に変換します。プロジェクトをまたいで適用される個人の好みは、
~/.config/opencode/AGENTS.mdに記述します。古い内容はそのまま残します。 ~/.claude/CLAUDE.mdからのグローバルな指示は、~/.config/opencode/AGENTS.mdに移動します。
同じリポジトリで引き続きClaude Codeも使用する場合は、CLAUDE.mdを、ClaudeにAGENTS.mdを参照させるための短いファイルとして残しておきます。これにより、両方のツールが1つの指示セットを読み取るようになります。このパターンについては、our guide to migrating CLAUDE.md to AGENTS.md(CLAUDE.mdからAGENTS.mdへの移行ガイド)で解説しています。
V2は検出したすべてのAGENTS.mdを競合解決なしで結合するため、作業が完了したらファイルをまとめて確認し、矛盾する内容を削除してください。
ステップ2:スキル、エージェント、コマンドを移動し、フォールバックなしでテストする
スキルは、OpenCodeが.claude/skills/および~/.claude/skills/を読み取るため、現在の場所のままで構いません。各SKILL.mdを開き、そのフロントマターを確認してください。name、description、disable-model-invocationはそのまま保持します。Claude Code専用のフィールドに依存しているものは書き直し、各フォルダ名は変更しないでください。V2ではパスがスキルのIDを設定するためです。
サブエージェントは、.claude/agents/から.opencode/agents/に移動します。Markdownの本文はそのまま保持し、mode: subagentを設定し、ツールの制限をOpenCodeの権限(permissions)に変換します。
コマンドは、.claude/commands/から.opencode/commands/に移動します。各テンプレートでの$ARGUMENTSの使用方法が依然として適切であることを確認してください。
その後、テストを行います。V1では、環境変数にOPENCODE_DISABLE_CLAUDE_CODEを設定してセッションを開始し、エージェントが依然として指示に従っていることを確認します。この変数は.claude/skillsもオフにするため、そこに残したスキルはそのセッション中消去されます。不足している指示がある場合、それはまだ移行していないClaude Codeのファイルから取得されていたものです。V2では、フォールバックが存在しないため、このようなテストは不要です。セッションを開始し、エージェントに現在適用されている指示を要約させ、それをAGENTS.mdと比較します。テストに関するV2の注意点として、「ネストされたファイルへの編集は、ロードされた後に自動的には検出されません」という点があります。変更を加えた後は、新しいセッションを開始してください。
より良い方法:プロジェクトのコンテキストを自分で管理できる1つの場所に保管する
ステップ1はこの移行において最も困難な部分であり、その作業の多くは自動メモリのメモやインポートされたファイル、つまりClaude Codeが明示的な1つのファイルとしてではなく蓄積してきたコンテキストの整理にあります。これらをAGENTS.mdに移動することで今回の移行は解決しますが、次回の移行の役には立ちません。また、リポジトリではなくあなた自身に属するコンテキストもカバーできません。
MemoryLakeは、決定事項や好みをユーザー自身が管理する1つのリストに保持し、Claude Codeや接続する他のアシスタントから利用できるようにするためのメモリレイヤーです。
エントリーは、あなた自身の言葉で自分で記述します。CLAUDE.mdファイル、Claude Codeの自動メモリ、OpenCodeの設定、またはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。プロジェクトの詳細をリポジトリの外部に保存する前に、組織のポリシーを確認してください。
ステップ1:APIキーを作成する
サインインし、ダッシュボードからキーを生成します。このキーはMemoryLakeのワークスペースに属し、Anthropicのアカウントやモデルプロバイダーとは独立しています。

ステップ2:最初のメモリをアップロードする
リポジトリのルールではない、自動メモリで見つかった内容(あなたの好み、決定の背後にある理由、除外したアプローチなど)から始めます。1つのエントリーにつき1つの決定事項を、日付付きで記述します。

ステップ3:AIとエージェントを接続する
使用しているアシスタントを接続します。これにより、コンテキストは最初にそれを学習したツールに縛られることなく、どこで作業していても利用可能になります。

実務における変化
第1の違いは、フォールバックチェーンの代わりに1つの指示ファイルを使用することです。AGENTS.mdを配置することで、OpenCodeはV1とV2の両方で指示を読み取ることができ、Claude Codeも同じファイルを読み取ることができます。
第2に、重要な情報がClaudeの自動メモリだけに存在する状態が解消されることです。移行時にそれを読み取ることで、Claudeが自分用に書き残したメモを、ユーザーが確認・編集できる指示へと変換できます。
第3に、繰り返し実行可能なテストができるようになることです。V1の互換性をオフにするか、V2を実行することで、OpenCodeが何を読み取っているかを正確に把握できるため、移行が完了したことを憶測ではなく確実に確認できます。
Claude CodeからOpenCodeへの移行におけるベストプラクティス
まずOpenCodeのバージョンを確認する。 V1はフォールバックとしてCLAUDE.mdを読み込みますが、V2は読み込みません。
CLAUDE.mdではなく、AGENTS.mdを記述する。 両方のバージョンおよびClaude Codeで動作します。
インポートを解決する。 インポートされた内容を貼り付けるか、instructions配列を使用します。
移行する前に自動メモリを読み取る。 これは、あなたではなくClaude自身が書き込んだ唯一の情報源です。
必要に応じて、スキルは.claude/skills/に残しておく。 OpenCodeはこれらを読み取りますが、フロントマターを確認してください。
エージェントとコマンドを.opencode/に移動する。 それらのClaude CodeフォルダはOpenCodeのリストに含まれていません。
フォールバックをオフにしてテストする。 まだClaude Codeのファイルに依存している部分が明らかになります。
結論
OpenCodeのドキュメントは当初からClaude Codeユーザーに対応しており、スキルに関しては移行が非常に簡単です。どちらのバージョンも.claude/skillsを読み取ります。指示に関しては、バージョンによって状況が異なります。V1はAGENTS.mdが存在しない場合にCLAUDE.mdを読み取ります。V2はAGENTS.mdのみを認識し、その移行ガイドではガイダンスを移行するよう指示されています。
どちらにしても、確実な方法は同じです。CLAUDE.mdファイル、そのインポート、パススコープのルール、およびClaudeが蓄積した自動メモリからAGENTS.mdを構築することです。サブエージェントとコマンドを.opencode/に移動し、スキルのフロントマターを確認し、フォールバックをオフにしてテストします。これにより、実行するバージョンに関係なく、OpenCodeはあなたのコンテキストに基づいて動作するようになります。