MemoryLake
すべての記事に戻る
Tutorial2026年8月24日·13 分で読了

コンテキストを失わずに Claude Code から Cursor へ移行する方法 (2026)

ファイルを1つでもコピーする前に、Claude Code で /memory を実行し、自動メモリ(auto memory)フォルダを開いてみてください。Claude Code から移行する人のほとんどはこのフォルダを見たことがありませんが、こここそが移行先のない唯一のセットアップ部分です。

その理由は次のとおりです。Claude Code は、1つではなく2つの仕組みを通じてセッション間で知識を引き継ぎます。「CLAUDE.md ファイル: Claude に永続的なコンテキストを与えるためにユーザーが記述する指示」と「自動メモリ(Auto memory): ユーザーの修正や好みに基づいて Claude が自動的に書き留めるメモ」です。前者は、あなたが編集してきたファイルなのでよく知っているでしょう。後者は、自動メモリがデフォルトで有効になっているため、気づかないうちに蓄積されてきたものです。これは ~/.claude/projects/<project>/memory/MEMORY.md インデックスとメモリごとのトピックファイルとして保存されています。

Cursor にはこれに相当する機能も、インポーターも、このディレクトリの存在を検知する方法もありません。一方で、CLAUDE.md の内容はほとんど手間をかけずに移行できます。

本記事では、実際に何が移行されるのか、移行前にすべき2つのこと、およびどちらのツールのルールファイルでも保持できない知識をどこに置くべきかについて解説します。具体的な問題の症状については、why Claude Code forgets project context(Claude Code がプロジェクトのコンテキストを忘れる理由)を参照してください。

実際に移行されるもの

コンテンツとしての CLAUDE.md の記述。 ビルドコマンド、規約、アーキテクチャのメモ、「常にXを行う」といったルールなどです。Cursor は、プロジェクトのルートおよびサブディレクトリにある AGENTS.md(「Markdown 形式のエージェント指示書。.cursor/rules のシンプルな代替手段」)を読み込みます。リネームするかコピーするだけで完了です。なお、これは Claude Code 側の制約とは逆であることに注意してください。Claude Code のドキュメントには「Claude Code は CLAUDE.md を読み込み、AGENTS.md は読み込まない」と明記されています。

パススコープのルール(1対1のきれいなマッピング)。 これは移行プロセスの中で最もすっきりしている部分ですが、多くの人が見落としがちです。Claude Code の .claude/rules/ ファイルは、フロントマターに glob パターンの paths: フィールドを持ち、「paths フィールドのないルールは無条件にロードされ、すべてのファイルに適用される」となっています。Cursor のプロジェクトルールも、.mdc のフロントマターで globs を使用して同じ目的を果たします。alwaysApply: false と glob を指定すると、そのルールは「一致するファイルがコンテキスト内にあるときに自動的に添付される」ようになります。したがって、Claude Code で src/api/**/*.ts にスコープされていたルールは、Cursor でも src/api/**/*.ts にスコープされたルールになります。同じパターン構文、同じ考え方です。

個人設定(設定画面へ)。 Claude Code のユーザーレベルのレイヤーは ~/.claude/CLAUDE.md~/.claude/rules/ です。Cursor の対応する機能は User Rules(ユーザールール)であり、「Customize → Rules で定義され、すべてのプロジェクトに適用されるグローバルな設定」です。役割は同じです。ただし、依存する前に知っておくべき注意点が1つあります。「User Rules はインライン編集(Cmd/Ctrl+K)には適用されません。Agent(チャット)でのみ使用されます。」

組織全体の指示(ダッシュボードへ)。 Claude Code は、IT部門がOSレベルのパスにデプロイする管理ポリシー CLAUDE.md をサポートしています。Cursor の対応機能は Team Rules(チームルール)で、Team または Enterprise プランの Cursor ダッシュボードから作成します。ここでは「Enforce this rule(このルールを強制する): 有効にすると、すべてのチームメンバーにこのルールが必須となり、Customize で無効にすることはできません」となっています。

それ以外は何も移行されません。具体的なリストは以下の通りです。

自動メモリ(Auto memory)の移行先はありません。 Claude は自身のために4種類のメモを保存し、各ファイルのフロントマターに type フィールドとして記録します。user(ユーザーの役割や作業の好み)、feedback(ユーザーが Claude に与えた修正や確定したアプローチ)、project(コードや git の履歴からは導き出せない進行中の作業や決定事項)、reference(プロジェクト外の情報の場所)です。コードベースから読み取れる内容や「CLAUDE.md ファイルにすでに書かれていること」は意図的にスキップされます。つまり、自動メモリには、設計上、他にはどこにも書き留められていない情報だけが保持されていることになります。そして、これは移行できません。「自動メモリはマシンローカルです。同じ git リポジトリ内のすべてのワークツリーとサブディレクトリは、1つの自動メモリディレクトリを共有します。ファイルはマシン間やクラウド環境間で共有されません。」移行する前に必ず中身を確認してください。

@path インポートに相当する機能は Cursor にはありません。 CLAUDE.md@path/to/import 構文を使って「最大4ホップの深さまで」再帰的に他のファイルを取り込むことができ、インポートされたファイルは「起動時に展開されてコンテキストにロード」されます。Cursor で最も近い仕組みはルール内での @filename.ts の使用であり、FAQ でも「ルールのコンテキストにファイルを含めるには @filename.ts を使用してください」とされていますが、これはインポートチェーンではなく、4レベルの深さまで合成することはできません。4ホップのインポートツリーは、1つのファイルにフラット化するか、複数のルールに分割する必要があります。

CLAUDE.local.md はその役割を失います。 これはプロジェクトルートにある gitignore された個人用レイヤーで、「バージョン管理にコミットすべきではない、プロジェクトごとのプライベートな設定用」です。Cursor の User Rules はプロジェクトごとではなくグローバルであるため、特定のリポジトリでのみ意味を持つ個人用メモは、グローバルにするか、ステージング(コミット)しないように注意しなければならない未コミットの AGENTS.md にするしかありません。

競合の処理方法が異なり、これによって挙動が変わります。 Claude Code では「検出されたすべてのファイルは、互いに上書きし合うのではなく、コンテキストに連結される」となっており、ファイルシステムのルートから順に並べられます。2つのファイルの内容が矛盾している場合、「Claude は任意に一方を選択することがあります」。一方、Cursor は明確な優先順位を定義しています。「ルールは次の順序で適用されます:Team Rules → Project Rules → User Rules。適用可能なすべてのルールがマージされ、ガイダンスが競合する場合は、より優先度の高いソースが優先されます。」Claude Code がコインの裏表で解決していたような矛盾を抱えたまま運用していた場合、Cursor はそれを一貫したルールで解決するため、これまで慣れていた挙動とは異なる結果になる可能性があります。

フックは移行されません。 Claude Code のドキュメントには、エスケープハッチについて「Claude の判断に関わらずアクションをブロックするには、代わりに PreToolUse フックを使用してください」と明記されています。これはコンテキストではなく強制力(enforcement)であり、移行対象のルールシステムの一部ではありません。

サブエージェントのメモリはもともと分離されていました。 「メインの会話の自動メモリはサブエージェントにはロードされない」ため、サブエージェント独自の自動メモリは専用のディレクトリに保存され、サブエージェントごとの状態としてその場に残ります。この境界線については、why Claude Code subagents don't share memory(Claude Code のサブエージェントがメモリを共有しない理由)で解説しています。

手動での移行手順

ステップ 1: 変更を加える前に、実際にロードされている内容をダンプする

読んだことのないセットアップを移行することはできません。Claude Code において、実際にロードされている設定は、自分が書いたと記憶している内容と一致しないことがよくあります。

セッション内で /context を実行し、Memory files の下にあるリストを確認してください。これが、どの CLAUDE.mdCLAUDE.local.md ファイルが実際に読み込まれたかを示す「真実のソース(ground truth)」です。ドキュメントでも、最初のデバッグステップとしてこれが推奨されています。「そこにファイルがない場合、Claude はそれを認識できません。」作業ディレクトリより上の階層にあるファイルは起動時にロードされます。サブディレクトリ内のファイルは「Claude がそれらのディレクトリ内のファイルを読み取るときにオンデマンドでロードされる」ため、一度もマッチしなかったサブディレクトリのルールは表示されません。

次に /memory を実行します。これにより、CLAUDE.mdCLAUDE.local.md、およびその他のメモリファイルの場所がリスト表示され、自動メモリフォルダを開くオプションが表示されます。これを開いてください。中にあるものはすべて、読み取り、編集、削除が可能なプレーンな Markdown です。特に feedbackproject ファイルは、セットアップ全体の中で最も価値の高い記述であることが多いです。あなたが与えた修正、デッドライン、コードには残っていない決定事項などが含まれています。今でも重要な内容を、ポータブルな形式にコピーしておきましょう。これらは自動的に Cursor に移行されることはありません。

確認する際、注意すべき点が2つあります。MEMORY.md は「MEMORY.md の最初の200行、または最初の25KBのいずれか早い方」までしかロードされません。そのため、ファイルが長い場合、後半部分はそもそも読み込まれていませんでした。また、トピックファイルは起動時には一切ロードされず、Claude は「標準のファイルツールを使用してオンデマンドで読み取ります」。目視ではなくログとして監査したい場合は、InstructionsLoaded フックが「どの指示ファイルが、いつ、なぜロードされたか」を正確に記録しています。

ステップ 2: フォーマットを一度決めて、Cursor でレイヤーを再構築する

以下の順序で、4つの決定を行います。

リポジトリの指示: AGENTS.md.cursor/rules か。 CLAUDE.mdAGENTS.md にコピーすれば、すぐに機能します。条件付きでロードしたいものだけを .cursor/rules に変換してください。これが .mdc のフロントマターが提供する機能です。Cursor の4つのルールタイプは、Always Apply(常に適用)、Apply Intelligently(インテリジェントに適用:「説明に基づいて Agent が関連性があると判断したとき」)、Apply to Specific Files(特定のファイルに適用:「ファイルが指定されたパターンに一致するとき」)、Apply Manually(手動で適用:「チャットで @メンションされたとき」)です。すでに paths: でスコープされたルールがあった場合は、それらを変換対象とし、残りは通常のテキスト(prose)のままで構いません。

拡張子に注意してください。「.cursor/rules 内のプレーンな .md ファイルは、descriptionglobsalwaysApply を指定するフロントマターがないため、ルールシステムによって無視されます。プレーンな Markdown を好む場合は、代わりに AGENTS.md を使用してください。」古いルールファイルをそのままそのディレクトリに放り込んでしまうのは、移行したつもりが何も適用されない状態(沈黙)になってしまう最も一般的な原因です。

インポートをフラット化する。 すべての @path チェーンを、それを参照しているファイルに展開するか、個別のルールに解決します。その際、長さに注意してください。Cursor のガイドラインでは「ルールは500行未満に抑える」こと、および「内容をコピーするのではなくファイルを参照する。これによりルールを短く保ち、コードの変更に伴ってルールが古くなるのを防ぐ」ことが推奨されています。Claude Code も同様の方向性を示しており、「CLAUDE.md ファイル1つあたり200行未満」を目標としています。

グローバルとローカルを分割する。 個人の好みは Customize → Rules に設定します。リポジトリの規約は AGENTS.md または .cursor/rules に記述してコミットします。ネストされた AGENTS.md を使用すると、フロントマターを一切使わずにディレクトリのスコープを設定できます。指示は「親ディレクトリのものと結合され、より具体的な指示が優先されます」。

チームでルールを共有する場合は、リモートルール(Remote rules)を使用する。 Cursor は GitHub リポジトリからルールをインポートできます。Customize → Rules → Add Rule → Remote Rule (Github) を選択し、リポジトリの URL を貼り付けると、「Cursor はリポジトリ内のすべての .mdc ファイルをスキャン」し、相対パスを維持したまま .cursor/rules/imported/<repoName> に配置します。これは .mdc 専用の機能であるため、テキストのまま残すのではなく変換する理由になります。また、これは両方のツールの中で、共有・更新可能なルールソースに最も近い仕組みです。

しばらく両方を併用することになった場合、逆方向の移行については migrating from Cursor to Claude Code(Cursor から Claude Code への移行)にまとめられており、ファイル標準に関する疑問は migrating your CLAUDE.md to AGENTS.md(CLAUDE.md から AGENTS.md への移行)でカバーされています。

より良い方法:蓄積された知識を両方のツールの外に置く

ステップ1で行ったことを振り返ってみてください。Claude が数ヶ月にわたってプロジェクトについて書き留めたメモのフォルダを開き、手動で読み、良い部分を別の場所にコピーしました。これは機能しましたが、通用するのは一度きりです。

手動で行わなければならない理由は、構造的なものです。自動メモリは設計上、マシンローカルです。Cursor のルールは設計上、リポジトリごとであり、バージョン管理されます。どちらのツールも、リクエストごとに常に送信されるコンテンツの量を制限するため、保持できる量に上限(ここでは200行、あちらでは500行など)を設けています。どちらも、アーキテクチャがなぜそのようになっているのかという「永続的な記録場所」として構築されておらず、そうであるとも主張していません。

それこそが MemoryLake が保持するものです。プロジェクトの永続的な知識を、ツールが読み取るレイヤーに保存するため、ツールの切り替えが「知識の移行作業」ではなくなります。セットアップは3つのステップで完了します。

ステップ 1: API キーを作成する

MemoryLake にサインインし、API キーを作成します。接続するすべてのツールで共通の認証情報として使用できます。

MemoryLake API キーの作成
MemoryLake API キーの作成

ステップ 2: 最初のメモリをアップロードする

1つの項目につき1つの主張を含む、短いエントリを作成します。先ほど確認した自動メモリフォルダがソース素材となります。すでに大まかに適切なカテゴリに分類されています:

最初のメモリを MemoryLake にアップロード
最初のメモリを MemoryLake にアップロード

複数回行う必要があった修正。 これは Claude Code 独自の feedback カテゴリであり、ディレクトリ内で最も価値のある情報です。両方のツールから読み取れる場所に移動しましょう。

決定事項と、それを強制した制約。 「負荷がかかるとリードレプリカが遅延するため、マイグレーションは追加のみとする」といった内容です。ルールはポリシーを規定しますが、このような制約を記録しておくことだけが、来週また同じ代替案が提案されるのを防ぐ唯一の方法です。

すでに却下されたアプローチとその理由。 ルールファイルにもコミットメッセージにも現れないカテゴリです。新しいエージェントは、毎回これを再び提案してきます。

苦労して学んだ環境に関する事実。 CI でのみ失敗するテスト、ドキュメント化されていないレート制限、最近のデータが全くないステージングデータベースなどです。

ステップ 3: AI とエージェントを接続する

使用しているツールを接続します。MemoryLake は MCP および API 経由でアクセスできるため、Claude Code、Codex、OpenClaw などの MCP ネイティブなエージェントは MCP サーバーを指定することで接続し、他のアシスタントは API を通じて同じメモリを読み取ります。これにより、移行をいつでも元に戻せるようになります。まだ検討している段階でも、両方のエディタから同じレイヤーを読み取ることができます。

MCP 経由で AI とエージェントを接続
MCP 経由で AI とエージェントを接続

3つの率直な制限事項があります。MemoryLake は自動メモリフォルダを読み取ることはなく、CLAUDE.md や Cursor のルールを書き換えることもありません。 ステップ1の手動での読み取りは必要であり、各ツールを制御するのはあくまでルールファイルです。MemoryLake は、ユーザーまたはエージェントが入力した内容のみを保持します。また、ルールとメモリはどちらもコンテキストであり、強制的な設定ではありません。状況に関わらず毎回必ず実行させたい処理がある場合は、メモリレイヤーではなく、フックや CI チェックを使用してください。

実務における変化

移行が「一方通行の扉」ではなくなります。 両方のエディタが同じ外部メモリを読み取るため、Claude Code のセットアップを解体することなく、Cursor を2週間試してみるといったことが可能になります。

移行しない場合でも、自動メモリの確認は行う価値があります。 ほとんどの人はそのフォルダを開いたことがありませんが、projectfeedback ファイルは、過去6ヶ月間の驚くほど優れた要約になっています。

新しいツールではルールファイルが短くなります。 CLAUDE.md が200行を超えて肥大化するのは、「制御」と「記憶」という2つの役割を同時に担っているからです。これらを一度分割してしまえば、どちらのツールの制限にも縛られなくなります。

「エージェントがまだ私のプロジェクトを理解していない」に対する本当の解決策が得られます。 「さらにルールを書く」のではなく、「その知識は最初からルールに含まれていなかった」という気づきです。これについては、why RAG isn't memory(なぜ RAG はメモリではないのか)で詳しく解説しています。

Claude Code から Cursor への移行におけるベストプラクティス

何よりも先に、自動メモリフォルダを開いてください。 これは、移行先にインポーターが存在しない唯一のセットアップ部分であり、あなたが直接記述していない部分です。

自分が書いた記憶ではなく、/context を信頼してください。 Memory files のリストに表示されているものが、実際にロードされたものです。一度もマッチしなかったサブディレクトリのファイルはそこには表示されません。

paths: ルールを globs に変換し、残りは通常のテキストとして保持します。 マッピングは直接行えます。それ以外は AGENTS.md として扱う方が簡単です。

.cursor/rules 内にプレーンな .md を放置しないでください。 何の警告もなく無視されます。フロントマター付きの .mdc を使用するか、AGENTS.md を使用してください。

@path インポートを再現しようとせず、フラット化してください。 Cursor の @filename 参照は、4ホップのインポートチェーンには対応していません。

矛盾が発生したときの解決先を決めておきます。 Cursor は Team Rules > Project Rules > User Rules の順にマージしますが、Claude Code は連結して任意に選択していました。これまで見過ごされてきた矛盾を解決しておきましょう。

グローバルな好みは User Rules に配置し、インライン編集のギャップに注意してください。 これらはプロジェクトをまたいで適用されますが、Cmd/Ctrl+K には適用されません。

意思決定の背景にある理由は、両方のルールシステムの外に置いておきます。 ルールは指示とポインタに過ぎません。決定の背後にある議論こそが、想定外のケースにエージェントが対処できるようにするための鍵となります。これについては、why agents ignore the instruction files you wrote(なぜエージェントはあなたが書いた指示ファイルを無視するのか)で解説しています。

結論

Claude Code から Cursor への移行は、机上では簡単に見えますが、実際には情報が失われやすく、その分岐点は予想外の場所にあります。CLAUDE.md はリネームするだけで AGENTS.md になります。paths: でスコープされたルールは、Cursor の globs にほぼ正確にマッピングされます。ユーザーレベルのファイルは User Rules になり、管理ポリシーファイルは Team Rules になります。

移行されないのは、Claude が自身のために書き留めたすべての内容です。自動メモリはデフォルトで有効になっており、~/.claude/projects/<project>/memory/ にマシンローカルな Markdown として保存されています。ここには、CLAUDE.md には含まれていない重要な情報が保持されていますが、Cursor がこれを見ることはありません。@path チェーンはフラット化する必要があり、CLAUDE.local.md はプロジェクトごとのスコープを失い、Claude Code が任意に解決していた矛盾は、明示された優先順位に従って解決されるようになります。

したがって、まずは自動メモリフォルダを確認し、/context でロードされたセットをダンプし、条件が必要なルールのみを変換し、決定事項や却下されたアプローチは両方のエディタからクエリできるレイヤーに配置するようにしてください。

よくある質問

Cursor は CLAUDE.md を読み込みますか?

いいえ。Cursor のドキュメントに記載されているルールソースは、.cursor/rules 内の Project Rules、User Rules、Team Rules、およびプロジェクトルートまたはサブディレクトリ内の AGENTS.md です。最も簡単な移行方法は、CLAUDE.mdAGENTS.md にコピーすることです。逆方向の制約にも注意してください。Claude Code のドキュメントには、Claude Code は CLAUDE.md を読み込み、AGENTS.md は読み込まないと記載されています。

Cursor に移行すると、Claude Code の自動メモリはどうなりますか?

そのまま元の場所に残ります。自動メモリはプロジェクトごとに ~/.claude/projects/<project>/memory/MEMORY.md インデックスとトピックファイルとして保存され、ドキュメントにはマシンローカルであり、マシン間やクラウド環境間で共有されないと記載されています。Cursor にはこれに相当する機能やインポートパスがないため、フォルダを確認して重要な内容を手動で引き継ぐ必要があります。

.claude/rules ファイルをそのまま使い続けることはできますか?

そのままでは使えませんが、コンセプトはきれいに移行できます。フロントマターに paths: フィールドを持つルールは、globs を持つ Cursor の .mdc ルールになります。これを持たないルールは無条件にロードされていたため、alwaysApply: true にするか、プレーンな AGENTS.md のコンテンツにします。拡張子を .mdc に変更し、フロントマターを追加してください。.cursor/rules 内のプレーンな .md ファイルは無視されます。

Cursor では @path インポートの代わりに何を使用しますか?

同じセマンティクス(意味論)を持つ機能はありません。CLAUDE.md のインポートは起動時に展開され、最大4ホップの深さまでネストできます。Cursor では、ルール内で @filename.ts を使用してファイルを参照できますが、これは再帰的なインポートチェーンではないため、複数レベルのインポートツリーは1つのファイルにフラット化するか、複数のルールに分割する必要があります。

Cursor が実際にどの指示を使用しているかを確認するにはどうすればよいですか?

Customize → Rules を開くと、すべてのルールとそのステータスを確認できます。ルールが適用されていない場合、Cursor の FAQ では、まずルールタイプを確認するよう推奨されています。Apply Intelligently(インテリジェントに適用)の場合は説明(description)が定義されていることを確認し、Apply to Specific Files(特定のファイルに適用)の場合はファイルパターンが参照されているファイルと一致していることを確認してください。また、ファイルの拡張子が .mdc になっていることも確認してください。

競合する指示は、両方のツールで同じように動作しますか?

いいえ、そのため事前に対策を立てておく価値があります。Claude Code は、検出されたすべてのメモリファイルを上書きするのではなく連結するため、ドキュメントには、矛盾する指示の間で Claude が任意に選択する可能性があると記載されています。Cursor は Team Rules、次に Project Rules、その次に User Rules を適用し、適用可能なすべてのルールをマージします。ガイダンスが競合する場合は、より優先度の高いソースが優先されます。