feat: sync all plugins, skills, agents updates

New plugins: core-tools
New skills: auto-expense, ticket-triage, design, security-check,
  aiktop-tasks, daily-digest, imap-triage, index-update, mindmap,
  notebooklm, proc-creator, tasks-overview, validate-component,
  perfex-module, report, calendar-manager
New agents: design-critic, design-generator, design-lead,
  design-prompt-architect, design-researcher, compliance-auditor,
  metabase-analyst, gitea-integration-specialist
Updated: all plugin configs, knowledge datasets, existing skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 17:16:15 +00:00
parent f2b5171ea2
commit 9404af7ac9
184 changed files with 20865 additions and 1993 deletions

View File

@@ -0,0 +1,254 @@
---
name: imap-triage
description: >
Triagem automatica de emails IMAP em 14 contas. Elimina spam, arquiva promocionais, identifica facturas para /auto-expense, flagga prioritarios. Deduplicacao via Supabase. Use when "imap", "triagem email", "limpar emails", "email triage", "processar emails".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: management
tags: [imap, email, triage, spam, promotions, invoices, supabase]
desk_task: 1710
desk_project: 65
allowed-tools: Read, Write, mcp__imap, mcp__ssh-unified
mcps: imap, ssh-unified
dependencies:
mcps: [imap, ssh-unified]
files:
- /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
triggers:
- "User asks to process emails"
- "User mentions 'imap', 'triagem', 'emails', 'limpar inbox'"
- "Invoked by /today orchestrator"
---
# /imap-triage v1.0
Triagem automatica de 14 contas IMAP com deduplicacao Supabase.
---
## Contas IMAP (14)
```
emanuel, it, help, suporte, contabilidade, financeiro,
rh, mkt, design, news, aiktop, recursos, google
```
---
## Protocolo
### Passo 0: Carregar emails ja processados (Supabase)
> Executar UMA VEZ no inicio, antes de iterar contas.
> Fonte de verdade: tabela `imap_processed_emails` em Supabase (EasyPanel).
```
mcp__ssh-unified__ssh_execute(
server="easy",
command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -t -A -c \"SELECT message_id FROM public.imap_processed_emails\""
)
Guardar resultado como Set: processed_ids
```
### Passo 1: Carregar tabela de fornecedores
```
Read: /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
Extrair:
- Lista de dominios de fornecedores conhecidos
- Lista de dominios de plataformas multi-fornecedor
```
### Passo 2: Iterar contas IMAP
Para cada conta: `imap_list_emails(account, folder="INBOX", limit=50)`
Para cada email:
1. Verificar `message_id` contra `processed_ids` -> SE match, SALTAR
2. Classificar por ordem de prioridade (ver seccao Classificacao)
### Passo 3: Registar no Supabase (batch)
> Executar UMA VEZ no final, apos processar todas as contas.
```
Acumular lista: { message_id, account_id, subject, sender, email_date, action, action_detail }
Actions: spam_deleted, promo_archived, expense_flagged, priority_flagged, notification_closed, skipped
mcp__ssh-unified__ssh_execute(
server="easy",
command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -c \"
INSERT INTO public.imap_processed_emails (message_id, account_id, subject, sender, email_date, action, action_detail)
VALUES (...)
ON CONFLICT (message_id) DO NOTHING;
\""
)
Maximo ~50 VALUES por INSERT.
```
### Passo 4: Escrever output JSON
```
Escrever em ~/.claude-work/today-imap-{date}.json:
{
"spam": 5,
"promo": 12,
"facturas": [
{"account": "contabilidade", "uid": 164, "message_id": "...", "fornecedor": "MEO", "subject": "..."}
],
"prioritarios": [
{"account": "emanuel", "uid": 100, "subject": "...", "sender": "..."}
],
"notificacoes": [...],
"erros": [],
"contas_processadas": 14,
"total_emails": 45
}
```
---
## Classificacao de Emails
> Aplicar por ordem de prioridade. Primeiro match ganha.
### 1. SPAM -> Eliminar
```
imap_delete_email(account, uid)
Padroes:
- Subject: lottery, winner, urgent money, bitcoin investment, guest post, SEO services, backlinks, partnership
- Remetente: *.ru, *.cn (excepto conhecidos)
- Subject todo em MAIUSCULAS
- Subject com caracteres estranhos excessivos
```
### 2. PROMOCIONAL -> Arquivar
```
imap_move_email(account, uid, "Promotions")
NOTA: Contas sem pasta "Promotions" (google, design, rh) -> imap_delete_email
Padroes:
- Subject: newsletter, promo, desconto, oferta, unsubscribe
- Remetente: *@marketing.*, *@news.*, *@promo.*
- Headers: List-Unsubscribe presente
```
### 3. FACTURA/RECIBO -> Flag para /auto-expense
```
NAO processar aqui - apenas identificar e registar no output JSON.
A skill /auto-expense trata da criacao de despesas.
Deteccao:
3a. FORNECEDOR DIRECTO:
- Dominio remetente bate com tabela de fornecedores
- Subject contem: factura, invoice, recibo, receipt, pagamento, paid
3b. PLATAFORMA MULTI-FORNECEDOR:
- Dominio: toconline.pt, stripe.com, paypal.com, fastspring.com, payproglobal.com
- Registar com nota sobre plataforma
Action: expense_flagged
```
### 4. NOTIFICACAO SISTEMA -> Registar
```
Padroes protegidos (NUNCA auto-fechar):
- Legal Update, Policy Change, Deprecation, End of Life
- Security Alert, API Change, Terms Update
- Action Required, Migration Required
- Compliance, GDPR, Infrastructure Change
Outros:
- Wordfence alerts, n8n updates, server notifications
- Registar para inclusao no dashboard de alertas
Action: notification_closed ou priority_flagged (conforme gravidade)
```
### 5. PRIORITARIO -> Incluir no relatorio
```
- Remetente: cliente conhecido (verificar nome/dominio)
- Subject: urgente, problema, erro, critical, down
- Threads activas (RE:, FW:)
Action: priority_flagged
```
### 6. RESTANTES -> Saltar
```
Emails que nao encaixam em nenhuma categoria.
Action: skipped
```
---
## Excepcoes (NUNCA processar automaticamente)
```
- *@descomplicar.pt (internos)
- *@gov.pt, *@at.gov.pt, *@seg-social.pt (governo)
- *@tribunais.org.pt (tribunais)
```
---
## Emails a IGNORAR (nao sao facturas)
```
- "Payment Confirmation" / "Payment Was Successfully Processed" -> apenas confirmacao
- "Your subscription has been renewed" sem valor -> apenas notificacao
- "Notificacao de transferencia" de bancos -> notificacao bancaria
- Marketing/changelog dos mesmos fornecedores -> promocional
- Subject "Welcome" / "Getting Started" -> onboarding
```
---
## Output Standalone
Quando invocado directamente (sem /today):
```markdown
## Triagem IMAP - DD-MM-YYYY
**Total: X emails processados em Y contas**
| Conta | Spam | Promo | Factura | Notif | Prio | Total |
|-------|------|-------|---------|-------|------|-------|
### Facturas Detectadas (para /auto-expense)
- contabilidade: MEO (uid 164) - FT A/861215955
### Prioritarios
- emanuel: [Subject] de [Remetente]
### Alertas Sistema
- [Alertas de seguranca, updates criticos]
```
---
## Anti-Patterns
- NUNCA criar despesas directamente (delegar para /auto-expense)
- NUNCA processar >50 emails por conta (limitar)
- NUNCA eliminar emails de dominios protegidos
- SEMPRE registar no Supabase, mesmo se skipped
- SEMPRE usar imap_delete para contas sem pasta "Promotions"
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -0,0 +1,456 @@
# Regras de Triagem de Emails
## Contas IMAP (12)
```yaml
accounts:
- emanuel@descomplicar.pt
- it@descomplicar.pt
- help@descomplicar.pt
- suporte@descomplicar.pt
- contabilidade@descomplicar.pt
- financeiro@descomplicar.pt
- info@descomplicar.pt
- rh@descomplicar.pt
- mkt@descomplicar.pt
- design@descomplicar.pt
- news@descomplicar.pt
- aiktop@descomplicar.pt
```
---
## Regra 1: SPAM (Eliminar)
**Acção**: `imap_delete_email`
### Padrões Subject (case insensitive)
```
- lottery
- winner
- million dollars
- urgent money
- bitcoin investment
- crypto opportunity
- claim your prize
- act now
- limited time offer
- you have been selected
- dear beneficiary
- inheritance
- nigerian prince
```
### Padrões Remetente
```
- *@*.ru (excepto conhecidos)
- *@*.cn (excepto conhecidos)
- no-reply@spam*
- noreply@bulk*
```
### Indicadores técnicos
```
- SPF fail
- DKIM fail
- Muitos caracteres especiais no subject
- Subject todo em MAIÚSCULAS
```
---
## Regra 2: PROMOCIONAIS (Arquivar ou Eliminar)
**Acção padrão**: `imap_move_email` → pasta "Promotions"
**Excepções por conta:**
```yaml
delete_promotions:
- rh # Não tem pasta Promotions - apagar directamente
```
> Contas listadas em `delete_promotions`: usar `imap_delete_email` em vez de mover.
### Padrões Subject
```
- newsletter
- promo
- promoção
- desconto
- oferta especial
- black friday
- cyber monday
- novidades
- new arrivals
- sale
- % off
- grátis
- free shipping
```
### Padrões Remetente
```
- *@marketing.*
- *@news.*
- *@promo.*
- *@newsletter.*
- *@campaigns.*
- *@mailchimp.com
- *@sendgrid.net
- *@mailgun.org
```
### Headers
```
- List-Unsubscribe presente
- Precedence: bulk
- X-Campaign-*
```
---
## Regra 3: FACTURAS PAGAS (Reencaminhar)
**Acção**: Registar para reencaminhar para `contabilidade@descomplicar.pt`
### Padrões Subject
```
- factura
- fatura
- invoice
- recibo
- receipt
- pagamento confirmado
- payment confirmed
- pago
- paid
- comprovativo
- ordem de pagamento
```
### Padrões Remetente (serviços conhecidos)
```
- *@hetzner.com
- *@ovh.com
- *@cloudflare.com
- *@github.com
- *@google.com
- *@microsoft.com
- *@adobe.com
- *@figma.com
- *@notion.so
- *@stripe.com
- *@paypal.com
- *@wise.com
- *@revolut.com
- *@n26.com
- *facturacao@*
- *billing@*
- *invoices@*
```
### Anexos
```
- *.pdf com "factura" no nome
- *.pdf com "invoice" no nome
- *.pdf com "recibo" no nome
```
---
## Regra 4: PRIORITÁRIOS (Listar)
**Acção**: Incluir no relatório diário para revisão manual
### Padrões Subject
```
- urgente
- urgent
- importante
- important
- problema
- problem
- erro
- error
- falha
- failure
- down
- offline
- crítico
- critical
```
### Remetentes prioritários
```
# Clientes activos (verificar DeskCRM)
# Parceiros importantes
# Serviços críticos:
- *@cloudflare.com (security alerts)
- *@hetzner.com (server alerts)
- *@github.com (security)
- *@google.com (security)
```
### Indicadores
```
- RE: ou FW: (threads activas)
- Múltiplos destinatários da empresa
- Marcado como importante pelo remetente
```
---
## Excepções (Nunca processar automaticamente)
```yaml
whitelist_senders:
- *@descomplicar.pt # Internos
- *@cliente-importante.pt # Clientes VIP
whitelist_domains:
- gov.pt # Governo
- tribunais.org.pt # Tribunais
- at.gov.pt # Autoridade Tributária
- seg-social.pt # Segurança Social
```
---
## Pastas IMAP Standard
| Pasta | Uso |
|-------|-----|
| INBOX | Emails por processar |
| Promotions | Emails promocionais arquivados |
| Processed | Emails processados pelo /today |
| Important | Emails marcados como prioritários |
| Trash | Eliminados |
---
## Métricas Diárias
Registar em cada execução:
```yaml
metrics:
date: YYYY-MM-DD
accounts_processed: 12
total_emails: X
spam_deleted: Y
promotions_archived: Z
invoices_forwarded: W
priority_flagged: V
processing_time: Xs
```
---
---
## Regras de Tickets (DeskCRM)
### Notificações de Sistema → NUNCA auto-fechar
> **REGRA PRIORITÁRIA:** Verificar ANTES dos padrões SPAM. Se um ticket corresponder a esta regra, não pode ser fechado automaticamente.
**Padrões protegidos (subject - case insensitive):**
```regex
Legal Update|Legal Notice|Policy Change|Policy Update|
Deprecation|End of Life|EOL|Breaking Change|
Migration Required|Action Required|Action Needed|
Security Alert|Security Advisory|Security Notice|
API Change|API Update|Terms Update|Terms Change|
Service Disruption|Maintenance Required|
Compliance|GDPR|Data Processing|Data Processor|
Infrastructure Change|Platform Update|transitions to
```
**Condição:** Remetente deve ser fornecedor conhecido (ver lista de remetentes conhecidos abaixo).
**Acção:**
```
→ NÃO fechar
→ Listar no relatório como: "⚠️ REQUER ACÇÃO: #{ID} - {Assunto}"
→ Manter aberto para análise e decisão manual
```
---
### Tickets SPAM → Fechar AUTOMATICAMENTE
> **IMPORTANTE:** Verificar PRIMEIRO se o ticket corresponde à regra de "Notificações de Sistema" acima. Se sim, NÃO fechar.
**Padrões de detecção (subject):**
```regex
Guest Post|SEO services|backlinks|partnership|
link building|dofollow|collaboration opportunity|
Boas Festas|Season's Greetings
```
> **NOTA:** "Action Required", "Termos de Serviço" e notificações legais foram removidos dos padrões SPAM. Podem indicar mudanças reais em serviços que usamos. São tratados pela regra de "Notificações de Sistema" acima.
**⚡ Acção AUTOMÁTICA - Executar SEM intervenção manual:**
```
close_ticket(ticket_id, message="Fechado automaticamente - SPAM detectado")
# Registar: "🗑️ SPAM fechado: #{ID} - {Assunto}"
```
> [!important] SPAM = FECHAR IMEDIATAMENTE
> Não perder tempo a analisar. Fechar automaticamente e seguir em frente.
---
### Tickets de PAGAMENTOS → Contabilidade + Fechar
**Departamentos DeskCRM:**
| ID | Nome | Email |
|----|------|-------|
| 1 | Comercial | info@descomplicar.pt |
| 2 | Suporte | suporte@descomplicar.pt |
| 3 | **Contabilidade** | contabilidade@descomplicar.pt |
| 4 | RH | rh@descomplicar.pt |
| 5 | Design | design@descomplicar.pt |
| 6 | Marketing | mkt@descomplicar.pt |
| 7 | Tecnologia | it@descomplicar.pt |
**Padrões de detecção (subject):**
```regex
payment|pagamento|pago|paid|
invoice|factura|fatura|recibo|
successfully.*(processed|completed)|
subscription.*(renewed|confirmed)|
order.*confirmed|receipt|
account.*funded|has been funded|
Envio de Fatura Eletrónica|
Invoice Payment Confirmation|
Customer Invoice
```
**Remetentes conhecidos (processar SEMPRE):**
```yaml
services:
# Hosting & Infra
- "*@elasticemail.com" # Elastic Email
- "*@hetzner.com" # Hetzner
- "*@hetzner.de"
- "*@centos-webpanel.com" # CWP
- "*@control-webpanel.com"
# Design & Tools
- "*@canva.com" # Canva
# Telecom PT
- "*@meo.pt" # MEO
- "*@altice.pt"
- "*@nos.pt" # NOS (futuro)
- "*@vodafone.pt" # Vodafone (futuro)
# Cloud & SaaS
- "*@cloudflare.com"
- "*@github.com"
- "*@google.com"
- "*@microsoft.com"
- "*@adobe.com"
- "*@figma.com"
- "*@notion.so"
- "*@openai.com"
- "*@email.openai.com"
- "*@anthropic.com"
- "*@openrouter.zendesk.com" # OpenRouter
# Pagamentos
- "*@stripe.com"
- "*@paypal.com"
- "*@wise.com"
- "*@revolut.com"
```
**Lógica de processamento:**
```
IF assunto contém padrão de pagamento/factura:
IF remetente IN remetentes_conhecidos:
→ Contabilidade + Fechar (AUTOMÁTICO)
ELSE:
→ Avaliar indicadores de spam/phishing
→ LISTAR para revisão manual com recomendação
```
**⚡ Acção AUTOMÁTICA para remetentes CONHECIDOS:**
```
# Executar AMBAS as acções automaticamente, SEM intervenção manual:
1. update_ticket(ticket_id, department=3) # Mover para Contabilidade
2. close_ticket(ticket_id, message="Fatura processada automaticamente - Contabilidade")
# Registar: "💰 Contabilidade + Fechado: #{ID} - {Assunto}"
```
**Acção para remetentes DESCONHECIDOS:**
```
1. Avaliar indicadores de spam (ver abaixo)
2. LISTAR no relatório com recomendação:
- [SPAM?] se indicadores presentes
- [NOVO?] se parece legítimo (possível novo serviço)
3. Aguardar decisão manual
```
### Indicadores de SPAM/PHISHING
**Alta probabilidade de SPAM:**
- Remetente pessoal (gmail, hotmail, yahoo) a enviar "facturas empresariais"
- Domínio suspeito (muitos números, hífens, extensões estranhas)
- Erros ortográficos no assunto ("facktura", "pagamanto")
- Assunto todo em MAIÚSCULAS
- Urgência exagerada ("ÚLTIMO AVISO", "URGENTE", "CONTA SUSPENSA")
- Sem número de factura/referência específico
- Remetente não corresponde à empresa alegada no assunto
**Provavelmente LEGÍTIMO (novo serviço):**
- Domínio empresarial consistente com o assunto
- Formato profissional (número de factura, data, referência)
- Sem urgência exagerada
- Padrão consistente com facturas reais
> [!info] NUNCA eliminar automaticamente remetentes desconhecidos
> Podem ser novos serviços subscritos. Sempre listar para revisão manual.
### Tickets para ELIMINAR (sem valor contabilístico)
**Padrões de assunto:**
```yaml
delete_patterns:
# Elastic Email - recargas
- "Your Elastic Email Account was successfully re-charged"
- "Account re-charged"
- "Auto-recharge successful"
- "Credit added to your account"
# FULL Services - activações
- "[BOT] Ativação realizada com sucesso"
- "[BOT] Activation successful"
```
**Acção:**
```
delete_ticket(ticket_id, confirm=true, reason="Notificação automática sem valor")
```
> Estas são notificações de recarga automática, não facturas. Não têm valor para contabilidade.
**Exemplos de assuntos detectados:**
- "Your Elastic Email Payment Was Successfully Processed"
- "Canva - Your invoice is ready"
- "Hetzner - Invoice for January 2025"
- "CentOS WebPanel Pro License Invoice"
- "MEO - Factura disponível"
- "Invoice #12345 - Payment Confirmed"
- "Pagamento confirmado - Factura #123"
- "Your OpenAI API account has been funded"
- "Your OpenRouter, Inc receipt [#1234-5678]"
- "Your receipt from OpenRouter, Inc #1234-5678"
- "Envio de Fatura Eletrónica: FT A/123456789"
- "Invoice Payment Confirmation"
- "Customer Invoice"
---
**Versão**: 1.1.0
**Última actualização**: 2025-01-21