- All SKILL.md files now <500 lines (avg reduction 69%) - Detailed content extracted to references/ subdirectories - Frontmatter standardised: only name + description (Anthropic standard) - New skills: brand-guidelines, spec-coauthor, report-templates, skill-creator - Design skills: anti-slop guidelines, premium-proposals reference - Removed non-standard frontmatter fields (triggers, version, author, category) Plugins affected: infraestrutura, marketing, dev-tools, crm-ops, gestao, core-tools, negocio, perfex-dev, wordpress, design-media Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
237 lines
5.9 KiB
Markdown
237 lines
5.9 KiB
Markdown
---
|
|
name: imap-triage
|
|
description: 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".
|
|
disable-model-invocation: 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):
|
|
|
|
```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®*
|