chore(skills): consolidar n8n-* (6→1) e cwp-* (8→1) em meta-skills

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 05:00:35 +01:00
parent faef9b47dc
commit 2ec16674c2
16 changed files with 754 additions and 3398 deletions
-313
View File
@@ -1,313 +0,0 @@
---
name: n8n-chatbot
description: Criação de chatbots e workflows com inteligência artificial usando LangChain no n8n.
---
# /n8n-chatbot - Chatbots e AI Agents n8n
Criar chatbots e workflows com AI usando LangChain.
## Contexto NotebookLM
ANTES de executar, consultar notebooks para contexto especializado:
| Notebook | ID | Consultar quando |
|----------|-----|-----------------|
| n8n Deep Research | f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1 | Sempre |
```
mcp__notebooklm__notebook_query({
notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1",
query: "<adaptar ao contexto do pedido do utilizador>"
})
```
Integrar insights do NotebookLM nas recomendações e decisões.
---
## Uso
```
/n8n-chatbot create <descrição> # Criar chatbot
/n8n-chatbot agent <tipo> # Criar AI agent
/n8n-chatbot rag <knowledge_base> # Criar sistema RAG
```
---
## Workflow Obrigatório
```
1. Health check → mcp__n8n__n8n_health_check()
2. Pesquisar template → mcp__n8n__search_templates({ task: "ai_automation" })
3. Se template OK → mcp__n8n__n8n_deploy_template()
4. Se criar do zero → Seguir fluxo abaixo
```
---
## Nodes LangChain
### Core
| Node | Uso |
|------|-----|
| `@n8n/n8n-nodes-langchain.agent` | AI Agent principal |
| `@n8n/n8n-nodes-langchain.chainLlm` | Chain LLM simples |
| `@n8n/n8n-nodes-langchain.chainRetrievalQa` | RAG Q&A |
### Modelos
| Node | Provider |
|------|----------|
| `@n8n/n8n-nodes-langchain.lmChatOpenAi` | OpenAI GPT |
| `@n8n/n8n-nodes-langchain.lmChatAnthropic` | Claude |
| `@n8n/n8n-nodes-langchain.lmChatOllama` | Ollama local |
### Memória
| Node | Tipo |
|------|------|
| `@n8n/n8n-nodes-langchain.memoryBufferWindow` | Últimas N mensagens |
| `@n8n/n8n-nodes-langchain.memoryPostgresChat` | PostgreSQL |
| `@n8n/n8n-nodes-langchain.memoryRedisChat` | Redis |
### Tools
| Node | Função |
|------|--------|
| `@n8n/n8n-nodes-langchain.toolCalculator` | Cálculos |
| `@n8n/n8n-nodes-langchain.toolCode` | Executar código |
| `@n8n/n8n-nodes-langchain.toolHttpRequest` | Chamar APIs |
| `@n8n/n8n-nodes-langchain.toolWorkflow` | Chamar workflows |
### Vector Stores (RAG)
| Node | Sistema |
|------|---------|
| `@n8n/n8n-nodes-langchain.vectorStoreSupabase` | Supabase |
| `@n8n/n8n-nodes-langchain.vectorStorePinecone` | Pinecone |
| `@n8n/n8n-nodes-langchain.vectorStorePgVector` | PostgreSQL |
---
## Chatbot Básico
### Estrutura
```
Webhook/Trigger
LLM Chat Model (OpenAI/Claude)
Memory (Buffer)
Agent
Resposta
```
### Implementação
```javascript
// 1. Modelo LLM
mcp__n8n__get_node({
nodeType: "@n8n/n8n-nodes-langchain.lmChatOpenAi",
detail: "standard"
})
// 2. Memória
mcp__n8n__get_node({
nodeType: "@n8n/n8n-nodes-langchain.memoryBufferWindow",
detail: "standard"
})
// 3. Agent
mcp__n8n__get_node({
nodeType: "@n8n/n8n-nodes-langchain.agent",
detail: "standard"
})
```
---
## RAG (Retrieval Augmented Generation)
### Estrutura
```
Documentos
Embeddings
Vector Store
Query (pergunta)
Retriever
LLM (resposta contextualizada)
```
### Configuração Vector Store
```javascript
mcp__n8n__validate_node({
nodeType: "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
config: {
mode: "insert", // ou "retrieve"
tableName: "documents",
queryName: "match_documents"
},
mode: "minimal"
})
```
---
## AI Agent com Tools
### Estrutura
```
Input
Agent
├── Tool: Calculator
├── Tool: HTTP Request
├── Tool: Code
└── Tool: Workflow
Output
```
### Configuração Agent
```javascript
mcp__n8n__validate_node({
nodeType: "@n8n/n8n-nodes-langchain.agent",
config: {
agentType: "conversationalAgent",
systemMessage: "Tu és um assistente prestável...",
options: {
returnIntermediateSteps: true
}
},
mode: "minimal"
})
```
---
## Exemplos Práticos
### Chatbot de Suporte
```
Webhook (mensagem cliente)
Memory PostgreSQL (histórico)
Vector Store (docs suporte)
Chain Retrieval QA
Webhook Response
```
### Agent CRM
```
Webhook (comando)
Agent
├── Tool: Pesquisar clientes
├── Tool: Criar lead
└── Tool: Actualizar tarefa
Slack (resultado)
```
### Resumo de Documentos
```
Webhook (upload PDF)
PDF Extract
Text Splitter
LLM Chain (resumo)
Email (enviar resumo)
```
---
## Templates Recomendados
```javascript
// AI templates
mcp__n8n__search_templates({
searchMode: "by_task",
task: "ai_automation"
})
// Por keyword
mcp__n8n__search_templates({
searchMode: "keyword",
query: "chatbot langchain openai"
})
```
---
## Credenciais Necessárias
| Provider | Credencial | Node |
|----------|------------|------|
| OpenAI | API Key | lmChatOpenAi |
| Anthropic | API Key | lmChatAnthropic |
| Supabase | URL + Key | vectorStoreSupabase |
| Pinecone | API Key | vectorStorePinecone |
---
## Boas Práticas
| Prática | Razão |
|---------|-------|
| System prompt claro | Define comportamento |
| Temperatura baixa (0.1-0.3) | Respostas consistentes |
| Memória limitada | Performance |
| Retry on error | Resiliência |
| Logs de conversas | Debug e melhoria |
---
## Troubleshooting
| Problema | Solução |
|----------|---------|
| Respostas inconsistentes | Baixar temperatura |
| Contexto perdido | Verificar memória |
| RAG não encontra | Verificar embeddings |
| Timeout | Aumentar limite |
| Token limit | Resumir contexto |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
-126
View File
@@ -1,126 +0,0 @@
---
name: n8n-health
description: Diagnóstico de conectividade e estado da instância n8n. Verificação de saúde do sistema.
---
# /n8n-health - Diagnóstico n8n
Verificar conectividade e estado da instância n8n.
## Contexto NotebookLM
ANTES de executar, consultar notebooks para contexto especializado:
| Notebook | ID | Consultar quando |
|----------|-----|-----------------|
| n8n Deep Research | f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1 | Sempre |
```
mcp__notebooklm__notebook_query({
notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1",
query: "<adaptar ao contexto do pedido do utilizador>"
})
```
Integrar insights do NotebookLM nas recomendações e decisões.
---
## Uso
```
/n8n-health # Status rápido
/n8n-health verbose # Diagnóstico completo
```
---
## Instância
| Aspecto | Valor |
|---------|-------|
| URL | `https://automator.descomplicar.pt` |
| MCP | `mcp__n8n__*` |
---
## Execução
### Status Rápido (default)
```
1. mcp__n8n__n8n_health_check({ mode: "status" })
2. Reportar: status, URL, versão, response time
```
### Diagnóstico Completo (verbose)
```
1. mcp__n8n__n8n_health_check({ mode: "diagnostic", verbose: true })
2. Reportar: env vars, tool status, cache, erros
```
---
## Output Esperado
```
n8n Health Check
----------------
Status: OK | ERRO
URL: https://automator.descomplicar.pt
MCP: 2.33.x
Response: XXXms
Workflows: XX activos
```
---
## Se Falhar
| Erro | Causa | Solução |
|------|-------|---------|
| Connection refused | n8n offline | Verificar servidor |
| 401 Unauthorized | API key inválida | Regenerar no n8n |
| Timeout | Rede lenta | Verificar latência |
### Diagnóstico Manual
```bash
# Verificar se n8n responde
curl -I https://automator.descomplicar.pt
# Verificar API
curl -H "X-N8N-API-KEY: $KEY" https://automator.descomplicar.pt/api/v1/workflows
# Logs MCP
~/.claude/logs/mcp-n8n.log
```
---
## Skills Relacionadas
| Skill | Quando Usar |
|-------|-------------|
| `/n8n-webhook` | Criar webhooks |
| `/n8n-schedule` | Automações cron |
| `/n8n-sync` | Sincronização dados |
| `/n8n-notify` | Alertas |
| `/n8n-chatbot` | AI/Chatbots |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
-246
View File
@@ -1,246 +0,0 @@
---
name: n8n-notify
description: Criação de sistemas de notificações e alertas n8n via Slack, email e SMS.
disable-model-invocation: true
---
# /n8n-notify - Notificações e Alertas n8n
Criar sistemas de alertas via Slack, email, SMS.
---
## Uso
```
/n8n-notify create <descrição> # Criar sistema de alertas
/n8n-notify slack <mensagem> # Quick Slack notification
/n8n-notify email <para> <assunto> # Quick email
```
---
## Workflow Obrigatório
```
1. Health check → mcp__n8n__n8n_health_check()
2. Pesquisar template → mcp__n8n__search_templates({ query: "notification" })
3. Se template OK → mcp__n8n__n8n_deploy_template()
4. Se criar do zero → Seguir fluxo abaixo
```
---
## Canais Disponíveis
| Canal | Node | Uso |
|-------|------|-----|
| Slack | `nodes-base.slack` | Notificações equipa |
| Email | `nodes-base.emailSend` | Alertas formais |
| Telegram | `nodes-base.telegram` | Alertas mobile |
| Discord | `nodes-base.discord` | Comunidades |
| SMS | `nodes-base.twilio` | Alertas críticos |
---
## Slack
### Documentação
```javascript
mcp__n8n__get_node({
nodeType: "nodes-base.slack",
detail: "standard",
includeExamples: true
})
```
### Configuração
```javascript
mcp__n8n__validate_node({
nodeType: "nodes-base.slack",
config: {
resource: "message",
operation: "post",
channel: "#alertas",
text: "Mensagem de alerta"
},
mode: "minimal"
})
```
### Mensagem Formatada (Blocks)
```javascript
{
blocksUi: {
blocksValues: [
{
type: "header",
text: { type: "plain_text", text: "Alerta" }
},
{
type: "section",
text: { type: "mrkdwn", text: "*Detalhes:*\n{{ $json.message }}" }
}
]
}
}
```
---
## Email
### Configuração
```javascript
mcp__n8n__validate_node({
nodeType: "nodes-base.emailSend",
config: {
fromEmail: "alertas@descomplicar.pt",
toEmail: "emanuel@descomplicar.pt",
subject: "Alerta: {{ $json.title }}",
text: "{{ $json.message }}"
},
mode: "minimal"
})
```
---
## Padrões Comuns
### Webhook → Slack
```
Webhook (evento externo)
Set (formatar)
Slack (enviar)
```
### Monitor → Multi-canal
```
Schedule (cada 5min)
HTTP Request (check health)
IF (erro?)
↓ TRUE
Slack + Email (alertar)
```
### Error Handler
```
Qualquer workflow
↓ (erro)
Error Trigger
Slack (alertar erro)
```
---
## Níveis de Alerta
| Nível | Canal | Quando |
|-------|-------|--------|
| Info | Slack | Eventos normais |
| Warning | Slack + Email | Atenção necessária |
| Critical | Todos + SMS | Acção imediata |
### Implementação
```
IF (severity = "critical")
↓ TRUE
Slack + Email + SMS
↓ FALSE
IF (severity = "warning")
↓ TRUE
Slack + Email
↓ FALSE
Slack
```
---
## Exemplos
### Alerta de Servidor Down
```
Schedule (5min)
HTTP Request (ping servidor)
IF (falhou?)
↓ TRUE
Slack (#infra)
Email (admin)
```
### Novo Lead
```
Webhook (lead criado)
Set (formatar)
Slack (#vendas)
```
### Factura Vencida
```
Schedule (diário 9h)
HTTP Request (facturas vencidas)
Loop (cada factura)
Email (cliente)
Slack (#contabilidade)
```
---
## Templates
```javascript
mcp__n8n__search_templates({
searchMode: "keyword",
query: "slack notification alert"
})
```
---
## Troubleshooting
| Problema | Solução |
|----------|---------|
| Slack não envia | Verificar token e canal |
| Email em spam | Configurar SPF/DKIM |
| Rate limited | Agrupar notificações |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
-181
View File
@@ -1,181 +0,0 @@
---
name: n8n-schedule
description: Criação de workflows n8n com execução agendada via cron para automações recorrentes.
disable-model-invocation: true
---
# /n8n-schedule - Automações Agendadas n8n
Criar workflows com execução agendada (cron).
---
## Uso
```
/n8n-schedule create <descrição> # Criar automação agendada
/n8n-schedule list # Listar agendamentos
/n8n-schedule disable <id> # Desactivar
```
---
## Workflow Obrigatório
```
1. Health check → mcp__n8n__n8n_health_check()
2. Pesquisar template → mcp__n8n__search_templates({ task: "scheduling" })
3. Se template OK → mcp__n8n__n8n_deploy_template()
4. Se criar do zero → Seguir fluxo abaixo
```
---
## Expressões Cron Comuns
| Expressão | Descrição |
|-----------|-----------|
| `0 9 * * *` | Diário às 9h |
| `0 9 * * 1-5` | Seg-Sex às 9h |
| `0 */2 * * *` | A cada 2 horas |
| `*/15 * * * *` | A cada 15 minutos |
| `0 0 1 * *` | Dia 1 de cada mês |
| `0 3 * * 0` | Domingos às 3h |
### Formato
```
┌───────── minuto (0-59)
│ ┌─────── hora (0-23)
│ │ ┌───── dia mês (1-31)
│ │ │ ┌─── mês (1-12)
│ │ │ │ ┌─ dia semana (0-6)
* * * * *
```
---
## Configuração Schedule Trigger
```javascript
mcp__n8n__validate_node({
nodeType: "nodes-base.scheduleTrigger",
config: {
rule: {
interval: [{
field: "cronExpression",
expression: "0 9 * * 1-5"
}]
}
},
mode: "minimal"
})
```
---
## Timezone
```javascript
{
options: {
timezone: "Europe/Lisbon"
}
}
```
---
## Exemplos
### Relatório Diário
```
Schedule (0 9 * * 1-5)
PostgreSQL (query)
Set (formatar)
Email (enviar)
```
### Backup Semanal
```
Schedule (0 3 * * 0)
SSH (backup)
IF (sucesso?)
Slack (confirmar/alertar)
```
### Limpeza de Logs
```
Schedule (0 2 * * *)
SSH (limpar)
Slack (reportar)
```
---
## Gestão
### Desactivar
```javascript
mcp__n8n__n8n_update_partial_workflow({
id: "wf-xxx",
operations: [{ type: "deactivateWorkflow" }]
})
```
### Reactivar
```javascript
mcp__n8n__n8n_update_partial_workflow({
id: "wf-xxx",
operations: [{ type: "activateWorkflow" }]
})
```
### Ver Execuções
```javascript
mcp__n8n__n8n_executions({
workflowId: "wf-xxx",
limit: 10,
status: "all"
})
```
---
## Troubleshooting
| Problema | Solução |
|----------|---------|
| Não executa | Verificar workflow activo |
| Hora errada | Verificar timezone |
| Duplicado | Verificar múltiplos triggers |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
-180
View File
@@ -1,180 +0,0 @@
---
name: n8n-sync
description: Sincronização de dados entre sistemas via workflows n8n. Mantém dados consistentes entre plataformas.
disable-model-invocation: true
---
# /n8n-sync - Sincronização de Dados n8n
Manter dados sincronizados entre sistemas.
---
## Uso
```
/n8n-sync create <origem> <destino> # Criar sync
/n8n-sync list # Listar syncs
/n8n-sync status <workflow_id> # Ver estado
```
---
## Workflow Obrigatório
```
1. Health check → mcp__n8n__n8n_health_check()
2. Pesquisar template → mcp__n8n__search_templates({ task: "data_sync" })
3. Se template OK → mcp__n8n__n8n_deploy_template()
4. Se criar do zero → Seguir fluxo abaixo
```
---
## Padrões de Sync
### One-Way (Unidireccional)
```
Origem → Transform → Destino
```
### Two-Way (Bidireccional)
```
A ←→ B (com resolução de conflitos)
```
### Hub-and-Spoke
```
A ↔ HUB ↔ B
C
```
---
## Nodes por Sistema
### APIs/CRM
| Node | Sistema |
|------|---------|
| `nodes-base.httpRequest` | APIs genéricas |
| `nodes-base.webhook` | Receber dados |
### Bases de Dados
| Node | Sistema |
|------|---------|
| `nodes-base.postgres` | PostgreSQL |
| `nodes-base.mySql` | MySQL |
| `nodes-base.mongoDb` | MongoDB |
### Ficheiros
| Node | Sistema |
|------|---------|
| `nodes-base.googleSheets` | Google Sheets |
| `nodes-base.spreadsheetFile` | Excel/CSV |
| `nodes-base.ftp` | FTP/SFTP |
---
## Exemplo: CRM → Sheets
```
Schedule (horário)
HTTP Request (GET leads)
IF (há dados?)
Set (mapear campos)
Google Sheets (append)
Slack (confirmar)
```
---
## Estratégias
| Estratégia | Uso |
|------------|-----|
| Full Sync | Apagar tudo + inserir tudo |
| Incremental | Apenas modificados (updated_at) |
| Delta | Comparar hashes |
---
## Upsert Pattern
```javascript
{
nodeType: "nodes-base.postgres",
config: {
operation: "upsert",
table: "clientes",
columns: "email,nome,empresa",
conflictColumns: "email"
}
}
```
---
## Gestão de Erros
### Retry
```javascript
{
options: {
retry: {
maxRetries: 3,
retryInterval: 1000
}
}
}
```
### Dead Letter Queue
```
Operação
↓ (erro)
Error Trigger
BD (guardar erro)
Slack (alertar)
```
---
## Troubleshooting
| Problema | Solução |
|----------|---------|
| Duplicados | Usar upsert |
| Timeout | Batches menores |
| Rate limit | Adicionar delays |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
-172
View File
@@ -1,172 +0,0 @@
---
name: n8n-webhook
description: Criação e gestão de webhooks n8n para receber dados de sistemas externos.
---
# /n8n-webhook - Webhooks n8n
Criar e gerir webhooks para receber dados externos.
---
## Uso
```
/n8n-webhook create <descrição> # Criar novo webhook
/n8n-webhook list # Listar webhooks existentes
/n8n-webhook test <workflow_id> # Testar webhook
```
---
## Workflow Obrigatório
```
1. Health check → mcp__n8n__n8n_health_check()
2. Pesquisar template → mcp__n8n__search_templates({ query: "webhook" })
3. Se template OK → mcp__n8n__n8n_deploy_template()
4. Se criar do zero → Seguir fluxo abaixo
```
---
## Criar Webhook do Zero
### Passo 1: Documentação do Node
```javascript
mcp__n8n__get_node({
nodeType: "nodes-base.webhook",
detail: "standard",
includeExamples: true
})
```
### Passo 2: Validar Configuração
```javascript
mcp__n8n__validate_node({
nodeType: "nodes-base.webhook",
config: {
httpMethod: "POST",
path: "meu-webhook",
responseMode: "onReceived"
},
mode: "minimal"
})
```
### Passo 3: Nodes de Processamento
| Node | Uso |
|------|-----|
| `nodes-base.set` | Transformar dados |
| `nodes-base.if` | Condicionais |
| `nodes-base.code` | JavaScript custom |
| `nodes-base.httpRequest` | Chamar APIs |
### Passo 4: Deploy
```javascript
mcp__n8n__n8n_create_workflow({
name: "Webhook - Descrição",
nodes: [...],
connections: {...},
active: true
})
```
---
## Configurações Webhook
| Parâmetro | Opções | Default |
|-----------|--------|---------|
| `httpMethod` | GET, POST, PUT, DELETE | POST |
| `path` | String única | (obrigatório) |
| `authentication` | none, basicAuth, headerAuth | none |
| `responseMode` | onReceived, lastNode | onReceived |
---
## URL do Webhook
Após deploy:
```
https://automator.descomplicar.pt/webhook/<path>
```
Modo teste (workflow inactivo):
```
https://automator.descomplicar.pt/webhook-test/<path>
```
---
## Exemplos
### Webhook → Slack
```
Webhook (POST /notify)
Set (formatar)
Slack (enviar)
```
### Webhook → CRM
```
Webhook (POST /lead)
HTTP Request (criar no Desk)
Email (notificar)
```
---
## Testar
```javascript
mcp__n8n__n8n_test_workflow({
workflowId: "wf-xxx",
inputData: {
body: { "test": "data" },
headers: { "Content-Type": "application/json" }
}
})
```
```bash
curl -X POST https://automator.descomplicar.pt/webhook/meu-webhook \
-H "Content-Type: application/json" \
-d '{"test": "data"}'
```
---
## Troubleshooting
| Problema | Solução |
|----------|---------|
| 404 Not Found | Workflow não está activo |
| 401 Unauthorized | Verificar autenticação |
| Dados não chegam | Verificar responseMode |
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+270
View File
@@ -0,0 +1,270 @@
---
name: n8n
description: Meta-skill n8n para criação e gestão de workflows na instância automator.descomplicar.pt. Cobre health check, webhooks, schedule (cron), sync de dados, notify (Slack/email/SMS) e chatbots/AI agents (LangChain/RAG). Triggers — n8n, workflow, automação, webhook, schedule, cron, sync, notify, alerta, slack, chatbot, ai agent, langchain, rag, automator, health check n8n.
---
# /n8n - Meta-skill n8n
Skill unificada para a instância n8n Descomplicar (`https://automator.descomplicar.pt`, MCP `mcp__n8n__*`). Substitui as antigas n8n-chatbot, n8n-health, n8n-notify, n8n-schedule, n8n-sync, n8n-webhook.
## Contexto NotebookLM (sempre antes de executar)
| Notebook | ID |
|----------|-----|
| n8n Deep Research | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` |
```
mcp__notebooklm__notebook_query({ notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1", query: "<adaptar ao pedido>" })
```
## Workflow obrigatório (qualquer criação)
```
1. mcp__n8n__n8n_health_check()
2. mcp__n8n__search_templates({ task: "<webhook|scheduling|data_sync|notification|ai_automation>" })
3. Se template adequado -> mcp__n8n__n8n_deploy_template()
4. Caso contrário, criar do zero seguindo a secção apropriada abaixo
```
---
## 1. Health (diagnóstico)
```
/n8n health # status rápido
/n8n health verbose # diagnóstico completo
```
```js
mcp__n8n__n8n_health_check({ mode: "status" })
mcp__n8n__n8n_health_check({ mode: "diagnostic", verbose: true })
```
Output esperado: status (OK/ERRO), URL, versão MCP, response time, workflows activos.
Erros comuns: Connection refused (n8n offline), 401 (API key inválida — regenerar), timeout (rede). Diagnóstico manual:
```bash
curl -I https://automator.descomplicar.pt
curl -H "X-N8N-API-KEY: $KEY" https://automator.descomplicar.pt/api/v1/workflows
tail ~/.claude/logs/mcp-n8n.log
```
---
## 2. Webhook
Receber dados de sistemas externos.
```
/n8n webhook create <descrição>
/n8n webhook list
/n8n webhook test <workflow_id>
```
```js
mcp__n8n__get_node({ nodeType: "nodes-base.webhook", detail: "standard", includeExamples: true })
mcp__n8n__validate_node({ nodeType: "nodes-base.webhook", config: { httpMethod: "POST", path: "meu-webhook", responseMode: "onReceived" }, mode: "minimal" })
mcp__n8n__n8n_create_workflow({ name: "Webhook - X", nodes: [...], connections: {...}, active: true })
```
Parâmetros: `httpMethod` (GET/POST/PUT/DELETE, default POST), `path` (obrigatório), `authentication` (none/basicAuth/headerAuth), `responseMode` (onReceived/lastNode).
URLs: produção `https://automator.descomplicar.pt/webhook/<path>` | teste `https://automator.descomplicar.pt/webhook-test/<path>`.
Nodes processamento: `nodes-base.set`, `nodes-base.if`, `nodes-base.code`, `nodes-base.httpRequest`.
Teste:
```js
mcp__n8n__n8n_test_workflow({ workflowId: "wf-xxx", inputData: { body: {test:"data"}, headers: {"Content-Type":"application/json"} } })
```
```bash
curl -X POST https://automator.descomplicar.pt/webhook/meu-webhook -H "Content-Type: application/json" -d '{"test":"data"}'
```
Troubleshooting: 404 (workflow não activo), 401 (auth), dados não chegam (responseMode).
---
## 3. Schedule (cron)
Workflows com execução agendada.
```
/n8n schedule create <descrição>
/n8n schedule list
/n8n schedule disable <id>
```
Cron comuns: `0 9 * * *` (diário 9h), `0 9 * * 1-5` (Seg-Sex 9h), `0 */2 * * *` (cada 2h), `*/15 * * * *` (15min), `0 0 1 * *` (dia 1), `0 3 * * 0` (domingos 3h).
```js
mcp__n8n__validate_node({
nodeType: "nodes-base.scheduleTrigger",
config: { rule: { interval: [{ field: "cronExpression", expression: "0 9 * * 1-5" }] }, options: { timezone: "Europe/Lisbon" } },
mode: "minimal"
})
```
Gestão:
```js
mcp__n8n__n8n_update_partial_workflow({ id: "wf-xxx", operations: [{ type: "deactivateWorkflow" }] })
mcp__n8n__n8n_update_partial_workflow({ id: "wf-xxx", operations: [{ type: "activateWorkflow" }] })
mcp__n8n__n8n_executions({ workflowId: "wf-xxx", limit: 10, status: "all" })
```
Exemplos: relatório diário (Schedule -> Postgres -> Set -> Email), backup semanal (Schedule -> SSH -> IF -> Slack), limpeza logs.
Troubleshooting: não executa (workflow inactivo), hora errada (timezone), duplicado (múltiplos triggers).
---
## 4. Sync (sincronização de dados)
```
/n8n sync create <origem> <destino>
/n8n sync list
/n8n sync status <workflow_id>
```
Padrões: One-Way (origem -> transform -> destino), Two-Way (com resolução conflitos), Hub-and-Spoke.
Nodes:
- APIs: `nodes-base.httpRequest`, `nodes-base.webhook`
- BD: `nodes-base.postgres`, `nodes-base.mySql`, `nodes-base.mongoDb`
- Ficheiros: `nodes-base.googleSheets`, `nodes-base.spreadsheetFile`, `nodes-base.ftp`
Estratégias: Full Sync, Incremental (updated_at), Delta (hashes).
Upsert:
```js
{ nodeType: "nodes-base.postgres", config: { operation: "upsert", table: "clientes", columns: "email,nome,empresa", conflictColumns: "email" } }
```
Erros: retry (`{ options: { retry: { maxRetries: 3, retryInterval: 1000 } } }`), Dead Letter Queue (Error Trigger -> BD -> Slack).
Exemplo CRM->Sheets: Schedule -> HTTP GET leads -> IF -> Set -> Google Sheets append -> Slack.
Troubleshooting: duplicados (upsert), timeout (batches menores), rate limit (delays).
---
## 5. Notify (alertas)
```
/n8n notify create <descrição>
/n8n notify slack <mensagem>
/n8n notify email <para> <assunto>
```
Canais: Slack (`nodes-base.slack`), Email (`nodes-base.emailSend`), Telegram, Discord, SMS Twilio.
Slack:
```js
mcp__n8n__validate_node({
nodeType: "nodes-base.slack",
config: { resource: "message", operation: "post", channel: "#alertas", text: "..." },
mode: "minimal"
})
```
Mensagem formatada (Blocks): header + section com `mrkdwn` e `{{ $json.message }}`.
Email:
```js
mcp__n8n__validate_node({
nodeType: "nodes-base.emailSend",
config: { fromEmail: "alertas@descomplicar.pt", toEmail: "emanuel@descomplicar.pt", subject: "Alerta: {{ $json.title }}", text: "{{ $json.message }}" },
mode: "minimal"
})
```
Padrões: Webhook->Slack, Monitor->Multi-canal (Schedule -> HTTP -> IF -> Slack+Email), Error Handler (Error Trigger -> Slack).
Níveis: Info (Slack), Warning (Slack+Email), Critical (Slack+Email+SMS) — implementar com IF aninhado por `severity`.
Troubleshooting: Slack não envia (token/canal), email em spam (SPF/DKIM), rate limited (agrupar).
---
## 6. Chatbot / AI Agents (LangChain)
```
/n8n chatbot create <descrição>
/n8n chatbot agent <tipo>
/n8n chatbot rag <knowledge_base>
```
### Nodes LangChain
Core: `@n8n/n8n-nodes-langchain.agent`, `chainLlm`, `chainRetrievalQa`.
Modelos: `lmChatOpenAi`, `lmChatAnthropic`, `lmChatOllama`.
Memória: `memoryBufferWindow`, `memoryPostgresChat`, `memoryRedisChat`.
Tools: `toolCalculator`, `toolCode`, `toolHttpRequest`, `toolWorkflow`.
Vector Stores: `vectorStoreSupabase`, `vectorStorePinecone`, `vectorStorePgVector`.
### Chatbot básico
```
Webhook -> LLM Chat -> Memory Buffer -> Agent -> Resposta
```
### RAG
```
Documentos -> Embeddings -> Vector Store -> Query -> Retriever -> LLM
```
```js
mcp__n8n__validate_node({
nodeType: "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
config: { mode: "insert", tableName: "documents", queryName: "match_documents" },
mode: "minimal"
})
```
### AI Agent com tools
```js
mcp__n8n__validate_node({
nodeType: "@n8n/n8n-nodes-langchain.agent",
config: { agentType: "conversationalAgent", systemMessage: "Tu és um assistente prestável...", options: { returnIntermediateSteps: true } },
mode: "minimal"
})
```
### Exemplos práticos
- Suporte: Webhook -> Memory Postgres -> Vector Store -> Chain Retrieval QA -> Webhook Response.
- Agent CRM: Webhook -> Agent (tools: pesquisar/criar lead/actualizar tarefa) -> Slack.
- Resumo PDFs: Webhook -> PDF Extract -> Text Splitter -> LLM Chain -> Email.
### Credenciais
OpenAI/Anthropic (API Key), Supabase (URL+Key), Pinecone (API Key).
### Boas práticas
System prompt claro | temperatura 0.1-0.3 | memória limitada | retry on error | logs de conversas.
### Troubleshooting
Inconsistente (baixar temperatura), contexto perdido (memória), RAG vazio (embeddings), timeout (limite), token limit (resumir).
---
## Templates
```js
mcp__n8n__search_templates({ searchMode: "by_task", task: "ai_automation" })
mcp__n8n__search_templates({ searchMode: "keyword", query: "chatbot langchain openai" })
```
---
**Versão:** 2.0.0 (consolidação 6->1, 07-04-2026) | **Autor:** Descomplicar®
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```