Files
claude-plugins/gestao/skills/imap-triage/SKILL.md
T

4.9 KiB

name, description, disable-model-invocation, layer
name description disable-model-invocation layer
imap-triage Triagem automática de emails IMAP em 14 contas. Elimina spam, arquiva promocionais, identifica facturas, sinaliza prioritários. Deduplicação via Supabase. Usar quando "imap", "triagem email", "limpar emails", "email triage", "processar emails". true wiki

/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
-