mcpField
E
extension-dev

extension-dev

github.com/quangplDevelopment64206 installsUpdated 7w ago
Repository

About extension-dev

A skill for developing Chrome extensions that detects the project stack, consults relevant documentation, implements features, and supports debugging. It serves developers working with WXT, CRXJS, or vanilla setups.

Key features

  1. 01Detects extension and UI frameworks
  2. 02Finds framework and API documentation
  3. 03Implements features using framework conventions
  4. 04Provides context-specific debugging guidance
  5. 05Covers extension messaging and hot reload

Use cases

  1. 01Starting work in an unfamiliar extension repository
  2. 02Implementing a feature for a detected framework
  3. 03Debugging a popup, content script, or service worker

Install

Copy the command and run it in a terminal.

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

After installing, type/extension-devin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
chrome-api-quick-reference.md
debugging-guide.md
framework-detection.md
framework-styleguides.md
message-passing-patterns.md

Details

From the project README

Extension Dev

🚀 Upgrade to Premium Get the Premium version at https://app.extensionbooster.net/dashboard/services/extension-ai-kit

Detect the stack, find docs, implement the feature, debug. Do NOT just explain — execute the workflow.

Workflow (Execute This)

Step 1: Detect framework and UI stack

Run detection (see references/framework-detection.md):

ls wxt.config.ts crxjs.config.ts vite.config.ts manifest.json 2>/dev/null
cat package.json | grep -E '"wxt|crxjs|crxjs|react|vue|svelte"'
File foundFramework
wxt.config.tsWXT
package.json has crxjsCRXJS
vite.config has @crxjsCRXJS
manifest.json in root, none aboveVanilla
Step 2: Fetch framework docs and style guides

Use docs-seeker skill or web search to find proper docs for the detected stack.

Extension framework docs:

UI framework docs (fetch based on detected framework):

FrameworkDocsStyle Guide
Reacthttps://react.devhttps://react.dev/learn
Next.jshttps://nextjs.org/docshttps://nextjs.org/docs/app
Vuehttps://vuejs.org/guidehttps://vuejs.org/style-guide
Sveltehttps://svelte.dev/docshttps://svelte.dev/docs
SolidJShttps://solidjs.com/docshttps://solidjs.com/guides
Angularhttps://angular.dev/guidehttps://angular.dev/style-guide

Code style guides (always follow):

Step 3: Implement the feature

Follow framework conventions:

  • WXT: add entrypoints in entrypoints/, configure wxt.config.ts
  • CRXJS: add pages/tabs/contents, use CSUI for content UI
  • CRXJS: standard Vite + manifest-based setup
  • Vanilla: edit manifest.json, add JS files directly

For Chrome API usage, check references/chrome-api-quick-reference.md. For messaging between contexts, check references/message-passing-patterns.md.

Step 4: Debug

See references/debugging-guide.md for context-specific DevTools access.

Quick map:

ContextHow to inspect
Service workerchrome://extensions → "inspect" link
Content scriptPage DevTools → Console → select extension context
PopupRight-click popup → Inspect
Options / Side panelOpen page → F12
Step 5: Hot reload setup
FrameworkCommandNotes
WXTpnpm devFull HMR, auto-reloads extension
CRXJSpnpm devHMR for popup/content
CRXJSvite devVite HMR
VanillaManualReload at chrome://extensions

Chrome API Quick Reference (Top 20)

APIPurposePermission
chrome.tabsQuery, create, update tabstabs
chrome.windowsManage browser windowswindows
chrome.storage.localPersist data locallystorage
chrome.storage.syncSync data across devicesstorage
chrome.storage.sessionSession-only datastorage
chrome.actionToolbar icon, popup, badge—
chrome.contextMenusRight-click menu itemscontextMenus
chrome.sidePanelSide panel UIsidePanel
chrome.notificationsDesktop notificationsnotifications
chrome.scriptingInject scripts/CSS into pagesscripting
chrome.runtimeMessaging, lifecycle, manifest—
chrome.webRequestIntercept/modify network requestswebRequest
chrome.declarativeNetRequestBlock/redirect requests declarativelydeclarativeNetRequest
chrome.webNavigationTrack page navigation eventswebNavigation
chrome.identityOAuth2, Google Sign-Inidentity
chrome.alarmsSchedule periodic tasksalarms
chrome.commandsKeyboard shortcutscommands
chrome.cookiesRead/write cookiescookies
chrome.historyBrowser history accesshistory
chrome.bookmarksRead/write bookmarksbookmarks

Message Passing (Quick Pattern)

One-time (popup → service worker):

// sender
const response = await chrome.runtime.sendMessage({ type: "GET_DATA" });

// receiver (background)
chrome.runtime.onMessage.addListener((msg, sender, reply) => {
  if (msg.type === "GET_DATA") {
    reply({ data: "..." });
    return true;
  }
});

Content script → service worker: same pattern, return true for async. Tab-targeted (background → content):

chrome.tabs.sendMessage(tabId, { type: "ACTION" });

Full patterns in references/message-passing-patterns.md.


References

  • references/framework-detection.md — detect WXT/CRXJS/CRXJS/vanilla, dev commands
  • references/framework-styleguides.md — UI framework docs, style guides, extension framework docs
  • references/chrome-api-quick-reference.md — 30+ APIs with permissions and doc links
  • references/message-passing-patterns.md — all messaging patterns with TypeScript examples
  • references/debugging-guide.md — DevTools per context, common errors, tips

Related Skills

  • extension-create — scaffold new extension with WXT
  • extension-manifest — generate/validate manifest.json
  • extension-test — write and run extension tests
  • extension-analyze — analyze existing extension codebase

Comments

Markdown supported