browser-extension-builder
sickn33/agentic-awesome-skills
Build Chrome, Firefox, and cross-browser extensions with Manifest V3, content scripts, and store publishing.
What is browser-extension-builder?
Expert guidance for building production-ready browser extensions that solve real problems. Covers extension architecture, Manifest V3, content scripts, service workers, popup UIs, monetization strategies, and Chrome Web Store publishing. Use this when creating extensions for Chrome, Firefox, or multiple browsers.
- Design extension architecture with manifest v3, content scripts, and service workers
- Build popup interfaces and options pages for extension settings
- Implement content script patterns to modify and read page content
- Persist data using Chrome Storage API with async/await patterns
- Integrate monetization models (freemium, subscription, one-time, donations)
- Publish extensions to Chrome Web Store with proper validation and icons
How to install browser-extension-builder
npx skills add https://github.com/sickn33/agentic-awesome-skills --skill browser-extension-builder- Basic JavaScript knowledge
- Understanding of browser APIs and DOM manipulation
- Node.js for local development and testing
How to use browser-extension-builder
- 1.Set up project structure with manifest.json, popup/, content/, background/, options/, and icons/ directories
- 2.Create manifest.json with Manifest V3 format, specifying permissions, content scripts, and service worker
- 3.Build content scripts that run on matched pages to modify content or listen for messages
- 4.Implement background service worker for extension logic and storage management
- 5.Create popup.html and popup.js for the extension's user interface
- 6.Use chrome.storage API to persist user settings and data across sessions
- 7.Test communication patterns between popup, background worker, and content scripts
- 8.Integrate payment system for monetization by linking to external checkout pages
Use cases
- Creating a productivity extension that modifies webpage content and stores user preferences
- Building a freemium extension with premium features gated behind payment integration
- Developing a cross-browser extension that works on Chrome and Firefox with proper permissions
- Publishing an extension to the Chrome Web Store with icons, manifest, and store compliance
- Implementing real-time communication between popup UI, background service worker, and content scripts
- Full-stack developers building browser extensions
- Product builders monetizing extensions as micro-SaaS
- Developers migrating from Manifest V2 to V3
- Teams publishing extensions to official browser stores
browser-extension-builder FAQ
Manifest V3 is required for new Chrome extensions. Key changes: service workers replace background pages, content scripts have stricter isolation, and permissions are more granular. MV2 is deprecated and Chrome no longer accepts new MV2 extensions.
Use chrome.runtime.onMessage and chrome.runtime.sendMessage. Popup sends messages to the background service worker, which can relay to content scripts. Content scripts listen for messages and respond via sendResponse callback.
No, extensions cannot directly integrate Stripe. Instead, open your website with a user ID parameter, process payment on your backend, then sync the premium status back to the extension via your API.
chrome.storage.local allows 5MB per extension. chrome.storage.sync allows 100KB total with 8KB per item limit. Use local storage for most data and sync only critical settings across devices.
Request only necessary permissions. Use specific host_permissions instead of <all_urls>, and leverage optional_permissions for features users enable. Always check chrome.runtime.lastError after API calls.
Full instructions (SKILL.md)
Source of truth, from sickn33/agentic-awesome-skills.
name: browser-extension-builder description: Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing. risk: critical source: vibeship-spawner-skills (Apache 2.0) date_added: 2026-02-27
Browser Extension Builder
Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing.
Role: Browser Extension Architect
You extend the browser to give users superpowers. You understand the unique constraints of extension development - permissions, security, store policies. You build extensions that people install and actually use daily. You know the difference between a toy and a tool.
Expertise
- Chrome extension APIs
- Manifest v3
- Content scripts
- Service workers
- Extension UX
- Store publishing
Capabilities
- Extension architecture
- Manifest v3 (MV3)
- Content scripts
- Background workers
- Popup interfaces
- Extension monetization
- Chrome Web Store publishing
- Cross-browser support
Patterns
Architecture Patterns
Structure for modern browser extensions
When to use: When starting a new extension
Extension Architecture
Project Structure
extension/
├── manifest.json # Extension config
├── popup/
│ ├── popup.html # Popup UI
│ ├── popup.css
│ └── popup.js
├── content/
│ └── content.js # Runs on web pages
├── background/
│ └── service-worker.js # Background logic
├── options/
│ ├── options.html # Settings page
│ └── options.js
└── icons/
├── icon16.png
├── icon48.png
└── icon128.png
Manifest V3 Template
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0.0",
"description": "What it does",
"permissions": ["storage", "activeTab"],
"action": {
"default_popup": "popup/popup.html",
"default_icon": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content/content.js"]
}],
"background": {
"service_worker": "background/service-worker.js"
},
"options_page": "options/options.html"
}
Communication Pattern
Popup ←→ Background (Service Worker) ←→ Content Script
↓
chrome.storage
Content Scripts
Code that runs on web pages
When to use: When modifying or reading page content
Content Scripts
Basic Content Script
// content.js - Runs on every matched page
// Wait for page to load
document.addEventListener('DOMContentLoaded', () => {
// Modify the page
const element = document.querySelector('.target');
if (element) {
element.style.backgroundColor = 'yellow';
}
});
// Listen for messages from popup/background
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === 'getData') {
const data = document.querySelector('.data')?.textContent;
sendResponse({ data });
}
return true; // Keep channel open for async
});
Injecting UI
// Create floating UI on page
function injectUI() {
const container = document.createElement('div');
container.id = 'my-extension-ui';
container.innerHTML = `
<div style="position: fixed; bottom: 20px; right: 20px;
background: white; padding: 16px; border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 10000;">
<h3>My Extension</h3>
<button id="my-extension-btn">Click me</button>
</div>
`;
document.body.appendChild(container);
document.getElementById('my-extension-btn').addEventListener('click', () => {
// Handle click
});
}
injectUI();
Permissions for Content Scripts
{
"content_scripts": [{
"matches": ["https://specific-site.com/*"],
"js": ["content.js"],
"run_at": "document_end"
}]
}
Storage and State
Persisting extension data
When to use: When saving user settings or data
Storage and State
Chrome Storage API
// Save data
chrome.storage.local.set({ key: 'value' }, () => {
console.log('Saved');
});
// Get data
chrome.storage.local.get(['key'], (result) => {
console.log(result.key);
});
// Sync storage (syncs across devices)
chrome.storage.sync.set({ setting: true });
// Watch for changes
chrome.storage.onChanged.addListener((changes, area) => {
if (changes.key) {
console.log('key changed:', changes.key.newValue);
}
});
Storage Limits
| Type | Limit |
|---|---|
| local | 5MB |
| sync | 100KB total, 8KB per item |
Async/Await Pattern
// Modern async wrapper
async function getStorage(keys) {
return new Promise((resolve) => {
chrome.storage.local.get(keys, resolve);
});
}
async function setStorage(data) {
return new Promise((resolve) => {
chrome.storage.local.set(data, resolve);
});
}
// Usage
const { settings } = await getStorage(['settings']);
await setStorage({ settings: { ...settings, theme: 'dark' } });
Extension Monetization
Making money from extensions
When to use: When planning extension revenue
Extension Monetization
Revenue Models
| Model | How It Works |
|---|---|
| Freemium | Free basic, paid features |
| One-time | Pay once, use forever |
| Subscription | Monthly/yearly access |
| Donations | Tip jar / Buy me a coffee |
| Affiliate | Recommend products |
Payment Integration
// Use your backend for payments
// Extension can't directly use Stripe
// 1. User clicks "Upgrade" in popup
// 2. Open your website with user ID
chrome.tabs.create({
url: `https://your-site.com/upgrade?user=${userId}`
});
// 3. After payment, sync status
async function checkPremium() {
const { userId } = await getStorage(['userId']);
const response = await fetch(
`https://your-api.com/premium/${userId}`
);
const { isPremium } = await response.json();
await setStorage({ isPremium });
return isPremium;
}
Feature Gating
async function usePremiumFeature() {
const { isPremium } = await getStorage(['isPremium']);
if (!isPremium) {
showUpgradeModal();
return;
}
// Run premium feature
}
Chrome Web Store Payments
- Chrome discontinued built-in payments
- Use your own payment system
- Link to external checkout page
Validation Checks
Using Deprecated Manifest V2
Severity: HIGH
Message: Using Manifest V2 - Chrome requires V3 for new extensions.
Fix action: Migrate to Manifest V3 with service worker
Excessive Permissions Requested
Severity: HIGH
Message: Requesting broad permissions - may cause store rejection.
Fix action: Use specific host_permissions and optional_permissions
No Error Handling in Extension
Severity: MEDIUM
Message: Not checking chrome.runtime.lastError for errors.
Fix action: Check chrome.runtime.lastError after API calls
Hardcoded URLs in Extension
Severity: MEDIUM
Message: Hardcoded URLs may cause issues in production.
Fix action: Use chrome.storage or manifest for configuration
Missing Extension Icons
Severity: LOW
Message: Missing extension icons - affects store listing.
Fix action: Add icons in 16, 48, and 128 pixel sizes
Collaboration
Delegation Triggers
- react|vue|svelte -> frontend (Extension popup framework)
- monetization|payment|subscription -> micro-saas-launcher (Extension business model)
- personal tool|just for me -> personal-tool-builder (Personal extension)
- AI|LLM|GPT -> ai-wrapper-product (AI-powered extension)
Productivity Extension
Skills: browser-extension-builder, frontend, micro-saas-launcher
Workflow:
1. Define extension functionality
2. Build popup UI with React
3. Implement content scripts
4. Add premium features
5. Publish to Chrome Web Store
6. Market and iterate
AI Browser Assistant
Skills: browser-extension-builder, ai-wrapper-product, frontend
Workflow:
1. Design AI features for browser
2. Build extension architecture
3. Integrate AI API
4. Create popup interface
5. Handle usage limits/payments
6. Publish and grow
Related Skills
Works well with: frontend, micro-saas-launcher, personal-tool-builder
When to Use
- User mentions or implies: browser extension
- User mentions or implies: chrome extension
- User mentions or implies: firefox addon
- User mentions or implies: extension
- User mentions or implies: manifest v3
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Related skills
More from sickn33/agentic-awesome-skills and the wider catalog.

bullmq-specialist
Redis-backed job queues and reliable async execution for Node.js/TypeScript applications.

bun-development
Fast JavaScript/TypeScript development with the Bun runtime—built-in bundler, test runner, and optimized performance.

business-analyst
AI-powered business analysis with dashboards, KPI frameworks, and data-driven strategic recommendations.

cc-skill-frontend-patterns
React, Next.js, and state management patterns for performant, maintainable frontends.

cc-skill-security-review
Identify and fix security vulnerabilities in code before deployment.

clean-code
Transform working code into clean, maintainable code using Uncle Bob's proven principles.