chrome-extension について
Chrome 拡張機能の開発者向けに、Manifest V3 のパフォーマンスとコード品質を扱うガイドです。影響度順のルールにより、新規開発や移行、最適化、問題調査を支援します。
主な機能
- 0112 の開発カテゴリを網羅
- 02優先度付きの 67 ルール
- 03サービスワーカーのライフサイクル管理
- 04コンテンツスクリプトとメッセージング
- 05エラー処理とテストの指針
活用シーン
- 01Chrome 拡張機能の新規作成
- 02Manifest V2 から V3 への移行
- 03拡張機能の性能問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill chrome-extensionインストール後、Claude Code で/chrome-extensionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdapi-avoid-redundant-api-calls.mdapi-handle-context-invalidated.mdapi-query-tabs-efficiently.mdapi-use-alarms-minperiod.mdapi-use-declarative-content.mdapi-use-promises-over-callbacks.mdcomp-adapter-interface.mdcomp-content-script-structure.mdcomp-css-class-patterns.mdcomp-manager-class.mdcomp-type-guards.mdcomp-ui-components.mdcontent-batch-dom-operations.mdcontent-minimize-script-size.mdcontent-programmatic-injection.mdcontent-use-document-idle.mdcontent-use-mutation-observer.mdcontent-use-specific-matches.mderr-context-invalidation.mderr-early-return.mderr-null-coalescing.mderr-promise-barrier.mderr-storage-operations.mderr-url-parsing.mderr-validation-pattern.md詳細
Chrome 拡張機能のベストプラクティス
Chrome 拡張機能(Manifest V3)の包括的なパフォーマンスおよびコード品質ガイドです。自動リファクタリングとコード生成の指針として、影響度順に優先順位付けされた12カテゴリ、67個のルールが含まれています。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- 新しい Chrome 拡張機能のコードを作成するとき
- Manifest V2 から Manifest V3 に移行するとき
- サービスワーカーのライフサイクルと状態管理を最適化するとき
- ページ操作用のコンテンツスクリプトを実装するとき
- 拡張機能のパフォーマンス問題をデバッグするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | サービスワーカーのライフサイクル | 重大 | sw- |
| 2 | コンテンツスクリプトの最適化 | 重大 | content- |
| 3 | メッセージパッシングの効率化 | 高 | msg- |
| 4 | ストレージ操作 | 高 | storage- |
| 5 | ネットワークと権限 | 中~高 | net- |
| 6 | メモリ管理 | 中 | mem- |
| 7 | UI パフォーマンス | 中 | ui- |
| 8 | API の使用パターン | 低~中 | api- |
| 9 | コードスタイルと命名 | 中 | style- |
| 10 | コンポーネントパターン | 中 | comp- |
| 11 | エラー処理 | 高 | err- |
| 12 | テストパターン | 中 | test- |
クイックリファレンス
1. サービスワーカーのライフサイクル(重大)
sw-persist-state-storage- グローバル変数ではなく chrome.storage を使って状態を永続化するsw-avoid-keepalive- 人工的なサービスワーカーのキープアライブパターンを避けるsw-use-alarms-api- setTimeout/setInterval ではなく chrome.alarms を使うsw-return-true-async- 非同期レスポンスを返す場合、メッセージリスナーから true を返すsw-register-listeners-toplevel- イベントリスナーをトップレベルで登録するsw-use-offscreen-for-dom- DOM API にはオフスクリーンドキュメントを使う
2. コンテンツスクリプトの最適化(重大)
content-use-specific-matches- URL マッチパターンを具体的に指定するcontent-use-document-idle- コンテンツスクリプトの挿入には document_idle を使うcontent-programmatic-injection- マニフェストでの宣言よりプログラムによる挿入を優先するcontent-minimize-script-size- コンテンツスクリプトのバンドルサイズを最小限に抑えるcontent-batch-dom-operations- リフローを最小限に抑えるため、DOM 操作をまとめて行うcontent-use-mutation-observer- ポーリングではなく MutationObserver を使う
3. メッセージパッシングの効率化(高)
msg-use-ports-for-frequent- 頻繁なメッセージ交換にはポート接続を使うmsg-minimize-payload-size- メッセージのペイロードサイズを最小限に抑えるmsg-debounce-frequent-events- メッセージ送信前に高頻度イベントをデバウンスするmsg-check-lasterror- 常に chrome.runtime.lastError を確認するmsg-avoid-broadcast-to-all-tabs- すべてのタブへのメッセージのブロードキャストを避ける
4. ストレージ操作(高)
storage-batch-operations- 個別に呼び出す代わりに、ストレージ操作をまとめて実行するstorage-choose-correct-type- ユースケースに適したストレージの種類を選ぶstorage-cache-frequently-accessed- 頻繁にアクセスするストレージの値をキャッシュするstorage-use-session-for-temp- 一時的な実行時データにはstorage.sessionを使用するstorage-avoid-storing-large-blobs- 大きなバイナリデータの保存を避ける
5. ネットワークと権限(中~高)
net-use-declarativenetrequest- webRequestではなくdeclarativeNetRequestを使用するnet-request-minimal-permissions- 必要最小限の権限を要求するnet-use-activetab- 広範なホスト権限ではなくactiveTab権限を使用するnet-limit-csp-modifications- Content Security Policyヘッダーの変更を避ける
6. メモリ管理(中)
mem-cleanup-event-listeners- コンテンツスクリプトのアンロード時にイベントリスナーをクリーンアップするmem-avoid-detached-dom- デタッチされたDOMノードへの参照を保持しないmem-avoid-closure-leaks- クロージャによる意図しないメモリリークを避けるmem-clear-intervals-timeouts- クリーンアップ時にインターバルとタイムアウトを解除するmem-use-weak-collections- DOM要素への参照にはWeakMapとWeakSetを使用する
7. UIパフォーマンス(中)
ui-minimize-popup-bundle- 起動を速くするため、ポップアップのバンドルサイズを最小限にするui-render-with-cached-data- まずキャッシュデータを使ってポップアップUIを描画するui-batch-badge-updates- ちらつきを防ぐため、バッジの更新をまとめて行うui-use-options-page-lazy- オプションページのセクションを遅延読み込みする
8. APIの使用パターン(低~中)
api-use-promises-over-callbacks- コールバックよりもPromiseベースのAPI呼び出しを使用するapi-query-tabs-efficiently- 特定のフィルターを指定してタブをクエリするapi-avoid-redundant-api-calls- ループ内での重複したAPI呼び出しを避けるapi-use-alarms-minperiod- alarms APIの最小期間を守るapi-handle-context-invalidated- 拡張機能のコンテキストが無効化されたエラーに対処するapi-use-declarative-content- ページアクションにはdeclarative content APIを使用する
9. コードスタイルと命名規則(MEDIUM)
style-boolean-naming- 真偽値変数には is/has/should の接頭辞を使用するstyle-cache-naming- キャッシュ変数の命名を統一するstyle-constants- マジックナンバーには定数を定義するstyle-directory-structure- 機能またはレイヤーごとにコードを整理するstyle-file-naming- ファイルの命名規則を統一するstyle-function-naming- 関数には内容がわかる名前を付けるstyle-import-type- 型には型専用のインポートを使用するstyle-index-entry-points- モジュールのエントリーポイントにはインデックスファイルを使用するstyle-message-enums- メッセージの種類には列挙型を使用するstyle-type-naming- 型とインターフェースには PascalCase を使用する
10. コンポーネントのパターン(MEDIUM)
comp-adapter-interface- ブラウザー API にはアダプターパターンを使用するcomp-content-script-structure- コンテンツスクリプトの構造を統一するcomp-css-class-patterns- BEM または接頭辞付きの CSS クラスを使用するcomp-manager-class- 複雑な状態にはマネージャークラスを使用するcomp-type-guards- 実行時の検証には型ガードを使用するcomp-ui-components- 再利用可能な UI コンポーネントを作成する
11. エラー処理(HIGH)
err-context-invalidation- 拡張機能のコンテキスト無効化に対処するerr-early-return- エラー処理には早期リターンを使用するerr-null-coalescing- デフォルト値には null 合体演算子を使用するerr-promise-barrier- 同期には Promise バリアを使用するerr-storage-operations- ストレージ操作の失敗に対処するerr-url-parsing- try/catch を使って URL を安全に解析するerr-validation-pattern- 境界で入力を検証する
12. テストのパターン(MEDIUM)
test-browser-api-mocking- テストでは chrome API をモックするtest-organization- 機能ごとにテストを整理するtest-validation-functions- 検証関数を徹底的にテストする
使用方法
詳しい説明とコード例については、個々のリファレンスファイルをお読みください。
完全版のドキュメント
すべてのルールを1つのドキュメントにまとめた完全なガイドについては、AGENTS.mdをご覧ください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| AGENTS.md | すべてのルールをまとめた完全版ガイド |
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応