Criar uma extensão do Chrome com Manifest V3 e permissões mínimas
Gere uma extensão de navegador completa com Manifest V3: manifest.json com permissões mínimas, service worker, content script, popup, mensagens, armazenamento e checklist para a Chrome Web Store. Pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Inclui 4 variáveis personalizáveis e pode copiá-lo gratuitamente com um clique.
Intermédio · Código · Pendente de revisão editorial
Prompt
Atua como programador especializado em extensões para navegadores baseados em Chromium com Manifest V3.
Contexto:
- O que a extensão deve fazer: {{proposito}}
- Sites onde funciona: {{sites}}
- Interface e pontos de entrada: {{interface}}
- Dados que guarda e se devem sincronizar entre dispositivos: {{dados}}
Entregáveis:
1. Arquitetura: o que fazem o service worker, o content script e o popup ou a página de opções, e como comunicam (chrome.runtime.sendMessage, portas), com um diagrama simples.
2. manifest.json completo com as permissões mínimas necessárias: justifica cada permissão e cada host_permissions; usa activeTab ou optional_permissions sempre que possível.
3. Código de cada ficheiro (service worker, content script, popup HTML/CSS/JS, opções se forem precisas) em JavaScript moderno, sem código remoto nem eval, respeitando a política de segurança de conteúdo do MV3.
4. Persistência com chrome.storage (local ou sync conforme {{dados}}), tendo em conta que o service worker pode parar a qualquer momento e não guarda estado em memória.
5. Acessibilidade básica do popup (etiquetas, foco, contraste) e textos preparados para tradução com _locales.
6. Como testar: carregar sem compactação em chrome://extensions, depurar o service worker e o content script, e casos de teste.
7. Checklist de publicação na Chrome Web Store: justificação das permissões, política de privacidade se tratar dados, capturas e ícones.
Restrições:
- Nada de recolha de dados nem rastreio que o utilizador não tenha pedido; se a extensão tratar dados pessoais, indica o que deve constar da política de privacidade.
- Se uma API puder variar entre versões, marca como [VERIFICAR na documentação de Chrome Extensions].
- Se não for claro o que a extensão deve fazer em cada site, pergunta-me primeiro.
Formato: secções numeradas, árvore de ficheiros e um bloco de código por ficheiro.Como utilizar
Descreve o comportamento com um exemplo concreto («quando seleciono texto, clique direito e…»). Cria os ficheiros numa pasta, carrega-a como extensão sem compactação e testa cada caso antes de pensares em publicá-la.
Exemplo de utilização
Propósito: realçar a amarelo as palavras-chave escolhidas em qualquer artigo · Sites: todos, só ao clicar no ícone · Interface: popup e menu de contexto · Dados: lista de palavras sincronizada.
Exemplo de resultado
1. Arquitetura
Basta um popup: ao abri-lo, activeTab dá acesso temporário ao separador atual. Não é preciso service worker nem content script, o que reduz permissões e superfície de ataque.
2. manifest.json
{
"manifest_version": 3,
"name": "__MSG_extName__",
"version": "1.0.0",
"default_locale": "pt_PT",
"action": { "default_popup": "popup.html", "default_title": "__MSG_saveTitle__" },
"permissions": ["activeTab", "storage"]
}
activeTab: lê o título e o URL só quando o utilizador clica no ícone.storage: guarda a lista emchrome.storage.sync.
3. popup.js
const list = document.querySelector('#list');
async function render() {
const { links = [] } = await chrome.storage.sync.get('links');
list.replaceChildren(...links.map(({ title, url }) => {
const a = Object.assign(document.createElement('a'), { href: url, textContent: title, target: '_blank' });
const li = document.createElement('li');
li.append(a); // textContent: nunca innerHTML com dados da página
return li;
}));
}
document.querySelector('#save').addEventListener('click', async () => {
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
if (!tab?.url) return;
const { links = [] } = await chrome.storage.sync.get('links');
if (!links.some((l) => l.url === tab.url)) {
links.unshift({ title: tab.title || tab.url, url: tab.url, savedAt: Date.now() });
await chrome.storage.sync.set({ links });
}
render();
});
render();
Atenção: o storage.sync tem um limite de tamanho por item; com uma única chave links, a lista enche depressa. Guarda cada link na sua própria chave ou passa para storage.local a partir de certo tamanho [VERIFICAR quotas na documentação de Chrome Extensions]…
Dados-chave
- Categoria
- Programação e desenvolvimento · Plugins
- Tipo de resultado
- Código
- Nível
- Intermédio
- Pensado para
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificado em
- Pendente de verificação editorial
- Variáveis
- Propósito, Sites, Interface e Dados e sincronização
- Idioma
- Português
- Preço
- Gratuito, sem registo
- Atualizado
- 07/11/2026
Perguntas frequentes
Vai funcionar no Edge, Brave ou Opera?
Em geral sim, porque usam Chromium e suportam Manifest V3, embora algumas APIs ou regras das respetivas lojas possam variar. Testa-a em cada navegador antes de a publicares lá.
Porquê pedir o mínimo de permissões?
Permissões amplas geram avisos que afastam utilizadores e prolongam a revisão na Chrome Web Store. Além disso, reduzem os danos caso a extensão tenha uma falha de segurança.
Para que serve este prompt?
Gere uma extensão de navegador completa com Manifest V3: manifest.json com permissões mínimas, service worker, content script, popup, mensagens, armazenamento e checklist para a Chrome Web Store.
Com que ferramentas de IA funciona?
Foi pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Ainda não o verificámos nestas ferramentas, pelo que os resultados podem variar entre elas.
Como personalizo o prompt?
Clique em “Personalizar” e preencha as variáveis (Propósito, Sites, Interface e Dados e sincronização). O texto atualiza-se instantaneamente e pode depois copiá-lo com um clique. Os valores ficam guardados apenas no seu navegador.
Preciso de experiência para o utilizar?
É de nível intermédio: convém conhecer o tema para fornecer bom contexto e rever o resultado com sentido crítico.
Este prompt é gratuito?
Sim. Todos os prompts do HomeCasa Prompts são gratuitos, sem registo nem subscrição. Pode também utilizá-los em projetos profissionais.
Posso confiar no resultado da IA?
Trate-o como um rascunho de qualidade: verifique sempre os dados, os números e as afirmações importantes antes de publicar ou tomar decisões.