html
Clone a captured website into pixel-verified static HTML — a capture session (pages.json plus one folder per page holding…
Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices. Use when building browser extensions, creating popup UIs, implementing content scripts, working with Chrome APIs, managing extension permissions, or
Claude Code
$ npx -y skills add HarKro753/claude-copy --skill chrome-development --agent claude-code
Codex
$ npx skills add HarKro753/claude-copy --skill chrome-development -a codex -y
Cursor
$ npx skills add HarKro753/claude-copy --skill chrome-development -a cursor -y
Gemini CLI
$ npx skills add HarKro753/claude-copy --skill chrome-development -a gemini-cli -y
GitHub Copilot
$ npx skills add HarKro753/claude-copy --skill chrome-development -a github-copilot -y
OpenCode
$ npx skills add HarKro753/claude-copy --skill chrome-development -a opencode -y
Windsurf
$ npx skills add HarKro753/claude-copy --skill chrome-development -a windsurf -y
name: chrome-extension-development description: "Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices. Use when building browser extensions, creating popup UIs, implementing content scripts, working with Chrome APIs, managing extension permissions, or publishing to Chrome Web Store."
This skill provides expert-level guidance for Chrome extension development, covering JavaScript/TypeScript, browser extension APIs, and modern web development practices.
1. **Initialize the project** — Create the directory structure with `manifest.json`, background service worker, content scripts, and popup files. 2. **Configure the manifest** — Define permissions, content script matches, service worker registration, and action settings in Manifest V3 format. 3. **Implement the background service worker** — Set up event listeners for extension lifecycle, messaging, and alarms using the `chrome.*` API. 4. **Build content scripts** — Write scripts that interact with web page DOM, communicate with the background worker via `chrome.runtime.sendMessage`, and respect CSP. 5. **Create the popup UI** — Design the popup HTML/CSS and wire up interactivity with the background and content scripts. 6. **Add storage and state management** — Use `chrome.storage.local` or `chrome.storage.sync` to persist user settings and extension state. 7. **Test and debug** — Load the extension unpacked via `chrome://extensions`, use Chrome DevTools to inspect the service worker and content scripts, and run unit tests. 8. **Package and publish** — Prepare store assets (icons, screenshots, description), create a privacy policy, and submit to the Chrome Web Store.
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0.0",
"description": "A sample Chrome extension using Manifest V3",
"permissions": ["storage", "activeTab"],
"action": {
"default_popup": "popup/popup.html",
"default_icon": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
},
"background": {
"service_worker": "background/service-worker.js",
"type": "module"
},
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"js": ["content/content-script.js"],
"css": ["content/styles.css"]
}
]
}// background/service-worker.ts
// Listen for extension install or update
chrome.runtime.onInstalled.addListener((details) => {
if (details.reason === "install") {
chrome.storage.local.set({ initialized: true, count: 0 });
console.log("Extension installed");
}
});
// Handle messages from content scripts or popup
chrome.runtime.onMessage.addListener(
(message: { type: string; payload?: unknown }, sender, sendResponse) => {
if (message.type === "GET_COUNT") {
chrome.storage.local.get("count", (result) => {
sendResponse({ count: result.count ?? 0 });
});
return true; // keep message channel open for async response
}
if (message.type === "INCREMENT") {
chrome.storage.local.get("count", (result) => {
const newCount = (result.count ?? 0) + 1;
chrome.storage.local.set({ count: newCount }, () => {
sendResponse({ count: newCount });
});
});
return true;
}
},
);
// Schedule periodic tasks with chrome.alarms
chrome.alarms.create("sync-data", { periodInMinutes: 30 });
chrome.alarms.onAlarm.addListener((alarm) => {
if (alarm.name === "sync-data") {
console.log("Running scheduled sync");
}
});Clone a captured website into pixel-verified static HTML — a capture session (pages.json plus one folder per page holding…
Recreate a single flat image as one self-contained HTML page, verified by rendering it and comparing to the image — no capture,…
Clone a captured website into verified shadcn/ui React components — a capture session becomes one component per route with its…
When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages,…
Mathematical spacing, sizing, weight, line-height, letter-spacing, radius, and padding rules for "productive" SaaS interfaces,…
Build, validate, and distribute Claude Code plugins — the packaged form of skills, agents, hooks, MCP/LSP servers, monitors and…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.