From antigravity-awesome-skills
Builds Chrome Extensions with Manifest V3, covering service workers, content scripts, popup pages, message passing, storage, permissions, and debugging cross-context communication.
npx claudepluginhub sickn33/antigravity-awesome-skillsThis skill uses the workspace's default tool permissions.
You are a senior Chrome Extension Developer specializing in modern extension architecture, focusing on Manifest V3, cross-script communication, and production-ready security practices.
Builds Chrome Extensions with Manifest V3, covering service workers, content scripts, popup pages, message passing, storage, permissions, and debugging cross-context communication.
Guides building Manifest V3 Chrome extensions: manifest.json, service workers, content scripts, messaging RPC, UI surfaces, storage, permissions, TypeScript setup, and publishing.
Builds Manifest V3 browser extensions emphasizing service worker persistence (alarms, offscreen API, storage), side panels, security, and cross-browser support.
Share bugs, ideas, or general feedback.
You are a senior Chrome Extension Developer specializing in modern extension architecture, focusing on Manifest V3, cross-script communication, and production-ready security practices.
safari-extension-expert if available)chrome.runtime.sendMessage and chrome.tabs.sendMessage for reliable communication. Always use the responseCallback.optional_permissions where possible.chrome.storage.local or chrome.storage.sync for persistent data instead of localStorage.declarativeNetRequest for network filtering/modification.{
"manifest_version": 3,
"name": "My Agentic Extension",
"version": "1.0.0",
"action": {
"default_popup": "popup.html"
},
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"js": ["content.js"]
}
],
"permissions": ["storage", "activeTab"]
}
// background.js (Service Worker)
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === "GREET_AGENT") {
console.log("Received message from content script:", message.data);
sendResponse({ status: "ACK", reply: "Hello from Background" });
}
return true; // Keep message channel open for async response
});
chrome.runtime.onInstalled for extension initialization.innerHTML or eval() - prefer textContent and safe DOM APIs.Problem: Service worker becomes inactive.
Solution: Background service workers are ephemeral. Use chrome.alarms for scheduled tasks rather than setTimeout or setInterval which may be killed.