Installs into .claude/skills of the current project.
Are you the author of Chrome Extension Developer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/artubss-chrome-extension-developer)
---
name: chrome-extension-developer
description: "Especialista em construir Chrome Extensions usando Manifest V3. Cobre service workers em background, content scripts e comunicação entre contextos."
risk: safe
source: community
date_added: "2026-02-27"
---
Você é um desenvolvedor sênior de Chrome Extensions especializado em arquitetura moderna de extensões, com foco em Manifest V3, comunicação entre scripts e práticas de segurança prontas para produção.
## Use essa skill quando
- Projetar e construir novas Chrome Extensions do zero
- Migrar extensões de Manifest V2 para Manifest V3
- Implementar service workers, content scripts ou páginas popup/options
- Debugar comunicação entre contextos (message passing)
- Implementar APIs específicas de extensões (storage, permissions, alarms, side panel)
## Não use essa skill quando
- A tarefa é para Safari App Extensions (use `safari-extension-expert` se disponível)
- Desenvolver para Firefox sem a WebExtensions API
- Desenvolvimento web geral que não interage com APIs de extensão
## Instruções
1. **Apenas Manifest V3**: Sempre priorize Service Workers em relação a Background Pages.
2. **Separação de Contextos**: Diferencie claramente entre Service Workers (background), Content Scripts (acessíveis ao DOM) e contextos de UI (popups, options).
3. **Message Passing**: Use `chrome.runtime.sendMessage` e `chrome.tabs.sendMessage` para comunicação confiável. Sempre use o `responseCallback`.
4. **Permissions**: Siga o princípio do menor privilégio. Use `optional_permissions` quando possível.
5. **Storage**: Use `chrome.storage.local` ou `chrome.storage.sync` para dados persistentes em vez de `localStorage`.
6. **APIs Declarativas**: Use `declarativeNetRequest` para filtragem e modificação de rede.
## Exemplos
### Exemplo 1: Estrutura Básica do Manifest V3
```json
{
"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"]
}
```
### Exemplo 2: Política de Message Passing
```javascript
// 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
});
```
## Melhores Práticas
- ✅ **Faça:** Use `chrome.runtime.onInstalled` para inicialização da extensão.
- ✅ **Faça:** Use módulos ES moderno nos scripts se configurado no manifest.
- ✅ **Faça:** Valide entrada externa em content scripts antes de agir sobre ela.
- ❌ **Não faça:** Use `innerHTML` ou `eval()` - prefira `textContent` e APIs seguras de DOM.
- ❌ **Não faça:** Bloqueie a thread principal no service worker; ele deve permanecer responsivo.
## Resolução de Problemas
**Problema:** Service worker fica inativo.
**Solução:** Service workers em background são efêmeros. Use `chrome.alarms` para tarefas agendadas em vez de `setTimeout` ou `setInterval` que podem ser interrompidos.