wxt-browser-extensions
68
总安装量
68
周安装量
#3233
全站排名
安装命令
npx skills add https://github.com/pproenca/dot-skills --skill wxt-browser-extensions
Agent 安装分布
opencode
47
codex
47
claude-code
46
gemini-cli
44
github-copilot
39
antigravity
32
Skill 文档
Community WXT Browser Extensions Best Practices
Comprehensive performance optimization guide for WXT browser extension development. Contains 49 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation. Updated for WXT v0.20+.
When to Apply
Reference these guidelines when:
- Writing new WXT browser extension code
- Implementing service worker background scripts
- Injecting content scripts into web pages
- Setting up messaging between extension contexts
- Configuring manifest permissions and resources
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Service Worker Lifecycle | CRITICAL | svc- |
| 2 | Content Script Injection | CRITICAL | inject- |
| 3 | Messaging Architecture | HIGH | msg- |
| 4 | Storage Patterns | HIGH | store- |
| 5 | Bundle Optimization | MEDIUM-HIGH | bundle- |
| 6 | Manifest Configuration | MEDIUM | manifest- |
| 7 | UI Performance | MEDIUM | ui- |
| 8 | TypeScript Patterns | LOW-MEDIUM | ts- |
Quick Reference
1. Service Worker Lifecycle (CRITICAL)
svc-register-listeners-synchronously– Register listeners synchronously to prevent missed eventssvc-avoid-global-state– Use storage instead of in-memory statesvc-keep-alive-patterns– Keep service worker alive for long operationssvc-handle-install-update– Handle install and update lifecycle eventssvc-offscreen-documents– Use offscreen documents for DOM operationssvc-declarative-net-request– Use declarative rules for network blocking
2. Content Script Injection (CRITICAL)
inject-use-main-function– Place runtime code inside main() functioninject-choose-correct-world– Select ISOLATED or MAIN world appropriatelyinject-run-at-timing– Configure appropriate runAt timinginject-use-ctx-invalidated– Handle context invalidation on updateinject-dynamic-registration– Use runtime registration for conditional injectioninject-all-frames– Configure allFrames for iframe handlinginject-spa-navigation– Handle SPA navigation with wxt:locationchange
3. Messaging Architecture (HIGH)
msg-type-safe-messaging– Use @webext-core/messaging for type-safe protocolsmsg-return-true-for-async– Return true for async message handlers (raw API)msg-use-tabs-sendmessage– Use tabs.sendMessage for content scriptsmsg-use-ports-for-streams– Use ports for streaming communicationmsg-handle-no-receiver– Handle missing message receiversmsg-avoid-circular-messages– Prevent circular message loops
4. Storage Patterns (HIGH)
store-use-define-item– Use storage.defineItem for type-safe accessstore-choose-storage-area– Select appropriate storage areastore-batch-operations– Group related data into single defineItemstore-watch-for-changes– Use watch() for reactive updatesstore-handle-quota-errors– Handle storage quota errorsstore-versioned-migrations– Use versioning for schema migrations
5. Bundle Optimization (MEDIUM-HIGH)
bundle-split-entrypoints– Split code by entrypointbundle-analyze-size– Analyze and monitor bundle sizebundle-tree-shake-icons– Use direct imports for icon librariesbundle-externalize-wasm– Load WASM dynamicallybundle-minify-content-scripts– Minimize content script size
6. Manifest Configuration (MEDIUM)
manifest-minimal-permissions– Request minimal permissionsmanifest-use-optional-permissions– Use optional permissions progressivelymanifest-web-accessible-resources– Scope web accessible resourcesmanifest-content-security-policy– Configure CSP correctlymanifest-cross-browser-compatibility– Support multiple browsers
7. UI Performance (MEDIUM)
ui-use-shadow-dom– Use Shadow DOM for injected UIui-defer-rendering– Defer popup rendering until neededui-cleanup-on-unmount– Clean up UI on unmountui-sidepanel-persistence– Preserve sidepanel stateui-position-fixed-iframe– Use iframe for complex UIui-avoid-layout-thrashing– Batch DOM reads and writes
8. TypeScript Patterns (LOW-MEDIUM)
ts-use-imports-module– Use #imports virtual module and auto-importsts-use-browser-not-chrome– Use browser namespace over chromets-type-entrypoint-options– Type entrypoint options explicitlyts-augment-browser-types– Augment types for missing APIsts-strict-null-checks– Enable strict null checksts-import-meta-env– Use import.meta for build infots-avoid-any– Avoid any type in handlersts-path-aliases– Use path aliases for imports
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions – Category structure and impact levels
- Rule template – Template for adding new rules
Reference Files
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |