Files
claude-plugins/gestao/skills/imap-triage/SKILL.md
T
ealmeida faef9b47dc fix(project-manager): remover Dify KB das descriptions, marcar nota TODO
Dify foi removido 06-03-2026. Skills brainstorm/discover ainda referenciam-no
no corpo. Bump v1.2 + nota top-of-file. Reescrita workflow para próxima sessão.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 04:52:03 +01:00

6.1 KiB

name, description, disable-model-invocation
name description disable-model-invocation
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

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

## 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®


Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

{"date":"","issue":"","fix":"","source":"user|auto"}

Adicionar nova linha após cada erro corrigido.