mcpField
E
extension-migration

extension-migration

github.com/quangpl開発64164 回インストール7 週間前に更新
リポジトリ

extension-migration について

Chrome 拡張機能を Manifest V2 から Manifest V3 へ移行する開発者向けのスキルです。監査、API と設定の変更、テスト、ストア提出を、移行表とチェックリストに沿って進められます。

主な機能

  1. 01MV2 拡張機能の監査手順
  2. 02バックグラウンドページから Service Worker への移行
  3. 03非推奨 API の置き換え一覧
  4. 04Manifest、権限、CSP の更新
  5. 05テストと提出のチェックリスト

活用シーン

  1. 01MV2 から MV3 への移行計画
  2. 02非推奨の拡張機能 API の置き換え
  3. 03権限と Manifest の変更点確認
  4. 04移行後のテストと提出準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/quangpl/browser-extension-skills --skill extension-migration

インストール後、Claude Code で/extension-migrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
breaking-changes.md
migration-checklist.md
network-request-migration.md
service-worker-migration.md

詳細

拡張機能の移行(MV2 → MV3)

🚀 Premium へアップグレード https://app.extensionbooster.net/dashboard/services/extension-ai-kit で Premium 版を入手できます。

公式の移行ガイド:https://developer.chrome.com/docs/extensions/develop/migrate

フレームワークの採用を検討してください:MV2→MV3 への移行時には、MV3 の組み込みサポート、自動マニフェスト生成、最新のツールを利用できる WXT または CRXJS の採用を検討してください。

ワークフローの概要

  1. 既存の MV2 拡張機能を監査します(API、権限、バックグラウンドスクリプト)
  2. manifest_version を 3 に更新します
  3. バックグラウンドページをサービスワーカーに変換します
  4. 非推奨の API を置き換えます(以下のクイックリファレンスを参照)
  5. 権限、CSP、web_accessible_resources の形式を更新します
  6. webRequest を declarativeNetRequest に移行します(ブロッキングを使用する場合)
  7. リモートコードをすべてローカルにバンドルします
  8. Chrome の各バージョンで、すべての機能をテストします
  9. Chrome ウェブストアに提出します

主な破壊的変更

項目MV2MV3
バックグラウンドbackground.scripts/pagebackground.service_worker
ブラウザーアクションbrowser_action / page_actionaction
ネットワークのブロッキングwebRequest (blocking)declarativeNetRequest
スクリプトの挿入tabs.executeScript(string)scripting.executeScript({func/files})
リモートコードCDN スクリプトを使用可能ローカルへのバンドルが必要
CSP文字列値オブジェクト {extension_pages: "..."}
ウェブからアクセス可能string[]matches フィールドを持つ object[]
ホスト権限permissions 配列内独立した host_permissions 配列
URL ヘルパーchrome.extension.getURLchrome.runtime.getURL
永続ストレージlocalStoragechrome.storage.local

移行の優先チェックリスト

  • manifest_version: 3 を設定
  • バックグラウンドをサービスワーカーに変換
  • localStorage/sessionStorage → chrome.storage.*
  • XMLHttpRequest → fetch
  • setInterval/setTimeout → chrome.alarms
  • browser_action/page_action → action
  • tabs.executeScript → scripting.executeScript
  • chrome.extension.getURL → chrome.runtime.getURL
  • permissions のホストエントリー → host_permissions
  • web_accessible_resources をオブジェクト形式に更新
  • content_security_policy をオブジェクト形式に更新
  • リモートコードがないこと(CDN スクリプト、eval、文字列形式の Function())
  • webRequest のブロッキング → declarativeNetRequest(使用している場合)

クイックリファレンス:MV2 → MV3 API マップ

chrome.extension.getURL()        → chrome.runtime.getURL()
chrome.extension.getBackgroundPage() → chrome.runtime.getBackgroundPage() [deprecated, use messaging]
chrome.tabs.executeScript()      → chrome.scripting.executeScript()
chrome.tabs.insertCSS()          → chrome.scripting.insertCSS()
chrome.browserAction.*           → chrome.action.*
chrome.pageAction.*              → chrome.action.*
webRequest (blocking)            → declarativeNetRequest
localStorage                     → chrome.storage.local
XMLHttpRequest                   → fetch()
setInterval (background)         → chrome.alarms
document/window (background)     → NOT available in service worker

マニフェストの差分

// MV2
{
  "manifest_version": 2,
  "background": { "scripts": ["bg.js"], "persistent": false },
  "browser_action": { "default_icon": "icon.png" },
  "permissions": ["webRequest", "webRequestBlocking", "https://example.com/*"],
  "content_security_policy": "script-src 'self'; object-src 'self'",
  "web_accessible_resources": ["images/*.png"]
}

// MV3
{
  "manifest_version": 3,
  "background": { "service_worker": "bg.js" },
  "action": { "default_icon": "icon.png" },
  "permissions": ["declarativeNetRequest"],
  "host_permissions": ["https://example.com/*"],
  "content_security_policy": { "extension_pages": "script-src 'self'; object-src 'self'" },
  "web_accessible_resources": [{ "resources": ["images/*.png"], "matches": ["<all_urls>"] }]
}

参考ファイル

関連スキル

  • extension-manifest - MV3 マニフェストの生成
  • extension-testing - 移行後のテスト
  • extension-security - 移行後のセキュリティ監査

コメント