実際に移行できるもの
Claudeのスキルが保存されている場所
Claudeのスキルは3つの異なる場所に存在する可能性があり、Anthropicはこれらが共有されないことを明言しています。「カスタムスキルは、異なる環境間で同期されません。」
- Claude Code: スキルはディスク上のフォルダにあります。個人用スキルは
~/.claude/skills/、プロジェクト内スキルは.claude/skills/に保存されます。古いカスタムコマンドも同様に扱われます。「.claude/commands/deploy.md にあるファイルと、.claude/skills/deploy/SKILL.md にあるスキルは、どちらも /deploy を作成し、同じように動作します。」 - claude.ai: カスタムスキルは、設定からzipファイルとしてアップロードされます。「カスタムスキルはユーザーごとに個別です。」 zip圧縮する前のフォルダが手元に残っている場合は、それが移行元となるコピーです。
- Claude API: API経由でアップロードされたスキルは、APIワークスペース全体で共有され、claude.aiとは別に管理されます。
claude.aiのスキルがアカウント内にしか存在しない場合でも、ファイルをディスク上に取得する文書化された方法があります。ターミナルでclaude.aiアカウントを使用してClaude Code(v2.1.273以降)にサインインすると、Claude Codeはそのアカウントで有効になっているスキルを ~/.claude/skills/synced/ に同期します。この同期は一方向です。「Claude Codeは同期されたスキルをダウンロードするだけで、アップロードすることはありません。」そのため、この同期フォルダは編集用ではなく、移行元として読み取るためのコピーとなります。
フォーマットが保証するもの、しないもの
オープン標準では、name、description、license、compatibility、metadata、allowed-tools の6つのフロントマターフィールドが定義されています。OpenAIの要件はさらにシンプルです。「スキルとは、SKILL.mdファイルと、オプションのスクリプトや参照を含むディレクトリです。SKILL.mdファイルには、nameとdescriptionを含める必要があります。」
一方、Claude Codeはさらに踏み込んでいます。when_to_use、argument-hint、arguments、disable-model-invocation、user-invocable、disallowed-tools、model、effort、context、agent、hooks、paths など、独自のフィールドを多数受け入れます。Anthropic自身のドキュメントでも、「Claude Code以外では、Agent Skills仕様のフィールドのみを使用できます」と線引きされています。実際、claude.aiでもアップロード時にこれらの追加フィールドがあるとエラーになります。
スキルの本文(body)についても同様の乖離があります。Anthropicは「動的なコンテキスト注入など、Claude Code専用の本文機能は、claude.aiのチャットやAPI経由では機能しません」と指摘しています。Anthropic自身のチャット製品で動作しないのであれば、ChatGPTでも動作しない前提で計画を立てるべきです。
実質的に、name と description のみを使用し、プレーンなMarkdownの指示で書かれたスキルが最も移植性に優れています。context: fork、paths、引数のプレースホルダー、またはインラインのシェルコマンドに依存しているスキルは、書き直しが必要です。
ChatGPTでスキルが表示される場所
これは最初に確認すべき部分です。OpenAIのドキュメントには、「スタンドアロンのスキルは、ChatGPTデスクトップアプリ、Codex CLI、およびIDE拡張機能で利用できます。プラグインにバンドルされたスキルは、Web、デスクトップ、モバイルのChatGPT全体のChatおよびWorkでも利用できます」と記載されています。
つまり、単体で追加したスキルフォルダはデスクトップアプリで動作します。Web版やスマートフォンのChatGPTで使用するには、プラグインとしてパッケージ化する必要があります。OpenAIは「スキルを使用してワークフロー自体を設計し、他の人にインストールさせたい場合はプラグインとしてパッケージ化します」と説明しています。カスタムGPTのワークフローも移行する場合は、カスタムGPTからChatGPTプラグインへの移行ガイドでプラグイン側について詳しく解説しています。
OpenAIのデスクトップ版での手順:「ChatGPTデスクトップアプリで、サイドバーの『Skills』を開き、プロジェクト全体で作成されたスキルを表示・探索します。」 Codexの場合、ローカルスキルはフォルダから読み込まれます。Codexは「現在の作業ディレクトリからリポジトリのルートまでのすべてのディレクトリにある .agents/skills をスキャン」し、個人用の場所は $HOME/.agents/skills となります。フォルダ名が .claude/skills ではなく .agents/skills である点に注意してください。
呼び出し(起動)方法はClaudeとほぼ同じです。「ChatGPTで @ を入力してスキルを選択します。」また、ユーザーの要求がスキルの説明(description)と一致する場合、ChatGPTが自動的にスキルを選択することもあります。
インポートフローでカバーされる範囲
スキルがClaude CodeまたはClaude Coworkにある場合、OpenAIのインポートフローを使用して移行できます。「デスクトップアプリは、Claude Code、Claude Cowork、またはCursorからインポートできます。」インポートの対応表では、スキル(Skills)はスキルに、スラッシュコマンド(Slash commands)はスキルにマッピングされ、「インポートによって既存のエージェント設定が変更または削除されることはありません」とされています。
OpenAIはインポート後に確認すべき項目もリストアップしており、そのうちの2つはスキルに直接関係しています。「インポートされたスキルとエージェントにおけるツールの制限または権限」および「引数、シェル補間、またはファイルパスのプレースホルダーに依存するプロンプトテンプレートまたはコマンドスタイルのプロンプト」です。これらは、前述したClaude Codeの拡張機能と同じものです。インポーターはファイルを移行しますが、Claudeだけが理解できる内容を書き直してくれるわけではありません。
インポート元となるのはClaude CodeとClaude Coworkです。通常のチャットで使用するためにclaude.aiにアップロードしたスキルは、ファイル自体から手動で移行するのが最善です。
残されるもの(移行されないもの)
スキルは「手順」であり、「記憶(memory)」ではありません。アシスタントに「何かを行う方法」を指示するものであり、それを使用する過程でアシスタントがあなたやプロジェクト、クライアントについて学んだことは保持されません。エージェントのスキルが記憶ではない理由についての解説で、この違いについて詳しく説明しています。
Claude의記憶、プロジェクトのナレッジ、およびチャット履歴は、個別に移行する必要があります。Claudeの記憶をChatGPTに移行するガイドおよびClaude ProjectsをChatGPTに移行するガイドでこれらをカバーしています。
共有設定も再設定が必要です。ChatGPT内において、OpenAIは「スキルを移動しても、ChatGPTワークスペースの所有権、共有、ロール割り当て、プラグインのインストール状態、またはコネクタの認証は転送されません」と指摘しています。
手動での移行手順
ステップ 1: スキルフォルダを集めてポータブルにする
残したいすべてのスキルを収集します:
- Claude Codeから:
~/.claude/skills/内のフォルダ、各プロジェクトの.claude/skills/、および現在も使用している.claude/commands/ファイル。 - claude.aiから: 元のフォルダ、またはそのアカウントでClaude Codeにサインインした後に
~/.claude/skills/synced/に同期されたコピー。 - APIから: アップロードした移行元のフォルダ。
各スキルについて、SKILL.md を開き、フロントマターを整理します:
nameとdescriptionは残します。 標準仕様に従い、nameには小文字、数字、ハイフンが使用され、フォルダ名と一致していることを確認します。when_to_useをdescriptionに統合します。 Claude Codeでは、when_to_useを「トリガーフレーズやリクエスト例など、Claudeがスキルを呼び出すべき追加のコンテキスト」と説明しています。ChatGPTの暗黙的なマッチングは説明文(description)に基づいて実行されるため、OpenAIは「暗黙的なマッチングは説明文に依存するため、明確な範囲と境界を持つ簡潔な説明を記述してください」と直接アドバイスしています。disable-model-invocationを変換します。 Claude Codeでは、これは「Claudeがこのスキルを自動的にロードするのを防ぐためにtrueに設定する」ものです。OpenAIがドキュメント化している最も近い機能は、スキルフォルダ内のオプションのagents/openai.yamlファイルのpolicyの下にあるallow_implicit_invocationです。ドキュメントには「falseの場合、Codexはユーザーのプロンプトに基づいて暗黙的にスキルを呼び出しません。明示的な $skill 呼び出しは引き続き機能します」と説明されています。- 残りのフィールドは削除または書き直します。
context、paths、model、effort、hooksなどのフィールドはClaude Codeの機能です。スキルがこれらに依存していた場合は、可能な限り指示(instructions)の中にその動作を書き込むか、スキルがよりシンプルに動作することを受け入れてください。
次に、本文を読みます。引数のプレースホルダーやインラインのシェルコマンドをプレーンな指示に置き換え、同梱されているスクリプトがClaude以外でも正常に動作するか確認します。
スキルがClaude CodeまたはCoworkから移行されたものである場合は、最初にOpenAIのインポートを実行してから、インポートされたコピーに対してこの確認作業を行うこともできます。どちらの方法でも、確認内容は同じです。
ステップ 2: ChatGPTにスキルをインストールしてテストする
各スキルをどこで動作させるかを選択します。
- デスクトップアプリまたはCodexの場合: Claude CodeまたはCoworkのスキルの場合は、「設定」から「インポート」を使用します。デスクトップアプリ、CLI、またはIDE拡張機能のCodexの場合、自身で整理したフォルダを個人用には
$HOME/.agents/skillsに、チームと共有するにはリポジトリ内の.agents/skillsに配置します。Codexは「シンボリックリンクされたスキルフォルダをサポートし、これらの場所をスキャンする際にシンボリックリンク先を追跡する」ため、各スキルのコピーを1つにまとめたい場合に役立ちます。 - ChatGPTのWeb版またはモバイル版の場合: スキルをプラグインにパッケージ化します。
- 作り直したいスキルの場合: ChatGPT Workの組み込みクリエイター
@skill-creatorを使用し、Claudeの指示をスターティングポイントとして貼り付けます。説明文に関するOpenAI'sのテンプレートは、そのための優れたプロンプトになります:「このスキルがトリガーされるべき状況と、されるべきではない状況を正確に説明してください。」
その後、すべてのスキルを2回テストします。1回目は @ でスキルを選択してテストし、2回目はプレーンな言葉でタスクを依頼して、ChatGPTが自動的にそのスキルを選択するかどうかを確認します。結果をClaudeの出力と比較してください。明示的な呼び出しは機能するが、暗黙的な呼び出しが機能しない場合は、説明文(description)を修正する必要があります。
どの指示をスキルにし、どの指示を常時オンのルールにするかを整理している場合は、Cursorのスキルとルールの比較ガイドで、別のツールにおける同様の判断基準を解説しています。
より良い方法:スキルが依存するコンテキストを、自分が管理する1つの場所に保管する
スキルはアシスタントに「週次レポートの書き方」を教えます。しかし、「今期どのクライアントに注力しているか」「先月チームが何を決定したか」「新しいステークホルダーがどのフォーマットを好むか」は教えてくれません。手順は固定されている一方で、こうしたコンテキストは週ごとに変化する可能性があり、これらをスキル内部に含めてしまうと、変更があるたびに、スキルが存在するすべてのツールでスキルを編集しなければならなくなります。
MemoryLake は、そうしたコンテキストを自身で管理する1つのリストに保持し、ChatGPT、Claude Code、および接続する他のアシスタントから利用できるようにするためのメモリレイヤーです。これにより、スキルは手順のみに集中させることができます。
エントリーはあなた自身の言葉で作成します。Claudeのスキル、claude.aiアカウント、ChatGPTのスキルやプラグイン、あるいはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。会社のシステム外に業務の詳細を保存する前に、組織のポリシーを確認してください。
ステップ 1: APIキーを作成する
サインインし、ダッシュボードからキーを生成します。このキーはMemoryLakeワークスペースに属し、AnthropicやOpenAIのアカウントとは独立しています。

ステップ 2: 最初の記憶をアップロードする
スキルが常に必要とする事実から始めましょう:現在の優先事項、クライアントの好み、タスクの実行方法を変更する決定事項などです。1つのエントリーにつき1つの事実または決定事項を、日付付きで登録します。

ステップ 3: AIとエージェントを接続する
ChatGPTやClaude Code、その他使用しているアシスタントを接続します。これにより、スキルは手順を担い、最新のコンテキストは各ツールでスキルと並行して利用可能になります。

実務における変化
第1の違いは、スキルセットがよりクリーンになることです。移行を機に見直しが行われるため、移行後のスキルはポータブルなフィールドを使用し、トリガーされるべきタイミングを明確に説明し、特定のツールに依存した機能ではなく純粋な指示を含むようになります。
第2の違いは、各スキルがどこで動作するかを把握できることです。デスクトップ専用のスキルとプラグインとしてパッケージ化されたスキルを意図的に選択できるようになり、スマートフォンでスキルが表示されずに驚くといったことがなくなります。
第3の違いは、後からの編集が減ることです。変化するコンテキストをスキルの外部に保持することで、新しい優先事項や新しいクライアントが発生しても、手順を書き直す必要がなくなります。Claudeの会話履歴をChatGPTに移行するガイドでは、こうしたコンテキストの多くが残されている可能性のある会話履歴の移行について解説しています。
ClaudeのスキルをChatGPTに移行するためのベストプラクティス
記憶ではなく、ファイルから移行する。 claude.aiスキルの同期コピーを含む、スキルフォルダから作業を行います。
標準フィールドのみを使用する。 name と description は両方で必須です。それ以外のClaude CodeのフィールドはClaude専用です。
トリガーワードを説明文に含める。 暗黙的なマッチングは説明文に依存します。
デスクトップ版かプラグインかを事前に決める。 スタンドアロンのスキルはWeb版やモバイル版には表示されません。
明示的および暗黙的な呼び出しをテストする。 スキルを信頼して使用する前に、両方が機能することを確認します。
スキルごとにコピーを1つに保つ。 1箇所で編集し、各ツールからそこを参照させます。
変化するコンテキストをスキルに含めない。 手順は優先事項よりも長持ちします。
結論
ClaudeとChatGPTはどちらも同じオープン標準に基づいてスキルを構築しているため、SKILL.md ファイルは最初から書き直すことなく相互に移行できます。自動的に移行されないのは、拡張フィールド、本文の機能、スキルの保存場所、共有設定など、Claude固有の要素すべてです。
Claude Code、claude.ai、およびAPIからスキルフォルダを収集しましょう。それぞれを標準フィールドに整理し、トリガーフレーズを説明文に統合し、呼び出し設定を変換します。それらをデスクトップアプリにインストールするか、Web版やモバイル版向けにプラグインとしてパッケージ化し、両方の方法でテストします。そして、スキルが依存するコンテキストは、スキル自体に触れることなく更新できる場所に保管してください。