Nano Banana Pro
Agent skill for nano-banana-pro
**Especialista Extensões de Navegador** com domínio em:
Sign in to like and favorite skills
Especialista Extensões de Navegador com domínio em:
AssistenteDeRegulacaoMedica/ ├── manifest.json # Chrome/Edge config ├── manifest-edge.json # Edge specific ├── sidebar.js # Main UI entry point ├── background.js # Service worker ├── content-script.js # Page injection ├── api.js # External API calls ├── store.js # State management ├── utils.js # Shared utilities ├── field-config.js # Form field mappings ├── filter-config.js # Filter definitions ├── options.html/js # Extension settings ├── help.html/js # Help documentation ├── ui/ # UI components │ ├── search.js # Patient search │ └── patient-card.js # Patient display ├── icons/ # Extension icons ├── src/input.css # TailwindCSS source └── dist-zips/ # Built packages
manifest.json - Permissions, host_permissions, CSPbackground.js - Service worker lifecyclecontent-script.js - SIGSS page detectionstore.js - State consistencyimport * as API from "./api.js")fetchRegulationDetails())API_TIMEOUT)📝 IMPLEMENTAR ↓ 🎨 BUILD CSS (se mudou UI) ↓ 📦 BUILD ZIPS (se mudou core) ↓ ✅ VALIDAR ├── npm run ci:validate ├── npm run lint:fix └── ⚠️ npm run test:unit (TEMPORARIAMENTE DESABILITADO) ↓ 🔄 TESTAR EM AMBOS BROWSERS ↓ 📋 UPDATE CHANGELOG [Unreleased] ↓ 💾 COMMIT ↓ ✅ COMPLETO
⚠️ NOTA TEMPORÁRIA: Os testes JEST estão temporariamente desabilitados devido a problemas técnicos. O fluxo de release e CI/CD foi ajustado para não depender dos testes até que sejam corrigidos.
npm run dev # Desenvolvimento npm run ci:validate # Validação completa npm run build:css # Build TailwindCSS npm run package:all # Generate browser packages
npm run dev # Desenvolvimento com watch npm run build:prod # Build produção npm run ci:validate # Validação completa npm run test:unit # Testes unitários npm run release:patch # Release patch version
npm run build:css # Compila TailwindCSS npm run package:all # Gera ZIPs Chrome/Firefox/Edge npm run release:all # Release completo
npm run devnpm run ci:validatenpm run release:patch ou npm run release:minor// ✅ Correto - ES6 modules import * as API from "./api.js"; import { store } from "./store.js"; export function fetchRegulationDetails() {} // ✅ Medical domain functions - camelCase inglês const normalizeTimelineData = (apiData) => { ... }; const fetchAllTimelineData = async () => { ... }; // ❌ Evitar - CommonJS em browser extension const API = require("./api.js"); module.exports = { fetchRegulationDetails };
// ✅ State management pattern const state = { currentPatient: { ficha: null, cadsus: null } }; const listeners = []; export const store = { subscribe, getState, setState }; // ✅ Browser API cross-compatibility const api = typeof browser !== 'undefined' ? browser : chrome; await api.storage.local.set({ pendingRegulation: data }); // ✅ Medical data flow pattern // 1. Search → 2. Fetch details → 3. Clear lock const details = await fetchRegulationDetails(reguId); await clearRegulationLock(reguId);
// ✅ Correct permissions for medical extension "permissions": ["storage", "scripting", "contextMenus", "clipboardWrite"], "host_permissions": ["*://*/sigss/*"], "content_security_policy": { "extension_pages": "script-src 'self'; object-src 'self'; connect-src http://* https://*;" }
SEMPRE use ErrorHandler para logging em extensão médica:
// ✅ CORRETO: Import e uso do ErrorHandler import { logInfo, logError, ERROR_CATEGORIES } from './ErrorHandler.js'; // ✅ Logging de dados médicos (sanitização automática) logInfo( 'Paciente processado', { reguId: 'REG_123', // ✅ ID técnico preservado cpf: '123.456.789-01', // 🔒 Automaticamente sanitizado }, ERROR_CATEGORIES.MEDICAL_DATA ); // ❌ NUNCA: Console.log direto com dados sensíveis console.log('Paciente:', { cpf: '123.456.789-01' }); // ❌ PROIBIDO
ERROR_CATEGORIES.MEDICAL_DATA; // Dados de pacientes ERROR_CATEGORIES.SIGSS_API; // Chamadas SIGSS ERROR_CATEGORIES.SECURITY; // Questões de segurança ERROR_CATEGORIES.CONTENT_SCRIPT; // Content script logs ERROR_CATEGORIES.BACKGROUND_SCRIPT; // Background logs
// ✅ Tracking de operações médicas críticas const handler = getErrorHandler(); handler.startPerformanceMark('buscarPaciente'); const result = await API.buscarPaciente(cpf); handler.endPerformanceMark('buscarPaciente', ERROR_CATEGORIES.MEDICAL_DATA);
# Browser extension debugging chrome://extensions/ # Chrome DevTools about:debugging # Firefox debugging npm run serve # Firefox test environment
npm run build:css// ✅ Logging seguro para extensão médica console.log('[Assistente de Regulação] Timeline carregada'); console.warn('⚠️ SIGSS data structure changed'); console.error('❌ API call failed:', error.message); // Não o error completo // ❌ NUNCA fazer - exposição de dados sensíveis console.log('Patient data:', patient); // LGPD violation console.log('CPF:', cpf); // Medical data exposure
// ✅ Sequência OBRIGATÓRIA - nunca quebrar 1. searchPatients(name/cpf) 2. fetchVisualizaUsuario(patientId) → isenFullPKCrypto 3. fetchAllTimelineData(isenFullPKCrypto) 4. normalizeTimelineData(rawData)
// ✅ Lock/Unlock pattern - VITAL para reguladores 1. fetchRegulationDetails(reguId) → dados + lock 2. clearRegulationLock(reguId) → libera para outros // SEMPRE executar clearRegulationLock após fetch
cns (Cartão Nacional de Saúde)isenPK, isenFullPKCrypto (IDs criptografados)reguIdp, reguIds (IDs de regulação)nome, dataNascimento, nomeMae (dados pessoais)<tipo>(<escopo>): <descrição> feat(timeline): adiciona filtro por especialidade médica fix(sigss): corrige detecção de locks de regulação docs(api): documenta endpoints CADSUS style(ui): melhora responsividade da sidebar refactor(store): simplifica state management
Tipos: feat, fix, docs, style, refactor, test, chore, release
git commit -m "feat(sidebar): adiciona busca automática de pacientes" git commit -m "fix(api): corrige timeout em chamadas SIGSS" git commit -m "release: v3.3.8 - melhorias na timeline médica"
## [Unreleased] ### ✨ Added - **Timeline**: Visualização cronológica de consultas ### 🛠️ Changed - **UI**: Layout responsivo da sidebar ### 🐞 Fixed - **API**: Timeout em chamadas CADSUS
npm run ci:validate # Validação completa npm run lint:fix # Fix linting issues npm run test:unit # Testes unitários npm run build:css # Rebuild CSS npm run validate:security # Segurança médica npm run validate:packages # Validar conteúdo dos packages
npm run build:chrome # Build Chrome npm run build:firefox # Build Firefox npm run build:edge # Build Edge web-ext run # Test Firefox
npm run ci:validate passou// ✅ Secure medical data handling const sanitizedData = sanitizePatientData(rawData); await api.storage.local.set({ data: sanitizedData }); // ✅ Proper regulation flow const details = await fetchRegulationDetails(reguId); // Process details... await clearRegulationLock(reguId); // ALWAYS clear lock
// ✅ Debounced searches for UX const debouncedSearch = debounce(searchPatients, 500); // ✅ Efficient DOM updates const fragment = document.createDocumentFragment(); // ... append elements to fragment container.appendChild(fragment);
npm run dev # Desenvolvimento npm run ci:validate # Antes commit npm run build:css # Após mudanças UI npm run release:patch # Release
manifest.json - Permissions e CSPapi.js - Fluxos SIGSS/CADSUSstore.js - State managementtimeline.js - Lógica médica principalManifest V3 compliant
Medical data secured
Cross-browser tested
Changelog updated
Commit realizado
CPFCNS (Cartão Nacional de Saúde)isenPK e isenFullPKCrypto (identificadores do paciente)reguIdp e reguIds (identificadores de regulação)nome, dataNascimento, nomeMae).medicalTestHelpers.sanitizeForLog), que deve ser aplicada a qualquer log de produção.Conformidade (LGPD/HIPAA):
isenFullPKCrypto garante que o acesso aos dados do paciente seja sempre mediado por um token criptográfico.session storage do navegador, que é limpo ao final da sessão.Segurança da Extensão:
content_security_policy (CSP) rigoroso.manifest.json devem ser mínimas e justificadas.Foco: Pipeline de CI/CD, automação de build, testes, versionamento e deploy.
Pipeline de CI/CD (GitHub Actions):
lint, format), testes (unitários, integração) e build a cada push/PR.Automação de Build e Testes:
Webpack é usado para criar bundles otimizados e específicos para cada navegador.Jest para testes unitários e de integração.test/mocks/medical-apis.js contém simulações detalhadas para todas as interações com sistemas externos.Versionamento e Release:
CHANGELOG.md é mantido no formato Keep a Changelog, com categorias semânticas e seções específicas para o domínio médico.package.json contém mais de 50 scripts para automação de tarefas, incluindo npm run release:* para facilitar o processo de release.Foco: Convenções de código, implementação de funcionalidades, boas práticas e resolução de problemas do dia a dia.
Convenções de Nomenclatura:
camelCase, em inglês, com nomes descritivos e focados na ação (ex: applyAutomationFilters).camelCase, em inglês. Coleções no plural (exams), objetos únicos no singular (currentPatient).Padrões de Código:
import/export são usados em todo o projeto.map, filter, reduce para manipulação de dados.try...catch para chamadas de API, com uma função centralizada handleFetchError.renderers.js e utils.js (como showDialog) abstraem a manipulação direta da DOM.Mensagens de Commit:
Husky sugerem o padrão Conventional Commits (feat(api): ..., fix(timeline): ...).Ambiente de Desenvolvimento:
npm run dev) utiliza webpack-dev-server com recarregamento automático.ESLint e Prettier estão configurados para garantir a consistência do código, com hooks de pre-commit para validação automática.