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

@@ -29,8 +29,8 @@
{
"name": "design-media",
"source": "./design-media",
"description": "UI/UX design, web design, video production with Remotion and PowerPoint generation. Backed by 3 Dify KB datasets.",
"version": "1.0.0",
"description": "Motor de design profissional multi-marca. 5 MCPs (Presenton, Penpot, Stitch, Figma, Design-Engine), 8 agents, 4 skills. Apresentacoes, infograficos, social media, web pages, logos, identidade visual.",
"version": "2.0.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
@@ -57,20 +57,20 @@
}
},
{
"name": "hello-plugin",
"source": "./hello-plugin",
"description": "Plugin de exemplo para Claude Code. Demonstra skills, agents e hooks num formato minimo e didactico.",
"version": "1.0.0",
"name": "core-tools",
"source": "./core-tools",
"description": "Core system tools for plugin management, metrics, and infrastructure meta-operations.",
"version": "2.0.0",
"author": {
"name": "Emanuel Almeida",
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
}
},
{
"name": "infraestrutura",
"source": "./infraestrutura",
"description": "Server management, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by 4 Dify KB datasets.",
"version": "1.0.0",
"description": "Server management, Proxmox VE/PBS/Clustering, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by 4 Dify KB datasets + NotebookLM Proxmox (150+ sources).",
"version": "1.1.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
@@ -125,6 +125,16 @@
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
}
},
{
"name": "metabase",
"source": "./metabase",
"description": "Metabase BI analytics - dashboards, SQL queries, database exploration and reporting via bi.descomplicar.pt. Powered by metabase-ai-assistant MCP.",
"version": "1.0.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
}
}
]
}

View File

@@ -5,6 +5,16 @@ role: Líder técnico de automação e orquestração
domain: Automation
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- n8n
- ssh-unified
recommended_mcps:
- gitea
- memory-supabase
- filesystem
skills:
- _core
desk_task: 1492
@@ -139,7 +149,17 @@ Trigger → [Passo 1] → [Passo 2] → Output
6. Registar performance
```
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1" query:"workflows automacao integracao"
mcp__notebooklm__notebook_query notebook_id:"ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8" query:"AI agents orchestration"
mcp__notebooklm__notebook_query notebook_id:"929ef67b-c131-4f01-abd0-8b078491a6b7" query:"LLM workflows deployment"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"n8n" query:"workflows automacao integracao"

View File

@@ -7,6 +7,16 @@ role: Especialista em desenvolvimento de servidores MCP e integracoes para o eco
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- gitea
- ssh-unified
recommended_mcps:
- context7
- filesystem
- memory-supabase
skills:
- _core
desk_task: 1508
@@ -42,7 +52,18 @@ Especialista em desenvolvimento, optimizacao e manutencao de servidores MCP e fe
- Design de estrategias de caching e transformacao de dados
- Testes de compliance e validacao de protocolo MCP
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"73102308-70ef-403e-9be9-eae0cfc62d55" query:"protocol development tools integration"
mcp__notebooklm__notebook_query notebook_id:"2876d1fe-5cea-4d98-8140-b0e1a81c6bc4" query:"MCP server configuration"
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"typescript nodejs api development"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"MCP Servers" query:"protocol development tools integration"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Claude Code" query:"MCP server configuration"
@@ -98,7 +119,7 @@ Especialista em desenvolvimento, optimizacao e manutencao de servidores MCP e fe
## MCPs Relevantes
- `gitea`: Gestão de código MCP
- `desk-crm-v3`: Tracking desenvolvimento (Proj #65, Milestone 256)
- `dify-kb`: KB MCP Servers, Claude Code, Desenvolvimento Software
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB MCP Servers, Claude Code, Desenvolvimento Software
- `ssh-unified`: Deploy em servidores
## Colaboracao
@@ -120,7 +141,8 @@ Especialista em desenvolvimento, optimizacao e manutencao de servidores MCP e fe
- SSH, SFTP, servidor management
- Usage: `mcp__ssh-unified__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -7,6 +7,15 @@ role: Especialista em automacao de processos usando N8N para criacao de workflow
domain: Automation
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- n8n
- desk-crm-v3
recommended_mcps:
- ssh-unified
- gitea
- filesystem
skills:
- _core
desk_task: 1509
@@ -42,7 +51,18 @@ Especialista em design, desenvolvimento e optimizacao de workflows automatizados
- Implementacao de error handling robusto e retry logic
- Monitorizacao e alertas para saude dos workflows
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1" query:"workflow automation nodes triggers"
mcp__notebooklm__notebook_query notebook_id:"ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8" query:"process automation integration"
mcp__notebooklm__notebook_query notebook_id:"929ef67b-c131-4f01-abd0-8b078491a6b7" query:"AI automation workflows"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"n8n" query:"workflow automation nodes triggers"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Ferramentas de Automacao e IA" query:"process automation integration"
@@ -98,7 +118,7 @@ Especialista em design, desenvolvimento e optimizacao de workflows automatizados
## MCPs Relevantes
- `desk-crm-v3`: Dados para automações (leads, tarefas)
- `dify-kb`: KB n8n, Ferramentas Automação, Dify
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB n8n, Ferramentas Automação, Dify
- `memory-supabase`: Histórico de workflows criados
## Colaboracao
@@ -116,7 +136,8 @@ Especialista em design, desenvolvimento e optimizacao de workflows automatizados
- Workflows automation
- Usage: `mcp__n8n__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -1,15 +1,114 @@
{
"description": "Dify KB datasets for Automation domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "f14521df-c44a-48f0-8703-b1d1cf77ca05", "name": "n8n", "priority": 1, "document_count": 1, "word_count": 206928},
{"id": "44d1517b-65b8-4d81-8253-5683ff0b8830", "name": "Dify", "priority": 1, "document_count": 4, "word_count": 1244175},
{"id": "b0a5e9e6-0d39-4e56-8c61-72c8e14ca41d", "name": "Flowise", "priority": 2, "document_count": 3, "word_count": 245565},
{"id": "b3e994c9-f642-4f23-a3db-8d9e344d489f", "name": "Typebot", "priority": 2, "document_count": 1, "word_count": 79608},
{"id": "728bed1f-79cb-4e56-aa8a-8dd961197354", "name": "Chatwoot", "priority": 2, "document_count": 7, "word_count": 149615},
{"id": "76f14ca9-7e11-4924-9ebc-ccd79876aa78", "name": "Baserow", "priority": 2, "document_count": 1, "word_count": 53665},
{"id": "ebf7e4aa-5d2c-49f0-bbb3-f73711a9e0b3", "name": "Open WebUI", "priority": 2, "document_count": 3, "word_count": 15266191},
{"id": "22f1d0cf-0661-4a5d-ad0e-b3c1cd2c234a", "name": "Ferramentas Automacao e IA", "priority": 1, "document_count": 41, "word_count": 805400},
{"id": "a8987108-2121-4e55-b055-67fe70f8aae0", "name": "Moodle", "priority": 3, "document_count": 40, "word_count": 764457}
]
}
"description": "Knowledge sources (NotebookLM + Dify KB) for Automation domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1",
"title": "n8n",
"topics": [
"n8n"
],
"maps_from_dify": "n8n"
},
{
"id": "929ef67b-c131-4f01-abd0-8b078491a6b7",
"title": "AI Automation Stack",
"topics": [
"dify"
],
"maps_from_dify": "Dify"
},
{
"id": "be6f72ac-f8ba-4337-912d-abd5dd448519",
"title": "Open WebUI",
"topics": [
"open",
"webui"
],
"maps_from_dify": "Open WebUI"
},
{
"id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8",
"title": "Transformacao Digital e IA",
"topics": [
"ferramentas",
"automacao"
],
"maps_from_dify": "Ferramentas Automacao e IA"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "f14521df-c44a-48f0-8703-b1d1cf77ca05",
"name": "n8n",
"priority": 1,
"document_count": 1,
"word_count": 206928
},
{
"id": "44d1517b-65b8-4d81-8253-5683ff0b8830",
"name": "Dify",
"priority": 1,
"document_count": 4,
"word_count": 1244175
},
{
"id": "b0a5e9e6-0d39-4e56-8c61-72c8e14ca41d",
"name": "Flowise",
"priority": 2,
"document_count": 3,
"word_count": 245565
},
{
"id": "b3e994c9-f642-4f23-a3db-8d9e344d489f",
"name": "Typebot",
"priority": 2,
"document_count": 1,
"word_count": 79608
},
{
"id": "728bed1f-79cb-4e56-aa8a-8dd961197354",
"name": "Chatwoot",
"priority": 2,
"document_count": 7,
"word_count": 149615
},
{
"id": "76f14ca9-7e11-4924-9ebc-ccd79876aa78",
"name": "Baserow",
"priority": 2,
"document_count": 1,
"word_count": 53665
},
{
"id": "ebf7e4aa-5d2c-49f0-bbb3-f73711a9e0b3",
"name": "Open WebUI",
"priority": 2,
"document_count": 3,
"word_count": 15266191
},
{
"id": "22f1d0cf-0661-4a5d-ad0e-b3c1cd2c234a",
"name": "Ferramentas Automacao e IA",
"priority": 1,
"document_count": 41,
"word_count": 805400
},
{
"id": "a8987108-2121-4e55-b055-67fe70f8aae0",
"name": "Moodle",
"priority": 3,
"document_count": 40,
"word_count": 764457
}
]
}
}
}

View File

@@ -0,0 +1,12 @@
{
"name": "core-tools",
"description": "Core system tools for plugin management, metrics, and infrastructure meta-operations",
"version": "2.0.0",
"author": {
"name": "Descomplicar",
"url": "https://descomplicar.pt"
},
"homepage": "https://descomplicar.pt",
"license": "MIT",
"keywords": ["core", "plugins", "management", "profiles", "infrastructure", "meta"]
}

41
core-tools/README.md Normal file
View File

@@ -0,0 +1,41 @@
# Core Tools Plugin
**Versão:** 1.0.0
**Autor:** Descomplicar®
**Desk Project:** #65 Stack Workflow
## Descrição
Core system tools for Claude Code infrastructure and meta-management.
Este plugin contém skills fundamentais para gestão e manutenção do ecossistema Claude Code.
## Skills Incluídas
### Infraestrutura
- **infrastructure-manager** - Gestão automatizada da infraestrutura Claude Code
- **db-maintenance-manager** - Manutenção das tabelas cr_* do sistema
- **relationship-manager** - Gestão de relacionamentos entre componentes
### Plugins & Componentes
- **plugin-manager** - Gestão dinâmica de plugins (activar/desactivar por perfil)
- **plugin-curator** - Curadoria inteligente de plugins
- **component-generator** - Gera skills/agents/commands automaticamente
- **quality-validator** - Valida componentes contra standards
### Agentes
- **agent-context-injector** - Injeta contexto específico quando um agente é iniciado
### Métricas
- **metrics** - Dashboard de performance com ROI e telemetria
### Core
- **_core** - Padrões fundamentais Descomplicar® (Sacred Rules, Excellence Standards, MCP Protocol)
## Utilização
Skills activadas automaticamente pelo sistema quando necessário.
## Tags
infrastructure, meta, system, core

23
core-tools/plugin.json Normal file
View File

@@ -0,0 +1,23 @@
{
"name": "core-tools",
"version": "1.0.0",
"description": "Core system tools for Claude Code infrastructure and meta-management",
"author": "Descomplicar®",
"skills": [
"agent-context-injector",
"component-generator",
"metrics",
"plugin-curator",
"plugin-manager",
"quality-validator",
"relationship-manager",
"infrastructure-manager",
"db-maintenance-manager",
"_core"
],
"agents": [],
"hooks": [],
"commands": [],
"tags": ["infrastructure", "meta", "system", "core"],
"desk_project": 65
}

View File

@@ -0,0 +1,121 @@
---
name: core-descomplicar
description: Padrões fundamentais Descomplicar® - Sacred Rules, Excellence Standards, MCP Protocol. Skill base para todos os agentes.
quality_score: 40
---
# Core Standards Descomplicar®
Padrões obrigatórios para todos os agentes do sistema.
---
## 🔟 REGRAS SAGRADAS
### 1. É permitido falhar
Reportar erros com transparência. Falhar rápido, aprender mais rápido.
### 2. Transparência e honestidade
Comunicar claramente. Não omitir informações.
### 3. Más notícias primeiro
Escalar problemas imediatamente.
### 4. Foco na resolução
Todo problema deve incluir soluções propostas.
### 5. Nunca prejudicar
Princípio "do no harm". Proteger dados e sistemas.
### 6. Passar a bola certa
Delegar para o especialista quando necessário.
### 7. 3x antes de escalar
Três tentativas documentadas antes de escalação.
### 8. Feedback protocol
Crítica privada, elogio público.
### 9. Perguntar sempre
Pedir esclarecimento quando incerto.
### 10. Crescimento contínuo
Mentalidade de aprendizagem constante.
---
## 🎯 PADRÕES DE EXCELÊNCIA
### Qualidade Mínima: 100/100
- **Precisão**: 100% informação verificada
- **Completude**: Especificações cumpridas
- **Consistência**: Alinhamento com padrões
- **Usabilidade**: Solução funcional
- **Manutenibilidade**: Sustentável longo prazo
### Dados Reais Obrigatórios
**NUNCA simular quando dados reais existem.**
Hierarquia:
1. MCPs especializados (desk-crm, dify-kb, wikijs)
2. Sistemas internos (Gitea, Drive)
3. Documentação oficial (Context7)
4. Simulação APENAS se dados não existem
---
## ⚡ PROTOCOLO MCP (3 PASSOS)
### PASSO 1: Recuperação de Contexto
```
SEMPRE EXECUTAR PRIMEIRO:
1. mcp__memory-supabase__search_memories → Experiência histórica
2. mcp__wikijs__search_pages → Documentação interna
3. mcp__dify-kb__dify_kb_retrieve_segments → Knowledge base temática
```
### PASSO 2: Hierarquia de Fontes
```
🥇 1ª: MCPs especializados (memory-supabase, dify-kb, desk-crm-v3)
🥈 2ª: MCPs de sistema (wikijs, filesystem, google-workspace)
🥉 3ª: MCPs complementares (context7, puppeteer)
🔧 ÚLTIMO: Ferramentas nativas Claude
```
### PASSO 3: Captura de Aprendizagem
```
SEMPRE GUARDAR ao final:
mcp__memory-supabase__save_memory {
"content": "[Resumo do trabalho e decisões]",
"tags": ["[área]", "[projecto]", "[tipo]"]
}
```
---
## ✅ CHECKLIST PRE-ENTREGA
- [ ] Dados verificados com fontes reais
- [ ] Qualidade técnica validada (100/100)
- [ ] Padrões Descomplicar® seguidos
- [ ] Documentação clara
- [ ] Testes executados (quando aplicável)
- [ ] Aprendizagens capturadas
---
## 📝 OUTPUT
- **Assinatura**: `/** @author Descomplicar® | @link descomplicar.pt | @copyright 2026 */`
- **Markdown**: Obsidian-ready (frontmatter, wikilinks, callouts)
- **Língua**: Português Europeu (PT-PT)
- **Monetário**: 95€ (não 95,00€)
---
*Core Standards v1.0 | 2026-01-27*

View File

@@ -0,0 +1,283 @@
{
"mapping": {
"analytics-insights-agent": {
"model": "haiku",
"tools": ["Read", "Glob", "Grep"],
"datasets": ["Marketing Digital", "Gestão de Marketing", "SEO (Search Engine Optimization)", "Gestão de Tráfego"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"},
{"id": "4c595973-ba10-420a-a3bf-e4389e424ad3", "title": "Marketing Digital PT"}
]
},
"automation-lead": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["n8n", "Ferramentas de Automação e IA", "Dify", "Flowise"],
"notebooks": [
{"id": "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1", "title": "n8n"},
{"id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8", "title": "Transformacao Digital e IA"},
{"id": "929ef67b-c131-4f01-abd0-8b078491a6b7", "title": "AI Automation Stack"}
]
},
"backup-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Bash", "Glob", "Grep"],
"datasets": ["TI (Tecnologia da Informação)", "Linux", "CWP Centos Web Panel", "AWS (Amazon Web Services)"],
"notebooks": [
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"},
{"id": "0ded7bd6-69b3-4c76-b327-452396bf7ea7", "title": "CWP"}
]
},
"content-manager": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Marketing de Conteúdo", "Copywriting", "Blogging", "Marketing Digital"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"},
{"id": "7b8fec17-d34f-4e3f-a8c6-8231e51f6323", "title": "Copywriting e Persuasao"}
]
},
"copywriter": {
"model": "sonnet",
"tools": ["Read", "Write", "Glob", "Grep"],
"datasets": ["Copywriting", "Marketing de Conteúdo", "Escrever PT-PT", "Branding"],
"notebooks": [
{"id": "7b8fec17-d34f-4e3f-a8c6-8231e51f6323", "title": "Copywriting e Persuasao"},
{"id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "title": "Social Media e Branding"}
]
},
"crm-admin-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["PerfexCRM", "Gestão", "Gestão de Processos"],
"notebooks": [
{"id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c", "title": "Perfex CRM: Gestao de Clientes e Projetos"},
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "f9dc59c2-718b-4b12-bd06-095d4bfa3e34", "title": "Gestao de Operacoes"}
]
},
"cwp-server-manager": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["CWP Centos Web Panel", "Linux", "TI (Tecnologia da Informação)"],
"notebooks": [
{"id": "0ded7bd6-69b3-4c76-b327-452396bf7ea7", "title": "CWP"},
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"database-design-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["TI (Tecnologia da Informação)", "Desenvolvimento de Software", "AWS (Amazon Web Services)"],
"notebooks": [
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"}
]
},
"dev-helper": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["Desenvolvimento de Software", "TI (Tecnologia da Informação)", "Claude Code"],
"notebooks": [
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"},
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"},
{"id": "2876d1fe-5cea-4d98-8140-b0e1a81c6bc4", "title": "Claude Code"}
]
},
"development-lead": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["Desenvolvimento de Software", "Gestão de Projetos", "Estratégia"],
"notebooks": [
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"},
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"}
]
},
"easypanel-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["TI (Tecnologia da Informação)", "Linux", "AWS (Amazon Web Services)"],
"notebooks": [
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"finance-manager": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Gestão", "Estratégia", "Estratégia Descomplicar"],
"notebooks": [
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"},
{"id": "f29c8457-f16d-4fb3-979d-6e5901de1b20", "title": "Descomplicar: Marketing Digital"}
]
},
"javascript-fullstack-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["Desenvolvimento de Software", "TI (Tecnologia da Informação)"],
"notebooks": [
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"},
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"lead-qualifier": {
"model": "haiku",
"tools": ["Read", "Glob", "Grep"],
"datasets": ["Vendas", "Marketing Digital", "PerfexCRM"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"},
{"id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c", "title": "Perfex CRM: Gestao de Clientes e Projetos"}
]
},
"marketing-planning-expert": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Marketing Digital", "Gestão de Marketing", "Estratégia", "Marketing Redes Sociais"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"},
{"id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "title": "Social Media e Branding"}
]
},
"master-orchestrator": {
"model": "opus",
"tools": ["Task", "Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["Gestão de Projetos", "Gestão", "Estratégia", "Estratégia Descomplicar"],
"notebooks": [
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"},
{"id": "f29c8457-f16d-4fb3-979d-6e5901de1b20", "title": "Descomplicar: Marketing Digital"}
]
},
"mcp-protocol-developer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["MCP Servers", "Claude Code", "Desenvolvimento de Software"],
"notebooks": [
{"id": "73102308-70ef-403e-9be9-eae0cfc62d55", "title": "Desenvolvimento de MCPs"},
{"id": "2876d1fe-5cea-4d98-8140-b0e1a81c6bc4", "title": "Claude Code"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"}
]
},
"n8n-automation-expert": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["n8n", "Ferramentas de Automação e IA", "Dify"],
"notebooks": [
{"id": "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1", "title": "n8n"},
{"id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8", "title": "Transformacao Digital e IA"},
{"id": "929ef67b-c131-4f01-abd0-8b078491a6b7", "title": "AI Automation Stack"}
]
},
"perfex-crm-module-developer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["PerfexCRM", "Desenvolvimento de Software"],
"notebooks": [
{"id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c", "title": "Perfex CRM: Gestao de Clientes e Projetos"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"}
]
},
"performance-optimization-engineer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["TI (Tecnologia da Informação)", "Desenvolvimento de Software", "AWS (Amazon Web Services)"],
"notebooks": [
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"}
]
},
"php-fullstack-engineer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["Desenvolvimento de Software", "WordPress", "TI (Tecnologia da Informação)"],
"notebooks": [
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"},
{"id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "title": "WordPress e Elementor"},
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"project-manager": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Gestão de Projetos", "Gestão", "Estratégia"],
"notebooks": [
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"}
]
},
"sales-manager": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Vendas", "Marketing Digital", "PerfexCRM"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"},
{"id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c", "title": "Perfex CRM: Gestao de Clientes e Projetos"}
]
},
"security-compliance-specialist": {
"model": "opus",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["TI (Tecnologia da Informação)", "Linux", "AWS (Amazon Web Services)"],
"notebooks": [
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"seo-specialist": {
"model": "haiku",
"tools": ["Read", "Glob", "Grep"],
"datasets": ["SEO (Search Engine Optimization)", "Marketing Digital", "Marketing de Conteúdo"],
"notebooks": [
{"id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "title": "Marketing Digital Avancado"}
]
},
"software-project-planner": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Gestão de Projetos", "Desenvolvimento de Software", "Estratégia"],
"notebooks": [
{"id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "title": "Gestao de Projectos e Agile"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"},
{"id": "79d43410-0e29-4be1-881d-84db6bdc239a", "title": "Estrategia e Empreendedorismo"}
]
},
"ui-designer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["UX e Usabilidade", "Desenvolvimento de WebSites", "Canva"],
"notebooks": [
{"id": "081ca512-8279-4850-b2b9-dff090267482", "title": "UI/UX Design"},
{"id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "title": "WordPress e Elementor"},
{"id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "title": "Social Media e Branding"}
]
},
"web-designer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Glob", "Grep"],
"datasets": ["Desenvolvimento de WebSites", "WordPress", "Elementor", "UX e Usabilidade"],
"notebooks": [
{"id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "title": "WordPress e Elementor"},
{"id": "081ca512-8279-4850-b2b9-dff090267482", "title": "UI/UX Design"}
]
},
"wordpress-performance-specialist": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["WordPress", "Elementor", "Crocoblock", "TI (Tecnologia da Informação)"],
"notebooks": [
{"id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "title": "WordPress e Elementor"},
{"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "title": "Cloud e Infraestrutura TI"}
]
},
"wordpress-plugin-developer": {
"model": "sonnet",
"tools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"],
"datasets": ["WordPress", "Crocoblock", "Elementor", "Desenvolvimento de Software"],
"notebooks": [
{"id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "title": "WordPress e Elementor"},
{"id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "title": "Programacao"}
]
}
}
}

View File

@@ -0,0 +1,128 @@
# Protocolo de Knowledge Sources v2.0
**Data:** 2026-02-12
**Propósito:** Consulta inteligente de conhecimento com dual-source (NotebookLM + Dify KB)
---
## Visão Geral
Skills e agents consultam conhecimento via dual-source:
1. **NotebookLM** (primario) - Gemini 2.5 RAG com conhecimento curado
2. **Dify KB** (fallback) - Datasets tematicos quando NotebookLM insuficiente
## Fluxo de Consulta
```
1. Skill/Agent precisa conhecimento
2. Consultar NotebookLM (primario)
→ mcp__notebooklm__notebook_query notebook_id:"<id>" query:"<tema>"
3. Se resultado suficiente → usar
4. Se insuficiente → consultar Dify KB (fallback)
→ mcp__dify-kb__dify_kb_retrieve_segments dataset:"<nome>" query:"<tema>"
5. Agregar resultados
```
## Como Consultar NotebookLM (Primario)
### 1. Identificar Notebook (via notebooklm-mapping.json)
```javascript
// Ler mapeamento
const mapping = require('./notebooklm-mapping.json').mapping;
const notebook = mapping['WordPress'];
// → {notebook_id: "5be0d1a6-...", notebook_title: "WordPress e Elementor"}
```
### 2. Consultar Notebook
```
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-00f2-4cd9-b835-978cb7721601" query:"elementor custom widgets"
```
### 3. Múltiplos Notebooks
Quando o tema cobre vários notebooks, consultar em paralelo:
```
# Paralelo: WordPress + Dev
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-..." query:"tema"
mcp__notebooklm__notebook_query notebook_id:"24947ffa-..." query:"tema"
```
## Como Consultar Dify KB (Fallback)
### 1. Identificar Dataset
```javascript
mcp__dify-kb__dify_kb_retrieve_segments({
dataset: "WordPress",
query: "elementor custom widgets",
top_k: 5
});
```
### 2. Consulta Paralela (Múltiplos Datasets)
```javascript
// Lançar consultas em paralelo para datasets prioritarios
const results = await Promise.all([
dify_kb_retrieve(dataset1, query),
dify_kb_retrieve(dataset2, query)
]);
```
## Mapeamento Notebooks
Ficheiro central: `notebooklm-mapping.json` (mesmo directorio)
51 notebooks disponiveis cobrindo:
- Marketing (5 notebooks)
- Desenvolvimento (8 notebooks)
- Infraestrutura (3 notebooks)
- Gestao (3 notebooks)
- Negocio (4 notebooks)
- Automacao (3 notebooks)
- Design (2 notebooks)
## Template para Agents
Secção standard nos agents:
```markdown
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"<uuid>" query:"<tema>"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"<nome>" query:"<tema>"
```
```
## Template para Skills
Adicionar no SKILL.md:
```markdown
# PRIMARIO: NotebookLM (Gemini 2.5 RAG)
# mcp__notebooklm__notebook_query notebook_id:"<uuid>"
# FALLBACK: Dify KB
mcp__dify-kb__dify_kb_retrieve_segments dataset:"<nome>" query:"<tema>"
```
## Metricas
Rastrear na instrumentacao:
- `kb_source`: "notebooklm" ou "dify"
- `kb_consulted`: 1 se consultou KB
- `kb_fallback`: 1 se precisou de Dify apos NotebookLM
---
**Protocolo v2.0** | 2026-02-12 | Dual-source (NotebookLM + Dify KB)

View File

@@ -0,0 +1,157 @@
# Protocolo de Instrumentação Automática v1.0
**Data:** 2026-02-03
**Propósito:** Auto-registar métricas de execução de skills para análise PDCA
---
## Visão Geral
Toda skill instrumentada deve gravar automaticamente métricas de execução na tabela `tblskill_agent_metrics` do Desk CRM.
## Quando Instrumentar
Skills que:
- Têm baseline definido em `_knowledge-map.json`
- São frequentemente usadas (>5x/semana)
- Estão em processo de optimização
## Estrutura de Instrumentação
### 1. Início de Execução
Ao iniciar a skill, registar:
```javascript
const SKILL_START = Date.now();
const SESSION_ID = crypto.randomUUID(); // ou usar session_id existente
```
### 2. Rastreio de Consultas KB
Se a skill consultar Dify KB:
```javascript
let KB_CONSULTED = false;
let KB_HITS = 0;
let KB_MISS = 0;
// Após cada consulta Dify bem sucedida
KB_CONSULTED = true;
KB_HITS++;
// Se consulta falhou ou sem resultados
KB_MISS++;
```
### 3. Contagem de Tool Calls
```javascript
let TOOL_CALLS = 0;
// Incrementar a cada tool call
TOOL_CALLS++;
```
### 4. Fim de Execução - Gravar Métrica
**Via SQL directo (fallback robusto):**
```sql
INSERT INTO tblskill_agent_metrics (
type, name, duration_ms, status,
session_id, task_id, project_id, staff_id,
kb_consulted, kb_hits, kb_miss, tool_calls,
error_type, error_message, context_tokens, output_tokens,
model_used, created_at
) VALUES (
'skill', '/nome-skill', {DURATION_MS}, '{STATUS}',
'{SESSION_ID}', {TASK_ID}, {PROJECT_ID}, 25,
{KB_CONSULTED}, {KB_HITS}, {KB_MISS}, {TOOL_CALLS},
NULL, NULL, NULL, NULL,
'opus-4.5', NOW()
);
```
**Via MCP tool (quando disponível):**
```javascript
mcp__desk-crm-v3__log_skill_metric({
type: 'skill',
name: '/nome-skill',
duration_ms: Date.now() - SKILL_START,
status: 'success', // ou 'error', 'partial'
session_id: SESSION_ID,
task_id: CURRENT_TASK_ID,
project_id: CURRENT_PROJECT_ID,
staff_id: 25, // AikTop
kb_consulted: KB_CONSULTED,
kb_hits: KB_HITS,
kb_miss: KB_MISS,
tool_calls: TOOL_CALLS
});
```
## Status Possíveis
| Status | Quando Usar |
|--------|-------------|
| `success` | Skill completou com sucesso |
| `error` | Skill falhou com erro |
| `partial` | Skill completou parcialmente |
| `cancelled` | Utilizador cancelou |
## Campos Opcionais
| Campo | Quando Preencher |
|-------|------------------|
| `task_id` | Se executando dentro de tarefa Desk |
| `project_id` | Se contexto de projecto conhecido |
| `error_type` | Se status = 'error' |
| `error_message` | Se status = 'error' |
| `context_tokens` | Se disponível via API |
| `output_tokens` | Se disponível via API |
## Template para Skills
Adicionar esta secção no final de cada SKILL.md instrumentada:
```markdown
---
## Instrumentação Automática
Esta skill grava métricas automaticamente para análise PDCA.
### Ao Executar Esta Skill
1. **Início:** Registar timestamp inicial
2. **Consultas KB:** Rastrear hits/miss do Dify
3. **Fim:** Gravar métrica via SQL ou MCP
### Query para Gravar (executar no final)
\`\`\`sql
INSERT INTO tblskill_agent_metrics (type, name, duration_ms, status, staff_id, kb_consulted, created_at)
VALUES ('skill', '/nome-skill', {DURACAO_MS}, '{STATUS}', 25, {KB_CONSULTADO}, NOW());
\`\`\`
### Ver Métricas
\`\`\`bash
/metrics /nome-skill
\`\`\`
```
## Integração com /reflect
Se degradação detectada (performance >15% pior que baseline):
1. `/metrics` mostra alerta
2. Sugerir `/reflect` para investigação
3. `/reflect` analisa padrões e propõe melhorias
4. Registar ciclo PDCA em `tblskill_agent_pdca_cycles`
---
**Protocolo v1.0** | 2026-02-03

View File

@@ -0,0 +1,69 @@
{
"description": "Mapeamento Dify KB datasets -> NotebookLM notebooks. NotebookLM e fonte primaria (Gemini 2.5 RAG). Dify KB e fallback.",
"updated": "2026-02-12",
"query_tool": "mcp__notebooklm__notebook_query",
"fallback_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"mapping": {
"Marketing Digital": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Marketing": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Gestao de Marketing": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Gestao de Trafego": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Marketing de Conteudo": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Growth Hacking": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Marketing Redes Sociais": {"notebook_id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "notebook_title": "Social Media e Branding"},
"Branding": {"notebook_id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "notebook_title": "Social Media e Branding"},
"Canva": {"notebook_id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675", "notebook_title": "Social Media e Branding"},
"SEO (Search Engine Optimization)": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado", "note": "SEO coberto genericamente no Marketing Avancado"},
"SEO": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado"},
"Copywriting": {"notebook_id": "7b8fec17-d34f-4e3f-a8c6-8231e51f6323", "notebook_title": "Copywriting e Persuasao"},
"Youtube Marketing": {"notebook_id": "058a896e-6c9a-4e51-ae7d-9adb2738bc5f", "notebook_title": "Producao de Video e Youtube"},
"Vendas": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado", "note": "Sem notebook dedicado, coberto parcialmente"},
"Email Marketing": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado", "note": "Sem notebook dedicado"},
"Blogging": {"notebook_id": "76647e0f-3ae2-4c00-a0a8-f457aebf5655", "notebook_title": "Marketing Digital Avancado", "note": "Sem notebook dedicado"},
"Mentor: Seth Godin": {"notebook_id": "79d43410-0e29-4be1-881d-84db6bdc239a", "notebook_title": "Estrategia e Empreendedorismo"},
"Mentor: Russel Brunson": {"notebook_id": "79d43410-0e29-4be1-881d-84db6bdc239a", "notebook_title": "Estrategia e Empreendedorismo"},
"Mentor: Gary Vee": {"notebook_id": "7b8fec17-d34f-4e3f-a8c6-8231e51f6323", "notebook_title": "Copywriting e Persuasao"},
"Mentor: Alex Vargas": {"notebook_id": "4c595973-ba10-420a-a3bf-e4389e424ad3", "notebook_title": "Marketing Digital PT"},
"Mentor: Natanael Oliveira": {"notebook_id": "4c595973-ba10-420a-a3bf-e4389e424ad3", "notebook_title": "Marketing Digital PT"},
"Mentor: Ricardo Piovan": {"notebook_id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "notebook_title": "Gestao de Projectos e Agile"},
"Claude Code": {"notebook_id": "2876d1fe-5cea-4d98-8140-b0e1a81c6bc4", "notebook_title": "Claude Code"},
"MCP Servers": {"notebook_id": "73102308-70ef-403e-9be9-eae0cfc62d55", "notebook_title": "Desenvolvimento de MCPs"},
"VS Code": {"notebook_id": "57d9c6c9-48ba-4d83-8f71-cc890f348a53", "notebook_title": "AI Code Editors"},
"Windsurf": {"notebook_id": "57d9c6c9-48ba-4d83-8f71-cc890f348a53", "notebook_title": "AI Code Editors"},
"Claude Computer Use": {"notebook_id": "57d9c6c9-48ba-4d83-8f71-cc890f348a53", "notebook_title": "AI Code Editors"},
"Desenvolvimento de Software": {"notebook_id": "24947ffa-0019-448a-a340-2f4a275d2eb1", "notebook_title": "Programacao"},
"Obsidian + Claude Code": {"notebook_id": "ebee9fe1-78fd-4f85-8938-f19f3ea32131", "notebook_title": "Obsidian + Claude"},
"WordPress": {"notebook_id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "notebook_title": "WordPress e Elementor"},
"Elementor": {"notebook_id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "notebook_title": "WordPress e Elementor"},
"Crocoblock": {"notebook_id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "notebook_title": "WordPress e Elementor"},
"Desenvolvimento de WebSites": {"notebook_id": "5be0d1a6-00f2-4cd9-b835-978cb7721601", "notebook_title": "WordPress e Elementor"},
"CWP Centos Web Panel": {"notebook_id": "0ded7bd6-69b3-4c76-b327-452396bf7ea7", "notebook_title": "CWP"},
"TI (Tecnologia da Informação)": {"notebook_id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "notebook_title": "Cloud e Infraestrutura TI"},
"TI": {"notebook_id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "notebook_title": "Cloud e Infraestrutura TI"},
"Linux": {"notebook_id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "notebook_title": "Cloud e Infraestrutura TI"},
"AWS (Amazon Web Services)": {"notebook_id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "notebook_title": "Cloud e Infraestrutura TI"},
"AWS": {"notebook_id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7", "notebook_title": "Cloud e Infraestrutura TI"},
"Gestao": {"notebook_id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "notebook_title": "Gestao de Projectos e Agile"},
"Gestao de Projetos": {"notebook_id": "0c9c079c-a426-486c-99eb-1564d42d37ad", "notebook_title": "Gestao de Projectos e Agile"},
"Gestao de Processos": {"notebook_id": "f9dc59c2-718b-4b12-bd06-095d4bfa3e34", "notebook_title": "Gestao de Operacoes"},
"Estrategia": {"notebook_id": "79d43410-0e29-4be1-881d-84db6bdc239a", "notebook_title": "Estrategia e Empreendedorismo"},
"Estratégia": {"notebook_id": "79d43410-0e29-4be1-881d-84db6bdc239a", "notebook_title": "Estrategia e Empreendedorismo"},
"Produtividade": {"notebook_id": "ebee9fe1-78fd-4f85-8938-f19f3ea32131", "notebook_title": "Obsidian + Claude"},
"Escrever PT-PT": {"notebook_id": null, "notebook_title": null, "note": "Sem equivalente NotebookLM - usar apenas Dify"},
"n8n": {"notebook_id": "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1", "notebook_title": "n8n"},
"Dify": {"notebook_id": "929ef67b-c131-4f01-abd0-8b078491a6b7", "notebook_title": "AI Automation Stack"},
"Flowise": {"notebook_id": "929ef67b-c131-4f01-abd0-8b078491a6b7", "notebook_title": "AI Automation Stack", "note": "Coberto parcialmente"},
"Open WebUI": {"notebook_id": "be6f72ac-f8ba-4337-912d-abd5dd448519", "notebook_title": "Open WebUI"},
"Ferramentas de Automação e IA": {"notebook_id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8", "notebook_title": "Transformacao Digital e IA"},
"Ferramentas Automacao e IA": {"notebook_id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8", "notebook_title": "Transformacao Digital e IA"},
"PerfexCRM": {"notebook_id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c", "notebook_title": "Perfex CRM: Gestao de Clientes e Projetos"},
"Servicos Descomplicar": {"notebook_id": "f29c8457-f16d-4fb3-979d-6e5901de1b20", "notebook_title": "Descomplicar: Marketing Digital"},
"e-commerce": {"notebook_id": "226e384e-d4bc-48f4-bb82-7927360436cc", "notebook_title": "E-commerce Pratico"},
"Empreendedorismo": {"notebook_id": "79d43410-0e29-4be1-881d-84db6bdc239a", "notebook_title": "Estrategia e Empreendedorismo"},
"Agencia Digital": {"notebook_id": "f9dc59c2-718b-4b12-bd06-095d4bfa3e34", "notebook_title": "Gestao de Operacoes"},
"Estrategia Descomplicar": {"notebook_id": "f29c8457-f16d-4fb3-979d-6e5901de1b20", "notebook_title": "Descomplicar: Marketing Digital"},
"Aceleracao Digital": {"notebook_id": "ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8", "notebook_title": "Transformacao Digital e IA"},
"UX e Usabilidade": {"notebook_id": "081ca512-8279-4850-b2b9-dff090267482", "notebook_title": "UI/UX Design"},
"Criatividade": {"notebook_id": "081ca512-8279-4850-b2b9-dff090267482", "notebook_title": "UI/UX Design", "note": "Sem notebook dedicado"}
}
}

View File

@@ -0,0 +1,154 @@
---
name: agent-context-injector
description: >
Injecção dinâmica de contexto específico para cada agente.
Use when "contexto agente", "injectar", "SubagentStart",
"recursos agente", "mcps disponíveis", "skills relevantes".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Agent Context Injector
Injecção dinâmica de contexto específico para cada agente.
## Triggers
Esta skill é activada automaticamente via hook `SubagentStart` quando:
- Um subagente é iniciado via Task tool
- Contexto precisa ser enriquecido com recursos do agente
## Capabilities
### 1. Context Building
- Consultar mapeamento agente → recursos na BD
- Gerar lista de MCPs disponíveis para o agente
- Gerar lista de skills relevantes
- Incluir datasets Dify para consulta automática
### 2. Token Optimization
- Calcular tokens do contexto gerado
- Priorizar recursos por relevância
- Truncar se exceder limite (~800 tokens)
- Cache de contextos frequentes
### 3. Dynamic Injection
- Adicionar contexto ao prompt do agente
- Incluir instruções de uso dos recursos
- Configurar auto-consult para datasets
## Template de Contexto
```markdown
## Recursos Disponíveis
### MCPs Activos
$MCP_LIST
- Usar proactivamente para operações relevantes
### Skills Recomendadas
$SKILLS_LIST
- Invocar quando tarefa corresponder
### Knowledge Base (Dify)
$DATASETS_LIST
- AUTO-CONSULT: Consultar ANTES de responder
- Query template: "$QUERY_TEMPLATE"
### Plugins
$PLUGINS_LIST
- Comandos disponíveis: $PLUGIN_COMMANDS
```
## Workflow
```
SUBAGENT START → QUERY BD → BUILD CONTEXT → INJECT → EXECUTE
```
1. **Hook SubagentStart** dispara
2. **Identificar agente** pelo `subagent_type`
3. **Query MySQL**:
```sql
SELECT r.resource_type, r.resource_id, r.priority
FROM cr_agent_resources r
JOIN cr_agents a ON r.agent_id = a.id
WHERE a.slug = '{agent_slug}'
AND r.auto_inject = TRUE
ORDER BY r.priority ASC;
```
4. **Consultar agent-knowledge-config.json** para datasets
5. **Gerar contexto** com template
6. **Calcular tokens** e optimizar se necessário
7. **Injectar** no prompt do agente
## Métricas Target
| Métrica | Target |
|---------|--------|
| Tempo de injecção | < 2s |
| Tokens médios | ~772 |
| Cache hit rate | > 60% |
| Erro rate | < 1% |
## Exemplo de Output
Para `wordpress-plugin-developer`:
```markdown
## Recursos Disponíveis
### MCPs Activos
- `cwp` - Gestão servidor CentOS WebPanel
- `ssh-unified` - Acesso SSH a servidores
- `filesystem` - Operações de ficheiros
### Skills Recomendadas
- `/wp-dev` - Desenvolvimento WordPress
- `/wp-performance` - Optimização performance
- `/elementor` - Desenvolvimento Elementor
### Knowledge Base (Dify)
- `wordpress-development` - Docs WP, hooks, filters
- `woocommerce-api` - API WooCommerce
- AUTO-CONSULT: Consultar ANTES de implementar
### Plugins
- `superpowers` - TDD obrigatório
- `code-review` - Review automático
```
## Configuração
Ficheiro `agent-knowledge-config.json`:
```json
{
"wordpress-plugin-developer": {
"datasets": ["wordpress-development", "woocommerce-api"],
"auto_consult": true,
"query_template": "WordPress {topic} best practices 2026",
"priority_datasets": ["wordpress-development"]
}
}
```
## Integração com Scripts Existentes
Este skill complementa (não substitui) os scripts Python existentes:
- `inject-mcp-context.py` - Continua activo
- `inject-skills-context.py` - Continua activo
A skill adiciona:
- Datasets Dify dinâmicos
- Plugins activos
- Contexto mais rico e actualizado
## Limites
- Máximo ~800 tokens de contexto injectado (para preservar espaço)
- Não modifica comportamento do agente, apenas enriquece contexto
- Depende de mapeamentos correctos em `cr_agent_resources`
- Cache de 5 minutos pode mostrar dados desactualizados
- Não funciona para agentes não registados na BD

View File

@@ -0,0 +1,290 @@
---
name: component-generator
description: >
Gera componentes Claude Code seguindo templates Descomplicar®.
Use when "criar skill", "criar agent", "novo componente",
"gerar template", "scaffolding", "criar command".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Write, Edit, Glob, ToolSearch
---
# Component Generator
Skill para criar componentes de alta qualidade automaticamente, fechando o ciclo CRIAR → VALIDAR → REGISTAR.
## Triggers
Esta skill deve ser activada quando:
- Utilizador pede para criar nova skill
- Utilizador pede para criar novo agent
- Utilizador pede para criar novo command
- Necessidade de scaffold de componente identificada
- Comando `/descomplicar:create` é invocado
## Capabilities
### 1. Scaffold Skill
Cria estrutura completa de skill com frontmatter obrigatório.
**Comando:**
```
/descomplicar:create skill <name>
```
**Template Gerado:**
```markdown
---
name: <name>
description: >
[Capability]. Use when "[trigger1]", "[trigger2]",
"[keyword1]", "[keyword2]", "[keyword3]".
author: Descomplicar®
version: 1.0.0
desk_task: XXXX
allowed-tools: Read, Glob, Grep
---
# <Name>
[Descrição da skill]
## Triggers
Esta skill deve ser activada quando:
- [Trigger 1]
- [Trigger 2]
## Capabilities
### 1. [Capability 1]
[Descrição]
### 2. [Capability 2]
[Descrição]
## Workflow
```
[PASSO1] → [PASSO2] → [PASSO3] → [PASSO4]
```
## Exemplo de Uso
```
User: [Exemplo de input]
Assistant: [Exemplo de output]
```
## Limites
- [Quando NÃO usar]
- [Escopo máximo]
```
**Acções Automáticas:**
1. Criar directório `skills/<name>/`
2. Gerar `SKILL.md` com template
3. Registar em `cr_skills` (MySQL)
4. Criar tarefa Desk CRM (se desk_task fornecido)
### 2. Scaffold Agent
Cria ficheiro de agente com mapeamento de MCPs por categoria.
**Comando:**
```
/descomplicar:create agent <name> [--category dev|business|marketing|infra]
```
**Template Gerado:**
```markdown
---
name: <name>
description: >
[Descrição]. Use for [uso1], [uso2], [uso3].
model: sonnet
tools: Read, Glob, Grep, ToolSearch
allowed-mcps: [MCPs baseados na categoria]
category: <category>
author: Descomplicar®
version: 1.0.0
desk_task: XXXX
---
# <Name>
[Descrição do agente]
## Quando Usar
USAR PROATIVAMENTE para:
- [Caso de uso 1]
- [Caso de uso 2]
## Capabilities
### [Capability 1]
- [Detalhe]
## Tools Disponíveis
| Tool | Uso |
|------|-----|
| [tool] | [descrição] |
## Workflow Típico
```
1. [Passo 1]
2. [Passo 2]
3. [Passo 3]
4. [Passo 4]
```
## Colaborações
- [Agente relacionado 1]
- [Agente relacionado 2]
## Limites
- [Limite 1]
- [Limite 2]
```
**MCPs por Categoria:**
| Categoria | MCPs Primary | MCPs Recommended |
|-----------|--------------|------------------|
| dev | gitea, filesystem | ssh-unified, desk-crm-v3 |
| business | desk-crm-v3, moloni | google-workspace |
| marketing | google-workspace, tavily | desk-crm-v3 |
| infra | ssh-unified, cwp | filesystem, gitea |
**Acções Automáticas:**
1. Criar `agents/<name>.md`
2. Registar em `cr_agents` (MySQL)
3. Criar mapeamentos em `cr_agent_mcps`
4. Sugerir colaborações em `cr_agent_collaborations`
5. Criar tarefa Desk CRM
### 3. Scaffold Command
Cria ficheiro de comando com namespace e arguments.
**Comando:**
```
/descomplicar:create command <name>
```
**Template Gerado:**
```markdown
---
name: <name>
description: >
[Descrição do comando]. [O que faz].
argument-hint: "[argumentos opcionais]"
---
# /descomplicar:<name>
[Descrição detalhada]
## Objectivo
[O que este comando faz]
## Sintaxe
```
/descomplicar:<name> [action] [args]
```
## Acções Disponíveis
### 1. [Acção 1]
```
/descomplicar:<name> [action1]
```
[Descrição]
## Output Esperado
```
╔═══════════════════════════════════════════╗
║ [OUTPUT VISUAL] ║
╚═══════════════════════════════════════════╝
```
```
**Acções Automáticas:**
1. Criar `commands/<name>.md`
2. Actualizar `plugin.json` com novo command
### 4. Registar em MySQL
```sql
-- Para Skills
INSERT INTO cr_skills (slug, name, category, status, desk_task, created_at)
VALUES (?, ?, ?, 'active', ?, NOW());
-- Para Agents
INSERT INTO cr_agents (slug, name, category, status, desk_task, created_at)
VALUES (?, ?, ?, 'active', ?, NOW());
```
### 5. Criar Tarefa Desk CRM
```sql
INSERT INTO tbltasks (name, description, rel_type, rel_id, milestone, status, dateadded, startdate, addedfrom)
VALUES (
'<Type>: <name>',
'<h4>Propósito</h4><p>...</p><h4>Estado</h4><p>Em desenvolvimento</p>',
'project', 65, -- Stack Workflow
?, -- Milestone apropriado
1, NOW(), CURDATE(), 1
);
```
## Workflow Completo
```
CREATE → VALIDATE → REGISTER → DESK TASK → READY
↓ ↓ ↓ ↓
Template Score≥70 MySQL Tracking
```
## Validação Automática
Após criação, invoca `quality-validator` para garantir score >= 70:
- Se score < 70: ALERTA + sugestões de melhoria
- Se score >= 70: componente activado
## Exemplo de Uso
```
User: Cria uma nova skill para gestão de backups
Component Generator:
1. [Cria directório skills/backup-manager/]
2. [Gera SKILL.md com template Descomplicar®]
3. [Valida: score 65/100 - Draft]
4. [Regista em cr_skills (id: 55)]
5. [Cria tarefa Desk #1503]
6. Resposta: "Skill backup-manager criada com sucesso!
- Path: skills/backup-manager/SKILL.md
- Score: 65/100 (Draft)
- Próximo passo: Editar e correr /descomplicar:validate"
```
## Limites
- Apenas cria estrutura base - conteúdo deve ser desenvolvido
- Score inicial tipicamente 50-70 (Draft)
- Não cria componentes duplicados (verifica slug existente)
- Requer conexão MySQL para registo em cr_*
- Não modifica componentes existentes (usar Edit tool)

View File

@@ -0,0 +1,267 @@
---
name: db-maintenance-manager
description: >
Manutenção automatizada das tabelas cr_* da infraestrutura Claude Code.
Use when "manutenção BD", "limpeza órfãos", "migração schema",
"backup tabelas", "archiving", "optimização BD", "database maintenance".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# DB Maintenance Manager
Gestão e manutenção automatizada das tabelas cr_* (Claude Resources) na base de dados Desk CRM.
## Triggers
Esta skill deve ser activada quando:
- Utilizador menciona "manutenção BD", "database maintenance"
- Detectados órfãos nas tabelas de relacionamento
- Telemetria antiga (>90 dias) a ocupar espaço
- Necessidade de migração de schema
- Backup/restore de componentes
## Schema das Tabelas cr_*
### Core Tables (Entidades)
| Tabela | Descrição | Manutenção |
|--------|-----------|------------|
| `cr_agents` | Agentes especializados | Sync, Backup |
| `cr_skills` | Skills invocáveis | Sync, Backup |
| `cr_mcps` | Servidores MCP | Sync, Backup |
| `cr_lsps` | Language Server Protocols | Sync, Backup |
| `cr_plugins` | Software Development Kits | Sync, Backup |
| `cr_mcp_tools` | Ferramentas por MCP | Sync |
| `cr_plugins` | Plugins instalados | Sync, Backup |
| `cr_hooks` | Hooks configurados | Sync, Backup |
### Relationship Tables (Limpeza de Órfãos)
| Tabela | FK Agent | FK Resource | Cleanup Priority |
|--------|----------|-------------|------------------|
| `cr_agent_mcps` | agent_id → cr_agents | mcp_id → cr_mcps | Alta |
| `cr_agent_lsps` | agent_id → cr_agents | lsp_id → cr_lsps | Alta |
| `cr_plugin_agents` | sdk_id → cr_plugins | agent_id → cr_agents | Média |
| `cr_plugin_skills` | sdk_id → cr_plugins | skill_id → cr_skills | Média |
| `cr_plugin_mcps` | sdk_id → cr_plugins | mcp_id → cr_mcps | Média |
| `cr_agent_skills` | agent_id → cr_agents | skill_id → cr_skills | Alta |
| `cr_skill_mcps` | skill_id → cr_skills | mcp_id → cr_mcps | Alta |
| `cr_agent_collaborations` | agent_id → cr_agents | collaborator_id → cr_agents | Média |
### Telemetry Tables (Archiving)
| Tabela | Retenção Activa | Archive After |
|--------|-----------------|---------------|
| `cr_agent_usage` | 90 dias | cr_agent_usage_archive |
| `cr_skill_usage` | 90 dias | cr_skill_usage_archive |
| `cr_mcp_tool_usage` | 90 dias | cr_mcp_tool_usage_archive |
| `cr_lsp_usage` | 90 dias | cr_lsp_usage_archive |
## Capabilities
### 1. Cleanup de Órfãos
Detecta e remove referências inválidas nas tabelas de relacionamento.
**Detecção:**
```sql
-- Órfãos em cr_agent_mcps
SELECT am.id, am.agent_id, am.mcp_id
FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
WHERE a.id IS NULL OR m.id IS NULL;
```
**Limpeza (com confirmação):**
```sql
-- Backup antes de limpar
CREATE TABLE cr_agent_mcps_orphans_backup_YYYYMMDD AS
SELECT * FROM cr_agent_mcps am
WHERE agent_id NOT IN (SELECT id FROM cr_agents)
OR mcp_id NOT IN (SELECT id FROM cr_mcps);
-- Limpar órfãos
DELETE FROM cr_agent_mcps
WHERE agent_id NOT IN (SELECT id FROM cr_agents)
OR mcp_id NOT IN (SELECT id FROM cr_mcps);
```
### 2. Migração de Schema
Gestão de alterações estruturais nas tabelas cr_*.
**Estrutura de Migrations:**
```
migrations/
├── 001_initial_schema.sql
├── 002_add_lsp_tables.sql
├── 003_add_telemetry.sql
├── 004_add_archive_tables.sql
└── migrations_log.sql
```
**Tabela de Controlo:**
```sql
CREATE TABLE IF NOT EXISTS cr_migrations (
id INT AUTO_INCREMENT PRIMARY KEY,
migration_name VARCHAR(100) NOT NULL,
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
checksum VARCHAR(64),
status ENUM('applied', 'rolled_back', 'failed') DEFAULT 'applied'
);
```
### 3. Backup Selectivo
Backup apenas das tabelas cr_* (não toda a BD Desk).
**Tabelas a incluir:**
```sql
-- Lista de tabelas para backup
SELECT table_name
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name LIKE 'cr_%';
```
**Formato de Backup:**
```
backups/
└── cr_backup_YYYYMMDD_HHMMSS/
├── manifest.json
├── cr_agents.sql
├── cr_skills.sql
├── cr_mcps.sql
└── ... (todas as tabelas cr_*)
```
### 4. Archiving de Telemetria
Move dados antigos para tabelas de arquivo.
**Processo:**
```sql
-- 1. Criar tabela archive se não existir
CREATE TABLE IF NOT EXISTS cr_agent_usage_archive LIKE cr_agent_usage;
-- 2. Mover dados > 90 dias
INSERT INTO cr_agent_usage_archive
SELECT * FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- 3. Limpar tabela principal
DELETE FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- 4. Registar operação
INSERT INTO cr_maintenance_log (operation, table_name, rows_affected, executed_at)
VALUES ('archive', 'cr_agent_usage', ROW_COUNT(), NOW());
```
### 5. Optimização
Manutenção de performance das tabelas.
```sql
-- Optimizar tabelas fragmentadas
OPTIMIZE TABLE cr_agent_usage, cr_skill_usage, cr_mcp_tool_usage;
-- Analisar estatísticas
ANALYZE TABLE cr_agents, cr_skills, cr_mcps, cr_agent_mcps;
-- Verificar índices em falta
SELECT DISTINCT table_name, column_name
FROM information_schema.columns c
WHERE table_schema = DATABASE()
AND table_name LIKE 'cr_%'
AND column_name LIKE '%_id'
AND NOT EXISTS (
SELECT 1 FROM information_schema.statistics s
WHERE s.table_schema = c.table_schema
AND s.table_name = c.table_name
AND s.column_name = c.column_name
);
```
## Workflow
```
ANALISAR → BACKUP → EXECUTAR → VALIDAR → REPORTAR
```
1. **ANALISAR**: Identificar necessidades de manutenção
2. **BACKUP**: Criar backup antes de operações destrutivas
3. **EXECUTAR**: Correr operação com transação
4. **VALIDAR**: Verificar integridade pós-operação
5. **REPORTAR**: Registar em cr_maintenance_log
## Integrações
- **MCP**: desk-crm-v3 (operações MySQL)
- **Commands**:
- `/descomplicar:db-cleanup` - Limpeza de órfãos
- `/descomplicar:db-migrate` - Migração de schema
- `/descomplicar:db-backup` - Backup selectivo
- `/descomplicar:db-archive` - Archiving telemetria
- **Skills**: infrastructure-manager (detecção), quality-validator (validação)
## Métricas de Sucesso
| Métrica | Target |
|---------|--------|
| Órfãos | 0 |
| Telemetria activa | < 90 dias |
| Backup age | < 7 dias |
| Migrations pendentes | 0 |
## Exemplo de Uso
```
User: A BD tem dados antigos e órfãos. Limpa tudo.
DB Maintenance Manager:
1. [Analisa estado actual]
- Órfãos: 12 em cr_agent_mcps, 3 em cr_skill_mcps
- Telemetria: 45.000 registos > 90 dias
- Último backup: há 15 dias
2. [Cria backup preventivo]
✓ Backup criado: cr_backup_20260204_163000/
3. [Executa limpeza órfãos]
✓ cr_agent_mcps: 12 órfãos removidos
✓ cr_skill_mcps: 3 órfãos removidos
4. [Executa archiving]
✓ cr_agent_usage: 15.000 → archive
✓ cr_skill_usage: 20.000 → archive
✓ cr_mcp_tool_usage: 10.000 → archive
5. [Valida resultado]
✓ Integridade OK
✓ 0 órfãos
✓ Telemetria < 90 dias
Resultado:
╔════════════════════════════════════════╗
║ DB MAINTENANCE COMPLETE ║
╠════════════════════════════════════════╣
║ Órfãos removidos: 15 ║
║ Registos arquivados: 45.000 ║
║ Espaço libertado: ~12 MB ║
║ Backup: ✓ Criado ║
╚════════════════════════════════════════╝
```
## Limites
- Não executa operações destrutivas sem backup prévio
- Archiving mantém dados (move, não apaga)
- Migrations requerem aprovação manual
- Backup não inclui tabelas não-cr_*
- Optimização pode demorar em tabelas grandes (>1M registos)
- Não substitui backups gerais do Desk CRM

View File

@@ -0,0 +1,211 @@
---
name: infrastructure-manager
description: >
Gestão automatizada da infraestrutura Claude Code Descomplicar.
Use when "infraestrutura", "sistema", "componentes", "health",
"sincronização", "relacionamentos", "mcps", "skills", "agents".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Infrastructure Manager
Gestão automatizada da infraestrutura Claude Code Descomplicar com suporte completo a relacionamentos.
## Triggers
Esta skill deve ser activada quando:
- Utilizador menciona "infraestrutura", "sistema", "componentes"
- Há problemas de sincronização detectados
- Health score cai abaixo de 90
- Novo componente é adicionado ao sistema
- Relacionamentos inconsistentes detectados
## Schema da Base de Dados
### Core Tables (Entidades)
| Tabela | Registos | Descrição |
|--------|----------|-----------|
| `cr_agents` | 46 | Agentes especializados |
| `cr_skills` | 54 | Skills invocáveis |
| `cr_mcps` | 33 | Servidores MCP |
| `cr_lsps` | 11+ | Language Server Protocols |
| `cr_plugins` | 29 | Software Development Kits |
| `cr_mcp_tools` | 822 | Ferramentas por MCP |
| `cr_plugins` | 5+ | Plugins instalados |
| `cr_hooks` | 6+ | Hooks configurados |
### Relationship Tables (800+ relacionamentos)
| Tabela | Registos | Relacionamento |
|--------|----------|----------------|
| `cr_agent_mcps` | 483 | Agente ↔ MCP (primary/recommended/available) |
| `cr_agent_lsps` | ~40 | Agente ↔ LSP (primary/recommended/available) |
| `cr_plugin_agents` | 131 | TaskForce ↔ Agente |
| `cr_plugin_skills` | 75 | TaskForce ↔ Skill |
| `cr_plugin_mcps` | 56 | TaskForce ↔ MCP |
| `cr_agent_skills` | ~50 | Agente ↔ Skill |
| `cr_skill_mcps` | ~45 | Skill ↔ MCP |
| `cr_agent_collaborations` | ~30 | Agente ↔ Agente |
### Telemetry Tables
| Tabela | Descrição |
|--------|-----------|
| `cr_agent_usage` | Tracking uso de agentes |
| `cr_skill_usage` | Tracking uso de skills |
| `cr_mcp_tool_usage` | Tracking uso de ferramentas MCP |
| `cr_lsp_usage` | Tracking uso de LSPs |
### Intelligence Tables
| Tabela | Registos | Descrição |
|--------|----------|-----------|
| `cr_decision_trees` | 5 | Árvores de decisão para selecção de agentes |
| `cr_recommendations` | 3 | Sugestões de melhorias |
| `cr_component_issues` | 2 | Issues abertos |
| `cr_reflections` | 1 | Reflexões do sistema |
## Capabilities
### 1. Monitorização Completa
**Entidades:**
```sql
SELECT
'agents' as type, COUNT(*) as total,
SUM(CASE WHEN status='active' THEN 1 ELSE 0 END) as active
FROM cr_agents
UNION ALL
SELECT 'skills', COUNT(*), SUM(CASE WHEN status='active' THEN 1 ELSE 0 END) FROM cr_skills
UNION ALL
SELECT 'mcps', COUNT(*), SUM(CASE WHEN status='active' THEN 1 ELSE 0 END) FROM cr_mcps
UNION ALL
SELECT 'sdks', COUNT(*), SUM(CASE WHEN status='active' THEN 1 ELSE 0 END) FROM cr_plugins;
```
**Relacionamentos:**
```sql
SELECT 'agent_mcps' as table_name, COUNT(*) as count FROM cr_agent_mcps
UNION ALL SELECT 'agent_lsps', COUNT(*) FROM cr_agent_lsps
UNION ALL SELECT 'sdk_agents', COUNT(*) FROM cr_plugin_agents
UNION ALL SELECT 'sdk_skills', COUNT(*) FROM cr_plugin_skills
UNION ALL SELECT 'sdk_mcps', COUNT(*) FROM cr_plugin_mcps
UNION ALL SELECT 'agent_skills', COUNT(*) FROM cr_agent_skills
UNION ALL SELECT 'skill_mcps', COUNT(*) FROM cr_skill_mcps
UNION ALL SELECT 'agent_collaborations', COUNT(*) FROM cr_agent_collaborations;
```
**Órfãos (inconsistências):**
```sql
-- Agent_mcps com agentes inexistentes
SELECT COUNT(*) FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
WHERE a.id IS NULL;
-- Repetir para todas as tabelas de relacionamento
```
### 2. Auto-Repair de Relacionamentos
Quando detectados órfãos:
```sql
-- Limpar referências inválidas
DELETE FROM cr_agent_mcps WHERE agent_id NOT IN (SELECT id FROM cr_agents);
DELETE FROM cr_agent_mcps WHERE mcp_id NOT IN (SELECT id FROM cr_mcps);
DELETE FROM cr_plugin_agents WHERE sdk_id NOT IN (SELECT id FROM cr_plugins);
DELETE FROM cr_plugin_agents WHERE agent_id NOT IN (SELECT id FROM cr_agents);
-- ... repetir para outras tabelas
```
### 3. Health Score Calculation
```
Health Score = (
entities_sync * 20 +
relationships_consistent * 20 +
mcps_responsive * 15 +
hooks_healthy * 15 +
decision_trees_valid * 10 +
telemetry_active * 10 +
plugins_functional * 10
) / 100
```
**Thresholds:**
- >= 90: Excelente (verde)
- 70-89: Bom (amarelo)
- < 70: Crítico (vermelho)
### 4. Reporting Detalhado
Dashboard completo incluindo:
- Contagem de entidades
- Contagem de relacionamentos
- Órfãos detectados
- Telemetria (30 dias)
- Decision trees status
- Recommendations pendentes
## Workflow
```
DETECTAR → DIAGNOSTICAR → REPARAR → VALIDAR → REPORTAR
```
1. **DETECTAR**: Query todas as tabelas
2. **DIAGNOSTICAR**: Identificar inconsistências
3. **REPARAR**: Limpar órfãos, actualizar telemetria
4. **VALIDAR**: Re-verificar consistência
5. **REPORTAR**: Gerar dashboard com métricas
## Integrações
- **MCPs**: desk-crm-v3, filesystem, mcp-time
- **Commands**:
- `/descomplicar:status` - Dashboard completo
- `/descomplicar:sync` - Sincronização
- `/descomplicar:relationships` - Gestão relacionamentos
- `/descomplicar:telemetry` - Métricas de uso
- `/descomplicar:decision-trees` - Gestão decision trees
- `/descomplicar:lsps` - Gestão Language Server Protocols
## Métricas de Sucesso
| Métrica | Target |
|---------|--------|
| Health Score | >= 90 |
| Órfãos | 0 |
| Sync latency | < 5s |
| Telemetry coverage | 100% |
## Exemplo de Uso
```
User: Qual o estado da infraestrutura?
Infrastructure Manager:
1. [Verifica data/hora: 2026-02-04 16:00]
2. [Query entidades: 46 agents, 54 skills, 33 MCPs]
3. [Query relacionamentos: 800+ total, 0 órfãos]
4. [Calcula Health Score: 95/100]
5. Resposta:
"Health Score: 95/100 ████████████████████░ EXCELENTE
Core: 46 agents ✓ | 54 skills ✓ | 33 MCPs ✓
Relacionamentos: 800+ (0 órfãos) ✓
Última sync: há 2h
Alerta menor: MCP 'moloni' com latência 2.1s"
```
## Limites
- Health Score é indicativo, não absoluto
- Sync pode demorar > 5s em bases de dados grandes
- Detecção de órfãos limitada a tabelas cr_* conhecidas
- Não corrige problemas automaticamente (apenas reporta)
- Telemetria depende de hooks activos e funcionais

View File

@@ -0,0 +1,591 @@
---
name: metrics
description: >
Performance metrics dashboard for skills and agents with quantitative telemetry. Automatic tracking, temporal trending, degradation alerts, Dify KB impact analysis and ROI calculation per client/project.
Use when analyzing performance, tracking improvements, validating PDCA cycles, calculating ROI, or when user mentions
"metrics", "performance", "dashboard", "analytics", "trending", "degradation", "baseline", "improvement", "roi calculation".
author: Descomplicar® Crescimento Digital
version: 1.3.0
user_invocable: true
tags: [metrics, pdca, performance, dashboard, dify-kb, analytics, roi]
desk_project: 65
desk_task: 1637
allowed-tools: mcp__desk-crm-v3__get_skill_metrics, mcp__desk-crm-v3__log_skill_metric, Read
category: infra
quality_score: 85
updated: "2026-02-04T18:00:00Z"
---
# SKILL: Performance Metrics Dashboard
**Trigger:** `/metrics`
---
## Propósito
Dashboard interactivo de performance de skills e agents com métricas quantitativas automáticas gravadas em Desk DB.
**Complementa:**
- `/reflect` (qualitativo) com dados quantitativos
- `/worklog` com métricas objectivas
- PDCA com decisões data-driven
---
## Quando Usar
- Ver performance de skills/agents
- Identificar degradações de performance
- Validar melhorias PDCA
- Análise ROI de optimizações
- Dashboard executivo de automação
---
## Capabilities
### Tipos de Análise
| Comando | Função |
|---------|--------|
| `/metrics` | Overview geral (30 dias) |
| `/metrics <skill-name>` | Detalhes de skill específica |
| `/metrics --project <id>` | Métricas por projecto |
| `/metrics --trend` | Trending temporal |
| `/metrics --compare` | Comparação vs baseline |
| `/metrics --kb` | **NOVO v1.2** Métricas Dify KB |
| `/metrics --roi` | **NOVO v1.2** ROI por cliente/projecto |
| `/metrics --export` | **NOVO v1.2** Exportar JSON/CSV |
| `/metrics --alerts` | **NOVO v1.2** Listar alertas activos |
### Agregações Disponíveis
1. **avg** - Médias de performance (padrão)
2. **count** - Contagens por status
3. **trend** - Evolução temporal (semanal)
4. **compare** - Comparação com baseline
5. **detailed** - Listagem detalhada
---
## Execução
### 1. Verificar Tools MCP Disponíveis
```javascript
// Tools necessários (MCP desk-crm-v3)
const REQUIRED_TOOLS = [
'mcp__desk-crm-v3__log_skill_metric',
'mcp__desk-crm-v3__get_skill_metrics'
];
// Se tools não disponíveis → query SQL directa como fallback
```
### 2. Query Métricas (Via MCP ou SQL)
**Opção A: Via MCP (preferencial)**
```javascript
const metrics = await mcp__desk_crm_v3__get_skill_metrics({
days: 30,
aggregate: 'avg',
limit: 10
});
```
**Opção B: Fallback SQL Directo**
```sql
-- Via MCP desk-crm-v3 SQL directo se tools metrics não disponíveis
SELECT
name,
type,
COUNT(*) as executions,
AVG(duration_ms) as avg_ms,
(SUM(CASE WHEN status='error' THEN 1 ELSE 0 END) / COUNT(*) * 100) as error_rate
FROM tblskill_agent_metrics
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY name, type
ORDER BY executions DESC
LIMIT 10;
```
### 3. Formatar Output
**Template Dashboard:**
```
📊 Performance Overview (últimos {days} dias)
Top Skills/Agents:
┌─────────────────────┬────────┬──────────┬────────┬────────┐
│ Nome │ Usos │ Avg Time │ Trend │ Status │
├─────────────────────┼────────┼──────────┼────────┼────────┤
│ /orcamento │ 45 │ 18min │ -12% ✓ │ ✅ │
│ /lead-approach │ 38 │ 22min │ +5% ⚠ │ ⚠️ │
│ wp-plugin-developer │ 32 │ 47min │ -8% ✓ │ ✅ │
└─────────────────────┴────────┴──────────┴────────┴────────┘
⚠️ Alertas de Degradação:
{se houver degradação >15%}
🎯 Dify KB Impact:
- Coverage: {skills_com_dify}/{total_skills} ({pct}%)
- Avg time reduction: {reducao_tempo}%
- Cache hit rate: {cache_hit_rate}%
📈 Dashboard completo: https://plan-eal.descomplicar.pt/metrics
```
### 4. Análise Específica
Se utilizador pedir skill específica:
```javascript
const details = await get_skill_metrics({
name: skill_name,
days: 30,
aggregate: 'detailed'
});
// Calcular estatísticas
const baseline = await query("SELECT baseline_duration_ms FROM tblskill_agent_baselines WHERE name = ?", [skill_name]);
const improvement = ((baseline - current_avg) / baseline * 100);
```
**Output Detalhado:**
```
📊 {skill_name} - Análise Detalhada
Performance (30 dias):
- Execuções: {count}
- Tempo médio: {avg_ms}ms ({format_time})
- Baseline: {baseline_ms}ms
- Melhoria: {improvement}% {icon}
- Error rate: {error_rate}%
- Success rate: {success_rate}%
Dify KB:
- Consultas: {kb_consulted_count}/{total} ({pct}%)
- Com KB: {avg_with_kb}ms
- Sem KB: {avg_without_kb}ms
- Cache hit: {cache_hit_rate}%
Trending (últimas 4 semanas):
Semana 1: {w1_avg}ms ({w1_count} usos)
Semana 2: {w2_avg}ms ({w2_count} usos)
Semana 3: {w3_avg}ms ({w3_count} usos)
Semana 4: {w4_avg}ms ({w4_count} usos) {trend_icon}
Últimas 5 execuções:
1. {timestamp} - {duration}ms - {status}
2. ...
```
---
## Alertas Automáticos
### Detectar Degradação
```javascript
// Query comparação com baseline
const degraded = await get_skill_metrics({
aggregate: 'compare',
days: 7 // última semana
});
const alerts = degraded.results.filter(r =>
r.performance_status === 'DEGRADED'
);
if (alerts.length > 0) {
// Output alertas
for (const alert of alerts) {
console.log(`⚠️ ${alert.name}: +${alert.degradation_pct}% vs baseline`);
}
// Sugerir acção
console.log("\n💡 Sugestão: Executar /reflect para investigar causas");
}
```
---
## Integração com Outros Sistemas
### Link para Desk CRM
```
Ver métricas no Desk CRM:
https://desk.descomplicar.pt/admin/projects/view/65
Relatório personalizado:
Reports → Stack Performance
```
### Trigger Reflect se Degradação
```javascript
if (degradation_pct > 15) {
// AUTO: Invocar reflect-agent em background
Task({
subagent_type: 'reflect-agent',
background: true,
model: 'sonnet',
prompt: `
PERFORMANCE DEGRADATION DETECTED
Component: ${name}
Baseline: ${baseline}ms
Current: ${current}ms
Degradation: ${degradation_pct}%
Analyze root cause and suggest fixes.
`
});
}
```
---
## Queries SQL Úteis (Fallback)
### Top 10 Skills
```sql
SELECT
name,
COUNT(*) as uses,
AVG(duration_ms)/60000 as avg_min,
(SUM(CASE WHEN status='error' THEN 1 ELSE 0 END) / COUNT(*) * 100) as error_rate
FROM tblskill_agent_metrics
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
AND type = 'skill'
GROUP BY name
ORDER BY uses DESC
LIMIT 10;
```
### ROI por Projecto
```sql
WITH skill_savings AS (
SELECT
m.project_id,
m.name,
COUNT(*) as uses,
(b.baseline_duration_ms - AVG(m.duration_ms))/60000 as saved_per_use_min
FROM tblskill_agent_metrics m
JOIN tblskill_agent_baselines b ON b.name = m.name
WHERE m.status = 'success'
GROUP BY m.project_id, m.name
)
SELECT
p.name as project,
c.company as client,
s.name as skill,
s.uses,
ROUND(s.uses * s.saved_per_use_min/60, 1) as hours_saved,
ROUND((s.uses * s.saved_per_use_min/60) * 50, 2) as value_eur
FROM skill_savings s
JOIN tblprojects p ON p.id = s.project_id
JOIN tblclients c ON c.userid = p.clientid
WHERE s.saved_per_use_min > 0
ORDER BY hours_saved DESC;
```
### Trending Semanal
```sql
SELECT
name,
DATE_FORMAT(created_at, '%Y-W%u') as week,
COUNT(*) as executions,
AVG(duration_ms) as avg_ms
FROM tblskill_agent_metrics
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY name, week
ORDER BY name, week DESC;
```
---
## Exemplo de Uso
```bash
# Dashboard geral
> /metrics
📊 Performance Overview (últimos 30 dias)
Top Skills:
┌─────────────────────┬────────┬──────────┬────────┐
│ Skill │ Usos │ Avg Time │ Trend │
├─────────────────────┼────────┼──────────┼────────┤
│ /orcamento │ 45 │ 18min │ -12% ✓ │
│ /lead-approach │ 38 │ 22min │ +5% ⚠ │
│ /wp-dev │ 32 │ 47min │ -8% ✓ │
└─────────────────────┴────────┴──────────┴────────┘
⚠️ 1 alerta detectado
🎯 Dify KB: 35/43 skills (81%)
# Análise específica
> /metrics /orcamento
📊 /orcamento - Análise Detalhada
Performance: 18min avg (vs 30min baseline) → -40% ✓
Execuções: 45 (última semana: 12)
Success: 96% | Errors: 4%
Trending: ↓ Melhoria constante
```
---
## Notas Técnicas
### Tools MCP Status
**Estado:** Implementados em `/opt/desk-crm-v3/src/tools/core/metrics.ts`
**Compilados:**`/opt/desk-crm-v3/dist/tools/core/metrics.js`
**Serviço:** ✅ desk-crm.service reiniciado (249 tools)
**Disponibilidade:** Podem precisar de refresh Claude Code para serem descobertos
### Fallback Strategy
Se tools MCP não disponíveis:
1. Usar queries SQL directas via `sql_direct` tool
2. Funcionalidade completa mantém-se
3. Performance ligeiramente inferior mas aceitável
### Tabelas DB
- `tblskill_agent_metrics` - Telemetria
- `tblskill_agent_baselines` - Baselines
- `tblskill_agent_pdca_cycles` - PDCA histórico
---
---
## NOVO v1.2.0: Métricas Dify KB
### /metrics --kb
Dashboard específico de performance Dify Knowledge Base.
```
┌──────────────────────────────────────────────────────────────┐
│ DIFY KB PERFORMANCE DASHBOARD │
│ 2026-02-03 │
├──────────────────────────────────────────────────────────────┤
│ │
│ CACHE PERFORMANCE │
│ ════════════════════════════════════════════════════════ │
│ Hit Rate: ████░░░░░░░░░░░░░░░░ 6.3% (target: 40%+) │
│ │
│ Cache Breakdown: │
│ ┌────────────────┬────────┬────────┬────────┐ │
│ │ Skill │ Queries│ Hits │ Hit % │ │
│ ├────────────────┼────────┼────────┼────────┤ │
│ │ /orcamento │ 5 │ 1 │ 20% │ │
│ │ /lead-approach │ 3 │ 0 │ 0% │ │
│ │ /wp-dev │ 4 │ 0 │ 0% │ │
│ │ /seo-content │ 2 │ 0 │ 0% │ │
│ └────────────────┴────────┴────────┴────────┘ │
│ │
│ QUERY RELEVANCE (avg score) │
│ ════════════════════════════════════════════════════════ │
│ SEO: █████████████████░░░ 0.85 ⭐ │
│ Perfex: ████████████████░░░░ 0.79 │
│ Elementor: ██████████████░░░░░░ 0.70 │
│ Marketing: █████████████░░░░░░░ 0.66 │
│ Vendas: █████████░░░░░░░░░░░ 0.46 ⚠️ │
│ │
│ IMPACT ON PERFORMANCE │
│ ════════════════════════════════════════════════════════ │
│ Com Dify KB: 18 min avg │
│ Sem Dify KB: 30 min avg (baseline) │
│ Improvement: -40% ✓ │
│ │
│ GAPS DETECTED │
│ ════════════════════════════════════════════════════════ │
│ ⚠️ Vendas dataset: score 0.46 (queries mal formuladas) │
Cache hit baixo: requer mais uso para acumular │
│ │
└──────────────────────────────────────────────────────────────┘
```
### /metrics --roi
ROI detalhado por cliente/projecto.
```
┌──────────────────────────────────────────────────────────────┐
│ ROI POR CLIENTE/PROJECTO │
│ Últimos 30 dias │
├──────────────────────────────────────────────────────────────┤
│ │
│ TOP CLIENTES POR VALOR GERADO │
│ ════════════════════════════════════════════════════════ │
│ ┌────────────────────┬────────┬────────┬──────────────┐ │
│ │ Cliente │ Horas │ Skills │ Valor (€) │ │
│ ├────────────────────┼────────┼────────┼──────────────┤ │
│ │ SFV-360 │ 24h │ 45 │ €1.200,00 │ │
│ │ Descomplicar │ 18h │ 32 │ €900,00 │ │
│ │ INTERNAL │ 12h │ 28 │ €600,00 │ │
│ └────────────────────┴────────┴────────┴──────────────┘ │
│ │
│ TOTAL PERÍODO: 54 horas poupadas = €2.700,00 │
│ Custo hora interno: €50,00 │
│ │
│ BREAKDOWN POR SKILL │
│ ════════════════════════════════════════════════════════ │
│ /orcamento: 12h poupadas (baseline 30min→18min) │
│ /wp-dev: 8h poupadas (baseline 4h→2h) │
│ /lead-approach: 6h poupadas (baseline 25min→12min) │
│ │
└──────────────────────────────────────────────────────────────┘
```
### /metrics --export
Exportar métricas para integração.
```
Formatos disponíveis:
1. JSON - ~/.claude/skills/_metrics-export-YYYYMMDD.json
2. CSV - ~/.claude/skills/_metrics-export-YYYYMMDD.csv
3. Markdown - Para colar em documentos
Campos exportados:
- name, type, executions, avg_ms, baseline_ms
- improvement_pct, error_rate, kb_consulted
- cache_hit_rate, project_id, client_name
```
### /metrics --alerts
Sistema de alertas inteligentes.
```
┌──────────────────────────────────────────────────────────────┐
│ ALERTAS ACTIVOS │
├──────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ DEGRADAÇÃO (>15% vs baseline) │
│ ─────────────────────────────────────────────────────── │
│ /lead-approach: +22% (baseline 12min → actual 15min) │
│ Última ocorrência: 2026-02-02 │
│ Afecta: 3 projectos │
│ Acção: Executar /reflect para investigar │
│ │
LOW CACHE HIT (<30%) │
│ ─────────────────────────────────────────────────────── │
│ Cache hit rate: 6.3% │
│ Target: 40% │
│ Causa: Sistema recente, acumular com uso │
│ Acção: Continuar monitorização │
│ │
│ ✅ MELHORIAS DETECTADAS │
│ ─────────────────────────────────────────────────────── │
│ /orcamento: -40% (era 30min, agora 18min) │
│ /wp-dev: -50% (era 4h, agora 2h) │
│ │
└──────────────────────────────────────────────────────────────┘
Configurar alertas:
- Degradação threshold: 15% (padrão)
- Cache hit minimum: 30% (padrão)
- Error rate maximum: 10% (padrão)
```
---
## ASCII Charts Library
Templates reutilizáveis para visualização.
### Progress Bar
```javascript
function progressBar(value, max, width=20) {
const filled = Math.round((value / max) * width);
const empty = width - filled;
return '█'.repeat(filled) + '░'.repeat(empty);
}
// Exemplo: progressBar(40, 100, 20) → "████████░░░░░░░░░░░░"
```
### Trending Arrow
```javascript
function trendIcon(pct) {
if (pct < -10) return '↓↓ ✓'; // Grande melhoria
if (pct < 0) return '↓ ✓'; // Melhoria
if (pct === 0) return '→'; // Estável
if (pct < 10) return '↑ ⚠'; // Pequena degradação
return '↑↑ ⚠️'; // Grande degradação
}
```
### Mini Sparkline
```javascript
function sparkline(values) {
const chars = '▁▂▃▄▅▆▇█';
const min = Math.min(...values);
const max = Math.max(...values);
const range = max - min || 1;
return values.map(v => chars[Math.floor((v - min) / range * 7)]).join('');
}
// Exemplo: sparkline([10, 15, 8, 20, 12]) → "▃▅▁█▄"
```
---
## Integração com /taskforce kb-health
O comando `/metrics --kb` complementa `/taskforce kb-health`:
| Comando | Foco | Quando Usar |
|---------|------|-------------|
| `/taskforce kb-health` | Saúde sistema KB (coverage, gaps) | Visão arquitectural |
| `/metrics --kb` | Performance queries KB | Análise operacional |
| `/metrics --roi` | Valor económico gerado | Justificação investimento |
**Workflow recomendado:**
1. `/taskforce kb-health` - Verificar gaps e coverage
2. `/metrics --kb` - Analisar performance queries
3. `/metrics --roi` - Calcular ROI para stakeholders
---
## Changelog
### v1.2.0 (2026-02-03)
- **NOVO:** `/metrics --kb` - Dashboard Dify KB
- **NOVO:** `/metrics --roi` - ROI por cliente/projecto
- **NOVO:** `/metrics --export` - Export JSON/CSV
- **NOVO:** `/metrics --alerts` - Sistema alertas
- **NOVO:** ASCII Charts Library
- **MELHORIA:** Integração com `/taskforce kb-health`
- Frontmatter YAML standard
### v1.0.0 (2026-02-03)
- Versão inicial
- Dashboard overview
- Análise por skill
- Trending temporal
- Comparação baseline
---
**Skill:** /metrics v1.2.0 | **Autor:** Descomplicar®
**Parte de:** Sistema de Métricas Quantitativas
**Desk CRM:** Projecto #65 | Task #1637

View File

@@ -0,0 +1,105 @@
---
name: plugin-curator
description: >
Curadoria inteligente de plugins para o ecossistema Claude Code.
Use when "plugins", "marketplace", "instalar plugin", "descobrir",
"recomendações", "actualizar", "gaps funcionais", "extensões".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, WebFetch, WebSearch
---
# Plugin Curator
Curadoria inteligente de plugins para o ecossistema Claude Code.
## Triggers
Esta skill deve ser activada quando:
- Utilizador pede recomendações de plugins
- Novo tipo de tarefa sem skill/plugin adequado
- Actualização disponível para plugins instalados
- Gap identificado na cobertura funcional
## Capabilities
### 1. Discovery
- Pesquisar marketplaces oficiais e comunitários
- Avaliar relevância baseada no contexto actual
- Identificar plugins com funcionalidades sobrepostas
- Detectar plugins desactualizados ou abandonados
### 2. Evaluation
- Analisar qualidade do código (se open source)
- Verificar compatibilidade com sistema actual
- Avaliar segurança (hooks, permissões)
- Medir popularidade e manutenção activa
### 3. Installation Management
- Instalar plugins recomendados
- Configurar hooks e MCPs do plugin
- Resolver conflitos com plugins existentes
- Gerir actualizações e rollbacks
### 4. Gap Analysis
- Mapear funcionalidades existentes
- Identificar áreas sem cobertura
- Sugerir plugins ou skills a desenvolver
- Priorizar baseado em uso real
## Marketplaces Conhecidos
| Marketplace | URL | Tipo |
|-------------|-----|------|
| anthropics/claude-plugins-official | github.com | Oficial |
| coreyhaines31/marketingskills | github.com | Marketing |
| alirezarezvani/claude-skills | github.com | Geral |
| Chat2AnyLLM/awesome-claude-plugins | github.com | Curadoria |
| obra/superpowers | github.com | Metodologia |
## Scoring Algorithm
```
score = 0
score += keyword_match * 3 # Max 3
score += category_align * 2 # Max 2
score += popularity # Max 2 (>1k stars)
score += recent_update # Max 1 (<30 days)
score += no_conflicts * 2 # Max 2
# Total max: 10
```
## Workflow
```
ANALYSE GAPS → SEARCH MARKETPLACES → EVALUATE → RECOMMEND → INSTALL
```
## Exemplo de Uso
```
User: Preciso de ajuda com testes automatizados
Assistant: [Activa plugin-curator]
- Verifica skills de testing existentes: Nenhuma
- Pesquisa marketplaces por "testing", "QA", "automation"
- Encontra: pr-review-toolkit (6 agents QA), superpowers (TDD)
- Recomenda: "Encontrei 2 plugins relevantes para testing:
1. pr-review-toolkit - 6 agents especializados em QA
2. superpowers - Metodologia TDD integrada
Qual preferes instalar?"
```
## Limites
- Não instala plugins automaticamente (requer confirmação)
- Não avalia plugins de fontes privadas/não acessíveis
- Score máximo 10 - pode não reflectir 100% da qualidade real
- Depende de metadados disponíveis nos marketplaces
## Anti-Patterns
- NUNCA instalar plugins sem confirmação do utilizador
- NUNCA instalar plugins de fontes não verificadas
- Verificar SEMPRE conflitos antes de instalar
- Manter registo de todos os plugins avaliados

View File

@@ -0,0 +1,153 @@
---
name: plugin-config
description: >
Gestao inteligente de plugins por contexto v3.0. Avalia regras aditivas — activa
cada plugin que fizer sentido para o contexto actual (directorio, ficheiros, conversa).
Sem profiles rigidos. Use when "plugins", "plugin-config", "activar plugin",
"desactivar plugin", "contexto plugins", "prompt too long".
author: Descomplicar
version: 3.1.0
user_invocable: true
category: system
tags: [plugins, context, optimization, registry]
desk_project: 65
desk_task: 1754
allowed-tools: Read, Bash, Glob
---
# /plugin-config v3.0 - Gestao Inteligente de Plugins
Cada plugin tem regras de activacao. O sistema avalia todas e activa o que fizer sentido.
Sem profiles — aditivo, contextual, automatico.
---
## Comandos
| Comando | Funcao |
|---------|--------|
| `/plugin-config status` | Plugins activos/inactivos e porquê |
| `/plugin-config apply` | Avalia regras e aplica alteracoes ao settings.json |
| `/plugin-config enable <plugin>` | Forca activacao de um plugin |
| `/plugin-config disable <plugin>` | Forca desactivacao de um plugin |
| `/plugin-config reset` | Activa todos os plugins |
---
## Como funciona
### Registry (profiles.json v3.0)
Cada plugin tem regras `activate_when`:
- **directories** — $PWD comeca com este path
- **files** — ficheiro existe no projecto (ate 2 niveis acima)
- **keywords** — palavra aparece no contexto da conversa
- **ssh_context** — quando trabalho via SSH envolve estes termos
- **content_match** — conteudo especifico dentro de um ficheiro
Regras sao **aditivas**: se qualquer regra de um plugin faz match, esse plugin activa.
Multiplos plugins podem activar simultaneamente.
### Always-on (4 plugins)
Nunca desactivados, independentemente do contexto:
- gestao, crm-ops, core-tools, superpowers
### Contextuais (19 plugins)
| Plugin | Activa quando |
|--------|---------------|
| **project-manager** | SPEC.md, SPRINT.md, .desk-project, Dev/ ou Hub/ directory |
| **wordpress** | wp-config.php, wordpress, elementor, woocommerce |
| **dev-tools** | package.json, composer.json, react, typescript, refactor |
| **infraestrutura** | docker-compose.yml, servidor, cwp, easypanel, ssl, deploy |
| **marketing** | seo, campanha, google ads, social media, copywriting |
| **design-media** | design, ui, ux, apresentacao, video, figma |
| **metabase** | metabase, dashboard bi, kpi, query sql |
| **automacao** | n8n, workflow, moloni, webhook, mcp server |
| **perfex-dev** | init.php + register_module, perfex |
| **negocio** | estrategia negocio, saas, e-commerce, pricing, swot |
| **plugin-dev** | .claude-plugin, SKILL.md, criar skill/agent/hook |
| **feature-dev** | package.json, implementar feature, nova feature |
| **frontend-design** | tailwind.config, css, frontend design, layout |
| **frontend-excellence** | next.config.*, react avancado, nextjs, state management |
| **cache-components** | next.config.*, cache component, ppr |
| **pr-review-toolkit** | .git, review, pull request, code review |
| **context7** | package.json, docs, documentacao biblioteca |
| **ralph-loop** | ralph, loop autonomo |
| **playground** | playground, html interactivo |
---
## Protocolo: /plugin-config apply
```
1. Ler profiles.json (registry)
2. Para CADA plugin contextual:
a. Avaliar activate_when.directories vs $PWD
b. Avaliar activate_when.files vs ficheiros no projecto
c. Avaliar activate_when.keywords vs contexto da conversa
d. Se qualquer regra match → marcar para activar
e. Se nenhuma regra match → marcar para desactivar
3. Construir mapa enabledPlugins:
- always_on → sempre true
- matched → true
- nao matched → false
4. Aplicar via jq em ~/.claude/settings.json
5. Output: lista de alteracoes
6. Informar: "Alteracoes aplicadas. Restart sessao para efeito."
```
## Protocolo: /plugin-config status
```
1. Ler ~/.claude/settings.json → enabledPlugins
2. Ler profiles.json → registry
3. Para cada plugin:
- Estado actual (activo/inactivo)
- Tipo (always_on / contextual)
- Regras que fazem match no contexto actual
4. Mostrar tabela organizada
```
## Protocolo: /plugin-config enable <plugin>
```
1. Activar plugin via jq em settings.json
2. Informar: "Plugin activado. Restart sessao para efeito."
```
## Protocolo: /plugin-config disable <plugin>
```
1. Verificar que nao esta em always_on
2. Desactivar via jq em settings.json
3. Informar: "Plugin desactivado. Restart sessao para efeito."
```
## Protocolo: /plugin-config reset
```
1. Activar TODOS os plugins (contextual + always_on) em settings.json
2. Informar: "Todos os plugins activados."
```
---
## Hook automatico
`~/.claude/hooks/plugin-context-detector.sh` corre no inicio de cada sessao (UserPromptSubmit).
Avalia todas as regras e sugere `/plugin-config apply` se detectar alteracoes necessarias.
---
## Anti-Patterns
- NUNCA desactivar plugins always_on
- NUNCA editar settings.json sem jq (Regra #40)
- NUNCA prometer efeito imediato — restart e necessario
- NUNCA ignorar sugestao do hook — executar /plugin-config apply
---
*Skill v3.0.0 | 04-03-2026 | Descomplicar*

View File

@@ -0,0 +1,143 @@
{
"version": "3.1",
"type": "plugin-registry",
"always_on": [
"gestao@descomplicar-plugins",
"crm-ops@descomplicar-plugins",
"core-tools@descomplicar-plugins",
"superpowers@claude-plugins-official"
],
"plugins": {
"wordpress@descomplicar-plugins": {
"description": "WordPress, Elementor, WooCommerce, themes, plugins WP",
"activate_when": {
"files": ["wp-config.php", "wp-content", "functions.php", "style.css"],
"keywords": ["wordpress", "elementor", "woocommerce", "wp-cli", "theme wordpress", "plugin wp", "rank math", "branda", "wp-admin", "wp update"],
"ssh_context": ["cwp", "public_html", "wp-admin"]
}
},
"dev-tools@descomplicar-plugins": {
"description": "Desenvolvimento JS/PHP/DB, React, arquitectura, code review",
"activate_when": {
"files": ["package.json", "composer.json", "tsconfig.json", "artisan", ".eslintrc", "Makefile", "pom.xml"],
"keywords": ["react", "typescript", "javascript", "php", "laravel", "api rest", "database design", "schema", "refactor", "debug codigo", "componente react", "fullstack", "backend", "endpoint"]
}
},
"infraestrutura@descomplicar-plugins": {
"description": "Servidores, CWP, EasyPanel, Proxmox, SSL, DNS, Docker, backups servidor",
"activate_when": {
"files": ["docker-compose.yml", "Dockerfile", ".env.production"],
"directories": ["/root/Dev"],
"keywords": ["servidor", "server", "cwp", "easypanel", "proxmox", "ssl certificado", "dns", "docker", "deploy", "backup servidor", "nginx", "apache", "firewall", "ssh servidor", "email servidor", "postfix", "pbs", "migration vm"]
}
},
"marketing@descomplicar-plugins": {
"description": "SEO, campanhas, ads, social media, conteudo, copywriting",
"activate_when": {
"keywords": ["seo", "marketing", "campanha", "google ads", "meta ads", "social media", "copywriting", "newsletter", "email marketing", "landing page", "conversao", "lead approach", "conteudo marketing", "instagram", "linkedin", "tiktok", "youtube marketing", "ppc"]
}
},
"design-media@descomplicar-plugins": {
"description": "Design UI/UX, apresentacoes, infograficos, video, identidade visual",
"activate_when": {
"keywords": ["design", "ui design", "ux design", "apresentacao", "infografico", "logo", "identidade visual", "pptx", "slides", "remotion", "video producao", "thumbnail", "figma", "penpot", "mockup", "wireframe", "brand"]
}
},
"metabase@descomplicar-plugins": {
"description": "BI, dashboards Metabase, queries SQL analytics",
"activate_when": {
"keywords": ["metabase", "dashboard bi", "analytics dados", "kpi dashboard", "query sql metabase", "relatorio dados"]
}
},
"automacao@descomplicar-plugins": {
"description": "N8N, workflows, integracoes, Moloni, MCPs dev, webhooks",
"activate_when": {
"keywords": ["n8n", "workflow automacao", "moloni", "webhook", "integracao sistemas", "mcp server", "mcp desenvolvimento", "automacao processo"]
}
},
"perfex-dev@descomplicar-plugins": {
"description": "Modulos Perfex CRM, controllers, hooks, views, migrations Perfex",
"activate_when": {
"files": ["init.php"],
"content_match": "register_module",
"keywords": ["perfex", "modulo perfex", "perfex crm"]
}
},
"negocio@descomplicar-plugins": {
"description": "Estrategia, pesquisa mercado, SaaS, e-commerce, produto",
"activate_when": {
"keywords": ["estrategia negocio", "pesquisa mercado", "saas", "e-commerce", "produto digital", "pricing", "business model", "swot", "porter", "concorrencia", "proposta valor"]
}
},
"project-manager@descomplicar-plugins": {
"description": "Specs, sprints, brainstorm, status projecto, scope",
"activate_when": {
"files": ["SPEC.md", "SPRINT.md", ".desk-project"],
"directories": ["/media/ealmeida/Dados/Dev", "/media/ealmeida/Dados/Hub"],
"keywords": ["spec", "sprint", "brainstorm", "status projecto", "scope", "planeamento dev", "fase projecto", "milestone"]
}
},
"plugin-dev@claude-plugins-official": {
"description": "Criar/editar plugins Claude Code, skills, agents, hooks",
"activate_when": {
"directories": ["/home/ealmeida/.claude/plugins"],
"files": [".claude-plugin", "SKILL.md", "plugin.json"],
"keywords": ["criar plugin", "criar skill", "criar agent", "criar hook", "plugin-dev", "editar skill", "novo agent"]
}
},
"feature-dev@claude-plugins-official": {
"description": "Desenvolvimento guiado de features com exploracao de codebase",
"activate_when": {
"files": ["package.json", "composer.json", "tsconfig.json"],
"keywords": ["feature dev", "implementar feature", "desenvolver funcionalidade", "nova feature", "feature branch"]
}
},
"frontend-design@claude-plugins-official": {
"description": "Design frontend, componentes visuais, CSS, Tailwind",
"activate_when": {
"files": ["tailwind.config.js", "tailwind.config.ts", "postcss.config.js", "globals.css"],
"keywords": ["frontend design", "css", "tailwind", "componente visual", "responsive design", "layout pagina", "estilo css", "styled components"]
}
},
"frontend-excellence@dotclaude-plugins": {
"description": "React avancado, state management, performance frontend",
"activate_when": {
"files": ["next.config.js", "next.config.mjs", "next.config.ts", "vite.config.ts"],
"keywords": ["react avancado", "next.js", "nextjs", "state management", "zustand", "redux", "performance frontend", "core web vitals", "server components"]
}
},
"cache-components@nextjs": {
"description": "Next.js Cache Components e Partial Prerendering",
"activate_when": {
"files": ["next.config.js", "next.config.mjs", "next.config.ts"],
"keywords": ["cache component", "ppr", "partial prerendering", "next.js cache", "isr"]
}
},
"pr-review-toolkit@claude-plugins-official": {
"description": "Code review, PR review, analise de codigo, silent failures",
"activate_when": {
"files": [".git"],
"keywords": ["review", "code review", "pull request", "pr review", "review codigo", "merge", "git diff", "commit review"]
}
},
"ralph-loop@claude-plugins-official": {
"description": "Loop autonomo iterativo para tarefas complexas",
"activate_when": {
"keywords": ["ralph", "loop autonomo", "iteracao autonoma", "ralph loop"]
}
},
"playground@claude-plugins-official": {
"description": "Playgrounds HTML interactivos para exploracao visual",
"activate_when": {
"keywords": ["playground", "html interactivo", "explorador visual", "configurador visual"]
}
},
"context7@claude-plugins-official": {
"description": "Documentacao actualizada de bibliotecas e frameworks",
"activate_when": {
"files": ["package.json", "composer.json", "requirements.txt", "Gemfile"],
"keywords": ["docs", "documentacao biblioteca", "context7", "como usar", "api reference", "exemplo codigo"]
}
}
}
}

View File

@@ -0,0 +1,196 @@
---
name: quality-validator
description: >
Valida componentes contra standards Descomplicar®.
Use when "validar", "score", "qualidade", "audit",
"verificar frontmatter", "checklist", "quality gate".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep
---
# Quality Validator
Skill para validar componentes e garantir qualidade mínima antes de activação.
## Triggers
Esta skill deve ser activada quando:
- Novo componente é criado
- Comando `/descomplicar:validate` é invocado
- Antes de release (`/descomplicar:release`)
- Após edição de componente existente
- Durante sync para bloquear componentes inválidos
## Capabilities
### 1. Validar Skill
**Checklist Obrigatório:**
| Campo | Obrigatório | Peso |
|-------|-------------|------|
| `name:` | Sim | 15 |
| `description:` | Sim | 20 |
| `author:` | Sim | 5 |
| `version:` | Sim | 5 |
| `desk_task:` | Não | 5 |
| `allowed-tools:` | Sim | 10 |
| Triggers section | Sim | 10 |
| Capabilities section | Sim | 10 |
| Workflow | Não | 5 |
| Exemplo de Uso | Não | 10 |
| Limites section | Não | 5 |
**Validações de Qualidade:**
- `description:` contém triggers (keywords) → +5 pontos
- `description:` tem 5+ keywords → +5 pontos
- Tamanho < 500 linhas → +5 pontos
- Sem erros de sintaxe YAML → obrigatório
### 2. Validar Agent
**Checklist Obrigatório:**
| Campo | Obrigatório | Peso |
|-------|-------------|------|
| `name:` | Sim | 15 |
| `description:` | Sim | 20 |
| `model:` | Sim | 10 |
| `tools:` | Sim | 10 |
| `allowed-mcps:` | Sim | 15 |
| `category:` | Sim | 10 |
| `author:` | Sim | 5 |
| `version:` | Sim | 5 |
| Quando Usar section | Não | 5 |
| Workflow section | Não | 5 |
**Validações de Qualidade:**
- MCPs mapeados existem em `cr_mcps` → +5 pontos
- Categoria válida (dev|business|marketing|infra) → obrigatório
- Model válido (sonnet|opus|haiku) → obrigatório
### 3. Validar Command
**Checklist Obrigatório:**
| Campo | Obrigatório | Peso |
|-------|-------------|------|
| `name:` | Sim | 20 |
| `description:` | Sim | 30 |
| `argument-hint:` | Não | 10 |
| Objectivo section | Sim | 15 |
| Sintaxe section | Sim | 15 |
| Output section | Não | 10 |
### 4. Calcular Score
**Fórmula:**
```
score = (campos_obrigatorios * peso_obrigatorio) + (campos_opcionais * peso_opcional) + bonus_qualidade
```
**Interpretação:**
| Score | Status | Acção |
|-------|--------|-------|
| >= 90 | Production | Pronto para uso |
| 70-89 | Beta | Pode activar com aviso |
| 50-69 | Draft | Requer melhorias |
| < 50 | Invalid | **BLOQUEAR** activação |
### 5. Gerar Relatório
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ QUALITY VALIDATION: <component-name> ║
║ Type: Skill | Path: skills/<name>/SKILL.md ║
╠══════════════════════════════════════════════════════════════════════╣
║ FRONTMATTER ║
║ ├── name: ✓ Present ║
║ ├── description: ✓ Present (5 keywords detected) ║
║ ├── author: ✓ Present ║
║ ├── version: ✓ Present (1.0.0) ║
║ ├── desk_task: ✗ Missing (optional) ║
║ └── allowed-tools: ✓ Present (Read, Glob, Grep) ║
╠══════════════════════════════════════════════════════════════════════╣
║ CONTENT SECTIONS ║
║ ├── Triggers: ✓ Present ║
║ ├── Capabilities: ✓ Present (3 capabilities) ║
║ ├── Workflow: ✓ Present ║
║ ├── Exemplo: ✗ Missing (recommended) ║
║ └── Limites: ✗ Missing (recommended) ║
╠══════════════════════════════════════════════════════════════════════╣
║ QUALITY CHECKS ║
║ ├── Lines: 234 (< 500 ✓) ║
║ ├── YAML syntax: Valid ✓ ║
║ └── Keywords: 5 detected ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ SCORE: 78/100 ████████████████░░░░ BETA ║
╠══════════════════════════════════════════════════════════════════════╣
║ SUGGESTIONS ║
║ 1. Adicionar secção "Exemplo de Uso" (+10 pontos) ║
║ 2. Adicionar secção "Limites" (+5 pontos) ║
║ 3. Adicionar desk_task no frontmatter (+5 pontos) ║
╚══════════════════════════════════════════════════════════════════════╝
```
## Quality Gates
### Gate 1: Criação
- Score >= 50 para criar componente
- Se < 50: BLOQUEAR e mostrar erros
### Gate 2: Activação
- Score >= 70 para activar componente
- Se < 70: AVISO + sugestões
### Gate 3: Release
- Score >= 90 para todos os componentes
- Se algum < 90: BLOQUEAR release
## Integração com Sync
Durante `/descomplicar:sync`:
```sql
-- Verificar componentes com score baixo
SELECT c.slug, c.quality_score, c.status
FROM cr_skills c
WHERE c.quality_score < 70 AND c.status = 'active';
-- Marcar para revisão
UPDATE cr_skills
SET status = 'review_required'
WHERE quality_score < 70 AND status = 'active';
```
## Workflow
```
READ COMPONENT → PARSE FRONTMATTER → CHECK SECTIONS → CALCULATE SCORE → REPORT
↓ ↓ ↓ ↓ ↓
File path YAML valid All present 0-100 Suggestions
```
## Exemplo de Uso
```
User: Valida a skill infrastructure-manager
Quality Validator:
1. [Lê skills/infrastructure-manager/SKILL.md]
2. [Verifica frontmatter: 6/6 campos]
3. [Verifica secções: 4/5 presentes]
4. [Calcula score: 85/100]
5. Resultado:
"Score: 85/100 (BETA)
✓ Pronto para uso
Sugestão: Adicionar secção 'Limites' para score 90+"
```
## Limites
- Não modifica componentes (apenas lê e reporta)
- Não cria componentes (usar component-generator)
- Não executa correções automáticas (usar /descomplicar:upgrade)

View File

@@ -0,0 +1,231 @@
---
name: relationship-manager
description: >
Gestão inteligente de relacionamentos entre componentes do sistema.
Use when "relacionamentos", "mapeamento", "colaborações", "dependências",
"agent-mcp", "agent-skill", "sdk", "impacto", "inconsistências".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Relationship Manager
Gestão inteligente de relacionamentos entre componentes do sistema.
## Triggers
Esta skill deve ser activada quando:
- Utilizador pede para configurar relacionamentos
- Novo componente é adicionado e precisa de mapeamentos
- Inconsistências detectadas em relacionamentos
- Análise de impacto de mudanças
## Schema de Relacionamentos
### Hierarquia
```
TaskForce (Plugin)
├── cr_plugin_agents → Agentes do Plugin
├── cr_plugin_skills → Skills do Plugin
└── cr_plugin_mcps → MCPs do Plugin
Agent
├── cr_agent_mcps → MCPs do Agente (primary/recommended/available)
├── cr_agent_skills → Skills do Agente
└── cr_agent_collaborations → Colaborações com outros Agentes
Skill
└── cr_skill_mcps → MCPs necessários para a Skill
Decision Tree
└── Referencia um Agent para selecção automática
```
### Tipos de Relacionamento
**cr_agent_mcps.relationship_type:**
- `primary` - MCPs essenciais, sempre disponíveis
- `recommended` - MCPs recomendados, usar quando relevante
- `available` - MCPs opcionais, disponíveis se necessário
**cr_agent_collaborations.collaboration_type:**
- `technical` - Colaboração técnica (mesmo domínio)
- `cross-domain` - Colaboração entre domínios diferentes
- `sequential` - Um passa trabalho para outro
- `parallel` - Trabalham em paralelo
## Capabilities
### 1. Análise de Relacionamentos
**Ver todos os relacionamentos de um componente:**
```sql
-- Para um Agente
SELECT 'MCP' as type, m.slug, am.relationship_type
FROM cr_agent_mcps am
JOIN cr_mcps m ON am.mcp_id = m.id
WHERE am.agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
UNION ALL
SELECT 'Skill', s.slug, 'uses'
FROM cr_agent_skills ags
JOIN cr_skills s ON ags.skill_id = s.id
WHERE ags.agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
UNION ALL
SELECT 'TaskForce', p.slug, 'member'
FROM cr_plugin_agents pa
JOIN cr_plugins p ON pa.plugin_id = p.id
WHERE pa.agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
UNION ALL
SELECT 'Collaborator', a2.slug, ac.collaboration_type
FROM cr_agent_collaborations ac
JOIN cr_agents a2 ON ac.collaborator_id = a2.id
WHERE ac.agent_id = (SELECT id FROM cr_agents WHERE slug = ?);
```
### 2. Sugestão de Relacionamentos
Baseado em padrões existentes:
```sql
-- MCPs usados por agentes similares (mesma categoria)
SELECT
m.slug,
COUNT(*) as usage_count,
GROUP_CONCAT(DISTINCT a.slug) as used_by
FROM cr_agent_mcps am
JOIN cr_mcps m ON am.mcp_id = m.id
JOIN cr_agents a ON am.agent_id = a.id
WHERE a.category = (SELECT category FROM cr_agents WHERE slug = ?)
AND am.agent_id != (SELECT id FROM cr_agents WHERE slug = ?)
AND m.id NOT IN (
SELECT mcp_id FROM cr_agent_mcps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
)
GROUP BY m.id
ORDER BY usage_count DESC
LIMIT 5;
```
### 3. Validação de Consistência
```sql
-- Verificar órfãos em todas as tabelas
SELECT 'cr_agent_mcps (agent)' as issue,
COUNT(*) as orphans
FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
WHERE a.id IS NULL
UNION ALL
SELECT 'cr_agent_mcps (mcp)',
COUNT(*)
FROM cr_agent_mcps am
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
WHERE m.id IS NULL
-- ... continuar para todas as tabelas
```
### 4. Propagação de Mudanças
Quando um componente é removido/desactivado:
```sql
-- Marcar relacionamentos como inactivos (não deletar)
UPDATE cr_agent_mcps
SET status = 'inactive', updated_at = NOW()
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = ?);
-- Ou limpar (se preferido)
DELETE FROM cr_agent_mcps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = ?);
```
### 5. Análise de Impacto
Antes de remover um componente, verificar dependências:
```sql
-- Impacto de remover um MCP
SELECT
'Agents afectados' as impact,
COUNT(DISTINCT am.agent_id) as count,
GROUP_CONCAT(DISTINCT a.slug) as list
FROM cr_agent_mcps am
JOIN cr_agents a ON am.agent_id = a.id
WHERE am.mcp_id = (SELECT id FROM cr_mcps WHERE slug = ?)
AND am.relationship_type = 'primary'
UNION ALL
SELECT
'Skills afectadas',
COUNT(DISTINCT sm.skill_id),
GROUP_CONCAT(DISTINCT s.slug)
FROM cr_skill_mcps sm
JOIN cr_skills s ON sm.skill_id = s.id
WHERE sm.mcp_id = (SELECT id FROM cr_mcps WHERE slug = ?);
```
## Workflows
### Adicionar Novo Agente
1. Inserir em `cr_agents`
2. Mapear MCPs em `cr_agent_mcps`:
- Identificar MCPs primários (essenciais)
- Identificar MCPs recomendados (úteis)
- Listar MCPs disponíveis (opcionais)
3. Mapear Skills em `cr_agent_skills`
4. Associar a TaskForces em `cr_plugin_agents`
5. Definir colaborações em `cr_agent_collaborations`
6. Criar decision tree se necessário
### Remover Componente
1. Verificar impacto com análise de dependências
2. Confirmar com utilizador
3. Remover relacionamentos (ou marcar inactive)
4. Actualizar decision trees
5. Log em telemetria
## Métricas
| Métrica | Descrição |
|---------|-----------|
| Densidade | Média de relacionamentos por componente |
| Cobertura | % de componentes com relacionamentos |
| Consistência | % de relacionamentos válidos |
| Conectividade | Componentes isolados vs conectados |
## Exemplo de Uso
```
User: Configura o novo agente video-editor com os MCPs necessários
Relationship Manager:
1. [Analisa agentes similares na categoria 'content']
2. [Identifica MCPs comuns: filesystem, google-workspace, elevenlabs]
3. [Sugere relacionamentos:]
- PRIMARY: filesystem, elevenlabs
- RECOMMENDED: google-workspace, pexels, pixabay
- AVAILABLE: vimeo, youtube-uploader
4. [Cria mapeamentos em cr_agent_mcps]
5. [Sugere colaborações: content-manager, copywriter]
6. [Reporta: "Agente video-editor configurado com 7 MCPs e 2 colaborações"]
```
## Limites
- Não cria componentes novos (apenas relacionamentos)
- Sugestões baseadas em padrões podem não ser 100% precisas
- Análise de impacto limitada a relacionamentos directos
- Não propaga alterações automaticamente (requer confirmação)
- Depende de consistência das tabelas cr_* na BD

View File

@@ -1,12 +1,19 @@
{
"name": "crm-ops",
"description": "CRM operations, sales management, leads, customers, estimates, invoices, tickets and expense tracking with Desk CRM. Backed by 2 Dify KB datasets.",
"version": "1.0.0",
"version": "1.1.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
},
"homepage": "https://git.descomplicar.pt/ealmeida/descomplicar-plugins",
"license": "MIT",
"keywords": ["crm", "vendas", "leads", "facturacao", "tickets", "orcamento"]
"keywords": [
"crm",
"vendas",
"leads",
"facturacao",
"tickets",
"orcamento"
]
}

View File

@@ -5,6 +5,15 @@ role: Especialista em orçamentos e propostas comerciais
domain: Business
model: sonnet
tools: Read, Write, Edit, Glob, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- google-workspace
recommended_mcps:
- moloni
- memory-supabase
- dify-kb
skills:
- _core
- orcamento
@@ -161,7 +170,17 @@ Você é um especialista comercial responsável por:
| SEO/Conteúdo | 300€ - 1.500€/mês | Artigos, optimização, keywords, linkbuilding |
| Manutenção | 150€ - 500€/mês | Updates, backups, monitoring, suporte |
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"orcamento proposta pricing"
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"projectos estimativa custos"
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-00f2-4cd9-b835-978cb7721601" query:"desenvolvimento custos"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Vendas" query:"orcamento proposta pricing"

View File

@@ -7,6 +7,15 @@ role: USAR PROATIVAMENTE para estratégia de abordagem de leads - análise de pe
domain: Marketing
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- google-workspace
recommended_mcps:
- dify-kb
- memory-supabase
- imap
skills:
- _core
desk_task: null
@@ -66,7 +75,20 @@ Especialista em estratégia de abordagem de leads - análise de perfil, definiç
- Script de chamada
- Follow-up sequence
## Datasets Dify
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
- Marketing Digital Avancado (`76647e0f`)
- Copywriting e Persuasao (`7b8fec17`)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"<tema>"
mcp__notebooklm__notebook_query notebook_id:"7b8fec17-d34f-4e3f-a8c6-8231e51f6323" query:"<tema>"
```
### Dify KB (Secundario)
- Vendas
- Marketing Digital
- Copywriting
@@ -125,7 +147,7 @@ Estrategista comercial especializado em análise de leads e criação de abordag
## MCPs Relevantes
- `desk-crm-v3`: Dados de leads e histórico
- `dify-kb`: KB Vendas, Marketing Digital, Copywriting
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB Vendas, Marketing Digital, Copywriting
- `memory-supabase`: Padrões de abordagem bem-sucedidos
## Colaboracao
@@ -140,7 +162,11 @@ Estrategista comercial especializado em análise de leads e criação de abordag
- Clientes, projectos, facturas, time tracking
- Usage: `mcp__desk-crm-v3__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
- Gemini 2.5 RAG
- Usage: `mcp__notebooklm__notebook_query`
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -7,6 +7,14 @@ role: Lead Qualifier especializado em avaliacao e priorizacao de leads para gara
domain: Marketing
model: sonnet
tools: Read, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
recommended_mcps:
- dify-kb
- google-workspace
- memory-supabase
skills:
- _core
desk_task: 1505
@@ -42,7 +50,17 @@ Avalia e prioriza leads inbound, garantindo que a equipa de vendas se foca em pr
- Nurturing de leads nao prontos para vendas
- Manutencao da base de dados de leads actualizada
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"lead qualification scoring criteria"
mcp__notebooklm__notebook_query notebook_id:"df4688bb-c2c0-4aba-98c1-38c3b50a353c" query:"lead management pipeline"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Vendas" query:"lead qualification scoring criteria"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Marketing Digital" query:"lead generation conversion funnel"
@@ -102,7 +120,7 @@ Avalia e prioriza leads inbound, garantindo que a equipa de vendas se foca em pr
## MCPs Relevantes
- `desk-crm-v3`: Gestão de leads e pipeline
- `dify-kb`: KB Vendas (qualification), Marketing Digital
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB Vendas (qualification), Marketing Digital
- `memory-supabase`: Histórico de qualificações bem-sucedidas
## Colaboracao
@@ -116,7 +134,8 @@ Avalia e prioriza leads inbound, garantindo que a equipa de vendas se foca em pr
- Clientes, projectos, facturas, time tracking
- Usage: `mcp__desk-crm-v3__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -82,7 +82,17 @@ Gestor comercial especializado em estrategias de vendas, gestao de CRM, qualific
- Criar forecasting de receita e relatorios de performance
- Coordenar equipas de vendas e territorios comerciais
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"estrategias comerciais leads conversao"
mcp__notebooklm__notebook_query notebook_id:"df4688bb-c2c0-4aba-98c1-38c3b50a353c" query:"CRM clientes pipeline"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Vendas" query:"estrategias comerciais leads conversao"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Marketing Digital" query:"funil vendas qualificacao"

View File

@@ -1,8 +1,48 @@
{
"description": "Dify KB datasets for CRM Operations domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "43354eb6-f0b2-40cc-aa53-44e375ab347c", "name": "PerfexCRM", "priority": 1, "document_count": 144, "word_count": 1547186},
{"id": "bd65f36e-6004-4584-b478-129b2c21b4d2", "name": "Servicos Descomplicar", "priority": 1, "document_count": 11, "word_count": 1095103}
]
}
"description": "Knowledge sources (NotebookLM + Dify KB) for CRM Operations domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "df4688bb-c2c0-4aba-98c1-38c3b50a353c",
"title": "Perfex CRM: Gestao de Clientes e Projetos",
"topics": [
"perfexcrm"
],
"maps_from_dify": "PerfexCRM"
},
{
"id": "f29c8457-f16d-4fb3-979d-6e5901de1b20",
"title": "Descomplicar: Marketing Digital",
"topics": [
"servicos",
"descomplicar"
],
"maps_from_dify": "Servicos Descomplicar"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "43354eb6-f0b2-40cc-aa53-44e375ab347c",
"name": "PerfexCRM",
"priority": 1,
"document_count": 144,
"word_count": 1547186
},
{
"id": "bd65f36e-6004-4584-b478-129b2c21b4d2",
"name": "Servicos Descomplicar",
"priority": 1,
"document_count": 11,
"word_count": 1095103
}
]
}
}
}

View File

@@ -0,0 +1,208 @@
---
name: auto-expense
description: >
Criacao automatica de despesas a partir de facturas detectadas no IMAP e tickets. Le ficheiros JSON de /imap-triage e /ticket-triage, extrai dados das facturas, cria despesas no Desk CRM com PDF. Use when "auto despesa", "processar facturas", "auto-expense", "despesas automaticas".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: finance
tags: [expense, auto, invoices, imap, tickets, pdf, desk-crm]
desk_task: 1710
desk_project: 65
allowed-tools: Read, Write, mcp__desk-crm-v3, mcp__imap, mcp__ssh-unified
mcps: desk-crm-v3, imap, ssh-unified
dependencies:
mcps: [desk-crm-v3, imap, ssh-unified]
skills: [imap-triage, ticket-triage]
files:
- /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
triggers:
- "User asks to process invoices as expenses"
- "User mentions 'auto despesa', 'processar facturas'"
- "Invoked by /today orchestrator after /imap-triage and /ticket-triage"
---
# /auto-expense v1.0
Cria despesas automaticamente a partir de facturas detectadas pelo IMAP e tickets.
---
## Protocolo
### Passo 1: Carregar inputs
```
1. Ler ficheiro fornecedores:
Read: /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
2. Ler facturas IMAP (se existir):
Read: ~/.claude-work/today-imap-{date}.json → campo "facturas"
3. Ler facturas tickets (se existir):
Read: ~/.claude-work/today-tickets-{date}.json → campo "facturas"
4. Se nenhum ficheiro existe E invocado standalone:
→ Perguntar ao utilizador: "processar IMAP, tickets ou ambos?"
→ Se IMAP: executar /imap-triage primeiro
→ Se tickets: executar /ticket-triage primeiro
```
### Passo 2: Para cada factura, processar
```
Para cada factura na lista:
1. DETECTAR FORNECEDOR:
a. Fornecedor directo: dominio remetente na tabela
→ categoria, tax e moeda ja conhecidos
b. Plataforma multi-fornecedor (toconline, stripe, paypal, fastspring, payproglobal):
→ LER email completo → EXTRAIR emitente real
→ Procurar emitente na tabela "Emitentes Conhecidos por Plataforma"
→ SE desconhecido: registar como priority_flagged, PARAR este email
2. LER EMAIL/TICKET:
- IMAP: imap_read_email(account, uid) → HTML + anexos
- Ticket: mcp__desk-crm-v3__get_ticket(ticket_id) → HTML
3. EXTRAIR DO HTML:
- Valor (padroes: $XX.XX, XX,XX EUR, USD XX.XX, Total: XX.XX)
- Referencia/Invoice number
- Data da factura
4. VERIFICAR DUPLICADO (2 camadas):
Camada 1 - Desk CRM:
Pesquisar: mesmo fornecedor + mesmo valor (±0.05) + mesma data (±3 dias)
Se match → NAO criar, registar como duplicado
5. CRIAR DESPESA:
mcp__desk-crm-v3__create_expense({
category: [cat_id da tabela],
amount: [valor],
date: [data factura YYYY-MM-DD],
expense_name: "[Fornecedor] - [Referencia]",
note: "Auto-criado via /auto-expense",
currency: [2=USD ou 3=EUR],
tax: [0 ou 1],
send_invoice_to_customer: 0
})
```
### Passo 3: PDF (se existir anexo)
```
a. GUARDAR LOCAL:
Path: /media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/MM-NomeMes/
Criar pasta: mkdir -p
Nome: YYYY-MM-DD_Fornecedor_Referencia.pdf
Meses PT: 01-Janeiro, 02-Fevereiro, 03-Marco, 04-Abril, 05-Maio, 06-Junho,
07-Julho, 08-Agosto, 09-Setembro, 10-Outubro, 11-Novembro, 12-Dezembro
b. UPLOAD ao Desk servidor:
mcp__ssh-unified__sftp_upload(server="desk", local_path, remote_path="/tmp/")
mcp__ssh-unified__ssh_execute(server="desk", command="
mkdir -p /home/ealmeida/desk24/uploads/expenses/{expense_id}/
cp /tmp/{filename} /home/ealmeida/desk24/uploads/expenses/{expense_id}/
chown -R ealmeida:ealmeida /home/ealmeida/desk24/uploads/expenses/{expense_id}/
rm /tmp/{filename}
")
c. REGISTAR no Desk BD:
mcp__ssh-unified__ssh_execute(server="desk", command="
mysql -u ealmeida -p'9qPRdCGGqM4o' ealmeida_desk24 -e \"
INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype, attachment_key, staffid, dateadded)
VALUES ({expense_id}, 'expense', '{filename}', 'application/pdf', MD5(RAND()), 25, NOW());
\"
")
d. LIMPAR temporarios
```
### Passo 4: Actualizar CSV
```
CSV Path: /media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/MAPA-DESPESAS-YYYY.csv
Formato linha: id_desk;data;categoria;fornecedor;descricao;valor;SIM;ficheiro;email;Auto /auto-expense
```
### Passo 5: Escrever output JSON
```
Escrever em ~/.claude-work/today-expenses-{date}.json:
{
"despesas_criadas": [
{"id": 1180, "fornecedor": "MEO", "valor": 76.26, "moeda": "EUR", "referencia": "FT A/861215955"}
],
"duplicados": 0,
"flagged": [
{"fornecedor": "Desconhecido", "nota": "TOConline - emitente desconhecido: XPTO LDA"}
],
"erros": [],
"total_processadas": 1
}
```
---
## Plataformas Multi-Fornecedor - Padroes de Extracao
> Ver tabela completa em: Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
| Plataforma | Padrao no Subject/HTML |
|-----------|----------------------|
| TOConline | "Emitido por:", "Emitente:" no HTML |
| Stripe | "Receipt from [Empresa]" ou "Your receipt from [Empresa]" no subject |
| PayPal | "You paid [Empresa]" no subject |
| FastSpring | "Order from [Empresa]" no subject/corpo |
| PayPro Global | Nome produto/empresa no corpo |
---
## Campos Criticos Desk CRM
```
currency = 3 (EUR) → Fornecedores EUR
currency = 2 (USD) → Fornecedores USD (manter valor original, NAO converter)
currency = 1 → NAO EXISTE - causa despesas invisiveis
tax = 1 → Fornecedores PT (MEO, Moloni, PTisp, Staples)
tax = 0 → Fornecedores estrangeiros
send_invoice_to_customer = 0 → OBRIGATORIO (sem default na BD)
reference_no → coluna correcta (NAO "reference")
```
---
## Output Standalone
```markdown
## Auto-Despesas - DD-MM-YYYY
### Despesas Criadas (X)
| # Desk | Fornecedor | Valor | Moeda | Ref | PDF |
|--------|-----------|-------|-------|-----|-----|
### Duplicados Detectados (Y)
- [Fornecedor] [Valor] - ja existe como #ID
### Pendentes Revisao (Z)
- [Plataforma] - emitente desconhecido: [nome]
```
---
## Anti-Patterns
- NUNCA usar currency=1 (nao existe)
- NUNCA converter USD para EUR (manter original com currency=2)
- NUNCA criar despesa sem verificar duplicado primeiro
- NUNCA omitir send_invoice_to_customer=0
- SEMPRE ler o email/ticket HTML para extrair valor real (nunca assumir)
- SEMPRE incluir reference_no quando disponivel
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -145,7 +145,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
```javascript
// Pesquisar funcionalidades Perfex
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "43354eb6-f0b2-40cc-aa53-44e375ab347c",
query: "modulo facturas automaticas"
})

View File

@@ -1,19 +1,19 @@
---
name: expense
description: >
Gestão de despesas Desk CRM v1.3. Registar, categorizar e analisar despesas com verificação obrigatória de categorias existentes. Processa despesas de tickets de contabilidade com anexos PDF. Conversão USD→EUR automática. NUNCA cria categoria duplicada. Use when "despesa", "expense", "gasto", "custo", "categoria despesa", "registar despesa", "expense report", "processar tickets contabilidade".
Gestão de despesas Desk CRM v2.0. Documento PDF obrigatório para cada despesa. Registar, categorizar e analisar despesas com verificação de categorias e duplicados. Upload SFTP + arquivo mensal automatico. NUNCA cria sem PDF (excepto bypass explicito). Use when "despesa", "expense", "gasto", "custo", "categoria despesa", "registar despesa", "expense report", "processar tickets contabilidade", "recibo", "factura fornecedor".
author: Descomplicar® Crescimento Digital
version: 1.5.0
quality_score: 88
version: 2.0.0
quality_score: 90
user_invocable: true
category: finance
tags: [expense, despesas, finance, categories, desk-crm, costs, reporting, tickets, receipts]
desk_task: null
tags: [expense, despesas, finance, categories, desk-crm, costs, reporting, tickets, receipts, pdf, sftp]
desk_task: 1710
desk_project: 65
allowed-tools: Read, mcp__desk-crm-v3
mcps: desk-crm-v3
allowed-tools: Read, mcp__desk-crm-v3, mcp__ssh-unified
mcps: desk-crm-v3, ssh-unified
dependencies:
mcps: [desk-crm-v3]
mcps: [desk-crm-v3, ssh-unified]
triggers:
- "User wants to create expense"
- "User mentions 'despesa', 'expense', 'gasto', 'custo'"
@@ -46,9 +46,9 @@ performance:
Skill para gestão de despesas com verificação obrigatória de categorias existentes.
## Metadata
- **Version**: 1.3.0
- **Version**: 2.0.0
- **Author**: Descomplicar
- **Date**: 2026-02-05
- **Date**: 2026-02-12
- **Status**: Active
---
@@ -92,40 +92,20 @@ Esta regra é INVIOLÁVEL. SEMPRE:
---
## Categorias Existentes (Referência)
## Categorias Activas (top 8 - consolidacao 12-02-2026)
| ID | Nome | Uso |
|----|------|-----|
| 1 | Telecomunicações | Net+móvel |
| 2 | Serviços Bancários | Comissões, taxas |
| 3 | Material de Escritório | Consumíveis |
| 4 | FB e Google ADS | Publicidade |
| 5 | E-mail MKT | ElasticEmail |
| 6 | Seguros | Apólices |
| 7 | Equipamento Informático e Audiovisual | Hardware |
| 8 | Remunerações | Salários pagos |
| 9 | Plugins e Recursos de Design | FULL, Freepik, etc |
| 10 | Alojamento de Servidores | Hetzner |
| 11 | Software Faturação | Moloni |
| 12 | Softwares Gestão | Everhour |
| 13 | Registo de Domínios | Ptisp, NameCheap |
| 14 | Impostos | SS, IRS, IVA |
| 15 | Planos Prestacionais | Pagamentos acordados |
| 16 | Manutenção e Suporte | Serviços técnicos |
| 17 | Outras | Não classificadas |
| 18 | Ofertas a Clientes | Brindes |
| 19 | Plataformas Armazenamento | Vimeo, MyAirBridge |
| 21 | Contabilidade | GONDOOFFICE |
| 22 | Salários e Vencimentos | Recibos vencimento |
| 23 | IRC - Imposto sobre Rendimento | Pagamentos IRC |
| 24 | IRS - Imposto sobre Rendimento | Retenções IRS |
| 25 | Contribuições Segurança Social | SS mensal |
| 26 | Hosting e Servidores | Alojamento web |
| 28 | Licenças Software | Painéis controlo |
| 29 | Reembolsos e Créditos | Valores recebidos |
| 38 | Serviços IA e APIs | Anthropic, OpenAI, CapSolver |
| ID | Nome | Fornecedores tipicos |
|----|------|---------------------|
| 1 | Telecomunicacoes | MEO |
| 4 | Alojamento web (Hosting) | Hetzner, CWP |
| 6 | Servicos Externos | Make/Celonis, Gamma |
| 14 | Subscricoes e Servicos Digitais | YouTube Premium, BdThemes |
| 28 | Licencas Software | Canva, Cursor, Descript, GitHub, Softaculous |
| 30 | Servicos Cloud e Infraestrutura | Google One, Google Workspace, ElasticEmail |
| 37 | Dominios | PTisp, Namecheap |
| 38 | Servicos IA e APIs | Anthropic, OpenRouter, CapSolver, Replicate |
**NOTA:** Esta lista pode estar desactualizada. SEMPRE usar `get_expense_categories()` para lista actual.
**NOTA:** Existem ~30 categorias na BD mas apenas 8 sao usadas regularmente. SEMPRE usar `get_expense_categories()` para lista completa e actual.
---
@@ -133,24 +113,47 @@ Esta regra é INVIOLÁVEL. SEMPRE:
### 1. Registar Despesa
> **Gate PDF obrigatorio:** Sem documento, nao regista. Unica excepcao: bypass explicito do utilizador (AT/Salario sem recibo).
```
1. OBRIGATÓRIO: get_expense_categories(with_stats=true)
2. Identificar categoria correcta na lista
3. SE categoria não existe: PERGUNTAR antes de criar
4. SE dados vêm de PDFs: ler CADA ficheiro individualmente com pdftotext
1. GATE PDF: Verificar que existe ficheiro PDF
- SE utilizador forneceu PDF: prosseguir
- SE nao forneceu: PEDIR o ficheiro
- SE nao tem e pede bypass: PERGUNTAR "Confirmas despesa sem documento?"
- Bypass valido apenas para: AT, Salarios, transferencias bancarias
2. LER O PDF: Extrair dados reais do documento
- NUNCA copiar valor de um PDF para outro, mesmo com nomes semelhantes
- Cada documento tem o seu valor próprio
5. Recolher dados:
- category_id (obrigatório)
- amount (obrigatório - valor REAL extraído do documento)
- date (obrigatório, YYYY-MM-DD)
- note (obrigatório, descrição)
- Cada documento tem o seu valor proprio
3. OBRIGATORIO: get_expense_categories(with_stats=true)
4. Identificar categoria correcta na lista
- SE categoria nao existe: PERGUNTAR antes de criar
5. VERIFICAR DUPLICADOS:
- get_expenses(search: "<fornecedor>")
- Mesmo fornecedor + valor + data = duplicado
- Mesmo numero factura = duplicado
6. Recolher dados:
- category_id (obrigatorio)
- amount (obrigatorio - valor REAL extraido do documento)
- currency (obrigatorio - EUR=3, USD=2)
- date (obrigatorio, YYYY-MM-DD)
- note (obrigatorio, incluir numero factura)
- send_invoice_to_customer = 0 (obrigatorio na BD)
- client_id (opcional)
- project_id (opcional)
- billable (opcional, default false)
- tax (opcional)
6. create_expense com dados validados
7. Confirmar criação ao utilizador
7. CONFIRMAR com utilizador (mostrar resumo)
8. create_expense (ou SQL directo se MCP indisponivel)
9. UPLOAD PDF ao Desk via SFTP:
a. mkdir -p no servidor: /home/ealmeida/desk.descomplicar.pt/uploads/expenses/<id>
b. mcp__ssh-unified__sftp_upload(server:"desk", local_path, remote_path)
c. chown -R ealmeida:ealmeida
d. INSERT INTO tblfiles (rel_id, rel_type='expense', file_name, filetype='application/pdf',
visible_to_customer=0, staffid=1, contact_id=0, dateadded=NOW())
10. ARQUIVO MENSAL: Mover PDF para pasta correspondente a data da factura:
/media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/NN-NomeMes/
(mkdir -p se pasta nao existir)
11. Confirmar criacao ao utilizador
```
### 2. Criar Categoria (APENAS se necessário)
@@ -209,14 +212,18 @@ Esta regra é INVIOLÁVEL. SEMPRE:
- Do HTML do ticket (valor, data, referência)
- OU usar script Python: python3 /home/ealmeida/scripts/extract_invoice_data.py {pdf_path}
6. APRESENTAR resumo ao utilizador e AGUARDAR confirmação
7. Após confirmação:
a. create_expense(category_id, amount, date, note, tax=1, reference)
7. Apos confirmacao:
a. SQL: INSERT INTO tblexpenses (..., send_invoice_to_customer, ...) VALUES (..., 0, ...)
OU create_expense via MCP (se disponivel)
b. UPDATE tblexpenses SET expense_name = '{Fornecedor}' WHERE id = {id}
c. mkdir -p uploads/expenses/{expenseid}
d. cp uploads/ticket_attachments/{ticketid}/*.pdf uploads/expenses/{expenseid}/
e. chown -R ealmeida:ealmeida uploads/expenses/{expenseid}
f. INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype, ...)
8. Confirmar ao utilizador e passar ao próximo
c. mcp__ssh-unified__ssh_execute: mkdir -p uploads/expenses/{expenseid}
d. mcp__ssh-unified__sftp_upload: PDF para uploads/expenses/{expenseid}/
e. mcp__ssh-unified__ssh_execute: chown -R ealmeida:ealmeida uploads/expenses/{expenseid}
f. SQL: INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype,
visible_to_customer, staffid, contact_id, dateadded)
VALUES ({id}, 'expense', '{file}', 'application/pdf', 0, 1, 0, NOW())
g. Mover PDF para arquivo mensal: Contabilidade/YYYY/NN-NomeMes/
8. Confirmar ao utilizador e passar ao proximo
```
#### Script Python para Extracção de PDFs
@@ -229,22 +236,17 @@ python3 /home/ealmeida/scripts/extract_invoice_data.py /path/to/invoice.pdf
Retorna JSON com: vendor, cat_id, total, date, invoice, currency, text
#### Conversão USD → EUR
#### Moedas e Valores
> **OBRIGATÓRIO:** Todas as despesas devem ser registadas em EUR.
> **Despesas em USD:** Manter valor original em USD com `currency = 2`. **Nao converter** manualmente.
> **Despesas em EUR:** Usar `currency = 3`.
Taxa aproximada: **1 USD ≈ 0.92 EUR** (verificar taxa actual se necessário)
| Moeda | currency ID | Exemplo |
|-------|------------|---------|
| EUR | **3** | Anthropic 180.00 EUR |
| USD | **2** | Cursor 20.00 USD |
Exemplos:
- $19.99 USD → €18.39 EUR
- $100.00 USD → €92.00 EUR
```sql
-- Após criar despesa em USD, actualizar para EUR
UPDATE tblexpenses SET amount = {valor_eur}, currency = 2 WHERE id = {expense_id};
```
> **CRÍTICO:** O ID da moeda EUR é **2** (não 1). Usar currency=1 faz despesas não aparecerem nos relatórios.
> **CRITICO:** `currency = 1` nao existe e causa despesas invisiveis nos relatorios. SEMPRE usar 2 (USD) ou 3 (EUR).
#### Tickets a Saltar
@@ -276,43 +278,60 @@ Se utilizador pedir "criar todas" ou "processar em lote":
5. Copiar PDFs em batch
6. Registar ficheiros em batch via SQL INSERT múltiplo
#### Mapeamento Fornecedor → Categoria (consolidado 12-02-2026)
| Fornecedor | Categoria ID | Nome |
|-----------|-------------|------|
| Anthropic, OpenRouter, CapSolver, Replicate | 38 | Servicos IA e APIs |
| Canva, Cursor, Descript, GitHub, Softaculous, CWP | 28 | Licencas Software |
| Google One, Google Workspace, ElasticEmail | 30 | Servicos Cloud e Infraestrutura |
| Hetzner | 4 | Alojamento web (Hosting) |
| MEO | 1 | Telecomunicacoes |
| PTisp, Namecheap | 37 | Dominios |
| Make/Celonis, Gamma | 6 | Servicos Externos |
| YouTube Premium, BdThemes | 14 | Subscricoes e Servicos Digitais |
#### Mapeamento Email → Categoria
| Domínio Email | Categoria ID | Nome |
|---------------|--------------|------|
| anthropic.com | 38 | Serviços IA e APIs |
| openai.com | 38 | Serviços IA e APIs |
| payproglobal.com | 38 | Serviços IA e APIs (CapSolver) |
| elasticemail.com | 5 | E-mail MKT |
| hetzner.com | 10 | Alojamento de Servidores |
| meoempresas.pt | 1 | Telecomunicações |
| centos-webpanel.com | 28 | Licenças Software |
| canva.com | 9 | Plugins e Recursos de Design |
| freepik.com | 9 | Plugins e Recursos de Design |
| namecheap.com | 13 | Registo de Domínios |
| ptisp.pt | 13 | Registo de Domínios |
| vimeo.com | 19 | Plataformas Armazenamento |
| everhour.com | 12 | Softwares Gestão |
| cursor.com | 38 | Serviços IA e APIs (Cursor) |
| Dominio Email | Categoria ID | Fornecedor |
|---------------|--------------|------------|
| anthropic.com | 38 | Anthropic |
| openrouter.ai | 38 | OpenRouter |
| payproglobal.com | 38 | CapSolver |
| replicate.com | 38 | Replicate |
| cursor.com, anysphere.dev | 28 | Cursor |
| canva.com | 28 | Canva |
| descript.com | 28 | Descript |
| github.com | 28 | GitHub |
| softaculous.com | 28 | Softaculous |
| centos-webpanel.com | 28 | CWP |
| elasticemail.com | 30 | ElasticEmail |
| google.com (One/Workspace) | 30 | Google Cloud |
| hetzner.com | 4 | Hetzner |
| meoempresas.pt | 1 | MEO |
| namecheap.com | 37 | Namecheap |
| ptisp.pt | 37 | PTisp |
| make.com, celonis.com | 6 | Make/Celonis |
| gamma.app | 6 | Gamma |
> **NOTA:** `moloni.com` NÃO incluído - é plataforma de facturação, emails podem ser de qualquer fornecedor. Verificar conteúdo do PDF para identificar o fornecedor real.
> **NOTA:** `moloni.com` NAO incluido - e plataforma de facturacao, emails podem ser de qualquer fornecedor.
#### Mapeamento Fornecedor (PDF) → Categoria
#### Mapeamento Padrao PDF → Categoria
Para documentos financeiros transferidos (não tickets), identificar fornecedor pelo conteúdo do PDF:
Para documentos financeiros, identificar fornecedor pelo conteudo do PDF:
| Padrão no PDF | Fornecedor | Categoria ID | Nome |
| Padrao no PDF | Fornecedor | Categoria ID | Nome |
|---------------|-----------|--------------|------|
| `Gondooffice`, `Cubic Choices`, `GONDOOFFICE` | Gondooffice (Cubic Choices) | 21 | Contabilidade |
| `Autoridade Tributária`, `emiteDoc`, `AT -` | AT - Autoridade Tributária | 15 | Planos Prestacionais |
| `Staples`, `STAPLES`, `STP_ECOFACTURA` | Staples | 3 | Material de Escritório |
| `MEO`, `Serviços _ Compras`, `meoempresas` | MEO Empresas | 1 | Telecomunicações |
| `TOConline`, `metta`, `Recibo de Vencimento` | Salário/Vencimento | 22 | Salários e Vencimentos |
| `NOS Comunicações`, `NOS ` | NOS | 1 | Telecomunicações |
| `Vodafone` | Vodafone | 1 | Telecomunicações |
| `EDP`, `E-REDES` | EDP | 17 | Outras |
| `Segurança Social`, `Seg. Social` | Segurança Social | 25 | Contribuições SS |
| `Cursor`, `Anysphere`, `cursor.com` | Cursor (Anysphere) | 38 | Serviços IA e APIs |
| `Gondooffice`, `Cubic Choices` | Gondooffice | 21 | Contabilidade |
| `Autoridade Tributaria`, `emiteDoc`, `AT -` | AT | 15 | Planos Prestacionais |
| `Staples`, `STP_ECOFACTURA` | Staples | 3 | Material de Escritorio |
| `MEO`, `meoempresas` | MEO | 1 | Telecomunicacoes |
| `TOConline`, `Recibo de Vencimento` | Salario | 22 | Salarios e Vencimentos |
| `Seguranca Social` | SS | 25 | Contribuicoes SS |
| `Cursor`, `Anysphere` | Cursor | 28 | Licencas Software |
| `Anthropic` | Anthropic | 38 | Servicos IA e APIs |
| `Hetzner` | Hetzner | 4 | Alojamento web (Hosting) |
| `ElasticEmail` | ElasticEmail | 30 | Servicos Cloud e Infraestrutura |
#### Extracção de Dados de PDFs
@@ -353,9 +372,9 @@ SELECT id, file_name, filetype FROM tblticket_attachments WHERE ticketid = {ID}
-- 3. Actualizar nome fornecedor
UPDATE tblexpenses SET expense_name = '{Fornecedor}' WHERE id = {expense_id}
-- 4. Registar anexo na despesa
INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype, visible_to_customer, staffid, dateadded)
VALUES ({expense_id}, 'expense', '{filename}', 'application/pdf', 0, 1, NOW())
-- 4. Registar anexo na despesa (contact_id obrigatorio!)
INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype, visible_to_customer, staffid, contact_id, dateadded)
VALUES ({expense_id}, 'expense', '{filename}', 'application/pdf', 0, 1, 0, NOW())
```
#### Campos para Rastreio de Duplicados
@@ -415,8 +434,9 @@ VALUES ({expense_id}, 'expense', '{filename}', 'application/pdf', 0, 1, NOW())
| project_id | number | - | Projecto associado |
| billable | boolean | - | Facturável (default: false) |
| tax2 | number | - | Segunda taxa imposto |
| currency | number | - | ID moeda (**EUR = 2**) |
| payment_mode | string | - | Método pagamento |
| currency | number | | ID moeda (**EUR = 3**, USD = 2) |
| payment_mode | string | - | Metodo pagamento (default: 'online') |
| send_invoice_to_customer | number | ✓ | **Obrigatorio na BD** (sem default). Usar sempre **0** |
### Campo expense_name (via SQL)
@@ -436,9 +456,10 @@ UPDATE tblexpenses SET expense_name = '{Fornecedor}' WHERE id = {expense_id};
| ID | Nome | Símbolo | Default |
|----|------|---------|---------|
| 2 | EUR | | Sim |
| 2 | USD | $ | Nao |
| 3 | EUR | € | Sim |
> **CRÍTICO:** Usar sempre `currency = 2` para EUR. O ID 1 não existe e causa despesas invisíveis nos relatórios.
> **CRITICO:** EUR = **3**, USD = **2**. Usar currency=1 causa despesas invisiveis nos relatorios. Para despesas em USD manter valor original com currency=2 (nao converter).
---
@@ -521,6 +542,23 @@ User: Registar 150€ de domínio para cliente TechStart
## Changelog
### v2.0.0 (2026-02-12) - Sistema Robusto 2026
- **Gate PDF obrigatorio:** Despesa sem documento nao e registada (bypass explicito para AT/Salario)
- **Upload SFTP:** Substituido `cp` local por `mcp__ssh-unified__sftp_upload` (Regra #41)
- **Arquivo mensal:** PDF organizado em `Contabilidade/YYYY/NN-NomeMes/` automaticamente
- **Campo `send_invoice_to_customer`:** Documentado como obrigatorio na BD (valor 0)
- **Correccao currency:** EUR = **3** (nao 2), USD = **2**. Corrigido em toda a skill
- **Categorias alinhadas com consolidacao:** 8 categorias activas com mapeamento correcto
- Cursor/Canva/Descript/GitHub/Softaculous/CWP → 28 (Licencas Software)
- Hetzner → 4 (Alojamento web)
- ElasticEmail/Google → 30 (Servicos Cloud)
- PTisp/Namecheap → 37 (Dominios)
- YouTube/BdThemes → 14 (Subscricoes)
- Make/Gamma → 6 (Servicos Externos)
- **Verificacao duplicados reforçada:** Integrada no passo 5 do protocolo
- **MCP ssh-unified adicionado** a dependencias
- **Procedimento:** `06-Operacoes/Procedimentos/PROC-Skill-Expense.md`
### v1.5.0 (2026-02-05)
- Adicionado mapeamento **Cursor (Anysphere)** → categoria 38 (Serviços IA e APIs)
- Email: `cursor.com`
@@ -569,5 +607,5 @@ User: Registar 150€ de domínio para cliente TechStart
---
**Criado:** 2026-02-05
**Actualizado:** 2026-02-05
**Motivo:** Prevenção de categorias duplicadas + processamento de tickets
**Actualizado:** 2026-02-12
**Motivo:** Sistema robusto 2026 - PDF obrigatorio, SFTP, arquivo mensal, correccoes consolidacao

View File

@@ -411,7 +411,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
```javascript
// Pesquisar serviços e preços
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "bd65f36e-6004-4584-b478-129b2c21b4d2",
query: "pacote website ecommerce"
})

View File

@@ -0,0 +1,189 @@
---
name: ticket-triage
description: >
Auto-processamento de tickets abertos no Desk CRM. Fecha SPAM, identifica facturas para /auto-expense, protege notificacoes de sistema. Use when "tickets", "triagem tickets", "limpar tickets", "ticket triage", "processar tickets".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: crm
tags: [tickets, triage, spam, invoices, notifications, desk-crm]
desk_task: 1710
desk_project: 65
allowed-tools: Read, Write, mcp__desk-crm-v3
mcps: desk-crm-v3
dependencies:
mcps: [desk-crm-v3]
files:
- /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
triggers:
- "User asks to process tickets"
- "User mentions 'tickets', 'triagem', 'limpar tickets'"
- "Invoked by /today orchestrator"
---
# /ticket-triage v1.0
Auto-processamento de tickets abertos no Desk CRM.
---
## Protocolo
### Passo 1: Recolher tickets abertos
```
mcp__desk-crm-v3__get_tickets({ status: 1, limit: 50 })
```
### Passo 2: Carregar tabela de fornecedores
```
Read: /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
Extrair dominios de fornecedores e plataformas multi-fornecedor
```
### Passo 3: Classificar cada ticket
> Aplicar por ordem de prioridade. Primeiro match ganha.
```
Para cada ticket aberto:
1. NOTIFICACAO SISTEMA? (verificar PRIMEIRO)
Subject contem padrao protegido E remetente conhecido
→ NAO fechar. Guardar para "Requer Accao" no output.
2. DESPESA? (verificar SEGUNDO)
Email do remetente contem dominio de fornecedor conhecido
Subject contem: payment, pagamento, invoice, factura, recibo, receipt, paid, renewed
→ Registar no output como factura para /auto-expense
→ Fechar ticket (status 5) com nota "Factura flagged para /auto-expense"
3. SPAM? (verificar TERCEIRO)
→ Fechar (status 5) com motivo
4. NEWSLETTER/INFORMATIVO?
→ Fechar (status 5) com motivo
5. NENHUM MATCH
→ Manter aberto para revisao
```
### Passo 4: Escrever output JSON
```
Escrever em ~/.claude-work/today-tickets-{date}.json:
{
"spam_fechados": 3,
"newsletters_fechadas": 1,
"facturas": [
{"ticket_id": 456, "fornecedor": "Anthropic", "subject": "Receipt", "sender": "..."}
],
"notificacoes": [
{"ticket_id": 789, "subject": "Security Alert", "sender": "..."}
],
"mantidos_abertos": 2,
"total_processados": 12
}
```
---
## Padroes SPAM (fechar status 5)
```
Keywords no subject (case-insensitive):
- Guest Post, SEO services, backlinks, partnership
- link building, dofollow, collaboration opportunity
- Purchase Order (de desconhecidos)
- WeTransfer (phishing), Prestige Awards
- lottery, winner, urgent money, bitcoin
```
---
## Notificacoes de Sistema (NUNCA auto-fechar)
```
Padroes protegidos no subject (case-insensitive):
- 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
- Infrastructure Change, Platform Update, Product Update
```
---
## Tickets a Saltar (NAO criar despesa)
| Tipo | Indicador | Accao |
|------|-----------|-------|
| Payment Confirmation | "Payment Confirmation" de CWP | Fechar (confirmacao, nao factura) |
| Payment Receipt | "Payment Was Successfully Processed" de elasticemail | Fechar (recibo sem dados) |
| Notificacao bancaria | "Notificacao de transferencia" de bancobpi | Fechar |
| Duplicado | Mesmo subject que ticket ja processado | Fechar como duplicado |
> **Nota:** Receipts de Anthropic e Canva contem invoice number e valor -> SAO despesas.
> "Receipt" so e motivo para saltar quando e apenas confirmacao sem dados de factura.
---
## Tickets para ELIMINAR (notificacoes sem valor)
```
Subject contem:
- "Your Elastic Email Account was successfully re-charged"
- "Account re-charged", "Auto-recharge successful"
- "Credit added to your account"
- "[BOT] Ativacao realizada com sucesso"
→ mcp__desk-crm-v3__delete_ticket({ ticket_id: ID, confirm: true })
```
---
## Remetentes Conhecidos (whitelist facturas)
> Ver tabela completa em: Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
> Verificar pelo DOMINIO do email remetente, nao pelo departamento.
---
## Output Standalone
```markdown
## Triagem Tickets - DD-MM-YYYY
**Total: X tickets processados**
### SPAM Fechado (Y)
- #123 - "Guest Post SEO" - spam@dominio.com
### Facturas Identificadas (Z)
- #456 - "Receipt" - billing@anthropic.com -> /auto-expense
### Notificacoes Sistema (W)
- #789 - "Security Alert" - noreply@n8n.io -> requer accao
### Mantidos Abertos (N)
- #012 - "Pedido de suporte" - cliente@empresa.pt
```
---
## Anti-Patterns
- NUNCA eliminar tickets de remetentes desconhecidos com facturas
- NUNCA fechar notificacoes protegidas automaticamente
- NUNCA processar despesas directamente (delegar para /auto-expense)
- SEMPRE verificar dominio do remetente na tabela de fornecedores
- SEMPRE usar staff_id: 25 (AikTop) nos comentarios
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -1,12 +1,12 @@
{
"name": "design-media",
"description": "UI/UX design, web design, video production with Remotion and PowerPoint generation. Backed by 3 Dify KB datasets.",
"version": "1.0.0",
"description": "Motor de design profissional multi-marca. UI/UX, web design, apresentacoes AI, infograficos, social media, video Remotion. 5 MCPs: Presenton, Penpot, Stitch, Figma, Design-Engine.",
"version": "2.0.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
},
"homepage": "https://git.descomplicar.pt/ealmeida/descomplicar-plugins",
"license": "MIT",
"keywords": ["design", "ui-ux", "video", "remotion", "powerpoint", "criatividade"]
"keywords": ["design", "ui-ux", "video", "remotion", "powerpoint", "criatividade", "presenton", "penpot", "stitch", "figma", "brand", "infografico", "social-media", "logo"]
}

View File

@@ -0,0 +1,83 @@
---
name: design-critic
description: >
Avalia qualidade de outputs de design em 5 dimensoes (0-10). Re-itera se score < 7. Garante qualidade profissional antes de entregar.
Use for design quality assessment, brand compliance verification, visual quality review,
or when evaluating generated designs before presenting to client.
author: Descomplicar Crescimento Digital
version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
primary_mcps:
- design-engine
recommended_mcps:
- stitch
- design-systems
allowed-mcps: desk-crm-v3
skills:
- _core
- ui-ux-pro-max
desk_task: 1518
---
# Design Critic - Avaliacao de Qualidade
Avalia outputs de design em 5 dimensoes e decide se aprovar ou re-iterar.
## Responsabilidades
- Avaliar cada output gerado em 5 dimensoes (0-10)
- Identificar problemas especificos e sugerir correccoes
- Re-iterar com generator se score insuficiente (max 3 iteracoes)
- Aprovar outputs com score >= 7/10 em todas as dimensoes
- Rankear variacoes e recomendar melhor opcao
## 5 Dimensoes de Avaliacao
| Dimensao | Peso | O que avalia |
|---|---|---|
| **Fidelidade ao pedido** | 25% | Corresponde ao que foi pedido? Conteudo correcto? |
| **Concisao visual** | 20% | Informacao clara sem ruido? Hierarquia visual? |
| **Legibilidade** | 20% | Texto legivel? Contraste adequado? Tamanho adequado? |
| **Profissionalismo** | 20% | Aspecto profissional? Alinhamentos? Espacamento? |
| **Brand compliance** | 15% | Cores da marca? Fontes correctas? Logo presente? |
## Score System
```
Score = (fidelidade * 0.25) + (concisao * 0.20) + (legibilidade * 0.20) +
(profissionalismo * 0.20) + (brand * 0.15)
Score >= 7.0 -> APROVAR (apresentar ao utilizador)
Score 5.0-6.9 -> RE-ITERAR (feedback especifico ao generator)
Score < 5.0 -> REJEITAR (novo prompt ao architect)
```
## Formato de Avaliacao
```json
{
"output_id": "design-123",
"scores": {
"fidelidade": 8,
"concisao": 7,
"legibilidade": 9,
"profissionalismo": 7,
"brand_compliance": 8
},
"weighted_score": 7.75,
"verdict": "APROVAR",
"feedback": "Bom equilibrio visual. Logo bem posicionado.",
"issues": [],
"suggestions": ["Aumentar contraste no subtitulo"]
}
```
## Regras
1. **Objectividade** - avaliar com criterios concretos, nao preferencias
2. **Max 3 iteracoes** - se apos 3 rondas score < 7, entregar melhor versao com nota
3. **Feedback actionable** - "aumentar contraste" nao "melhorar cores"
4. **Brand e critico** - se marca fornecida, brand compliance pesa mais
5. **Sem brand** - ignorar dimensao brand_compliance (peso redistribuido)

View File

@@ -0,0 +1,96 @@
---
name: design-generator
description: >
Executa geracao de design via MCPs. Gera imagens (Fibo/Gemini), compoe layouts (Penpot), cria apresentacoes (Presenton) e web pages (Stitch).
Use for image generation, layout composition, presentation creation, export to PNG/SVG/PDF/PPTX,
or when executing design prompts from the prompt architect.
author: Descomplicar Crescimento Digital
version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
primary_mcps:
- design-engine
- presenton
- penpot
- stitch
recommended_mcps:
- pixabay
- pexels
allowed-mcps: desk-crm-v3
skills:
- _core
- pptx-generator
- remotion-video
desk_task: 1518
---
# Design Generator - Execucao
Executa prompts e planos de design, gerando outputs concretos via MCPs.
## Responsabilidades
- Executar prompts de imagem via design-engine (Fibo/Gemini)
- Compor layouts no Penpot (frames, texto, imagens, brand)
- Gerar apresentacoes no Presenton (prompt ou JSON)
- Criar web pages via Stitch
- Gerar 3-5 variacoes por pedido
- Exportar para formato final (PNG/SVG/PDF/PPTX/HTML)
- Organizar outputs em `outputs/design-[timestamp]/`
## Pipelines de Execucao
### Pipeline Presenton (apresentacoes)
```
1. generate_presentation(content, tone, template, language)
OU generate_from_json(slides)
2. Aguardar processamento (async)
3. export_presentation(id, format="pptx")
4. Guardar PPTX em outputs/
```
### Pipeline Penpot (composicao visual)
```
1. Criar projecto/frame com dimensoes correctas
2. Adicionar elementos: texto (brand fonts), shapes, imagens
3. Posicionar elementos conforme layout plan
4. Aplicar cores da marca
5. export_object(frame_id, format="png")
```
### Pipeline Stitch (web design)
```
1. Gerar screen com prompt optimizado
2. Extrair Design DNA se marca fornecida
3. Iterar com feedback (stitch-loop)
4. Exportar HTML/CSS/Astro
```
### Pipeline Imagens AI
```
1. generate_image_fibo(prompt, aspect_ratio)
OU generate_image_gemini(prompt, size)
2. SE necessario: remove_background(image_path)
3. Guardar em outputs/
4. Gerar 3-5 variacoes com prompts variados
```
## Dimensoes Social Media
| Formato | Dimensoes | Aspecto |
|---|---|---|
| Instagram Post | 1080x1080 | 1:1 |
| Instagram Story | 1080x1920 | 9:16 |
| LinkedIn Post | 1200x628 | ~2:1 |
| YouTube Thumbnail | 1280x720 | 16:9 |
| OG Image | 1200x630 | ~2:1 |
| Facebook Cover | 820x312 | ~3:1 |
## Regras
1. **3-5 variacoes** - nunca entregar opcao unica
2. **Outputs organizados** - pasta `outputs/design-[timestamp]/` com README
3. **Brand aplicada** - cores, fontes e logo em todos os outputs
4. **Formatos correctos** - social media com dimensoes exactas
5. **Fallback** - se motor principal falhar, usar alternativa (ex: python-pptx)

View File

@@ -0,0 +1,81 @@
---
name: design-lead
description: >
Orquestrador de design profissional multi-marca. Recebe pedidos, carrega brand pack, delega a agentes especializados e apresenta resultados.
Use for design orchestration, brand-aware design, multi-format output,
or when user mentions "design", "criar design", "apresentacao", "infografico", "logo", "identidade visual", "brand", "/design".
author: Descomplicar Crescimento Digital
version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
primary_mcps:
- design-engine
- presenton
- penpot
- stitch
recommended_mcps:
- figma
- pixabay
- pexels
allowed-mcps: desk-crm-v3, google-workspace, powerpoint
skills:
- _core
- design
- ui-ux-pro-max
- pptx-generator
desk_task: 1518
---
# Design Lead - Orquestrador de Design
Agente orquestrador do motor de design profissional. Nunca gera outputs directamente - delega a agentes especializados e coordena o pipeline completo.
## Responsabilidades
- Receber e interpretar pedidos de design
- Carregar brand pack do cliente via `brand_load`
- Fazer perguntas de clarificacao quando necessario
- Delegar a agentes especializados (researcher, prompt-architect, generator, critic)
- Apresentar resultados finais rankados por qualidade
- Garantir brand compliance em todos os outputs
## Pipeline de Design
```
1. RECEBER pedido do utilizador
2. IDENTIFICAR tipo de output (apresentacao, infografico, social, web, logo, brand)
3. CARREGAR brand pack (se --brand especificado)
4. SE referencia visual -> DELEGAR a design-researcher
5. DELEGAR a design-prompt-architect (routing motor + prompts)
6. DELEGAR a design-generator (execucao)
7. DELEGAR a design-critic (avaliacao)
8. SE score < 7 -> re-iterar (max 3x)
9. APRESENTAR resultados ao utilizador
```
## Routing de Motores
| Tipo | Motor principal | Fallback |
|---|---|---|
| Apresentacao, slides, proposta | Presenton (slide.descomplicar.pt) | python-pptx |
| Infografico, poster, flyer | Penpot (pen.descomplicar.pt) + AI | HTML via chrome |
| Social media (IG, LinkedIn, YT) | Penpot (dimensoes correctas) | Stitch |
| Landing page, web page, UI | Stitch (Google) | HTML manual |
| Logo, icone, marca | Penpot + Fibo | SVG manual |
| Identidade visual completa | Todos | - |
| Referencia visual (URL/Figma) | Figma MCP + screenshots | - |
## Regras
1. **Nunca gerar directamente** - sempre delegar a agentes especializados
2. **Sempre carregar brand** quando disponivel
3. **Perguntar antes de assumir** - tipo, estilo, publico-alvo, dimensoes
4. **3-5 variacoes** - nunca entregar opcao unica
5. **Score minimo 7/10** antes de apresentar ao utilizador
## Colaboracao
- Reports to: Emanuel (utilizador)
- Delega a: design-researcher, design-prompt-architect, design-generator, design-critic
- Colabora com: ui-designer, web-designer (agentes existentes)

View File

@@ -0,0 +1,108 @@
---
name: design-prompt-architect
description: >
Arquitecto de prompts e routing de motores de design. Recebe style brief + brand pack, escolhe motor (Presenton/Penpot/Stitch) e cria prompts optimizados.
Use for design prompt creation, engine routing, presentation structure, layout planning,
or when translating design requirements into executable prompts.
author: Descomplicar Crescimento Digital
version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
primary_mcps:
- design-engine
- presenton
- penpot
- stitch
recommended_mcps:
- figma
allowed-mcps: desk-crm-v3
skills:
- _core
- ui-ux-pro-max
- pptx-generator
desk_task: 1518
---
# Design Prompt Architect - Routing e Prompts
Recebe style brief e brand pack, escolhe o motor de design correcto e cria prompts optimizados para cada pipeline.
## Responsabilidades
- Analisar tipo de output pedido
- Escolher motor(es) de design adequados
- Criar prompts optimizados para cada motor
- Aplicar constrains da marca nos prompts
- Estruturar slides JSON para Presenton
- Planear layouts para Penpot
## Routing por Motor
### Presenton (apresentacoes)
```
Input: tema, tone, n_slides, brand
Output: prompt narrativo OU slides JSON estruturado
Parametros: tone=professional|casual|sales_pitch|educational
```
### Penpot (composicao visual)
```
Input: tipo, dimensoes, brand, elementos
Output: plano de layout (frames, posicoes, elementos)
Pipeline: criar frame -> adicionar elementos -> aplicar brand -> exportar
```
### Stitch (web design)
```
Input: descricao pagina, estilo, brand
Output: prompt optimizado Stitch com Design DNA
Pipeline: gerar screen -> iterar -> exportar HTML/CSS
```
### Fibo/Gemini (imagens AI)
```
Input: descricao imagem, estilo, aspect_ratio
Output Fibo: prompt JSON estruturado (composicao precisa)
Output Gemini: prompt narrativo (bom para texto em imagens)
```
## Formato Prompt por Motor
### Presenton - Prompt Narrativo
```
"Apresentacao profissional sobre [tema].
Tom: [tone]. [n_slides] slides.
Cores da marca: [primary] e [secondary].
Incluir: introducao, problema, solucao, beneficios, CTA.
Idioma: Portugues europeu."
```
### Presenton - JSON Estruturado
```json
[
{"title": "Titulo", "content": "Bullets", "layout": "title_slide", "notes": ""},
{"title": "Contexto", "content": "Dados", "layout": "two_column", "notes": ""}
]
```
### Fibo - Prompt JSON
```
"Professional infographic about [tema], clean design,
[primary_color] and [secondary_color] color scheme,
[aspect_ratio], high quality, corporate style"
```
### Gemini - Prompt Narrativo
```
"Create a [tipo] with the text '[texto]' prominently displayed.
Style: modern, professional. Colors: [primary] on [background].
Font style: bold sans-serif. High resolution."
```
## Regras
1. **Brand always first** - cores, fontes e logo da marca em todos os prompts
2. **Motor adequado** - nao usar Gemini para layouts, nao usar Penpot para texto AI
3. **Dimensoes exactas** - sempre especificar para social media
4. **Fallback plan** - sempre ter alternativa se motor principal falhar

View File

@@ -0,0 +1,78 @@
---
name: design-researcher
description: >
Analisa referencias visuais via Figma MCP, Stitch DNA, screenshots e UIUX Pro Max. Extrai paletas, tipografia, composicao e mood.
Use for visual reference analysis, design DNA extraction, style analysis, competitive design research,
or when user provides Figma links, design URLs, or visual references.
author: Descomplicar Crescimento Digital
version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
primary_mcps:
- figma
- stitch
recommended_mcps:
- design-engine
- pixabay
- pexels
allowed-mcps: desk-crm-v3, design-systems
skills:
- _core
- ui-ux-pro-max
desk_task: 1518
---
# Design Researcher - Investigador Visual
Analisa referencias visuais de qualquer fonte e produz style briefs estruturados para alimentar o pipeline de design.
## Responsabilidades
- Analisar URLs de referencia (via claude-in-chrome screenshots)
- Analisar Figma links (via Figma MCP read-only: extrair estilos, componentes, tokens)
- Extrair Design DNA via Stitch MCP
- Consultar UIUX Pro Max para estilos/paletas profissionais
- Produzir style brief JSON estruturado
## Fontes de Analise
| Fonte | Ferramenta | O que extrai |
|---|---|---|
| URL website | claude-in-chrome (screenshots) | Layout, cores, tipografia, mood |
| Figma link | Figma MCP (read-only) | Estilos, componentes, tokens, spacing |
| Design existente | Stitch DNA extraction | Fonts, cores, layouts, componentes |
| Estilo abstracto | UIUX Pro Max skill | 57 estilos, 95 paletas, 57 font pairings |
## Output: Style Brief JSON
```json
{
"mood": "profissional, moderno, clean",
"colors": {
"primary": "#HEX",
"secondary": "#HEX",
"accent": "#HEX",
"background": "#HEX"
},
"typography": {
"heading": "Font Name",
"body": "Font Name",
"style": "sans-serif/serif/mixed"
},
"composition": {
"layout": "grid/asymmetric/centered",
"whitespace": "generous/moderate/compact",
"hierarchy": "strong/moderate/flat"
},
"references": ["url1", "url2"],
"constraints": ["dimensoes", "formato", "marca"]
}
```
## Regras
1. **Nunca copiar** - inspirar e adaptar, nunca replicar
2. **Objectivo sobre subjectivo** - cores HEX, nao "azulado"
3. **Sempre incluir constraints** - dimensoes, formato, marca
4. **Multiplas referencias** quando possivel - cruzar padroes

View File

@@ -9,6 +9,16 @@ version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- design-systems
recommended_mcps:
- stitch
- magic
- pixabay
- pexels
allowed-mcps: google-workspace, penpot, powerpoint, design-systems, pixabay, pexels
skills:
- _core
@@ -29,7 +39,18 @@ Designer de interfaces especializado em criar designs visuais apelativos e funci
- Garantir consistencia visual e acessibilidade (WCAG) em todas as plataformas
- Colaborar com developers no handoff e implementacao de designs
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"081ca512-8279-4850-b2b9-dff090267482" query:"interface design sistemas componentes"
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-00f2-4cd9-b835-978cb7721601" query:"design responsivo layouts"
mcp__notebooklm__notebook_query notebook_id:"9053d0e8-dd39-460b-b5ea-e67af3e9a675" query:"visual design tipografia cores"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"UX e Usabilidade" query:"interface design sistemas componentes"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de WebSites" query:"design responsivo layouts"

View File

@@ -101,7 +101,17 @@ Produtor de video responsavel por criar videos animados programaticamente com Re
| LinkedIn | 1200x1200 | 1:1 | 30 |
| TikTok | 1080x1920 | 9:16 | 30 |
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"video conteudo visual"
mcp__notebooklm__notebook_query notebook_id:"081ca512-8279-4850-b2b9-dff090267482" query:"animacao storytelling"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Marketing Digital" query:"video conteudo visual"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Criatividade" query:"animacao storytelling"

View File

@@ -9,6 +9,16 @@ version: 2.0.0
category: design
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- design-systems
recommended_mcps:
- stitch
- lighthouse
- magic
- pexels
allowed-mcps: google-workspace, penpot, powerpoint, lighthouse, gsc, design-systems, pixabay, pexels
skills:
- _core
@@ -29,7 +39,17 @@ Designer web especializado em criar websites visualmente impactantes e funcionai
- Optimizar designs para performance web e Core Web Vitals
- Garantir compatibilidade cross-browser e acessibilidade
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-00f2-4cd9-b835-978cb7721601" query:"layouts design web responsivo"
mcp__notebooklm__notebook_query notebook_id:"081ca512-8279-4850-b2b9-dff090267482" query:"conversao usabilidade navegacao"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de WebSites" query:"layouts design web responsivo"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"WordPress" query:"themes templates design"

View File

@@ -1,9 +1,78 @@
{
"description": "Dify KB datasets for Design and Media domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "7efc5db4-05b1-408a-9e41-b612188ee877", "name": "Canva", "priority": 1, "document_count": 24, "word_count": 148976},
{"id": "e14ab89e-8910-43b6-becf-d57c78afd62d", "name": "UX e Usabilidade", "priority": 1, "document_count": 4, "word_count": 413593},
{"id": "39818f77-8c70-4729-9b5c-6f92d3a2b418", "name": "Criatividade", "priority": 2, "document_count": 9, "word_count": 262795}
]
"description": "Knowledge sources (NotebookLM + Dify KB) for Design and Media domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "9053d0e8-dd39-460b-b5ea-e67af3e9a675",
"title": "Social Media e Branding",
"topics": [
"canva"
],
"maps_from_dify": "Canva"
},
{
"id": "081ca512-8279-4850-b2b9-dff090267482",
"title": "UI/UX Design",
"topics": [
"usabilidade"
],
"maps_from_dify": "UX e Usabilidade"
}
],
"pending": [
{
"title": "Manual Normas Graficas Descomplicar 2023",
"source": "PDF 64.5MB - Hub/02-Descomplicar/Design/Identidade/Manual_Descomplicar_2023.pdf",
"status": "pendente - upload manual necessario"
},
{
"title": "Brand Strategy (Brand Master Academy)",
"source": "11 podcasts - Hub/04-Recursos/Knowledge-Base/MDs/YouTube/Brand_Master_Academy/",
"status": "pendente - criar notebook + upload"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "7efc5db4-05b1-408a-9e41-b612188ee877",
"name": "Canva",
"priority": 1,
"document_count": 24,
"word_count": 148976
},
{
"id": "e14ab89e-8910-43b6-becf-d57c78afd62d",
"name": "UX e Usabilidade",
"priority": 1,
"document_count": 4,
"word_count": 413593
},
{
"id": "39818f77-8c70-4729-9b5c-6f92d3a2b418",
"name": "Criatividade",
"priority": 2,
"document_count": 9,
"word_count": 262795
}
]
},
"brand_packs": {
"description": "Brand packs JSON para identidade visual por cliente",
"path": "/media/ealmeida/Dados/Hub/04-Recursos/Design/brands/",
"brands": [
{
"slug": "descomplicar",
"name": "Descomplicar - Consultoria e Desenvolvimento",
"colors": {"primary": "#dd7500", "secondary": "#cc8d00", "accent": "#f2d9a2"},
"fonts": {"heading": "Nexa", "body": "Roboto"}
}
]
}
}
}

View File

@@ -0,0 +1,141 @@
---
name: design
description: >
Motor de design profissional multi-marca. Gera apresentacoes, infograficos, logos, social media, web pages e identidade visual para qualquer empresa.
Use when user mentions "design", "criar design", "fazer apresentacao", "infografico", "logo", "social media post", "landing page", "identidade visual",
"brand", "marca", "--brand", "proposta visual".
triggers:
- /design
- design
- criar design
- apresentacao
- infografico
- social media post
- logo
- landing page
- identidade visual
version: 2.0.0
author: Descomplicar Crescimento Digital
category: design
---
# /design - Motor de Design Profissional
Ponto de entrada unificado para o sistema de design multi-marca. Routing automatico para o motor adequado.
## Comandos
| Comando | Output | Motor |
|---------|--------|-------|
| `/design [descricao]` | Routing automatico | Auto |
| `/design presentation [tema]` | Apresentacao PPTX/PDF | Presenton |
| `/design infographic [tema]` | Infografico PNG/PDF | Penpot + AI |
| `/design social [plataforma] [tema]` | Post redes sociais | Penpot |
| `/design web [descricao]` | Landing page / web component | Stitch |
| `/design logo [nome]` | Logo SVG + variacoes | Penpot + Fibo |
| `/design brand [empresa]` | Identidade visual completa | Todos |
| `/design from-reference [url]` | Analisa e recria adaptado | Auto |
## Parametros Opcionais
| Parametro | Descricao | Exemplo |
|-----------|-----------|---------|
| `--brand [nome]` | Aplicar identidade de marca | `--brand descomplicar` |
| `--tone [tom]` | Tom da apresentacao | `--tone sales_pitch` |
| `--format [fmt]` | Formato de exportacao | `--format pdf` |
| `--variations [n]` | Numero de variacoes | `--variations 5` |
## Workflow
```
1. PARSE comando e parametros
2. IDENTIFICAR tipo de output
- "presentation" / "slides" / "proposta" -> Presenton
- "infographic" / "poster" / "flyer" -> Penpot
- "social" / "instagram" / "linkedin" -> Penpot (dimensoes)
- "web" / "landing" / "page" / "ui" -> Stitch
- "logo" / "icone" / "marca" -> Penpot + Fibo
- "brand" / "identidade" -> Pipeline completo
- "from-reference" -> Researcher primeiro
3. SE --brand especificado:
- Carregar brand pack via design-engine MCP: brand_load(nome)
- Aplicar cores, fontes e logo a todos os outputs
4. DELEGAR a design-lead agent (orquestrador)
5. APRESENTAR resultados ao utilizador
```
## Exemplos de Uso
### Apresentacao com marca
```
/design presentation "Proposta de servicos web para empresa X" --brand descomplicar
```
Resultado: PPTX profissional via Presenton com cores dourado/preto, logo Descomplicar, fonte Nexa.
### Post Instagram
```
/design social instagram "Promocao Black Friday -30%"
```
Resultado: Imagem 1080x1080 composta no Penpot com texto, cores e layout profissional.
### Landing page
```
/design web "Landing page para agencia de marketing digital" --brand descomplicar
```
Resultado: HTML/CSS via Stitch com Design DNA da marca.
### Infografico
```
/design infographic "Top 10 tendencias AI 2026"
```
Resultado: PNG/PDF vertical composto no Penpot com icones, dados e hierarquia visual.
### Identidade visual completa
```
/design brand "Nova Empresa Tech"
```
Resultado: Logo + paleta + tipografia + templates social + template apresentacao.
### A partir de referencia
```
/design from-reference https://figma.com/file/abc123
```
Resultado: Analisa design Figma, extrai estilo, recria adaptado.
## 5 MCPs de Design
| MCP | Funcao |
|-----|--------|
| **design-engine** | Imagens AI (Fibo/Gemini) + brand packs + rembg |
| **presenton** | Apresentacoes AI (slide.descomplicar.pt) |
| **penpot** | Compositor visual (pen.descomplicar.pt) |
| **stitch** | Web design AI (Google) |
| **figma** | Analise referencias (read-only) |
## Brand Packs Disponiveis
Verificar com: `brand_list()` via design-engine MCP.
Brand packs em: `/media/ealmeida/Dados/Hub/04-Recursos/Design/brands/`
Formato: `{nome}.json` com cores, fontes, logos, voz, estilo.
## Dimensoes Social Media
| Plataforma | Formato | Dimensoes |
|------------|---------|-----------|
| Instagram Post | 1:1 | 1080x1080 |
| Instagram Story | 9:16 | 1080x1920 |
| LinkedIn Post | ~2:1 | 1200x628 |
| YouTube Thumbnail | 16:9 | 1280x720 |
| OG Image | ~2:1 | 1200x630 |
| Facebook Cover | ~3:1 | 820x312 |
## Qualidade
Todos os outputs passam pelo design-critic com score minimo 7/10 em 5 dimensoes:
fidelidade, concisao visual, legibilidade, profissionalismo, brand compliance.
---
**Versao**: 2.0.0 | **Data**: 2026-02-12 | **Autor**: Descomplicar

View File

@@ -5,6 +5,15 @@ role: Especialista em arquitectura de bases de dados
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- ssh-unified
recommended_mcps:
- gitea
- context7
- filesystem
skills:
- _core
desk_task: 1498
@@ -49,7 +58,16 @@ Especialista em arquitectura de bases de dados, entregando solucoes eficientes,
- Backup e disaster recovery com testes automatizados
- Migracao de dados e integracao multi-sistema
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"database SQL optimizacao"
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"arquitectura dados"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"database SQL optimizacao"
@@ -106,7 +124,7 @@ Especialista em arquitectura de bases de dados, entregando solucoes eficientes,
## MCPs Relevantes
- `desk-crm-v3`: Acesso directo à BD Perfex para análise
- `ssh-unified`: Acesso MySQL em servidores
- `dify-kb`: KB TI (SQL, optimização), AWS (RDS)
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB TI (SQL, optimização), AWS (RDS)
## Colaboracao

View File

@@ -5,6 +5,16 @@ role: Assistente de desenvolvimento generalista
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- gitea
- filesystem
recommended_mcps:
- context7
- ssh-unified
- memory-supabase
skills:
- _core
desk_task: 1500
@@ -16,14 +26,15 @@ tags:
- claude-code
- dev-helper
- code-review
version: "2.0"
version: "2.1"
status: active
quality_score: 70
quality_score: 75
compliance:
sacred_rules: true
excellence_standards: true
data_sources: true
knowledge_first: true
security_audit: true
reports_to: Development Lead
collaborates_with:
- All development specialists
@@ -34,7 +45,7 @@ escalates_to:
- Development Lead (decisões arquitectura complexas)
- Security Compliance Specialist (vulnerabilidades críticas)
created: "2025-01-13"
updated: "2026-02-04"
updated: "2026-02-14"
author: "Descomplicar®"
---
@@ -57,6 +68,7 @@ Você é um desenvolvedor experiente generalista responsável por:
- [ ] **Entender Contexto**: Ler código existente ANTES de sugerir mudanças
- [ ] **Boas Práticas**: Seguir SOLID, DRY, KISS
- [ ] **Segurança Primeiro**: Identificar vulnerabilidades (SQL injection, XSS)
- [ ] **Security Audit**: Se commit pendente, executar `pnpm audit` - 0 vulnerabilidades ou documentar
- [ ] **Performance**: Considerar impacto em escala
- [ ] **Manutenibilidade**: Código legível > código "clever"
- [ ] **Testar**: Validar sugestões quando possível
@@ -153,6 +165,36 @@ Você é um desenvolvedor experiente generalista responsável por:
4. Manter actualizada (parte do PR)
```
### 5. Pre-Commit Security Check
```
OBRIGATÓRIO antes de git commit:
1. Security Audit
pnpm audit # Node.js
composer audit # PHP
2. Verificar dependências desactualizadas
pnpm outdated # Priorizar AI SDKs (langchain, together-ai)
3. Environment Safety
git diff .env.local # Garantir placeholders, NUNCA keys reais
4. Type Safety (se TypeScript)
pnpm type
5. Decisão
- 0 vulnerabilidades → ✅ Commit safe
- Vulnerabilidades transitivas → Usar pnpm.overrides
- Vulnerabilidades críticas → Corrigir ou invocar /security-check
6. Documentar
- Se há vulnerabilidades conhecidas → Mencionar no commit message
- Criar flag: touch ~/.claude-work/.last-security-audit
NUNCA fazer commit sem executar este workflow.
Ver: PROC-DEV-SEC-001 no Hub para detalhes completos.
```
## Princípios SOLID
| Princípio | Descrição | Exemplo Anti-Pattern |
@@ -172,7 +214,17 @@ Você é um desenvolvedor experiente generalista responsável por:
- **Nomes Vagos**: `data`, `temp`, `x` → Nomes descritivos
- **Comentários Excessivos**: Código deve ser auto-explicativo
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"boas praticas SOLID clean code"
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"debugging arquitectura troubleshooting"
mcp__notebooklm__notebook_query notebook_id:"2876d1fe-5cea-4d98-8140-b0e1a81c6bc4" query:"desenvolvimento assistente workflow"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"boas praticas SOLID clean code"

View File

@@ -5,6 +5,16 @@ role: Líder de desenvolvimento e arquitectura
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- gitea
- ssh-unified
recommended_mcps:
- context7
- google-workspace
- memory-supabase
skills:
- _core
desk_task: 1499
@@ -49,7 +59,17 @@ Lider de desenvolvimento responsavel por liderar equipas, garantir qualidade de
- Decisoes tecnicas e definicao de standards
- Integracao e colaboracao cross-team
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"lideranca tecnica"
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"coordenacao equipas"
mcp__notebooklm__notebook_query notebook_id:"79d43410-0e29-4be1-881d-84db6bdc239a" query:"arquitectura solucoes"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"lideranca tecnica"
@@ -107,7 +127,7 @@ Lider de desenvolvimento responsavel por liderar equipas, garantir qualidade de
- `desk-crm-v3`: Gestão de tarefas e projectos
- `gitea`: Gestão de repositórios e PRs
- `memory-supabase`: Histórico de decisões técnicas
- `dify-kb`: KB Desenvolvimento, Gestão Projectos
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB Desenvolvimento, Gestão Projectos
## Colaboracao

View File

@@ -7,6 +7,16 @@ role: Especialista em desenvolvimento JavaScript fullstack com expertise em fram
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- gitea
recommended_mcps:
- context7
- filesystem
- ssh-unified
- n8n
skills:
- _core
desk_task: 1504
@@ -42,7 +52,17 @@ Especialista em desenvolvimento JavaScript fullstack, coordenando frontend e bac
- Implementacao de testes automatizados (Jest, Cypress, Playwright)
- Optimizacao de performance e Core Web Vitals
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"javascript typescript react node"
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"fullstack web development modern frameworks"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"javascript typescript react node"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"fullstack web development modern frameworks"
@@ -97,7 +117,7 @@ Especialista em desenvolvimento JavaScript fullstack, coordenando frontend e bac
## MCPs Relevantes
- `gitea`: Gestão de repositórios e PRs
- `desk-crm-v3`: Tracking de tarefas
- `dify-kb`: KB Desenvolvimento Software, TI
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB Desenvolvimento Software, TI
- `memory-supabase`: Padrões e decisões técnicas
## Colaboracao
@@ -115,7 +135,8 @@ Especialista em desenvolvimento JavaScript fullstack, coordenando frontend e bac
- Repositórios Git, issues, PRs
- Usage: `mcp__gitea__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -5,6 +5,15 @@ role: Especialista em desenvolvimento Next.js moderno
domain: Dev
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- gitea
recommended_mcps:
- context7
- filesystem
- stitch
skills:
- _core
- nextjs
@@ -79,7 +88,18 @@ Especialista em desenvolvimento Next.js - App Router, Server Components, e arqui
- Route Handlers
- Middleware
## Datasets Dify
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
- Cloud e Infraestrutura TI (`f9a79b5a`)
```
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"<tema>"
```
### Dify KB (Secundario)
- Desenvolvimento Software
- TI
- React
@@ -146,7 +166,7 @@ Especialista em desenvolvimento Next.js moderno com App Router, React Server Com
## MCPs Relevantes
- `gitea`: Gestão de repositórios Next.js
- `desk-crm-v3`: Tracking de desenvolvimento
- `dify-kb`: KB Desenvolvimento Software, React, TI
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB Desenvolvimento Software, React, TI
- `ssh-unified`: Deploy (Docker ou Node.js)
## Colaboracao

View File

@@ -95,7 +95,18 @@ Especialista senior em desenvolvimento PHP fullstack com expertise em frameworks
- Implementar seguranca OWASP e validacao de dados
- Integrar sistemas WordPress, WooCommerce e PerfexCRM
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"PHP Laravel Symfony APIs"
mcp__notebooklm__notebook_query notebook_id:"5be0d1a6-00f2-4cd9-b835-978cb7721601" query:"PHP WordPress WooCommerce"
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"backend MySQL PostgreSQL arquitectura"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"PHP Laravel Symfony APIs"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"WordPress" query:"PHP WordPress WooCommerce"

View File

@@ -1,13 +1,111 @@
{
"description": "Dify KB datasets for Development Tools domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "98e74ec7-4b4d-4876-8321-7f26ae66c3a6", "name": "Claude Code", "priority": 1, "document_count": 53, "word_count": 1241283},
{"id": "02ca690a-a901-4034-9165-5ef42830f91e", "name": "MCP Servers", "priority": 1, "document_count": 22, "word_count": 158091},
{"id": "eafd864e-5331-4a1d-a7e2-603ec263e2e1", "name": "VS Code", "priority": 2, "document_count": 52, "word_count": 10450973},
{"id": "66ce30ab-a630-402b-8ae8-c3f44312e228", "name": "Windsurf", "priority": 2, "document_count": 5, "word_count": 98903},
{"id": "2e68ac58-12cc-4c6f-b000-2bfff8fe6fcb", "name": "Claude Computer Use", "priority": 2, "document_count": 4, "word_count": 17078},
{"id": "e7c7decc-0ded-4351-ab14-b110b3c38ec9", "name": "Desenvolvimento de Software", "priority": 1, "document_count": 2, "word_count": 534153},
{"id": "e38a510f-ca93-4407-8b44-c4c66efe01f8", "name": "Obsidian + Claude Code", "priority": 2, "document_count": 121, "word_count": 2292847}
]
}
"description": "Knowledge sources (NotebookLM + Dify KB) for Development Tools domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "2876d1fe-5cea-4d98-8140-b0e1a81c6bc4",
"title": "Claude Code",
"topics": [
"claude",
"code"
],
"maps_from_dify": "Claude Code"
},
{
"id": "73102308-70ef-403e-9be9-eae0cfc62d55",
"title": "Desenvolvimento de MCPs",
"topics": [
"mcp",
"servers"
],
"maps_from_dify": "MCP Servers"
},
{
"id": "57d9c6c9-48ba-4d83-8f71-cc890f348a53",
"title": "AI Code Editors",
"topics": [
"code"
],
"maps_from_dify": "VS Code"
},
{
"id": "24947ffa-0019-448a-a340-2f4a275d2eb1",
"title": "Programacao",
"topics": [
"desenvolvimento",
"software"
],
"maps_from_dify": "Desenvolvimento de Software"
},
{
"id": "ebee9fe1-78fd-4f85-8938-f19f3ea32131",
"title": "Obsidian + Claude",
"topics": [
"obsidian",
"claude",
"code"
],
"maps_from_dify": "Obsidian + Claude Code"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "98e74ec7-4b4d-4876-8321-7f26ae66c3a6",
"name": "Claude Code",
"priority": 1,
"document_count": 53,
"word_count": 1241283
},
{
"id": "02ca690a-a901-4034-9165-5ef42830f91e",
"name": "MCP Servers",
"priority": 1,
"document_count": 22,
"word_count": 158091
},
{
"id": "eafd864e-5331-4a1d-a7e2-603ec263e2e1",
"name": "VS Code",
"priority": 2,
"document_count": 52,
"word_count": 10450973
},
{
"id": "66ce30ab-a630-402b-8ae8-c3f44312e228",
"name": "Windsurf",
"priority": 2,
"document_count": 5,
"word_count": 98903
},
{
"id": "2e68ac58-12cc-4c6f-b000-2bfff8fe6fcb",
"name": "Claude Computer Use",
"priority": 2,
"document_count": 4,
"word_count": 17078
},
{
"id": "e7c7decc-0ded-4351-ab14-b110b3c38ec9",
"name": "Desenvolvimento de Software",
"priority": 1,
"document_count": 2,
"word_count": 534153
},
{
"id": "e38a510f-ca93-4407-8b44-c4c66efe01f8",
"name": "Obsidian + Claude Code",
"priority": 2,
"document_count": 121,
"word_count": 2292847
}
]
}
}
}

View File

@@ -2,7 +2,7 @@
name: chrome
description: Chrome browser integration for Claude Code. Navigate pages, fill forms, debug console, extract data, test web apps, automate tasks. Use when user mentions "chrome", "browser", "navegar site", "abrir pagina", "testar site", "preencher formulario", "extrair dados", "screenshot site", "google docs", "authenticated site", "gravar gif", "console errors".
author: Descomplicar® Crescimento Digital
version: 1.0.0
version: 2.0.0
quality_score: 80
user_invocable: true
allowed-tools: Bash, Read, Write, Glob
@@ -10,9 +10,13 @@ allowed-tools: Bash, Read, Write, Glob
# /chrome - Chrome Browser Integration
Integra Claude Code com o Chrome para automacao browser, testes, debug e extraccao de dados.
Integra Claude Code com o Chrome para automacao browser, testes, debug, performance e extraccao de dados. Suporta dois backends: **Claude in Chrome** (extensao) e **Chrome DevTools MCP** (npm).
## Pre-Requisitos
## Backends Disponiveis
### Backend A: Claude in Chrome (Extensao)
Extensao oficial Anthropic. Requer instalacao manual no browser.
| Requisito | Minimo | Verificar |
|-----------|--------|-----------|
@@ -24,29 +28,59 @@ Integra Claude Code com o Chrome para automacao browser, testes, debug e extracc
**Limitacoes:** Apenas Google Chrome (nao Brave/Arc). Nao suportado em WSL.
## Activacao
### Por sessao
**Activacao:**
```bash
# Por sessao
claude --chrome
```
### Por defeito (aliases .bashrc)
```bash
# Por defeito (alias .bashrc)
alias cc="claude --permission-mode bypassPermissions --chrome"
```
### Dentro de sessao activa
```
/chrome
# Seleccionar "Enabled by default"
```
# Dentro de sessao activa
/chrome -> "Enabled by default"
### Ver ferramentas disponiveis
```
# Ver ferramentas
/mcp -> seleccionar claude-in-chrome
```
### Backend B: Chrome DevTools MCP (npm)
Pacote oficial Google (`chrome-devtools-mcp`). Controla Chrome via DevTools Protocol. Nao requer extensao.
| Requisito | Minimo | Verificar |
|-----------|--------|-----------|
| Google Chrome | Instalado | `google-chrome --version` |
| Node.js | v18+ | `node --version` |
| chrome-devtools-mcp | latest | `claude mcp list` |
**Instalacao:**
```bash
claude mcp add chrome-devtools --scope user -- npx -y chrome-devtools-mcp@latest
```
**Activacao:**
```bash
# Lancar Chrome com remote debugging
google-chrome --remote-debugging-port=9222
# Reiniciar sessao Claude Code para carregar ferramentas
```
**Ferramentas disponibilizadas:**
- `page_navigate`, `page_go_back`, `page_go_forward` - Navegacao
- `page_screenshot` - Captura de ecra
- `page_click`, `page_type`, `page_select_option` - Interaccao
- `page_execute_javascript` - Executar JS no contexto da pagina
- `page_wait_for_selector` - Esperar por elementos
- `console_get_logs` - Ler consola (logs, errors, warnings)
- `network_get_requests`, `network_get_response_body` - Inspeccionar rede
- `dom_get_element`, `dom_query_selector` - Inspeccionar DOM
- `css_get_computed_styles`, `css_get_matched_styles` - Inspeccionar CSS
- `performance_start_trace`, `performance_stop_trace` - Gravar traces
- `performance_analyze_insight` - Metricas automaticas (LCP, TBT, CLS)
- `accessibility_get_tree` - Arvore de acessibilidade
- `storage_get_cookies`, `storage_get_local_storage` - Inspecionar storage
## Capacidades
### 1. Navegacao e Interaccao
@@ -58,32 +92,47 @@ alias cc="claude --permission-mode bypassPermissions --chrome"
### 2. Debug e Diagnostico
- Ler console logs, errors, warnings
- Inspeccionar DOM state
- Verificar network requests
- Inspeccionar DOM state e CSS computado
- Verificar network requests e response bodies
- Ler JavaScript errors em tempo real
- Inspeccionar cookies, localStorage, sessionStorage
### 3. Extraccao de Dados
### 3. Performance (DevTools MCP)
- Gravar performance traces completos
- Metricas automaticas: LCP, TBT, CLS, FCP, TTFB
- Identificar JavaScript nao utilizado
- Analise de recursos (tamanho, tempo de carga)
- Equivalente a Lighthouse audit on-demand
### 4. Acessibilidade (DevTools MCP)
- Arvore de acessibilidade completa
- Verificar roles ARIA, labels, estados
- Identificar elementos sem texto alternativo
### 5. Extraccao de Dados
- Extrair texto estruturado de paginas
- Scraping de tabelas, listas, precos
- Guardar dados como CSV/JSON local
- Ler conteudo de paginas autenticadas
- Ler conteudo de paginas autenticadas (Chrome extensao)
- Query DOM com selectores CSS/XPath
### 4. Testes Web
### 6. Testes Web
- Testar forms com dados invalidos
- Verificar UI contra mocks
- Validar user flows completos
- Testar responsividade
- Monitorizar network requests durante testes
### 5. Sites Autenticados
### 7. Sites Autenticados (Chrome extensao)
- Google Docs, Gmail, Sheets
- Notion, Slack web
- CRMs, dashboards
- Qualquer site com sessao activa no Chrome
### 6. Automacao
### 8. Automacao
- Data entry repetitivo
- Multi-site workflows
- Gravar demos como GIF
- Gravar demos como GIF (Chrome extensao)
- Preencher CRMs a partir de CSV
## Workflows Comuns
@@ -124,35 +173,77 @@ Verifica o meu calendario para reunioes amanha, depois para cada
reuniao com participante externo, pesquisa o site da empresa.
```
### Gravar demo GIF
### Gravar demo GIF (Chrome extensao)
```
Grava um GIF mostrando o fluxo de checkout, desde adicionar item
ao carrinho ate a pagina de confirmacao.
```
## Chrome vs Puppeteer vs WebFetch
### Performance audit (DevTools MCP)
```
Abre a pagina example.com, grava um performance trace durante 5 segundos
e analisa LCP, TBT e CLS. Sugere melhorias.
```
| Feature | Chrome (`--chrome`) | Puppeteer MCP | WebFetch |
|---------|-------------------|---------------|----------|
| Sessoes autenticadas | Sim | Nao | Nao |
| Janela visivel | Sim | Opcional | N/A |
| Sites privados | Sim (se logado) | Nao | Nao |
| Headless | Nao | Sim | Sim |
| Interaccao UI | Completa | Completa | Nao |
| Screenshots | Sim | Sim | Nao |
| Gravar GIF | Sim | Nao | Nao |
| Console logs | Sim | Sim | Nao |
| Sem Chrome | N/A | Funciona | Funciona |
| Context usage | Alto (tools loaded) | Medio | Baixo |
### Debug network (DevTools MCP)
```
Abre a pagina do dashboard, monitoriza os requests de API
e identifica quais estao a falhar ou demorar mais de 2 segundos.
```
### Inspeccionar acessibilidade (DevTools MCP)
```
Abre a pagina de contacto e verifica a arvore de acessibilidade.
Identifica elementos sem labels ou roles ARIA incorrectos.
```
### Debug CSS (DevTools MCP)
```
Abre a landing page e inspecciona os estilos computados do hero section.
Verifica se o layout esta correcto em diferentes larguras.
```
## Comparacao de Backends
| Feature | Chrome Extensao | DevTools MCP | Puppeteer MCP | WebFetch |
|---------|----------------|--------------|---------------|----------|
| Sessoes autenticadas | Sim | Sim (se Chrome aberto) | Nao | Nao |
| Janela visivel | Sim | Sim | Opcional | N/A |
| Sites privados | Sim (se logado) | Sim (se logado) | Nao | Nao |
| Headless | Nao | Opcional | Sim | Sim |
| Interaccao UI | Completa | Completa | Completa | Nao |
| Screenshots | Sim | Sim | Sim | Nao |
| Gravar GIF | Sim | Nao | Nao | Nao |
| Console logs | Sim | Sim (filtrados) | Sim | Nao |
| Network requests | Nao | Sim (detalhado) | Limitado | Nao |
| Performance traces | Nao | Sim (LCP/TBT/CLS) | Nao | Nao |
| Acessibilidade | Nao | Sim (a11y tree) | Nao | Nao |
| DOM/CSS inspection | Basico | Completo | Basico | Nao |
| Storage inspection | Nao | Sim (cookies/LS) | Nao | Nao |
| Requer extensao | Sim | Nao | Nao | Nao |
| Requer Chrome aberto | Sim | Sim (porta 9222) | Nao | Nao |
| Context usage | Alto | Medio | Medio | Baixo |
**Regra de decisao:**
- Precisa de login/sessao? -> **Chrome**
- Automacao headless? -> **Puppeteer MCP**
- Precisa de login/sessao + GIF? -> **Chrome Extensao**
- Debug/performance/network? -> **DevTools MCP**
- Automacao headless CI/CD? -> **Puppeteer MCP**
- Apenas ler conteudo publico? -> **WebFetch**
## Troubleshooting
### Extensao nao detectada
### DevTools MCP nao conecta
1. Verificar Chrome lancado com `--remote-debugging-port=9222`
2. Testar: `curl http://localhost:9222/json/version`
3. Verificar MCP registado: `claude mcp list`
4. Reiniciar sessao Claude Code
### DevTools MCP sem ferramentas
1. Verificar: `claude mcp list | grep chrome-devtools`
2. Se nao aparece: `claude mcp add chrome-devtools --scope user -- npx -y chrome-devtools-mcp@latest`
3. Reiniciar sessao Claude Code
### Extensao nao detectada (Chrome extensao)
1. Verificar extensao em `chrome://extensions`
2. Verificar versao Claude Code: `claude --version` (>= 2.0.73)
3. Confirmar Chrome aberto
@@ -183,12 +274,20 @@ ao carrinho ate a pagina de confirmacao.
# Chrome instalado?
google-chrome --version
# Native host configurado?
cat ~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json
# Claude Code compativel?
claude --version
# --- DevTools MCP ---
# MCP registado?
claude mcp list | grep chrome-devtools
# Chrome com debugging activo?
curl -s http://localhost:9222/json/version | head -5
# --- Chrome Extensao ---
# Native host configurado?
cat ~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json
# Host script existe?
ls -la ~/.claude/chrome/chrome-native-host
```

View File

@@ -196,7 +196,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
```javascript
// Pesquisar optimização MySQL
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "7f63ec0c-6321-488c-b107-980140199850",
query: "mysql index optimization slow query"
})

View File

@@ -14,6 +14,25 @@ allowed-tools: Glob
Desenvolvimento Next.js moderno (13+) com App Router e Server Components.
## Regra #48 - Dev Container (OBRIGATORIO)
**TODOS os projectos Next.js devem ser desenvolvidos no container dev.**
```
SSH: server="dev" (mcp__ssh-unified__ssh_execute)
Path: /root/Dev/<projecto>
Sync: auto -> /media/ealmeida/Dados/Dev/<projecto> (Syncthing)
```
**Workflow:**
1. `mcp__ssh-unified__ssh_execute server:"dev" command:"mkdir -p /root/Dev/<projecto>"`
2. Desenvolver e testar no container
3. `npm run build` no container antes de deploy
4. Deploy via EasyPanel a partir do container
5. Syncthing propaga automaticamente para PC local e colegas
**NUNCA:** `npx create-next-app` directamente no PC local para projectos colaborativos.
## Quando Usar
- Criar aplicações Next.js

View File

@@ -9,7 +9,7 @@ version: 1.2.0
user_invocable: true
tags: [php, laravel, symfony, api, backend, jwt, oauth, rest]
desk_task: 1477
allowed-tools: Read, Write, Edit, Bash, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs, mcp__dify-kb__dify_kb_retrieve_segments
allowed-tools: Read, Write, Edit, Bash, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs, mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments
category: dev
quality_score: 80
updated: "2026-02-04T18:00:00Z"
@@ -19,6 +19,8 @@ updated: "2026-02-04T18:00:00Z"
Skill para desenvolvimento PHP moderno seguindo padrões Descomplicar®.
> **Regra #48:** Projectos PHP/Laravel/Symfony devem ser desenvolvidos no **container dev** (`server:"dev"`, path `/root/Dev/<projecto>`). Sincroniza automaticamente com o PC local via Syncthing.
## Quando Usar
- Criar APIs RESTful
@@ -339,6 +341,14 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
### Como Consultar
```javascript
# PRIMARIO: NotebookLM (Gemini 2.5 RAG)
# mcp__notebooklm__notebook_query({notebook_id: "2876d1fe-5cea-4d98-8140-b0e1a81c6bc4", query: "<tema>"}) // Claude Code
# mcp__notebooklm__notebook_query({notebook_id: "73102308-70ef-403e-9be9-eae0cfc62d55", query: "<tema>"}) // Desenvolvimento de MCPs
# mcp__notebooklm__notebook_query({notebook_id: "57d9c6c9-48ba-4d83-8f71-cc890f348a53", query: "<tema>"}) // AI Code Editors
# mcp__notebooklm__notebook_query({notebook_id: "24947ffa-0019-448a-a340-2f4a275d2eb1", query: "<tema>"}) // Programacao
# mcp__notebooklm__notebook_query({notebook_id: "ebee9fe1-78fd-4f85-8938-f19f3ea32131", query: "<tema>"}) // Obsidian + Claude
# FALLBACK: Dify KB (se NotebookLM insuficiente)
// Pesquisar padrões Laravel
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "e7c7decc-0ded-4351-ab14-b110b3c38ec9",

View File

@@ -14,6 +14,8 @@ desk_task: 1478
Skill para desenvolvimento React seguindo padrões modernos (React 18+/19).
> **Regra #48:** Projectos React (incluindo Next.js) devem ser desenvolvidos no **container dev** (`server:"dev"`, path `/root/Dev/<projecto>`). Sincroniza automaticamente com o PC local via Syncthing.
## Quando Usar
- Desenvolver componentes React
@@ -492,7 +494,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
```javascript
// Pesquisar padrões React
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "e7c7decc-0ded-4351-ab14-b110b3c38ec9",
query: "react hooks state management"
})

View File

@@ -0,0 +1,448 @@
---
name: security-check
description: Comprehensive security audit for Node.js/PHP projects - dependency vulnerabilities, outdated packages, environment safety, type checking. Use before git commits.
domain: Dev
model: sonnet
priority: high
tags:
- security
- audit
- vulnerabilities
- npm
- composer
- mandatory
---
# /security-check - Security Audit Pre-Commit
Auditoria de segurança completa para projectos Node.js e PHP. **Obrigatória antes de commits** (Regra CLAUDE.md #47).
---
## Quando Usar
### OBRIGATÓRIO:
- Antes de `git commit`
- Antes de `git push`
- Antes de criar Pull Request
- Antes de deploy para produção
### RECOMENDADO:
- Após `pnpm add <package>` (especialmente AI SDKs)
- Semanalmente em projectos activos
- Após actualizar dependências major
---
## Workflow Completo
### 1. Detectar Tipo de Projecto
```bash
# Verificar package managers
if [ -f "package.json" ]; then
# Node.js detected
MANAGER="pnpm" # ou npm/yarn
elif [ -f "composer.json" ]; then
# PHP detected
MANAGER="composer"
fi
```
### 2. Dependency Security Audit
**Node.js:**
```bash
pnpm audit --json > ~/.claude-work/security-audit.json
```
**PHP:**
```bash
composer audit --format=json > ~/.claude-work/security-audit.json
```
**Parse resultados:**
- Contar: critical, high, moderate, low
- Identificar se são directas ou transitivas
- Listar pacotes afectados
### 3. Outdated Dependencies
**Node.js:**
```bash
pnpm outdated --json > ~/.claude-work/security-outdated.json
```
**Priorizar:**
- AI SDKs: langchain, together-ai, @tavily/core, @langchain/core
- Security packages: @auth/*, axios, form-data
- Framework core: next, react, prisma
### 4. Environment Safety Check
**Verificar ficheiros:**
```bash
# Lista de ficheiros a verificar
FILES=(.env .env.local .env.production .env.development)
for file in "${FILES[@]}"; do
if [ -f "$file" ]; then
# Verificar se tem placeholders ou keys reais
grep -E "(API_KEY|SECRET|TOKEN|PASSWORD)" "$file"
fi
done
```
**Validação:**
-`API_KEY=placeholder` (safe)
-`API_KEY=sk-proj-abc123...` (UNSAFE - real key)
### 5. Type Safety (se TypeScript)
```bash
# Verificar se é TypeScript
if [ -f "tsconfig.json" ]; then
pnpm type # ou tsc --noEmit
fi
```
### 6. Análise de Risco AI SDKs
**Padrões conhecidos:**
| Pacote | Risco | Acção |
|--------|-------|-------|
| `langchain` | Alto | Verificar @langchain/core |
| `together-ai` | Alto | form-data transitiva |
| `@tavily/core` | Alto | axios transitiva |
| `@platejs/ai` | Médio | lodash transitiva |
**Workflow AI SDKs:**
```bash
# 1. Verificar se @langchain/core está desactualizado
pnpm list @langchain/core
# 2. Se versão < 0.3.80 (vulnerável)
pnpm add @langchain/core@latest
# 3. Re-audit
pnpm audit
```
### 7. Gerar Relatório
**Formato output:**
```markdown
## Security Audit Report
**Status:** [✅ SAFE | ⚠️ ISSUES FOUND | ❌ CRITICAL]
**Data:** YYYY-MM-DD HH:MM
| Category | Status |
|----------|--------|
| Vulnerabilities | [N critical, M high, P moderate, Q low] |
| Outdated Packages | N total (M major updates) |
| Environment Safety | ✅ Placeholders only / ❌ Real keys found |
| Type Safety | ✅ 0 errors / ❌ N errors |
### Vulnerabilities Detail
#### Critical (N)
- package@version (via path) - description
- **Patched:** >=safe-version
- **Action:** [Override | Update | Replace]
#### High (M)
[...]
### Outdated Packages (Priority)
**AI SDKs:**
- langchain: current → latest
- @langchain/core: current → latest (SECURITY UPDATE)
**Framework:**
- next: current → latest
### Action Required
**Priority 1 (Critical):**
1. [Acção específica]
**Priority 2 (High):**
1. [Acção específica]
**Priority 3 (Maintenance):**
1. [Acção específica]
### Safe to Commit?
[✅ YES | ⚠️ YES (with documentation) | ❌ NO (fix critical first)]
**If YES with documentation:**
```
git commit -m "feat: feature X
Known vulnerabilities (will be resolved):
- package@version (severity) - waiting for upstream update
Mitigation: [explanation]
"
```
**If NO:**
Fix critical/high vulnerabilities first. See PROC-DEV-SEC-001 for guidance.
```
### 8. Criar Flag
```bash
touch ~/.claude-work/.last-security-audit
```
**Propósito:** Hook pre-git-commit verifica esta flag. Se existe e < 1h, permite commit.
---
## Recomendações Específicas
### Para Vulnerabilidades Transitivas
**Exemplo: form-data via together-ai**
```json
// package.json
{
"pnpm": {
"overrides": {
"form-data": ">=4.0.4"
}
}
}
```
Depois:
```bash
pnpm install
pnpm audit # Verificar se resolveu
```
### Para Dependências Incompatíveis
**Exemplo: @langchain/core desactualizado**
```bash
# langchain pina versão antiga
# Solução: instalar como dependência explícita
pnpm add @langchain/core@latest
```
### Para Vulnerabilidades Críticas
**Workflow:**
1. Verificar se há fix disponível
2. Se sim: actualizar
3. Se não: avaliar alternativas ao package
4. Se nenhuma: escalar para Security Compliance Specialist
---
## Output Examples
### Exemplo 1: Clean (0 vulnerabilities)
```
## Security Audit Report
**Status:** ✅ SAFE
**Data:** 2026-02-14 03:00
| Category | Status |
|----------|--------|
| Vulnerabilities | 0 (all categories) ✅ |
| Outdated Packages | 3 (1 major) |
| Environment Safety | ✅ Placeholders only |
| Type Safety | ✅ 0 errors |
### Outdated Packages
**Framework:**
- next: 16.1.6 → 16.2.0 (minor)
**Action Required:** Optional - update at convenience
### Safe to Commit?
✅ **YES** - No security issues found
Created flag: ~/.claude-work/.last-security-audit
```
### Exemplo 2: Transitivas (precisa overrides)
```
## Security Audit Report
**Status:** ⚠️ ISSUES FOUND (transitivas)
**Data:** 2026-02-14 03:00
| Category | Status |
|----------|--------|
| Vulnerabilities | 0 critical, 0 high, 2 moderate, 1 low |
| Outdated Packages | 5 (2 major) |
| Environment Safety | ✅ Placeholders only |
| Type Safety | ✅ 0 errors |
### Vulnerabilities Detail
#### Moderate (2)
- lodash@4.17.21 (via @platejs/ai)
- **Issue:** Prototype pollution
- **Patched:** >=4.17.23
- **Action:** Override
- undici@6.22.0 (via @platejs/juice → cheerio)
- **Issue:** Resource exhaustion
- **Patched:** >=6.23.0
- **Action:** Override
#### Low (1)
- cookie@0.6.0 (via @auth/core)
- **Issue:** Out of bounds characters
- **Patched:** >=0.7.0
- **Action:** Override
### Recommended Fix
Add to package.json:
```json
{
"pnpm": {
"overrides": {
"lodash": ">=4.17.23",
"undici": ">=6.23.0",
"cookie": ">=0.7.0"
}
}
}
```
Then run: `pnpm install && pnpm audit`
### Safe to Commit?
⚠️ **YES (with documentation)**
Document in commit message:
- 3 moderate/low vulnerabilities (all transitivas)
- Fixed with pnpm.overrides
```
### Exemplo 3: Critical (bloquear commit)
```
## Security Audit Report
**Status:** ❌ CRITICAL
**Data:** 2026-02-14 03:00
| Category | Status |
|----------|--------|
| Vulnerabilities | 1 critical, 0 high, 0 moderate, 0 low |
| Outdated Packages | 8 (3 major) |
| Environment Safety | ✅ Placeholders only |
| Type Safety | ✅ 0 errors |
### Vulnerabilities Detail
#### Critical (1)
- form-data@4.0.3 (via together-ai → @types/node-fetch)
- **Issue:** Unsafe random function in boundary selection
- **Patched:** >=4.0.4
- **Action:** Override OR replace together-ai
### Immediate Action Required
**Option 1: Override (quick fix)**
```json
{
"pnpm": {
"overrides": {
"form-data": ">=4.0.4"
}
}
}
```
**Option 2: Evaluate alternatives**
- Check if together-ai is essential
- Evaluate alternative AI SDKs
- Contact Security Compliance Specialist
### Safe to Commit?
**NO** - Fix critical vulnerability first
DO NOT create flag. DO NOT commit.
```
---
## Integration
### Com Hook pre-git-commit
Hook verifica:
```bash
~/.claude-work/.last-security-audit
```
Se ficheiro existe e < 1h → permite commit
Se não existe ou > 1h → **BLOQUEIA** commit
### Com /time
```bash
# Workflow típico
/time start 1446 # Tarefa Desk
# ... fazer alterações ...
/security-check # Antes de commit
git commit
/time stop
```
### Com /worklog
```bash
# No worklog, mencionar se audit foi executado
/worklog
# → Incluirá "Security audit: ✅ 0 vulnerabilities"
```
---
## Escalação
| Situação | Escalar Para |
|----------|--------------|
| Vulnerabilidades críticas não corrigíveis | Security Compliance Specialist |
| Dúvidas sobre overrides | Development Lead |
| Múltiplas vulnerabilidades altas | /security-check + manual review |
| Alternativas a packages | Research Analyst |
---
## Referências
- [CLAUDE.md Regra #47](/home/ealmeida/.claude/CLAUDE.md)
- [PROC-DEV-SEC-001](/media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Seguranca/PROC-DEV-SEC-001-Security-Audit.md)
- [Agent dev-helper v2.1](/home/ealmeida/.claude/plugins/marketplaces/descomplicar-plugins/dev-tools/agents/dev-helper.md)
- [NPM Audit](https://docs.npmjs.com/cli/v10/commands/npm-audit)
- [PNPM Audit](https://pnpm.io/cli/audit)
- [Composer Audit](https://getcomposer.org/doc/03-cli.md#audit)
---
**Skill v1.0** | 2026-02-14 | Descomplicar®
**Security First** - Zero vulnerabilities ou documentadas

View File

@@ -1,12 +1,21 @@
{
"name": "gestao",
"description": "Project management, time tracking, daily checkups, worklogs, reflections, knowledge management, archiving and compliance auditing. Backed by 6 Dify KB datasets.",
"version": "1.2.1",
"version": "1.3.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
},
"homepage": "https://git.descomplicar.pt/ealmeida/descomplicar-plugins",
"license": "MIT",
"keywords": ["gestao", "projectos", "tempo", "worklog", "produtividade", "conhecimento", "compliance", "audit"]
"keywords": [
"gestao",
"projectos",
"tempo",
"worklog",
"produtividade",
"conhecimento",
"compliance",
"audit"
]
}

View File

@@ -5,6 +5,15 @@ role: Especialista em análise de dados e business intelligence
domain: Marketing, Business
model: sonnet
tools: Read, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- google-analytics
recommended_mcps:
- dify-kb
- memory-supabase
- gsc
skills:
- _core
desk_task: 1491
@@ -127,7 +136,15 @@ Você é um analista de dados experiente especializado em:
4. Recomendar acções de retenção
```
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"analytics metricas KPIs"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Marketing Digital" query:"analytics metricas KPIs"

View File

@@ -0,0 +1,529 @@
---
name: compliance-auditor
description: USAR PROATIVAMENTE para compliance audit, verificar regras, validar processos, check standards, audit procedures, quality gates, code compliance. Auditor de conformidade que garante seguimento das 47 Regras CLAUDE.md, procedimentos Hub, standards de código e processos estabelecidos
role: Auditor de Conformidade - Valida que regras, procedimentos, standards e processos estão a ser seguidos em todos os projectos e operações
domain: Gestão
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- filesystem
recommended_mcps:
- gitea
- memory-supabase
- wikijs
skills:
- _core
- today
- worklog
desk_task: null
desk_project: 65
milestone: null
tags:
- agent
- compliance
- audit
- quality
- gestao
version: '1.0'
status: active
quality_score: 85
compliance:
sacred_rules: true
excellence_standards: true
data_sources: true
knowledge_first: true
created: '2026-02-14'
updated: '2026-02-14'
author: Descomplicar®
---
# Compliance Auditor - Auditor de Conformidade Descomplicar®
Especialista em auditoria de conformidade responsável por garantir que todas as regras, procedimentos, standards e processos estabelecidos estão a ser seguidos em projectos, código e operações.
---
## 🎯 Responsabilidades
### 1. Auditoria de Regras CLAUDE.md
- Verificar conformidade com as **47 Regras** do CLAUDE.md
- Identificar violações e propor correções
- Validar que novos agentes/skills seguem as regras
- Monitorizar compliance contínua
### 2. Validação de Procedimentos
- Verificar que procedimentos (PROC-*) estão a ser seguidos
- Auditar se skills/agents referenciam procedimentos correctamente
- Validar que não há duplicação de procedimentos
- Garantir estrutura departamental correcta
### 3. Standards de Código
- **Regra #47:** Validar que security audit foi executado
- Verificar qualidade de código (linting, formatting)
- Validar estrutura de projectos
- Verificar nomenclatura e convenções
### 4. Processos e Workflows
- Validar Phase Gates (G1-G4) em projectos
- Verificar que SPEC.md existe quando necessário
- Auditar processo de git (commits, branches, PRs)
- Validar workflows N8N e automações
### 5. Documentação
- Verificar README.txt em projectos (Regra #23)
- Validar frontmatter em ficheiros markdown
- Auditar INDEX.md em pastas de procedimentos
- Verificar referências cruzadas (Regra #26)
---
## 📋 Tipos de Auditoria
### Auditoria de Projeto
```
INPUT: Path do projecto
OUTPUT: Relatório compliance com score 0-100
Verifica:
✓ .desk-project existe (Regra #23)
✓ README.txt com info do Desk (Regra #23)
✓ Security audit no último commit (Regra #47)
✓ Git hooks instalados
✓ Estrutura de pastas correcta
✓ Documentação presente
✓ Backups configurados (Regra #31)
```
### Auditoria de Código
```
INPUT: Path do ficheiro ou projecto
OUTPUT: Issues de compliance + sugestões
Verifica:
✓ Security vulnerabilities (pnpm audit)
✓ Linting passes
✓ Formatting correcto
✓ Sem API keys hardcoded (Regra #38)
✓ Sem TODO/FIXME antigos
✓ Comments adequados
```
### Auditoria de Skill/Agent
```
INPUT: Path do componente
OUTPUT: Score 0-10 + relatório
Verifica:
✓ Secção "Referências e Documentação" existe
✓ Links file:// para procedimentos relevantes
✓ Sem procedimentos embeddados (>100 linhas)
✓ Frontmatter completo e correcto
✓ Description clara e triggering adequado
✓ Segue padrão do plugin
```
### Auditoria de Procedimento
```
INPUT: Path PROC-*.md
OUTPUT: Validação estrutura + compliance
Verifica:
✓ Código correcto: [DEPT]-[TEMA]-[NUM]
✓ Frontmatter completo
✓ Departamento correcto
✓ INDEX.md actualizado
✓ Status válido (draft/active/archived)
✓ Sem duplicação de conteúdo
```
### Auditoria de Regras CLAUDE.md
```
INPUT: Contexto de trabalho ou projecto
OUTPUT: Violações detectadas + prioridade
Verifica cada regra:
✓ Regra #1: Zero Assumptions
✓ Regra #2: Dados Reais (MCPs)
...
✓ Regra #47: Security Audit Pre-Commit
```
---
## 🔍 Workflows
### Workflow 1: Auditoria Completa de Projeto
```bash
1. IDENTIFICAR projeto
- Path fornecido ou .desk-project
- Obter contexto do Desk CRM
2. VERIFICAR estrutura
- Ficheiros obrigatórios presentes?
- Pastas seguem convenção?
- Git configurado correctamente?
3. AUDITAR código
- Security audit (Regra #47)
- Quality checks (linting, formatting)
- API keys expostas? (Regra #38)
4. VALIDAR processos
- Commits seguem template?
- Branches correctas?
- CI/CD configurado?
5. VERIFICAR documentação
- README.txt (Regra #23)
- SPEC.md se aplicável
- Comentários adequados?
6. GERAR relatório
- Score global 0-100
- Issues por categoria
- Recomendações prioritárias
- Acções correctivas
```
### Workflow 2: Auditoria de Compliance com Regra #47
```bash
1. VERIFICAR git hooks instalados
- ~/.git/templates/hooks/pre-commit existe?
- Hook no projecto (.git/hooks/pre-commit)?
- Hook é executável?
2. ANALISAR últimos commits
- Security audit mencionado?
- Vulnerabilidades documentadas?
- Formato correcto?
3. EXECUTAR audit agora
- pnpm/npm/yarn audit
- composer audit (PHP)
- safety check (Python)
4. VALIDAR resultados
- 0 vulnerabilidades? ✅
- Vulnerabilidades documentadas? ⚠️
- Vulnerabilidades não documentadas? ❌
5. REPORTAR
- Status compliance
- Acções necessárias
- Timeline de correção
```
### Workflow 3: Auditoria de Skills/Agents
```bash
1. LER componente completo
- Frontmatter
- Description
- System prompt (agents)
- Conteúdo SKILL.md
2. VERIFICAR referenciação
- Secção "Referências e Documentação"?
- Links file:// para PROCs?
- Descrição clara de cada PROC?
3. DETECTAR procedimentos embeddados
- Checklists longas (>10 itens)?
- Troubleshooting extenso?
- Standards detalhados?
- Workflows complexos?
4. AVALIAR qualidade
- Description triggering adequado?
- Frontmatter completo?
- Estrutura de pastas correcta?
5. GERAR score 0-10
- 8-10: Excelente
- 5-7: Atenção (melhorias sugeridas)
- 0-4: Crítico (refactoring necessário)
```
---
## 📊 Formato de Relatório
### Relatório de Auditoria de Projeto
```markdown
# Relatório Compliance: [Nome Projeto]
**Data:** YYYY-MM-DD HH:MM
**Auditor:** compliance-auditor v1.0
**Score Global:** X/100
---
## Resumo Executivo
[Parágrafo resumo: projeto está compliant ou não, principais issues]
---
## Conformidade por Categoria
### 1. Estrutura de Projeto (X/20)
- [✅/❌] .desk-project existe
- [✅/❌] README.txt presente
- [✅/❌] Git configurado
- [✅/❌] Pastas seguem convenção
### 2. Security & Code Quality (X/30)
- [✅/❌] Security audit executado (Regra #47)
- [✅/❌] Git hooks instalados
- [✅/❌] 0 vulnerabilidades critical/high
- [✅/❌] Linting passes
- [✅/❌] Sem API keys hardcoded
### 3. Processos (X/25)
- [✅/❌] Commits seguem template
- [✅/❌] SPEC.md quando aplicável
- [✅/❌] Phase gates validados
- [✅/❌] CI/CD configurado
### 4. Documentação (X/15)
- [✅/❌] README completo
- [✅/❌] Comments adequados
- [✅/❌] Changelog mantido
### 5. Regras CLAUDE.md (X/10)
- [✅/❌] Sem violações detectadas
- [✅/❌] Backup configurado (Regra #31)
- [✅/❌] Refs cruzadas (Regra #26)
---
## Issues Detectadas
### 🔴 Críticas (Bloqueiam Deploy)
1. **[Categoria] - [Issue]**
- Descrição
- Impacto
- Regra violada: #X
- Acção: [passo a passo]
### ⚠️ Avisos (Recomendado Corrigir)
1. **[Categoria] - [Issue]**
- Descrição
- Sugestão
### Informativas
1. **[Categoria] - [Observação]**
- Descrição
- Opcional
---
## Recomendações Prioritárias
1. [Acção imediata P1]
2. [Acção importante P2]
3. [Melhoria opcional P3]
---
## Timeline de Correção
- **Críticas:** <24h
- **Avisos:** <1 semana
- **Informativas:** Próximo sprint
---
## Próxima Auditoria
Data sugerida: [+1 mês ou após correções]
```
---
## 🎯 Critérios de Compliance
### Score 90-100 (Excelente)
- ✅ Todas as regras seguidas
- ✅ 0 issues críticas
- ✅ Documentação completa
- ✅ Security audit passing
- ✅ Processos validados
### Score 70-89 (Bom)
- ✅ Maioria regras seguidas
- ⚠️ Issues menores apenas
- ✅ Documentação presente
- ✅ Security OK
### Score 50-69 (Aceitável)
- ⚠️ Algumas violações
- ⚠️ Issues médias
- ⚠️ Documentação incompleta
- ⚠️ Security com avisos
### Score 30-49 (Crítico)
- ❌ Violações importantes
- ❌ Issues críticas
- ❌ Pouca documentação
- ❌ Security vulnerável
### Score 0-29 (Bloqueado)
- ❌ Múltiplas violações críticas
- ❌ Sem documentação
- ❌ Security comprometido
- 🚫 **Deploy BLOQUEADO**
---
## 📚 Referências e Documentação
**SEMPRE consultar antes de auditar:**
### Regras Core
- **[CLAUDE.md global](file:///home/ealmeida/.claude/CLAUDE.md)** - 47 Regras obrigatórias
- **[CLAUDE.md Hub](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Regras específicas Hub
### Procedimentos
- **[INDEX Procedimentos](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - 36 procedimentos, 8 departamentos
- **[D7-Tecnologia](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/D7-Tecnologia/INDEX.md)** - 28 procedimentos técnicos
### Standards e Templates
- **[Security Audit Analysis](file:///home/ealmeida/.claude/projects/-media-ealmeida-Dados-Hub/memory/security-incident-analysis.md)** - Regra #47 detalhada
- **[Commit Template](file:///home/ealmeida/.git/templates/COMMIT_MSG_SECURITY_TEMPLATE.txt)** - Template commits security
### Skills de Validação
- **/validate-component** - Validar skills/agents
- **/index-update** - Validar INDEX.md
- **/proc-creator** - Criar procedimentos
---
## 🔄 Integração com Sistema
### Triggers Automáticos
- **Pre-commit hook:** Validar antes de commit
- **Pre-deploy:** Auditar antes de deploy
- **Weekly:** Auditoria semanal de projectos activos
- **Monthly:** Auditoria completa de compliance
### Integrações
- **Desk CRM:** Reportar issues como tarefas
- **Git:** Bloquear commits não-compliant
- **CI/CD:** Quality gate em pipeline
- **/today:** Secção compliance diária
---
## 🚨 Anti-Patterns
**NUNCA:**
- ❌ Aprovar projeto com score <50
- ❌ Ignorar violações de regras críticas (Regra #47, #38, #23)
- ❌ Auditar sem ler as regras actualizadas
- ❌ Sugerir correções que violam outras regras
- ❌ Dar score sem justificação detalhada
**SEMPRE:**
- ✅ Ler CLAUDE.md antes de auditar
- ✅ Verificar regras actualizadas (changelog)
- ✅ Consultar procedimentos relevantes
- ✅ Gerar relatório estruturado
- ✅ Propor acções correctivas concretas
- ✅ Validar que correções não quebram outras regras
---
## 📈 Métricas de Sucesso
### Indicadores Primários
1. **Taxa de Compliance:** Meta >85% projectos com score >70
2. **Violações Críticas:** Meta 0 violações de Regras #1-#10
3. **Security Compliance:** Meta 100% projectos com Regra #47
4. **Tempo Correção:** Meta <7 dias para issues críticas
### Indicadores Secundários
5. **Auditorias Regulares:** Meta mensal por projecto
6. **Issues Recorrentes:** Meta <10% reincidência
7. **Documentação:** Meta 100% projectos com README.txt
8. **Processos:** Meta 90% commits seguem template
---
## 🤝 Colaboração
### Reports to
- Emanuel Almeida (decisões de compliance)
- Master Orchestrator (coordenação multi-agente)
### Colabora com
- **security-compliance-specialist:** Security audits
- **dev-helper:** Code quality
- **worklog-agent:** Tracking de compliance
- **spec-writer:** Validação de specs
### Delega para
- **validate-component:** Validação skills/agents específica
- **security-auditor:** Análise vulnerabilidades (quando criado)
---
## 📞 Comandos Rápidos
```bash
# Auditar projeto actual
compliance-auditor audit .
# Auditar projeto específico
compliance-auditor audit /path/to/project
# Auditar skill/agent
compliance-auditor validate-component /path/to/skill
# Verificar Regra #47
compliance-auditor check-security-audit .
# Auditoria de procedimento
compliance-auditor validate-proc /path/to/PROC-*.md
# Relatório compliance geral
compliance-auditor report-all
```
---
## 🔧 MCPs Disponíveis
### Primary MCPs
- **desk-crm-v3:** Reportar issues, criar tarefas
- **filesystem:** Ler ficheiros, estrutura projecto
### Recommended
- **gitea:** Verificar repos, commits, branches
- **memory-supabase:** Guardar padrões de compliance
- **wikijs:** Consultar KB de standards
---
## 🎓 Skills Disponíveis
### Primary Skills
- **/validate-component:** Validar skills/agents para compliance
- **/today:** Incluir secção compliance no checkup diário
- **/worklog:** Registar auditorias e issues
### Core Skills
- **/_core:** Sacred Rules e Excellence Standards
- **/knowledge:** Consultar KB de standards
- **/desk:** Contexto projeto via .desk-project
---
*Agent v1.0.0 | 2026-02-14 | Plugin gestao | Descomplicar®*
*Created em resposta ao incidente de segurança - Sistema de 5 Camadas de Defesa*

View File

@@ -8,6 +8,15 @@ role: USAR PROATIVAMENTE para project management, Agile, Scrum, Kanban, planning
domain: Business
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- google-workspace
recommended_mcps:
- memory-supabase
- mcp-time
- gitea
skills:
- _core
desk_task: 1513
@@ -43,7 +52,17 @@ Gestor de projetos especializado em metodologias Agile/Scrum, planeamento estrat
- Identificar riscos e implementar estrategias de mitigacao
- Garantir qualidade de entregas e optimizacao de processos
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"Agile Scrum Kanban planeamento"
mcp__notebooklm__notebook_query notebook_id:"79d43410-0e29-4be1-881d-84db6bdc239a" query:"planeamento estrategico riscos"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao de Projetos" query:"Agile Scrum Kanban planeamento"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao" query:"recursos equipas timelines"

View File

@@ -6,6 +6,14 @@ role: Auto-reflexão e melhoria contínua do sistema
domain: Dev
model: sonnet
tools: Read, Write, Edit, Glob, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- memory-supabase
recommended_mcps:
- filesystem
- mcp-time
skills:
- _core
- reflect
@@ -99,7 +107,8 @@ Corre silenciosamente sem interromper fluxo principal.
- Usage: `mcp__memory-supabase__*`
### Recommended for knowledge
- **dify-kb** - Knowledge base AI
- **notebooklm** - KB primaria (Gemini 2.5 RAG) - `mcp__notebooklm__notebook_query`
- **dify-kb** - Knowledge base AI (fallback)
- **wikijs** - Wiki documentation
- **design-systems** - Knowledge base W3C standards, WCAG, design system best pract
- **outline-api** - Outline documentation

View File

@@ -7,6 +7,15 @@ role: Especialista em planeamento e gestao de projetos de software, metodologias
domain: Business
model: sonnet
tools: Read, Write, Edit, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- desk-crm-v3
- google-workspace
recommended_mcps:
- dify-kb
- memory-supabase
- gitea
skills:
- _core
desk_task: 1517
@@ -42,7 +51,18 @@ Especialista em planeamento de projectos de software, metodologias ageis e coord
- Gerir riscos tecnicos e criar planos de contingencia
- Garantir qualidade de entregas e comunicacao com stakeholders
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"planeamento software agile sprints"
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"arquitectura delivery ciclo vida"
mcp__notebooklm__notebook_query notebook_id:"79d43410-0e29-4be1-881d-84db6bdc239a" query:"roadmap prioridades valor"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao de Projetos" query:"planeamento software agile sprints"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"arquitectura delivery ciclo vida"

View File

@@ -5,6 +5,14 @@ role: Especialista em gestão temporal e timesheets
domain: Productivity, Business
model: sonnet
tools: Read, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- mcp-time
- desk-crm-v3
recommended_mcps:
- memory-supabase
- google-workspace
mcps:
- mcp-time
- desk-crm-v3

View File

@@ -5,6 +5,16 @@ role: Especialista em gestão de conhecimento e Wiki.js
domain: Knowledge, Documentation
model: sonnet
tools: Read, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- wikijs
- desk-crm-v3
recommended_mcps:
- notebooklm
- dify-kb
- memory-supabase
- outline-api
mcps:
- wikijs
- desk-crm-v3
@@ -86,7 +96,11 @@ Você é um gestor de conhecimento especializado em:
### Integração Multi-Sistema
1. **Wiki.js ↔ Dify KB**
1. **Wiki.js ↔ NotebookLM** (primario)
- Pesquisa conhecimento curado (Gemini 2.5 RAG)
- Enriquecimento com contexto profundo
2. **Wiki.js ↔ Dify KB** (fallback)
- Sincronização de artigos técnicos
- Enriquecimento com AI
- Validação de consistência
@@ -111,7 +125,12 @@ Você é um gestor de conhecimento especializado em:
- `update_page` - Actualizar existente
- `delete_page` - Remover página
### dify-kb (SECONDARY)
### notebooklm (SECONDARY - Knowledge primaria)
- Gemini 2.5 RAG com conhecimento curado
- Pesquisa semântica profunda
- Usage: `mcp__notebooklm__notebook_query notebook_id:"<id>" query:"<tema>"`
### dify-kb (TERTIARY - Fallback)
- Enriquecimento AI de artigos
- Pesquisa semântica
- Sugestões de conteúdo

View File

@@ -1,12 +1,92 @@
{
"description": "Dify KB datasets for Gestao domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "22799925-8dc5-4a1f-92b9-233468a5048b", "name": "Gestao", "priority": 1, "document_count": 86, "word_count": 9137325},
{"id": "e2b1cd92-aa72-4404-8bf3-9f5bf16b044a", "name": "Gestao de Projetos", "priority": 1, "document_count": 41, "word_count": 14018064},
{"id": "cae2a27e-f5bc-4d75-8a7a-9f83064f2512", "name": "Gestao de Processos", "priority": 1, "document_count": 3, "word_count": 732099},
{"id": "73ec984b-3da2-4cfd-9f83-5f6b02b877b4", "name": "Estrategia", "priority": 2, "document_count": 50, "word_count": 8348608},
{"id": "8ce4429f-8cf6-43b5-869d-75c8e1b461e8", "name": "Produtividade", "priority": 2, "document_count": 5, "word_count": 612301},
{"id": "8eb4682b-eff2-4366-a577-18b698d900da", "name": "Escrever PT-PT", "priority": 2, "document_count": 2, "word_count": 79968}
]
}
"description": "Knowledge sources (NotebookLM + Dify KB) for Gestao domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "0c9c079c-a426-486c-99eb-1564d42d37ad",
"title": "Gestao de Projectos e Agile",
"topics": [
"gestao"
],
"maps_from_dify": "Gestao"
},
{
"id": "f9dc59c2-718b-4b12-bd06-095d4bfa3e34",
"title": "Gestao de Operacoes",
"topics": [
"gestao",
"processos"
],
"maps_from_dify": "Gestao de Processos"
},
{
"id": "79d43410-0e29-4be1-881d-84db6bdc239a",
"title": "Estrategia e Empreendedorismo",
"topics": [
"estrategia"
],
"maps_from_dify": "Estrategia"
},
{
"id": "ebee9fe1-78fd-4f85-8938-f19f3ea32131",
"title": "Obsidian + Claude",
"topics": [
"produtividade"
],
"maps_from_dify": "Produtividade"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "22799925-8dc5-4a1f-92b9-233468a5048b",
"name": "Gestao",
"priority": 1,
"document_count": 86,
"word_count": 9137325
},
{
"id": "e2b1cd92-aa72-4404-8bf3-9f5bf16b044a",
"name": "Gestao de Projetos",
"priority": 1,
"document_count": 41,
"word_count": 14018064
},
{
"id": "cae2a27e-f5bc-4d75-8a7a-9f83064f2512",
"name": "Gestao de Processos",
"priority": 1,
"document_count": 3,
"word_count": 732099
},
{
"id": "73ec984b-3da2-4cfd-9f83-5f6b02b877b4",
"name": "Estrategia",
"priority": 2,
"document_count": 50,
"word_count": 8348608
},
{
"id": "8ce4429f-8cf6-43b5-869d-75c8e1b461e8",
"name": "Produtividade",
"priority": 2,
"document_count": 5,
"word_count": 612301
},
{
"id": "8eb4682b-eff2-4366-a577-18b698d900da",
"name": "Escrever PT-PT",
"priority": 2,
"document_count": 2,
"word_count": 79968
}
]
}
}
}

View File

@@ -0,0 +1,144 @@
---
name: aiktop-tasks
description: >
Executa tarefas agendadas para AikTop no Desk CRM. Detecta tarefas vencidas com tag "aiktop" atribuídas ao staff 25, executa a instrução da descrição, fecha a tarefa e comenta o resultado. Invocado automaticamente por cron no dev server a cada 15 min. Use when "aiktop tasks", "executar tarefas aiktop", "task queue ai".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: management
tags: [aiktop, automacao, task-queue, desk-crm]
desk_task: 1755
desk_project: 65
allowed-tools: Read, mcp__desk-crm-v3, mcp__mcp-time, mcp__ssh-unified, mcp__imap, mcp__memory-supabase
mcps: [desk-crm-v3, mcp-time]
---
# /aiktop-tasks v1.0
Executa automaticamente tarefas agendadas para o AikTop no Desk CRM.
---
## Protocolo
### Passo 1: Obter data actual
```
mcp__mcp-time__current_time → data hoje (YYYY-MM-DD)
```
### Passo 2: Recolher tarefas AikTop pendentes
```
mcp__desk-crm-v3__get_tasks({
assignee: 25,
tags: ["aiktop"],
status: [1, 4],
due_date_to: hoje
})
SE 0 tarefas → registar "Nenhuma tarefa AikTop pendente" e terminar.
```
### Passo 3: Para cada tarefa (por ordem de prioridade)
```
1. mcp__desk-crm-v3__update_task({ task_id, status: 4 })
→ Marcar "Em progresso"
2. LER task.name + task.description
→ A descrição É a instrução completa para o claude executar
3. EXECUTAR a instrução descrita na tarefa
→ Usar os MCPs disponíveis conforme necessário
→ Guardar resultado/output
4. mcp__desk-crm-v3__update_task({ task_id, status: 5 })
→ Marcar "Concluída"
5. mcp__desk-crm-v3__add_task_comment({
task_id,
content: html_resultado,
staff_id: 25
})
→ Comentar com o resultado da execução
```
### Passo 4: Resumo final
```
SE invocado via cron (não interactivo):
→ Escrever em ~/.claude-work/aiktop-tasks-{date}.log
SE invocado directamente:
→ Mostrar output markdown ao utilizador
```
---
## Formato Comentário de Resultado (HTML)
```html
<h4>Tarefa executada — YYYY-MM-DD HH:MM</h4>
<p><strong>Instrução:</strong> [nome da tarefa]</p>
<p><strong>Resultado:</strong> Concluído | Parcial | Erro</p>
<h4>Output</h4>
<ul>
<li>[resultado principal]</li>
<li>[dados relevantes]</li>
</ul>
<p><em>Executado automaticamente por /aiktop-tasks v1.0</em></p>
```
---
## Protocolo de Criação de Tarefas AikTop
> Para agendar trabalho para o AikTop, criar tarefa Desk CRM com:
| Campo | Valor |
|-------|-------|
| **Assignee** | AikTop (staff 25) |
| **Tag** | `aiktop` (obrigatório) |
| **Nome** | O que fazer (breve) |
| **Descrição** | Instrução completa — o claude vai executar isto literalmente |
| **Due date** | Quando executar |
| **Prioridade** | Conforme urgência |
**Exemplos de descrições válidas:**
- "Verificar logs `/root/Dev/imap-cleaner/cron.log` e `/root/Dev/auto-expense/auto-expense.log`. Reportar se houve erros ou se o pipeline correu bem."
- "Correr /imap-triage e reportar faturas detectadas."
- "Verificar tarefas overdue no Desk CRM e sugerir as 3 mais urgentes."
---
## Wrapper Script (dev server)
```bash
# /root/Dev/aiktop-tasks/run-aiktop-tasks.sh
#!/bin/bash
export IS_SANDBOX=1
LOG="$HOME/Dev/aiktop-tasks/aiktop-tasks.log"
echo "$(date) [START] A verificar tarefas AikTop..." >> "$LOG"
claude --print --dangerously-skip-permissions "/aiktop-tasks" < /dev/null >> "$LOG" 2>&1
EXIT_CODE=$?
echo "$(date) [END] exit=$EXIT_CODE" >> "$LOG"
exit $EXIT_CODE
```
**Cron:** `*/15 * * * * /root/Dev/aiktop-tasks/run-aiktop-tasks.sh`
---
## Anti-Patterns
- NUNCA executar tarefas sem tag `aiktop` (filtro de segurança)
- NUNCA fechar tarefa sem adicionar comentário com resultado
- NUNCA ignorar tarefas com status 4 (em progresso) — podem ter ficado presas
- SEMPRE executar por ordem de prioridade (4=Urgente primeiro)
- NUNCA assumir que a descrição é sempre simples — pode invocar outras skills
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -444,7 +444,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
```javascript
// Pesquisar técnicas de gestão de tempo
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "8ce4429f-8cf6-43b5-869d-75c8e1b461e8",
query: "blocos de foco time blocking"
})

View File

@@ -0,0 +1,140 @@
---
name: daily-digest
description: >
Resumo diario do estado operacional - timer activo, tickets abertos, facturas vencidas, leads novos, propostas pendentes e agenda do dia. Use when "resumo", "digest", "estado do dia", "dashboard", "metricas dia".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: management
tags: [digest, dashboard, daily, tickets, invoices, leads, calendar]
desk_task: 1710
desk_project: 65
allowed-tools: Read, Write, mcp__desk-crm-v3, mcp__google-workspace, mcp__mcp-time
mcps: desk-crm-v3, google-workspace, mcp-time
dependencies:
mcps: [desk-crm-v3, google-workspace, mcp-time]
triggers:
- "User asks for daily summary"
- "User mentions 'resumo', 'digest', 'estado do dia'"
- "Invoked by /today orchestrator"
---
# /daily-digest v1.0
Recolhe e apresenta o estado operacional do dia.
---
## Protocolo
### Passo 1: Recolher Dados (paralelo)
> Executar TUDO em paralelo para minimizar tempo.
```
Em paralelo:
1. TIMER ACTIVO
Verificar ~/.claude-work/active-timer.json
Se activo: mostrar tarefa, duracao
Se >4h: alertar "Timer activo ha muito tempo!"
2. TICKETS ABERTOS
mcp__desk-crm-v3__get_tickets({ status: [1,2,3], limit: 20 })
Contar por prioridade
3. FACTURAS VENCIDAS
mcp__desk-crm-v3__overdue_invoices_report()
Total valor + contagem
4. LEADS NOVOS
mcp__desk-crm-v3__get_leads({ status: [7,14], limit: 20 })
Leads com status 7 (Novo) ou 14
5. PROPOSTAS PENDENTES
mcp__desk-crm-v3__get_estimates({ status: 4, limit: 20 })
Estimates com status "To Do"
6. ESTIMATES ACEITES
mcp__desk-crm-v3__get_estimates({ status: 3, limit: 10 })
Destaques de valor
7. AGENDA DO DIA
mcp__google-workspace__calendar_get_events({
user_google_email: "emanuelalmeidaa@gmail.com",
time_min: "YYYY-MM-DDT00:00:00Z",
time_max: "YYYY-MM-DDT23:59:59Z"
})
```
### Passo 2: Formatar Dashboard
```markdown
## Resumo do Dia
### Timer
[Status ou "Nenhum timer activo"]
### Tickets
- Abertos: X (Y urgentes)
### Facturas
- Vencidas: X (valor total EUR)
### Tarefas (resumo)
- Urgentes (prioridade 4): X
- Alta prioridade overdue: Y
- Normal prioridade overdue: Z
- Total overdue: W
### Leads + Propostas
- Leads novos: X
- Propostas pendentes: Y
- Estimates aceites: Z (destaque: [cliente] [valor] EUR)
### Agenda
- HH:MM - [Evento]
- Ou "Sem eventos hoje"
```
### Passo 3: Output JSON (quando invocado pelo /today)
```
SE invocado com argumento "json":
Escrever em ~/.claude-work/today-digest-{date}.json
Formato:
{
"timer": null | {"task_id": 1446, "duration": "2h15m"},
"tickets": {"open": 4, "urgent": 1},
"invoices": {"overdue": 0, "total_eur": 0},
"leads": {"new": 0},
"estimates": {"pending": 0, "accepted": 10},
"calendar": []
}
SE invocado standalone:
Mostrar dashboard Markdown directamente
```
---
## Alertas Automaticos
Gerar alertas se:
- Timer activo >4h
- Facturas vencidas >30 dias
- Tickets urgentes (prioridade 3-4) sem resposta >24h
- Leads novos ha >48h sem contacto
---
## Anti-Patterns
- NUNCA mostrar todos os tickets/facturas (limite 20, mostrar resumo)
- NUNCA duplicar dados ja disponiveis noutras skills (/tasks-overview para tarefas detalhadas)
- SEMPRE usar mcp-time para data actual (nunca assumir)
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -111,7 +111,7 @@ if (protocol?.auto_consult) {
// 6. Consultar Dify KB (paralelo)
const results = await Promise.all(
protocol.priority_datasets.map(id =>
mcp__dify-kb__dify_kb_retrieve_segments({
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: id,
query: query,
top_k: protocol.top_k || 3

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

View File

@@ -0,0 +1,392 @@
---
name: index-update
description: Actualiza INDEX.md de procedimentos após criar/modificar/arquivar PROC. Use quando "actualizar index", "update INDEX.md", depois de criar procedimento, mover PROC, arquivar procedimento. Mantém estatísticas, navegação e data actualizadas.
---
# /index-update - Actualizador de INDEX.md
Actualiza ficheiros INDEX.md de procedimentos após operações (criar, modificar, mover, arquivar).
---
## Referências e Documentação
**SEMPRE consultar:**
- **[06-Operacoes/Procedimentos/INDEX.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - INDEX principal (8 departamentos)
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Convenções INDEX.md
---
## O Que Actualiza
### 1. INDEX.md Departamental
Após criar/modificar/mover PROC em departamento:
```markdown
| [PROC-Titulo.md](./PROC-Titulo.md) | Descrição breve | [DEPT]-[TEMA]-[NUM] |
```
**Campos:**
- Nome ficheiro (link relativo)
- Descrição breve (1 linha, <80 chars)
- Código procedimento
**Ordenação:** Por código (DEV-MCP-001, DEV-MCP-002, WP-SEC-001...)
### 2. INDEX.md Principal
Actualizar estatísticas globais:
```markdown
**Total:** X procedimentos (update counter)
| Departamento | Procedimentos | Código Exemplo |
|--------------|---------------|----------------|
| D7-Tecnologia | 28 → 29 | DEV, WP, INF, AI, WEB |
```
### 3. Metadados
Actualizar em AMBOS os INDEX.md:
```markdown
**Última actualização:** 2026-02-13
```
---
## Protocolo de Actualização
### Após Criar PROC (/proc-creator)
```
1. IDENTIFICAR departamento do novo PROC
- Ler frontmatter do PROC-*.md
- Obter dept_id e codigo
2. LER INDEX.md departamental
- Path: /media/.../Procedimentos/[Dept]/INDEX.md
3. ADICIONAR linha na tabela:
| [PROC-Nome.md](./PROC-Nome.md) | Descrição | [DEPT]-[TEMA]-[NUM] |
- Inserir na posição correcta (ordenado por código)
4. INCREMENTAR contador no INDEX departamental:
"X procedimentos" → "X+1 procedimentos"
5. ACTUALIZAR data:
"Última actualização: YYYY-MM-DD"
6. LER INDEX.md principal
- Path: /media/.../Procedimentos/INDEX.md
7. INCREMENTAR contador na tabela do departamento:
| D7-Tecnologia | 28 → 29 | ...
8. INCREMENTAR "Total:" no topo:
"36 procedimentos" → "37 procedimentos"
9. ACTUALIZAR data INDEX principal
10. CONFIRMAR ambos salvos
```
### Após Mover PROC
```
1. REMOVER linha do INDEX origem
2. DECREMENTAR contador origem
3. ADICIONAR linha ao INDEX destino
4. INCREMENTAR contador destino
5. ACTUALIZAR INDEX principal (sem alterar total)
6. ACTUALIZAR datas ambos
```
### Após Arquivar PROC
```
1. REMOVER linha do INDEX departamental
2. DECREMENTAR contador departamental
3. ACTUALIZAR INDEX principal (decrementar total)
4. ADICIONAR nota "Arquivado YYYY-MM-DD" se relevante
5. ACTUALIZAR datas
```
---
## Formato INDEX.md Departamental
```markdown
---
title: D[N]-[Nome] - Procedimentos
date: YYYY-MM-DD
type: index
status: active
tags: [d[N], procedimentos, [tema]]
---
# D[N] — [Nome] - Procedimentos
**X procedimentos | Código: [DEPT]**
---
## 📋 Lista de Procedimentos
| Procedimento | Descrição | Código |
|--------------|-----------|--------|
| [PROC-Nome1.md](./PROC-Nome1.md) | Descrição breve | [DEPT]-[TEMA]-001 |
| [PROC-Nome2.md](./PROC-Nome2.md) | Descrição breve | [DEPT]-[TEMA]-002 |
---
## 📊 Estatísticas
| Métrica | Valor |
|---------|-------|
| Total procedimentos | X |
| Códigos únicos | [DEPT1], [DEPT2], [DEPT3] |
| Status draft | Y |
| Status active | Z |
---
## 🔗 Navegação
- [[../INDEX|← Voltar a Procedimentos INDEX]]
- [[../../../04-Stack/02.01-Departamentos/D[N]-[Nome]|Ver Departamento]]
---
**D[N] — [Nome] | X Procedimentos**
**Última actualização:** YYYY-MM-DD
```
---
## Formato INDEX.md Principal
```markdown
---
title: Procedimentos - INDEX
date: YYYY-MM-DD
type: index
status: active
tags: [procedimentos, organizacao, hub]
---
# Procedimentos - INDEX Principal
**Total:** X procedimentos | **Departamentos:** 8
---
## 📊 Distribuição por Departamento
| Departamento | Procedimentos | Código | INDEX |
|--------------|---------------|--------|-------|
| D1-Comercial | 1 | CRM | [INDEX](./D1-Comercial/INDEX.md) |
| D2-Suporte | 0 | SUP | [INDEX](./D2-Suporte/INDEX.md) |
| D3-Contabilidade | 2 | FIN | [INDEX](./D3-Contabilidade/INDEX.md) |
| D4-RH | 0 | HR | [INDEX](./D4-RH/INDEX.md) |
| D5-Design | 0 | DES | [INDEX](./D5-Design/INDEX.md) |
| D6-Marketing | 1 | MKT | [INDEX](./D6-Marketing/INDEX.md) |
| D7-Tecnologia | 28 | DEV, WP, INF, AI, WEB | [INDEX](./D7-Tecnologia/INDEX.md) |
| Cross-Departamental | 4 | XDP | [INDEX](./Cross-Departamental/INDEX.md) |
---
**Última actualização:** YYYY-MM-DD
```
---
## Validações
Antes de salvar INDEX.md, verificar:
```
✅ Contadores correctos (manual count vs INDEX)
✅ Ordenação por código mantida
✅ Links relativos funcionam (./PROC-*.md)
✅ Sem linhas duplicadas
✅ Sem procedimentos órfãos (ficheiro existe mas não está no INDEX)
✅ Sem fantasmas (linha no INDEX mas ficheiro não existe)
✅ Data actualizada para hoje
✅ Formato tabela Markdown correcto
```
---
## Integração com /proc-creator
`/proc-creator` chama `/index-update` automaticamente:
```
User: /proc-creator "MCP Session Recovery"
→ PROC-MCP-Session-Recovery.md criado
→ /index-update triggered automaticamente
→ D7-Tecnologia/INDEX.md actualizado (28 → 29)
→ INDEX.md principal actualizado (36 → 37)
→ Confirmação ao utilizador
```
---
## Modo Manual
Quando usar manualmente:
```
User: Arquivei 3 procedimentos antigos do D7. Actualizar INDEX?
Assistant: /index-update
1. Lendo D7-Tecnologia/INDEX.md...
2. Detectei que PROC-X, PROC-Y, PROC-Z não existem mais
3. Removendo linhas...
4. Actualizando contador: 28 → 25
5. Actualizando INDEX principal: 36 → 33
6. ✅ Ambos os INDEX.md actualizados
```
---
## Detecção Automática de Dessinc
Quando `/index-update` é chamado sem contexto:
```
1. PARA CADA departamento:
- Ler INDEX.md
- Listar ficheiros PROC-*.md no directório
- Comparar
2. DETECTAR problemas:
- Órfãos: ficheiro existe mas não está no INDEX
- Fantasmas: linha no INDEX mas ficheiro não existe
- Contadores errados: NUM no INDEX ≠ count real
3. REPORTAR discrepâncias:
"D7-Tecnologia: 3 órfãos detectados"
"D3-Contabilidade: contador errado (diz 2, tem 3)"
4. PERGUNTAR ao utilizador:
"Corrigir automaticamente? [Sim/Não]"
5. SE Sim:
- Adicionar órfãos ao INDEX
- Remover fantasmas do INDEX
- Corrigir contadores
- Actualizar datas
```
---
## Exemplos de Uso
### Exemplo 1: Após Criar PROC
```
User: /proc-creator criou PROC-WordPress-CLI.md
Assistant: (auto-triggered /index-update)
✅ D7-Tecnologia/INDEX.md actualizado
- Adicionada linha: PROC-WordPress-CLI.md | WP-CLI-001
- Contador: 28 → 29
✅ INDEX.md principal actualizado
- D7: 28 → 29
- Total: 36 → 37
```
### Exemplo 2: Correcção Manual
```
User: /index-update
Assistant:
🔍 Verificando consistência...
D7-Tecnologia:
- ⚠️ 2 órfãos detectados:
- PROC-MCP-Troubleshooting-Erro-471.md (não está no INDEX)
- PROC-MCP-Session-Recovery.md (não está no INDEX)
- ✅ Sem fantasmas
D3-Contabilidade:
- ⚠️ Contador errado: INDEX diz 2, existem 3 ficheiros
Corrigir automaticamente? [Sim]
→ Adicionando órfãos...
→ Corrigindo contadores...
→ Actualizando datas...
✅ Todos os INDEX.md consistentes
```
### Exemplo 3: Após Arquivar
```
User: Arquivei PROC-Backup-Old-Method.md (obsoleto)
Assistant: /index-update D7-Tecnologia
✅ Removido PROC-Backup-Old-Method.md do INDEX
✅ Contador: 29 → 28
✅ INDEX principal: 37 → 36
✅ Data actualizada
```
---
## Anti-Patterns
**NUNCA:**
- ❌ Actualizar INDEX sem verificar ficheiro existe
- ❌ Esquecer de actualizar INDEX principal
- ❌ Deixar data desactualizada
- ❌ Quebrar ordenação por código
- ❌ Adicionar linha com link quebrado
**SEMPRE:**
- ✅ Actualizar AMBOS os INDEX (dept + principal)
- ✅ Verificar ficheiro existe antes de adicionar
- ✅ Manter ordenação por código
- ✅ Actualizar contadores correctamente
- ✅ Actualizar data para hoje
---
## Validação Pós-Actualização
Checklist automática:
```
✅ Contadores matemáticos correctos
✅ Links relativos válidos
✅ Ordenação mantida
✅ Sem duplicados
✅ Sem órfãos detectados
✅ Sem fantasmas detectados
✅ Data = hoje
✅ Formato Markdown válido
```
---
## Scripts Auxiliares (Futuro)
```bash
# Validar consistência INDEX.md
./scripts/validate-index.sh
# Detectar órfãos e fantasmas
./scripts/detect-orphans.sh
# Re-gerar INDEX.md do zero
./scripts/rebuild-index.sh [departamento]
```
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*

View File

@@ -9,7 +9,7 @@ version: 1.1.0
user_invocable: true
tags: [knowledge, kb, dify, wikijs, supabase, context7, search, documentation]
desk_task: 1474
allowed-tools: Read, Grep, mcp__dify-kb__dify_kb_retrieve_segments, mcp__wikijs__search_pages, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs
allowed-tools: Read, Grep, mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments, mcp__wikijs__search_pages, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs
category: productivity
quality_score: 85
updated: "2026-02-04T18:00:00Z"
@@ -235,7 +235,7 @@ async function pesquisar(query, categoria) {
fonte.folders.map(folder =>
Grep({
pattern: extrairKeywords(query).join('|'),
path: `/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/${folder}`,
path: `/media/ealmeida/Dados/Hub/${folder}`,
output_mode: 'content'
})
)
@@ -328,7 +328,10 @@ if (resultado.lacuna || resultado.score < 50) {
## MCPs Disponíveis
### Dify KB
### Knowledge Sources
**Primario:** NotebookLM
**Fallback:** Dify KB
```
mcp__dify-kb__dify_kb_list_datasets # Listar datasets
mcp__dify-kb__dify_kb_retrieve_segments # Pesquisar (dataset_id, query)
@@ -359,7 +362,7 @@ mcp__context7__get-library-docs # Obter docs
### Filesystem (Docs Locais)
```
Grep/Glob em:
- /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/ (Obsidian vault)
- /media/ealmeida/Dados/Hub/ (Obsidian vault)
- /media/ealmeida/Dados/GDrive/Projectos/
```
@@ -538,6 +541,13 @@ Esta skill já faz routing automático para datasets Dify, mas em caso de dúvid
### Como Consultar
```javascript
# PRIMARIO: NotebookLM (Gemini 2.5 RAG)
# mcp__notebooklm__notebook_query({notebook_id: "0c9c079c-a426-486c-99eb-1564d42d37ad", query: "<tema>"}) // Gestao de Projectos e Agile
# mcp__notebooklm__notebook_query({notebook_id: "f9dc59c2-718b-4b12-bd06-095d4bfa3e34", query: "<tema>"}) // Gestao de Operacoes
# mcp__notebooklm__notebook_query({notebook_id: "79d43410-0e29-4be1-881d-84db6bdc239a", query: "<tema>"}) // Estrategia e Empreendedorismo
# mcp__notebooklm__notebook_query({notebook_id: "ebee9fe1-78fd-4f85-8938-f19f3ea32131", query: "<tema>"}) // Obsidian + Claude
# FALLBACK: Dify KB (se NotebookLM insuficiente)
// Pesquisar no Data Lake geral
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "b4e233d6-0d78-42f6-aef4-a56280600fe8",

View File

@@ -412,7 +412,7 @@
{
"type": "filesystem",
"paths": [
"/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/"
"/media/ealmeida/Dados/Hub/"
]
},
{
@@ -449,7 +449,7 @@
{
"type": "filesystem",
"paths": [
"/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/03-Recursos/"
"/media/ealmeida/Dados/Hub/03-Recursos/"
]
}
]
@@ -1712,7 +1712,7 @@
"qualidade": "09-operacoes-qualidade/qualidade-procedimentos"
},
"local_paths": {
"planeamento": "/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/",
"planeamento": "/media/ealmeida/Dados/Hub/",
"projectos": "/media/ealmeida/Dados/GDrive/Projectos/",
"dev": "/media/ealmeida/Dados/Dev/"
},

View File

@@ -136,7 +136,7 @@ Params:
### Filesystem
```
Grep em paths do routing:
- /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/ (Obsidian vault)
- /media/ealmeida/Dados/Hub/ (Obsidian vault)
- /media/ealmeida/Dados/GDrive/Projectos/
```

View File

@@ -0,0 +1,164 @@
---
name: mindmap
title: Mindmap Generator (DesktopNaotu)
description: Gera ficheiros .km (mindmap) compativeis com DesktopNaotu/Kityminder. Cria mindmaps a partir de topicos, planos, brainstorms ou qualquer estrutura hierarquica.
author: Descomplicar
version: 1.0.0
tags: [mindmap, naotu, kityminder, brainstorm, planeamento, organizacao]
user_invocable: true
trigger_patterns:
- "mindmap"
- "mapa mental"
- "mind map"
- "naotu"
- "criar mindmap"
- "gerar mindmap"
- "brainstorm visual"
---
# Mindmap Generator - DesktopNaotu
Gera ficheiros `.km` compativeis com DesktopNaotu (Kityminder) para visualizacao de mindmaps.
## Formato .km
Ficheiro JSON com a seguinte estrutura:
```json
{
"root": {
"data": {
"id": "<unique-id>",
"created": <timestamp-ms>,
"text": "Topico Central"
},
"children": [
{
"data": {
"id": "<unique-id>",
"created": <timestamp-ms>,
"text": "Sub-topico"
},
"children": []
}
]
},
"template": "default",
"theme": "fresh-blue",
"version": "1.4.43"
}
```
## Templates Disponiveis
| Template | Descricao |
|----------|-----------|
| `default` | Layout classico radial (centro para fora) |
| `right` | Todos os ramos para a direita |
| `structure` | Organograma (cima para baixo) |
| `filetree` | Arvore de ficheiros (esquerda para direita) |
| `filetree-up` | Arvore ascendente |
| `filetree-down` | Arvore descendente |
| `fish-bone` | Diagrama espinha de peixe (Ishikawa) |
| `tianpan` | Layout circular (tianpan) |
## Themes Disponiveis
| Theme | Cor |
|-------|-----|
| `fresh-blue` | Azul (default) |
| `fresh-green` | Verde |
| `fresh-pink` | Rosa |
| `fresh-purple` | Roxo |
| `fresh-red` | Vermelho |
| `fresh-soil` | Terra/Castanho |
| `classic-compact` | Classico compacto |
| `snow-compact` | Branco/neve compacto |
| `tianpan-compact` | Tianpan compacto |
## Instrucoes de Geracao
Quando o utilizador pedir um mindmap:
1. **Identificar o topico central** e sub-topicos a partir do pedido
2. **Escolher template** adequado ao tipo de conteudo:
- Brainstorm geral -> `default`
- Plano/processo linear -> `right`
- Organograma/hierarquia -> `structure`
- Analise causa-efeito -> `fish-bone`
- Listagem/arvore -> `filetree`
3. **Escolher theme** (default: `fresh-blue`, ou perguntar preferencia)
4. **Gerar o JSON** com IDs unicos (usar formato `km<timestamp><random>`)
5. **Guardar** em `/home/ealmeida/.config/desktopnaotu/backup/<nome>.km` para acesso facil pela app
6. **Informar** o utilizador do path e como abrir
### Regras de geracao de IDs
Cada node precisa de um `id` unico. Usar o formato: `km` + base36 do timestamp + sequencia aleatoria.
Gerar com Python:
```python
import time, random, string, json
def gen_id():
ts = int(time.time() * 1000)
rand = ''.join(random.choices(string.ascii_lowercase + string.digits, k=4))
return f"km{ts}{rand}"
def node(text, children=None):
return {
"data": {
"id": gen_id(),
"created": int(time.time() * 1000),
"text": text
},
"children": children or []
}
```
### Exemplo de geracao
```python
mindmap = {
"root": node("Projecto X", [
node("Fase 1 - Discovery", [
node("Pesquisa mercado"),
node("Entrevistas"),
node("Analise competitiva")
]),
node("Fase 2 - Design", [
node("Wireframes"),
node("Prototipo"),
node("Testes UX")
]),
node("Fase 3 - Desenvolvimento", [
node("Frontend"),
node("Backend"),
node("Integracao")
])
]),
"template": "right",
"theme": "fresh-blue",
"version": "1.4.43"
}
with open("/home/ealmeida/.config/desktopnaotu/backup/projecto-x.km", "w") as f:
json.dump(mindmap, f, ensure_ascii=False)
```
### Abrir o ficheiro
Depois de gerar, o utilizador pode abrir directamente:
```bash
/home/ealmeida/Programas/DesktopNaotu/DesktopNaotu "/home/ealmeida/.config/desktopnaotu/backup/<nome>.km"
```
Ou abrir a app e usar File > Open para navegar ate ao ficheiro.
## Boas Praticas
- **Profundidade maxima:** 4-5 niveis (mais que isso fica ilegivel)
- **Nos por nivel:** Maximo 7-8 (regra de Miller)
- **Texto curto:** 2-5 palavras por node (mindmap, nao documento)
- **Template adequado:** Fish-bone para causa/efeito, structure para hierarquias, right para processos
- **Nome descritivo:** Usar nome do topico no ficheiro (nao "mindmap1.km")

View File

@@ -0,0 +1,406 @@
---
name: notebooklm
description: >
Gestão programática completa do NotebookLM via MCP. Use when managing notebooks, adding sources,
generating artifacts (audio, video, mindmap, report, flashcards, quiz, infographic, presentation, table),
querying notebooks with RAG, running autonomous research, or when user mentions "notebooklm",
"notebook", "audio overview", "podcast", "mapa mental", "questionário", "resumo", "investigação profunda",
"adicionar fonte", "gerar artefacto".
author: Descomplicar® Crescimento Digital
version: 1.1.0
user_invocable: true
tags: [notebooklm, rag, audio, studio, research, gemini, knowledge, artifacts]
allowed-tools: mcp__notebooklm__notebook_list, mcp__notebooklm__notebook_get, mcp__notebooklm__notebook_create, mcp__notebooklm__notebook_describe, mcp__notebooklm__notebook_rename, mcp__notebooklm__notebook_delete, mcp__notebooklm__source_add, mcp__notebooklm__source_delete, mcp__notebooklm__source_describe, mcp__notebooklm__source_get_content, mcp__notebooklm__source_sync_drive, mcp__notebooklm__source_list_drive, mcp__notebooklm__notebook_query, mcp__notebooklm__chat_configure, mcp__notebooklm__studio_create, mcp__notebooklm__studio_status, mcp__notebooklm__studio_delete, mcp__notebooklm__download_artifact, mcp__notebooklm__export_artifact, mcp__notebooklm__research_start, mcp__notebooklm__research_status, mcp__notebooklm__research_import, mcp__notebooklm__notebook_share_public, mcp__notebooklm__notebook_share_invite, mcp__notebooklm__notebook_share_status, mcp__notebooklm__refresh_auth, mcp__notebooklm__server_info
category: knowledge
quality_score: 90
updated: "2026-02-24T20:00:00Z"
---
# /notebooklm - Gestão Programática NotebookLM
Motor RAG Gemini com geração de artefactos multimédia. 29 ferramentas MCP disponíveis.
---
## Notebooks Descomplicar (58 total)
> Registry actualizado via `notebook_list`. Para IDs actualizados: `mcp__notebooklm__notebook_list`.
### Tecnologia / Dev (21)
| Nome | ID | Fontes |
|------|----|--------|
| **KiviCare EHR WP** | `78621405-a5bc-433f-856f-296260a80bd9` | 166 |
| **CWP** | `0ded7bd6-69b3-4c76-b327-452396bf7ea7` | 214 |
| **WordPress Config CLI** | `fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d` | 268 |
| **WordPress e Elementor** | `5be0d1a6-00f2-4cd9-b835-978cb7721601` | 88 |
| **Cibersegurança WordPress** | `5f60adfd-2435-4725-8c12-9c11c5f51d75` | 95 |
| **Proxmox** | `276ccdde-6b95-42a3-ad96-4e64d64c8d52` | 120 |
| **Cloud e Infraestrutura TI** | `f9a79b5a-649f-4443-afaf-7ff562b6c2e7` | 146 |
| **Claude Code** | `2876d1fe-5cea-4d98-8140-b0e1a81c6bc4` | 132 |
| **Obsidian + Claude** | `ebee9fe1-78fd-4f85-8938-f19f3ea32131` | 117 |
| **Perfex CRM** | `df4688bb-c2c0-4aba-98c1-38c3b50a353c` | 141 |
| **Dev PerfexCRM** | `80606de8-2783-4d36-b08d-5825e6f9a8da` | 44 |
| **Reonic** | `b7e61158-0717-4582-8ef2-0301be3c73ae` | 131 |
| **Remotion** | `f2b75baa-1ab1-48d3-8f7c-a6a9e516934c` | 59 |
| **n8n** | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` | 66 |
| **Desenvolvimento de MCPs** | `73102308-70ef-403e-9be9-eae0cfc62d55` | 22 |
| **Programação** | `24947ffa-0019-448a-a340-2f4a275d2eb1` | 53 |
| **Open Source Top Picks** | `cabf9821-c1ff-44cb-9bfd-59bda3599792` | 163 |
| **GitHub Trends** | `922b7532-ddf3-4dba-9d3c-6d5f83b89378` | 61 |
| **Zaia** | `087d76f1-e929-49da-9e3c-4edc22b42b3f` | 28 |
| **Open WebUI** | `be6f72ac-f8ba-4337-912d-abd5dd448519` | 15 |
| **AI Code Editors** | `57d9c6c9-48ba-4d83-8f71-cc890f348a53` | 20 |
### Gestão / Negócio (13)
| Nome | ID | Fontes |
|------|----|--------|
| **Estrategia e Empreendedorismo** | `79d43410-0e29-4be1-881d-84db6bdc239a` | 107 |
| **Gestão de Operações** | `f9dc59c2-718b-4b12-bd06-095d4bfa3e34` | 41 |
| **Gestão de Projectos e Agile** | `0c9c079c-a426-486c-99eb-1564d42d37ad` | 44 |
| **Transformacao Digital e IA** | `ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8` | 73 |
| **E-commerce Pratico** | `226e384e-d4bc-48f4-bb82-7927360436cc` | 63 |
| **Descomplicar** | `f29c8457-f16d-4fb3-979d-6e5901de1b20` | 23 |
| **AI Automation and Orchestration** | `929ef67b-c131-4f01-abd0-8b078491a6b7` | 5 |
| **AI Agents Intensive Course** | `f4be0e3f-4d9e-4c5c-a743-9f14427f2e43` | 5 |
| **European E-Commerce** | `8a430cf2-ed99-413d-b4bf-a1400deaf49e` | 24 |
| **Documentação WooCommerce** | `bd06acff-4b9d-44aa-b3f7-60434bbd6b49` | 3 |
| **Produtos e Serviços BD** | `c451d7b4-79fd-4a67-9149-1da38d28345e` | 3 |
| **Erxes XOS** | `10ea7de8-5777-4f18-bd2c-f58952b6047c` | 10 |
| **Zender 3** | `7095e5fa-1465-4496-b1a3-48f2e6e07f79` | 3 |
### Marketing / Media (7)
| Nome | ID | Fontes |
|------|----|--------|
| **Marketing Digital PT** | `4c595973-ba10-420a-a3bf-e4389e424ad3` | 189 |
| **Marketing Digital Avancado** | `76647e0f-3ae2-4c00-a0a8-f457aebf5655` | 78 |
| **Social Media e Branding** | `9053d0e8-dd39-460b-b5ea-e67af3e9a675` | 51 |
| **Copywriting e Persuasao** | `7b8fec17-d34f-4e3f-a8c6-8231e51f6323` | 50 |
| **Produção de Video e Youtube** | `058a896e-6c9a-4e51-ae7d-9adb2738bc5f` | 49 |
| **YouTube Monetização e Compliance** | `60a209a7-e205-4d57-a6f3-fef3de61e87a` | 30 |
| **Podcast Descomplicar** | `a5bef96b-a1af-4293-9979-5da46f8d2301` | 33 |
### Design (3)
| Nome | ID | Fontes |
|------|----|--------|
| **Design Profissional AItomatizado** | `b568b13b-0eed-48c9-b513-5c5b7ec0b102` | 244 |
| **UI/UX Design** | `081ca512-8279-4850-b2b9-dff090267482` | 28 |
| **Tipografia e Cor para Web** | `f97a0d2b-a5b3-4640-b941-3cbb184b1b81` | 41 |
### Pessoal / Filosofia (11)
| Nome | ID | Fontes |
|------|----|--------|
| **Emanuel Almeida** | `8c6c8257-bda2-433c-bf55-f40d98bfde8f` | 36 |
| **Jung** | `d5c67d7f-7fe8-4542-9e5c-22403f3193ee` | 41 |
| **Taoism** | `aea85baf-9ddf-4d79-bf07-81391a275b09` | 28 |
| **ADHD** | `a4ff3fd7-fb7c-49a1-94ff-0433193e2338` | 17 |
| **Autismo** | `66eff78e-318f-4a8b-a3c7-039a4124b1ad` | 14 |
| **Psicologia Somática** | `3410893b-16a3-4178-9091-42650a41086f` | 10 |
| **Essência de Herói** | `6dcd08e8-79d9-4ae0-b6bf-b2ee96717bf2` | 13 |
| **Auto Kintsugi** | `82a95c2f-be56-4c4a-a96f-96f6677a6991` | 10 |
| **Marcus Aurelius** | `4b986ad4-49da-4604-a423-4fcdf20dd9da` | 3 |
| **Building Viral AI Philosophy** | `7bb570b3-9dc4-4e6f-817c-aca68df59e6d` | 13 |
### Clientes / Projectos (3)
| Nome | ID | Fontes |
|------|----|--------|
| **CarStuff** | `90f0bc77-b5e4-4ddd-a07c-013a1a30b247` | 25 |
| **Solar FV Engenharia** | `03d54e00-aefa-45dc-ba01-f3864a7c3112` | 5 |
| **OpenSolar Platform** | `0082bcaf-1e17-4b84-87cc-2256b1719b55` | 4 |
---
## Comandos
| Comando | Uso |
|---------|-----|
| `/notebooklm list` | Listar todos os notebooks |
| `/notebooklm query <id> <pergunta>` | Consulta RAG num notebook |
| `/notebooklm add <id> <fonte>` | Adicionar fonte (url/file/text/drive) |
| `/notebooklm studio <id> <tipo>` | Gerar artefacto |
| `/notebooklm research <id> <tema>` | Investigação autónoma web |
| `/notebooklm create <nome>` | Criar novo notebook |
---
## Studio — Artefactos
| Tipo (`artifact_type`) | Parâmetros Chave | Output | Tempo |
|------------------------|-----------------|--------|-------|
| `audio` | `format`: deep_dive, brief, critique, debate | MP3 | 3-7 min |
| `video` | `format`: explainer, brief | MP4 | 5-12 min |
| `mind_map` | — | Markdown/JSON | <1 min |
| `report` | `report_format`: Briefing Doc, Study Guide, Blog Post | Markdown/Docs | 1-2 min |
| `flashcards` | `difficulty`: hard, easy | JSON/HTML | <1 min |
| `quiz` | `question_count`: Integer | JSON/HTML | <1 min |
| `infographic` | `orientation`: 1=Landscape, 2=Portrait | PNG/SVG | 2-4 min |
| `slide_deck` | `orientation`, `visual_style` (1-10), `language`, `length` | PDF | 2-5 min |
| `data_table` | — | CSV/JSON/Sheets | 1-2 min |
### Workflow Geração de Artefacto
```
1. studio_create(notebook_id, artifact_type, ..., confirm=True)
→ devolve artifact_id
2. POLLING: studio_status(artifact_id)
→ repetir cada 20s até status="complete"
3a. download_artifact(artifact_id) → ficheiro local (MP3/MP4/JSON/MD)
3b. export_artifact(artifact_id) → Google Docs/Sheets
```
---
## Gestão de Fontes
### Adicionar fonte
```python
# URL
source_add(notebook_id, source_type="url", url="https://...", wait=True)
# Ficheiro local (PDF, MD, TXT)
source_add(notebook_id, source_type="file", file_path="/caminho/absoluto", wait=True)
# Texto directo
source_add(notebook_id, source_type="text", text="...", title="Título", wait=True)
# Google Drive
source_add(notebook_id, source_type="drive", document_id="gdrive-id", wait=True)
```
**Regra crítica:** Usar sempre `wait=True`. Sem isso o NotebookLM reporta sucesso mas o conteúdo não está indexado.
### Actualizar fontes Drive
```python
source_sync_drive(notebook_id, confirm=True)
```
Para PDFs/URLs não Drive: `source_delete` + `source_add` da versão nova.
---
## Consulta RAG (notebook_query)
### Padrão Drill-Down para documentos extensos
```
Passo 1 — Topologia:
"Mapeia a estrutura deste documento, identifica os capítulos sobre [tema]."
Passo 2 — Cirúrgico:
"Centra a análise em [secção específica]. Detalha [aspecto concreto]."
Passo 3 — Síntese externa:
Claude agrega as respostas parciais no seu próprio contexto.
```
### Multi-notebook (sem suporte nativo)
O NotebookLM não faz queries cross-notebook. Workflow:
```
1. notebook_query(notebook_A, pergunta)
2. notebook_query(notebook_B, pergunta)
3. Claude sintetiza os dois resultados localmente
```
### Rate limiting
~50 queries/dia em contas gratuitas. Contas Workspace: sem limite documentado.
---
## Investigação Autónoma
```python
# 1. Iniciar pesquisa
research_start(
notebook_id="uuid",
query="tendências telemedicina Portugal 2026",
mode="deep", # fast (~30s, 10 fontes) | deep (~5min, 40+ fontes)
source_type="web" # web | drive
)
# → devolve task_id
# 2. Polling
research_status(task_id) # repetir até status="complete"
# 3. Importar resultados
research_import(notebook_id, task_id)
```
**Atenção:** Iniciar nova pesquisa cancela qualquer pesquisa em curso no mesmo notebook.
---
## Casos de Uso Descomplicar
### Investigação técnica de plugin/tecnologia
```
1. Scraper → MDs em Hub/Manuais/
2. source_add(files) → notebook_create ou existente
3. notebook_query drill-down → extracção de padrões
4. studio_create(mind_map) → exportar para Obsidian
5. studio_create(audio, deep_dive) → consumo em mobilidade
```
### Onboarding novo projecto
```
1. notebook_create("Cliente - NomeProjecto")
2. source_add(contratos PDF + requisitos WikiJS)
3. notebook_share_invite(emails equipa + cliente)
4. studio_create(report, "Briefing Doc") → resumo executivo
```
### Proposta comercial
```
1. notebook_query → extrair capacidades relevantes
2. studio_create(data_table) → export_artifact → Google Sheets comparativo
3. studio_create(slide_deck, orientation=1, visual_style=1, language="pt") → esqueleto apresentação
```
### Rotina /today
```
notebook_query(Gestão de Operações, "3 métricas críticas com desvios hoje")
→ studio_create(audio, brief) → MP3 para consumo rápido
```
### Questionários de validação
```
studio_create(quiz, question_count=15) → JSON
→ n8n lê JSON → cria tasks Desk CRM para engenheiros
```
---
## Gestão de Notebooks
```python
# Listar
notebook_list()
# Metadados + fontes
notebook_get(notebook_id)
# Resumo IA com keywords
notebook_describe(notebook_id)
# Criar
notebook_create(name="Nome do Notebook")
# Partilha pública
notebook_share_public(notebook_id)
# Partilha por convite
notebook_share_invite(notebook_id, email="user@domain.com")
# Eliminar (irreversível)
notebook_delete(notebook_id, confirm=True)
```
---
## Integração n8n
O NotebookLM não tem API REST pública. Comunicar via JSON-RPC para o servidor MCP local:
```
NOTEBOOKLM_MCP_TRANSPORT=http
NOTEBOOKLM_MCP_HOST=0.0.0.0
NOTEBOOKLM_MCP_PORT=8000
```
### Flows úteis
**WikiJS → NotebookLM (ingestão dinâmica):**
```
Webhook (publicação WikiJS)
→ HTTP Request: source_add(source_type="text", wait=True)
→ Notificação Slack: "Nova doc indexada no RAG"
```
**Relatório semanal de projecto:**
```
Schedule (sexta 17h)
→ Desk CRM: extrair tasks semana
→ source_add(text) → studio_create(report, "Briefing Doc")
→ Polling studio_status
→ export_artifact → Google Docs
→ Link enviado para Slack do cliente
```
**Audio após actualização de manual:**
```
Drive webhook
→ source_sync_drive
→ studio_create(audio, deep_dive)
→ Polling + download_artifact
→ Email com MP3 anexo
```
---
## Limitações
| Limitação | Workaround |
|-----------|-----------|
| ~50 queries/dia (conta gratuita) | Usar conta Workspace; fallback Dify KB |
| Sem API REST oficial | JSON-RPC via servidor MCP local |
| Sem queries cross-notebook | Claude agrega respostas de múltiplos notebooks |
| Cookies expiram (2-4 semanas) | `refresh_auth()` automático; alertar se HTTP 401/499 |
| Slides com marca de água | Pós-processamento `clean-watermark.js` via n8n |
| Ficheiros estáticos imutáveis | `source_delete` + `source_add` para actualizar |
| `research_start` exclusivo | Só uma pesquisa activa por notebook de cada vez |
| Dados de treino Gemini | Workspace Enterprise: dados isentos de treino |
---
## Autenticação
```bash
# Verificar estado
nlm login status
# Renovar tokens
mcp__notebooklm__refresh_auth()
# Versão do servidor
mcp__notebooklm__server_info()
```
Auth guardada em: `~/.notebooklm-mcp-cli/profiles/<name>/auth.json`
---
## Roadmap de Adopção
**Fase 1 — Quick wins (<1 semana)**
- [ ] Conta Google Workspace dedicada a automações
- [ ] Servidor MCP em EasyPanel (projecto: descomplicar)
- [ ] Primeiro audio overview de manual técnico
**Fase 2 — Integrações (1-4 semanas)**
- [ ] n8n: ingestão dinâmica WikiJS → NotebookLM
- [ ] n8n: relatório semanal /today automático
- [ ] Claude Code: queries drill-down nos notebooks existentes
**Fase 3 — Escala (1-3 meses)**
- [ ] Notebook por cliente (criado automaticamente no Desk CRM)
- [ ] Quizzes de onboarding injectados em tarefas Desk CRM
- [ ] Research autónomo semanal: panorama competitivo por área
---
**Versão**: 1.0.0 | **Data**: 24-02-2026 | **Autor**: Descomplicar®

View File

@@ -0,0 +1,365 @@
---
name: proc-creator
description: Cria procedimentos seguindo formato Hub Descomplicar. Use quando "criar procedimento", "novo PROC", "documentar processo", "PROC-*". Gera código automático [DEPT]-[TEMA]-[NUM], cria ficheiro na pasta departamental correcta, actualiza INDEX.md.
---
# /proc-creator - Criador de Procedimentos Hub
Cria procedimentos estruturados seguindo formato e organização Hub Descomplicar.
---
## Referências e Documentação
**SEMPRE consultar:**
- **[06-Operacoes/Procedimentos/INDEX.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - Estrutura completa (36 procedimentos, 8 departamentos)
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Secção "Organização de Procedimentos" (convenções, padrão referenciação)
---
## Estrutura de Procedimentos
### 8 Departamentos
| Departamento | Pasta | Código | Procedimentos Actuais |
|--------------|-------|--------|----------------------|
| D1-Comercial | `D1-Comercial/` | CRM | 1 |
| D2-Suporte | `D2-Suporte/` | SUP | 0 (gap) |
| D3-Contabilidade | `D3-Contabilidade/` | FIN | 2 |
| D4-RH | `D4-RH/` | HR | 0 (novo) |
| D5-Design | `D5-Design/` | DES | 0 (gap) |
| D6-Marketing | `D6-Marketing/` | MKT | 1 |
| D7-Tecnologia | `D7-Tecnologia/` | DEV, WP, INF, AI, WEB | 28 |
| Cross-Departamental | `Cross-Departamental/` | XDP | 4 |
**Base path:** `/media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/`
---
## Convenção de Código
Formato: `[DEPT]-[TEMA]-[NUM]`
**Exemplos:**
- D7: `DEV-MCP-001`, `WP-SEC-001`, `INF-SSL-001`, `AI-PLG-001`, `WEB-SEO-001`
- D1: `CRM-OPS-001`
- D3: `FIN-MOL-001`, `FIN-DSP-001`
- D6: `MKT-CNT-001`
- Cross: `XDP-GPR-001`, `XDP-OBS-001`
**Números:** Sequencial por tema (001, 002, 003...)
---
## Protocolo de Criação
```
1. PERGUNTAR ao utilizador:
- Título do procedimento
- Departamento (D1-D7 ou Cross)
- Tema/categoria
- Descrição breve
2. DETERMINAR código:
- Ler INDEX.md do departamento
- Identificar próximo NUM disponível para o tema
- Gerar código [DEPT]-[TEMA]-[NUM]
3. CRIAR ficheiro PROC-*.md:
- Nome: PROC-[Titulo].md
- Localização: /media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/[Departamento]/
- Usar template abaixo
4. ACTUALIZAR INDEX.md:
- Adicionar linha na tabela do departamento
- Incrementar contador total
- Actualizar data
5. CONFIRMAR:
- Mostrar path completo do ficheiro criado
- Mostrar código atribuído
- Listar próximos passos (preencher conteúdo)
```
---
## Template PROC-*.md
```markdown
---
title: [Título do Procedimento]
date: YYYY-MM-DD
type: procedimento
status: draft
dept_id: [N]
desk_dept_id: [N]
desk_dept_name: [Nome Departamento]
codigo: [DEPT]-[TEMA]-[NUM]
tags: [tag1, tag2, tag3]
---
# [Título do Procedimento]
**Código:** [DEPT]-[TEMA]-[NUM] | **Departamento:** [Nome] | **Status:** Draft
---
## 📋 Contexto
Descrição clara do propósito e âmbito deste procedimento.
---
## 🎯 Objectivo
O que este procedimento pretende alcançar.
---
## 📍 Âmbito
### Aplica-se a:
- [ ] Item 1
- [ ] Item 2
### Não se aplica a:
- [ ] Item 1
- [ ] Item 2
---
## 🔧 Pré-requisitos
| Requisito | Descrição |
|-----------|-----------|
| [Nome] | [Detalhe] |
---
## 📝 Procedimento
### Passo 1: [Nome do Passo]
**Objectivo:** [O quê]
**Como:**
1. Acção 1
2. Acção 2
**Validação:** Como confirmar sucesso
### Passo 2: [Nome do Passo]
[...]
---
## ✅ Checklist de Execução
- [ ] Pré-requisito A verificado
- [ ] Passo 1 concluído
- [ ] Passo 2 concluído
- [ ] Validação final OK
---
## ⚠️ Troubleshooting
| Problema | Causa Provável | Solução |
|----------|----------------|---------|
| [Erro X] | [Causa] | [Como resolver] |
---
## 📊 Métricas e KPIs
| Métrica | Target | Como Medir |
|---------|--------|------------|
| [Nome] | [Valor] | [Método] |
---
## 🔗 Referências
**Procedimentos relacionados:**
- [PROC-Outro.md](../PROC-Outro.md)
**Skills relacionadas:**
- `/skill-name` - Descrição
**Documentação externa:**
- [Nome](URL)
---
## 📅 Histórico de Revisões
| Data | Versão | Autor | Alterações |
|------|--------|-------|------------|
| YYYY-MM-DD | 1.0 | [Nome] | Criação inicial |
---
**[Título] | Código: [DEPT]-[TEMA]-[NUM] | Departamento: [Nome]**
**Última actualização:** YYYY-MM-DD
```
---
## Frontmatter Obrigatório
```yaml
---
title: [Título Procedimento]
date: YYYY-MM-DD
type: procedimento
status: draft | active | archived
dept_id: [1-7]
desk_dept_id: [1-7]
desk_dept_name: [D1-Comercial | D2-Suporte | ...]
codigo: [DEPT]-[TEMA]-[NUM]
tags: [categoria, tema, tecnologia]
---
```
**Mapeamento dept_id:**
- 1 = D1-Comercial (info@descomplicar.pt)
- 2 = D2-Suporte (suporte@descomplicar.pt)
- 3 = D3-Contabilidade (contabilidade@descomplicar.pt)
- 4 = D4-RH (rh@descomplicar.pt)
- 5 = D5-Design (design@descomplicar.pt)
- 6 = D6-Marketing (marketing@descomplicar.pt)
- 7 = D7-Tecnologia (dev@descomplicar.pt)
---
## Actualização INDEX.md
Adicionar linha na tabela do departamento:
```markdown
| [PROC-Titulo.md](./PROC-Titulo.md) | [Descrição breve] | [DEPT]-[TEMA]-[NUM] |
```
Actualizar estatísticas:
- Incrementar contador "X procedimentos"
- Actualizar data "Última actualização: YYYY-MM-DD"
---
## Integração com Skills/Agents
Após criar procedimento, informar utilizador:
```markdown
**Próximos passos:**
1. Preencher conteúdo do procedimento
2. Testar procedimento em cenário real
3. Actualizar status: draft → active
4. Adicionar referências em skills/agents relevantes:
\`\`\`markdown
## Referências e Documentação
**SEMPRE consultar:**
- [PROC-Titulo.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/[Dept]/PROC-Titulo.md)
\`\`\`
```
---
## Exemplos de Uso
### Exemplo 1: Procedimento Técnico D7
```
User: Criar procedimento para deployment EasyPanel
Assistant: /proc-creator
Título: Deployment EasyPanel via API
Departamento: D7-Tecnologia
Tema: Infraestrutura (INF)
Descrição: Deploy automatizado de serviços no EasyPanel usando API oficial
→ Código gerado: INF-EPL-001
→ Ficheiro: PROC-Deployment-EasyPanel.md
→ Localização: D7-Tecnologia/
→ INDEX.md actualizado
```
### Exemplo 2: Procedimento Cross-Departamental
```
User: Documentar processo de gestão de projectos
Assistant: /proc-creator
Título: Sistema Gestão Projectos
Departamento: Cross-Departamental
Tema: Gestão Projectos (GPR)
Descrição: Metodologia híbrida Ágil/Waterfall
→ Código gerado: XDP-GPR-002 (já existe 001)
→ Ficheiro: Sistema-Gestao-Projectos-v2.md
→ Localização: Cross-Departamental/
→ INDEX.md actualizado
```
### Exemplo 3: Procedimento D2-Suporte (Gap)
```
User: Criar procedimento atendimento cliente
Assistant: /proc-creator
Título: Atendimento Cliente
Departamento: D2-Suporte
Tema: Suporte (SUP)
Descrição: Workflow primeiro contacto, templates resposta, escalação
→ Código gerado: SUP-ATC-001 (primeiro do D2!)
→ Ficheiro: PROC-Atendimento-Cliente.md
→ Localização: D2-Suporte/
→ INDEX.md actualizado
→ NOTA: D2 tinha 0 procedimentos, agora tem 1
```
---
## Anti-Patterns
**NUNCA:**
- ❌ Criar procedimento sem perguntar departamento
- ❌ Inventar código sem verificar INDEX.md
- ❌ Esquecer de actualizar INDEX.md
- ❌ Usar status "active" para draft inicial
- ❌ Omitir frontmatter obrigatório
- ❌ Criar em localização errada
- ❌ Duplicar NUM existente no mesmo tema
**SEMPRE:**
- ✅ Confirmar departamento com utilizador
- ✅ Ler INDEX.md para próximo NUM
- ✅ Actualizar INDEX.md após criação
- ✅ Usar status "draft" inicialmente
- ✅ Incluir todo frontmatter obrigatório
- ✅ Criar em pasta departamental correcta
- ✅ Verificar tema antes de atribuir NUM
---
## Validação Pós-Criação
Checklist automática:
```
✅ Ficheiro criado em pasta correcta
✅ Frontmatter completo e válido
✅ Código único e sequencial
✅ INDEX.md actualizado
✅ Template aplicado
✅ Path absoluto correcto
✅ Data actual em YYYY-MM-DD
```
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*

View File

@@ -0,0 +1,128 @@
---
name: tasks-overview
description: >
Visao geral de tarefas pendentes, atrasadas e em curso do Desk CRM. Organiza por prioridade e projecto, sugere workflows relevantes. Use when "tarefas", "tasks", "pendentes", "overdue", "atrasadas", "o que temos para fazer", "tasks overview".
author: Descomplicar® Crescimento Digital
version: 1.0.0
quality_score: 85
user_invocable: true
category: management
tags: [tasks, overview, priorities, workflows, desk-crm]
desk_task: 1710
desk_project: 65
allowed-tools: Read, Write, mcp__desk-crm-v3
mcps: desk-crm-v3
dependencies:
mcps: [desk-crm-v3]
triggers:
- "User asks about pending tasks"
- "User mentions 'tarefas', 'tasks', 'pendentes', 'overdue'"
- "User wants task overview or priorities"
- "Invoked by /today orchestrator"
---
# /tasks-overview v1.0
Consulta e organiza tarefas do Desk CRM por prioridade, deadline e projecto.
---
## Protocolo
### Passo 1: Recolher Tarefas (paralelo)
```
Em paralelo, executar:
1. mcp__desk-crm-v3__get_tasks({ overdue_only: true, limit: 50 })
2. mcp__desk-crm-v3__get_tasks({ status: 1, limit: 50 }) # Nao iniciadas
3. mcp__desk-crm-v3__get_tasks({ status: 4, limit: 50 }) # Em curso
```
### Passo 2: Organizar por Prioridade
```
Agrupar tarefas (sem duplicados) por:
1. Prioridade (4=Urgente, 3=Alta, 2=Normal, 1=Baixa)
2. Dentro de cada prioridade: vencidas primeiro, depois por deadline
3. Incluir projecto associado
Formato:
### Urgentes (Prioridade 4)
| # | Tarefa | Projecto | Deadline | Status | Dias |
|---|--------|----------|----------|--------|------|
### Alta Prioridade (Prioridade 3)
[mesma tabela]
### Normal (Prioridade 2)
[mesma tabela, apenas overdue + esta semana]
```
### Passo 3: Resumo por Projecto
```
Contar tarefas por projecto:
| Projecto | Vencidas | Pendentes | Em Curso | Total |
|----------|----------|-----------|----------|-------|
```
### Passo 4: Workflows Sugeridos
> Para as top 3 tarefas prioritarias, sugerir workflow adequado.
> Consultar: `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/WORKFLOWS-QUICK-START.md`
```
Padroes de deteccao (keywords na tarefa):
1. WordPress, plugin, tema, woocommerce → /wp-dev ou wordpress-plugin-developer agent
2. Procedimento, documentar, padronizar → /proc-creator
3. Audit, seguranca, compliance → compliance-auditor agent
4. Orcamento, proposta, cotacao → /orcamento
5. Lead, cliente novo, contacto → /lead-approach
6. SEO, optimizacao, rankings → /seo-report ou seo-specialist agent
7. Deploy, publicar, easypanel → /easypanel-deploy
8. Marketing, campanha, estrategia → marketing-planning-expert agent
9. PHP, Laravel, API, backend → php-fullstack-engineer agent
10. React, Next, frontend, UI → javascript-fullstack-specialist agent
Formato output:
## Workflows Sugeridos
- [ ] **#ID Tarefa** -> Workflow: [componente]
- [Breve explicacao]
```
### Passo 5: Output JSON (quando invocado pelo /today)
```
SE invocado com argumento "json":
Escrever resultado em ~/.claude-work/today-tasks-{date}.json
Formato: { "urgentes": N, "alta": N, "overdue": N, "total": N, "por_projecto": {...} }
SE invocado standalone:
Mostrar output Markdown directamente ao utilizador
```
---
## Accoes Imediatas Sugeridas
Apos listar tarefas, sugerir ate 6 accoes concretas:
1. Tarefas P4 (urgentes) - resolver hoje
2. Tarefas P3 a aguardar feedback - desbloquear
3. Tarefas vencidas ha >30 dias - decidir (fazer, delegar ou cancelar)
4. Tarefas em curso ha >14 dias - verificar progresso
5. Tarefas sem deadline - sugerir definir prazo
6. Tarefas sem estimativa de tempo - sugerir estimar
---
## Anti-Patterns
- NUNCA mostrar mais de 50 tarefas (filtrar por relevancia)
- NUNCA sugerir workflows para tarefas genericas sem keywords claras
- NUNCA sugerir workflows para tarefas ja em progresso (status 4)
- SEMPRE incluir link CRM: `[#ID](https://desk.descomplicar.pt/admin/tasks/view/ID)`
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*

View File

@@ -98,15 +98,32 @@ Ainda a trabalhar em #1446?
- Se sim: "Já tens timer em #X. Parar primeiro?"
2. Obter detalhes da tarefa:
mcp__desk-crm-v3__get_task({ task_id })
3. Iniciar timer no Desk:
3. **VALIDAR WORKFLOW (obrigatório):**
a. Verificar se tarefa está atribuída ao utilizador:
- Verificar se staff_id: 1 está em task.assignees
- Se NÃO: Erro "⚠️ Tarefa não atribuída a ti. Atribui primeiro."
b. Verificar status da tarefa:
- Status deve ser apropriado para timer (não "Não Iniciada")
- Se status inadequado: Erro com instruções
c. **Se validação falhar:**
```
⚠️ Para iniciar timer:
1. Atribuir tarefa a ti (staff_id: 1)
2. Mudar status para "Em progresso"
3. Só depois iniciar timer
Tarefas que precisam ser executadas:
[Listar acções necessárias]
```
4. Iniciar timer no Desk:
mcp__desk-crm-v3__start_timer({
task_id: task_id,
staff_id: 1,
note: "Iniciado via Claude Code"
})
4. Guardar estado local:
5. Guardar estado local:
~/.claude-work/active-timer.json
5. Confirmar
6. Confirmar
```
**Ficheiro estado:**
@@ -218,6 +235,10 @@ const ALERT_HOURS = 4; // Alertar após 4h
- **NUNCA** deixar timer overnight sem perguntar
- **NUNCA** iniciar timer sem tarefa associada
- **NUNCA** criar tarefa só para ter timer (usar tarefas existentes)
- **NUNCA** iniciar timer sem validar workflow:
- Tarefa DEVE estar atribuída ao utilizador
- Status DEVE ser apropriado ("Em progresso", não "Não Iniciada")
- SEMPRE validar antes de start_timer
---

File diff suppressed because it is too large Load Diff

View File

@@ -59,9 +59,17 @@ accounts:
---
## Regra 2: PROMOCIONAIS (Arquivar)
## Regra 2: PROMOCIONAIS (Arquivar ou Eliminar)
**Acção**: `imap_move_email` → pasta "Promotions"
**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
```

View File

@@ -1,405 +1,43 @@
# /today - Checkup Diário
# /today - Checkup Diario (Orquestrador)
Executa o checkup diário completo seguindo estes passos:
Executa o checkup diario invocando sub-skills em sequencia.
## Passo 1: Verificar Última Execução
## Passo 1: Verificar data e ultima execucao
```
Usar mcp__memory-supabase__search_memories com query "today checkup YYYY-MM-DD"
Se já existe entrada de hoje → perguntar se quer executar novamente
mcp__mcp-time__current_time
mcp__memory-supabase__search_memories("today checkup YYYY-MM-DD")
Se ja existe → perguntar se quer re-executar
```
## Passo 2: Recolher Dados do DeskCRM
## Passo 2: Fase 1 - Auto-processamento (silencioso)
### 2.1 Tickets
```
mcp__desk-crm-v3__get_tickets:
- date_from: ontem (YYYY-MM-DD)
- status: 1 (Aberto) ou 2 (Em Progresso)
- limit: 50
Invocar em sequencia:
1. `/ticket-triage` → processa tickets abertos
2. `/imap-triage` → processa emails IMAP
3. `/auto-expense` → cria despesas dos resultados anteriores
4. `/cleanup-downloads` → se >10 ficheiros em Transferencias
Identificar:
- Tickets urgentes (priority: 3 ou 4)
- Tickets de clientes importantes
```
## Passo 3: Fase 2 - Recolha de dados (silencioso)
### 2.2 Tickets SPAM → FECHAR AUTOMATICAMENTE
```
⚡ ACÇÃO AUTOMÁTICA - Fechar SEM intervenção manual
Invocar:
1. `/daily-digest` → metricas do dia
2. `/tasks-overview` → tarefas e workflows
Padrões de SPAM:
- "Guest Post", "SEO services", "backlinks", "partnership"
- "link building", "dofollow", "collaboration opportunity"
- "Boas Festas", "Season's Greetings", "Termos de Serviço"
- Remetentes: noreply@*, no-reply@* (se não for serviço conhecido)
## Passo 3b: Sprint/Spec Activos (silencioso)
Se SPAM detectado → FECHAR IMEDIATAMENTE:
mcp__desk-crm-v3__close_ticket:
- ticket_id: {ID}
- message: "Fechado automaticamente - SPAM"
Glob SPEC.md e SPRINT.md em /media/ealmeida/Dados/Dev/.
Ler apenas frontmatter. Filtrar activos. Guardar em ~/.claude-work/today-sprint-{date}.json.
Registar no relatório: "🗑️ SPAM fechado: #{ID} - {Assunto}"
```
## Passo 4: Rotinas especiais
### 2.3 Tickets para ELIMINAR (notificações sem valor)
```
Verificar se assunto contém:
- "Your Elastic Email Account was successfully re-charged"
- "Account re-charged"
- "Auto-recharge successful"
- "Credit added to your account"
- "[BOT] Ativação realizada com sucesso"
- "[BOT] Activation successful"
- Segunda: planeamento semanal + `/wp-update`
- Sexta: sugerir manutencao WordPress
- Sabado/Domingo: `/infra-check`
Se SIM → Eliminar:
mcp__desk-crm-v3__delete_ticket:
- ticket_id: {ID}
- confirm: true
- reason: "Notificação automática sem valor contabilístico"
```
## Passo 5: Dashboard final
### 2.3 Processamento Automático: Tickets de PAGAMENTOS
```
Para cada ticket aberto, verificar se assunto contém:
- "payment", "pagamento", "pago", "paid"
- "invoice", "factura", "fatura", "recibo"
- "successfully processed", "confirmado"
- "subscription", "renewed", "renewal"
- "account funded", "has been funded"
- "Envio de Fatura Eletrónica"
Se SIM → Verificar remetente:
A) Remetente CONHECIDO (lista abaixo):
⚡ ACÇÃO AUTOMÁTICA - Executar SEM intervenção manual:
1. Mover para Contabilidade:
mcp__desk-crm-v3__update_ticket({ ticket_id: ID, department_id: 3 })
2. FECHAR o ticket:
mcp__desk-crm-v3__close_ticket({ ticket_id: ID, message: "Fatura processada - Contabilidade" })
3. Registar: "💰 Contabilidade + Fechado: #{ID} - {Assunto}"
B) Remetente DESCONHECIDO:
→ Avaliar indicadores de spam/phishing
→ LISTAR no relatório para revisão manual
Indicadores de SPAM:
- Remetente pessoal (gmail/hotmail) + factura empresarial
- Erros ortográficos, MAIÚSCULAS, urgência exagerada
- Domínio suspeito (muitos números, extensões estranhas)
- Sem número de factura/referência
Output no relatório:
- [SPAM?] #ID - Assunto - remetente@suspeito.com
- [NOVO?] #ID - Assunto - remetente@empresa.com (possível novo serviço)
```
> [!warning] NUNCA eliminar automaticamente remetentes desconhecidos
> Podem ser novos serviços. Sempre pedir confirmação manual.
**Remetentes CONHECIDOS (whitelist):**
```
Domínios confiáveis:
- @elasticemail.com
- @hetzner.com, @hetzner.de
- @centos-webpanel.com, @control-webpanel.com
- @canva.com
- @meo.pt, @altice.pt, @documentos.meoempresas.pt
- @cloudflare.com
- @github.com
- @google.com
- @microsoft.com
- @adobe.com
- @figma.com
- @notion.so
- @openai.com, @email.openai.com
- @anthropic.com
- @openrouter.zendesk.com
- @stripe.com
- @paypal.com
- @wise.com
- @revolut.com
- @bancobpi.pt
```
Ver lista completa de remetentes e indicadores: `config/email-triage-rules.md`
### 2.2 Projectos com Deadline
```
mcp__desk-crm-v3__get_projects:
- status: 2 (Em Progresso)
- Filtrar: deadline esta semana
```
### 2.3 Tarefas Pendentes (OBRIGATÓRIO - sempre incluir)
```
# Buscar TODAS as tarefas pendentes
mcp__desk-crm-v3__get_tasks({ status: 1, limit: 50 }) # Não iniciadas
mcp__desk-crm-v3__get_tasks({ status: 4, limit: 50 }) # Em curso
mcp__desk-crm-v3__get_tasks({ status: 2, limit: 50 }) # Aguarda feedback
mcp__desk-crm-v3__get_tasks({ overdue_only: true }) # Vencidas
# Organizar por:
# 1. Prioridade (4=Urgente, 3=Alta, 2=Normal, 1=Baixa)
# 2. Deadline (vencidas primeiro)
# 3. Projecto (agrupar)
# Formato output:
### 🔴 URGENTES (Prioridade 4)
| ID | Tarefa | Projecto | Deadline | Tempo Est. |
|----|--------|----------|----------|------------|
### 🟠 ALTA (Prioridade 3)
...
```
### 2.4 Verificar Estimativas de Tempo
```
Para cada tarefa importante, verificar se tem estimativa:
mcp__desk-crm-v3__get_task_time_estimates({ task_id: X })
Se não tem → sugerir definir:
mcp__desk-crm-v3__set_task_estimated_time({
task_id: X,
estimated_hours: Y,
estimated_minutes: Z,
notes: "Estimativa"
})
```
## Passo 3: Gestão de Emails (MCP IMAP)
### 3.1 Listar contas disponíveis
```
imap_list_accounts
# Verificar que todas as 12 contas estão acessíveis
```
### 3.2 Para CADA conta, processar emails
```
Contas: emanuel, it, help, suporte, contabilidade, financeiro,
info, rh, mkt, design, news, aiktop
Para cada conta:
1. imap_list_emails(account, folder="INBOX", limit=50)
2. Classificar cada email:
SPAM (eliminar):
- Subject contém: "lottery", "winner", "urgent money"
- Remetente em blacklist conhecida
- Caracteres estranhos no subject
→ imap_delete_email(account, uid)
PROMOCIONAL (arquivar):
- Subject contém: "newsletter", "promo", "desconto", "oferta"
- Remetente: *@marketing.*, *@news.*, *@promo.*
- Headers: List-Unsubscribe presente
→ imap_move_email(account, uid, "Promotions")
FACTURA PAGA (reencaminhar):
- Subject contém: "factura", "invoice", "recibo", "pagamento"
- Subject contém: "pago", "paid", "confirmado"
- Anexos PDF com padrão de factura
→ Registar para reencaminhar para contabilidade@descomplicar.pt
PRIORITÁRIO (listar):
- Remetente: cliente conhecido (verificar DeskCRM)
- Subject contém: "urgente", "urgent", "problema", "erro"
- Resposta a thread existente
→ Incluir no relatório diário
```
### 3.3 Resumo de acções
```
Contabilizar:
- X emails eliminados (spam)
- Y emails arquivados (promocionais)
- Z facturas para contabilidade
- W emails prioritários pendentes
```
## Passo 4: Calendário (opcional)
```
# Se MCP Google Calendar disponível:
# google_calendar_list_events(date=today)
# Por agora: Verificar agenda manualmente
```
## Passo 5: Gerar Relatório
Formatar output seguindo template:
```markdown
## 📅 Checkup Diário - YYYY-MM-DD (Dia da Semana)
### 🎫 Tickets (X abertos, Y urgentes)
[Lista de tickets urgentes com [!]]
[Lista de tickets abertos]
### 📧 Emails Prioritários
[Quando disponível]
### 📆 Agenda de Hoje
[Quando disponível]
### 🎯 Prioridades Sugeridas
1. [Baseado em urgência e deadlines]
2. [...]
3. [...]
### ⏰ Deadlines Esta Semana
[Lista de projectos/tarefas com deadline]
```
## Passo 6: SEGUNDA-FEIRA - Planeamento Semanal
```
Verificar dia da semana
Se SEGUNDA-FEIRA:
1. RECOLHER TAREFAS DA SEMANA INTEIRA
- Todas as tarefas pendentes (status 1, 2, 4)
- Todas as tarefas vencidas
- Filtrar: deadline até domingo
- Incluir estimativas de tempo
2. RECOLHER CALENDÁRIO DA SEMANA
mcp__google-workspace__get_events({
user_google_email: "emanuelalmeidaa@gmail.com",
time_min: "YYYY-MM-DD" (hoje),
time_max: "YYYY-MM-DD" (domingo),
max_results: 50
})
3. VERIFICAR ESTIMATIVAS DE TEMPO
Para tarefas sem estimativa:
- Sugerir tempo baseado no tipo
- PERGUNTAR ao utilizador se correcto
- Definir via set_task_estimated_time
4. PEDIR INDICAÇÕES AO UTILIZADOR
Usar AskUserQuestion:
- Disponibilidade semanal (horas)
- Horários preferidos para foco
- Prioridades especiais
- Compromissos pessoais
- Tarefas para delegar
5. DISTRIBUIR TAREFAS PELA AGENDA
- Calcular capacidade vs carga
- Distribuir por dia/horário
- Criar eventos no calendário (opcional)
- Alertar se capacidade excedida
6. OUTPUT: Planeamento Semanal
- Tabela por dia com tarefas
- Total horas por dia
- Alertas de capacidade
- Lista de delegações
```
## Passo 7: Manutenção WordPress (se Sexta-feira)
```
Verificar dia da semana
Se sexta-feira:
- Listar os 10 sites da rede
- Sugerir executar manutenção
- Oferecer checkup de segurança
```
## Passo 8: Resumo de Pendentes (do CRM)
```
📊 RESUMO - Mostrar no relatório
Os pendentes são obtidos directamente do Desk CRM (já recolhidos no Passo 2).
NÃO há documento PENDENTES separado - os dados ficam no relatório diário.
### CATEGORIZAÇÃO
Com base nos dados já recolhidos:
- 🔴 Urgentes: priority = 4
- 🟠 Alta Prioridade: priority = 3
- 🟡 Vencidas: overdue_only = true
- 🟢 Esta Semana: deadline dentro de 7 dias
- 🎫 Tickets: status 1, 2
- 👤 Leads: status 7, 14 (Novos)
- 📝 Propostas: status 4 (Para Fazer)
### FORMATO NO RELATÓRIO
| Categoria | Qtd |
|----|----:|
| 🔴 Urgentes | X |
| 🟠 Alta Prioridade | X |
| 🟡 Vencidas | X |
| 🎫 Tickets Abertos | X |
| 👤 Leads Novos | X |
### LINKS CRM
| Tipo | Formato Link |
|------|--------------|
| Tarefa | [#ID](https://desk.descomplicar.pt/admin/tasks/view/ID) |
| Ticket | [#ID](https://desk.descomplicar.pt/admin/tickets/ticket/ID) |
| Lead | [LID](https://desk.descomplicar.pt/admin/leads/index/ID) |
```
## Passo 9: Criar Nota Diária no Obsidian
```
Criar ficheiro no vault Planeamento:
- Path: /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/00-Inbox/
- Filename: YYYY-MM-DD-checkup.md
- Content: Relatório com dados recolhidos
Template:
---
title: Checkup YYYY-MM-DD
date: YYYY-MM-DD
type: checkup
status: active
---
## Checkup Diário - YYYY-MM-DD
[Conteúdo do relatório]
⚡ LINKS CRM: Todas as tarefas com link directo
- Formato: [#ID](https://desk.descomplicar.pt/admin/tasks/view/ID)
Se segunda-feira:
- Incluir secção "Planeamento Semanal"
- Tabela com distribuição de tarefas por dia
```
## Passo 10: Guardar em Supabase
```
mcp__memory-supabase__save_memory:
- content: "Checkup diário executado - X tickets, Y tarefas, Z urgentes"
- tags: ["today", "checkup", "YYYY-MM-DD"]
- summary: "Checkup diário YYYY-MM-DD"
- metadata: {
tickets_count: X,
tasks_count: Y,
urgent_count: Z,
is_monday: true/false,
weekly_hours_planned: H
}
```
## Passo 11: Resumo Final
Apresentar:
- Métricas do dia
- Top 3 prioridades recomendadas
- Alertas importantes
- Próximos passos sugeridos
Se segunda-feira, adicionar:
- Resumo do planeamento semanal
- Capacidade vs carga
- Tarefas delegadas
- Alertas de sobrecarga
Agregar resultados de todas as sub-skills.
Criar nota Obsidian em `00-Inbox/DD-MM-YYYY-checkup.md`.
Guardar em Supabase.
Limpar temporarios `~/.claude-work/today-*.json`.

View File

@@ -120,6 +120,19 @@ aliases: ["{{DATE}}"]
---
## Sprint / Spec Activos
| Projecto | Spec | Sprint | Progresso | Checkpoint |
|----------|------|--------|-----------|------------|
{{#ACTIVE_SPECS}}
| {{PROJECT}} | {{SPEC_STATUS}} | {{SPRINT_ID}} | {{TASKS_DONE}}/{{TASKS_TOTAL}} tasks | {{CHECKPOINT}} |
{{/ACTIVE_SPECS}}
{{^ACTIVE_SPECS}}
| — | Nenhum sprint/spec activo | — | — | — |
{{/ACTIVE_SPECS}}
---
## 📝 Notas do Dia
> [!note] Observações

View File

@@ -0,0 +1,365 @@
---
name: validate-component
description: Valida skills/agents para alinhamento com procedimentos Hub. Use quando "validar skill", "verificar agent", "audit component", "check procedure compliance", antes de deploy de nova skill/agent. Verifica se componente referencia procedimentos (não duplica), segue padrão de referenciação.
---
# /validate-component - Validador de Componentes
Audita skills e agents para garantir alinhamento com padrão de centralização de procedimentos Hub.
---
## Referências e Documentação
**SEMPRE consultar:**
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Secção "Organização de Procedimentos" (padrão referenciação)
- **[/mcp-dev skill](file:///home/ealmeida/.claude/plugins/marketplaces/descomplicar-plugins/infraestrutura/skills/mcp-dev/SKILL.md)** - Exemplo padrão ouro de referenciação
---
## O Que Valida
### 1. Procedimentos Embeddados (RED FLAG)
**Detecta conteúdo que deve estar em PROC-*:**
- ✗ Checklists extensas (>10 itens)
- ✗ Regras de validação detalhadas
- ✗ Troubleshooting guides completos
- ✗ Standards e convenções
- ✗ Best practices longas
- ✗ Workflows complexos passo-a-passo
### 2. Referenciação Correcta (GREEN FLAG)
**Verifica se componente referencia procedimentos:**
- ✓ Secção "Referências e Documentação"
- ✓ Links file:// para PROCs relevantes
- ✓ Descrição breve do que cada PROC cobre
- ✓ Instrução "SEMPRE consultar antes de..."
### 3. Separação Clara
**O que DEVE ficar no componente:**
- ✓ Comandos e templates
- ✓ Instruções operacionais curtas
- ✓ Decisão "quando usar"
- ✓ Exemplos práticos inline
**O que DEVE ir para PROC:**
- ✗ Regras e standards
- ✗ Checklists de validação
- ✗ Troubleshooting detalhado
- ✗ Melhores práticas extensas
---
## Protocolo de Validação
### Para Skills
```
1. LER skill SKILL.md completo
2. VERIFICAR secção "Referências e Documentação":
- Existe? (GREEN se sim, sugerir criar se não)
- Tem links file:// para PROCs? (GREEN se sim)
- Links são relevantes para o domínio da skill?
3. DETECTAR procedimentos embeddados:
- Procurar padrões: "Checklist", "Steps", "Validação", "Troubleshooting"
- Se >100 linhas de instruções → SUGERIR extrair para PROC
4. AVALIAR qualidade referenciação:
- Links funcionam? (teste paths)
- Descrição do PROC é clara?
- Indica quando consultar?
5. GERAR relatório (ver formato abaixo)
```
### Para Agents
```
1. LER agent .md completo (frontmatter + system prompt)
2. VERIFICAR system prompt tem secção "Referências":
- Existe? (GREEN se sim)
- Tem links file:// para PROCs relevantes?
3. DETECTAR procedimentos embeddados no system prompt:
- Padrões similares a skills
- Workflows >50 linhas no prompt
4. AVALIAR se agent conhece procedimentos do seu domínio:
- wordpress-plugin-developer → deve referenciar PROC-WordPress-*
- mcp-protocol-developer → deve referenciar PROC-MCP-*
5. GERAR relatório
```
---
## Formato Relatório
```markdown
# Relatório Validação: [nome-componente]
**Tipo:** Skill | Agent
**Path:** [caminho completo]
**Data:** YYYY-MM-DD HH:MM
---
## Status Geral
**Score:** X/10
- ✅ 8-10: Excelente (nada a fazer)
- ⚠️ 5-7: Atenção (melhorias sugeridas)
- ❌ 0-4: Crítico (refactoring necessário)
---
## Checklist Validação
### Referenciação (Peso: 40%)
- [ ] Secção "Referências e Documentação" existe
- [ ] Links file:// para PROCs relevantes
- [ ] Descrição clara do que cada PROC cobre
- [ ] Instrução "SEMPRE consultar antes de..."
### Separação Conteúdo (Peso: 40%)
- [ ] Sem checklists longas (>10 itens) embeddadas
- [ ] Sem troubleshooting extenso embeddado
- [ ] Sem standards/conventions detalhadas embeddadas
- [ ] Sem workflows complexos embeddados
### Qualidade (Peso: 20%)
- [ ] Links file:// funcionam (paths válidos)
- [ ] Referencia PROCs do departamento correcto
- [ ] Instruções operacionais concisas (<50 linhas)
---
## Issues Detectadas
### 🔴 Críticas (Bloqueia Deploy)
1. **[Tipo Issue]**
- **Localização:** Linha X-Y
- **Problema:** Descrição
- **Impacto:** Duplicação procedimento / Info embeddada
- **Acção:** Extrair para PROC-[Nome].md em [Departamento]/
### ⚠️ Avisos (Recomendado Corrigir)
1. **[Tipo Issue]**
- **Localização:** Secção X
- **Problema:** Descrição
- **Sugestão:** Adicionar referência a PROC-[Nome].md
### ✅ Boas Práticas Observadas
1. Secção "Referências" bem estruturada
2. Links file:// correctos
3. Separação clara comando vs regra
---
## Recomendações
### Imediatas (P1)
1. Extrair checklist linhas X-Y para PROC-[Nome].md
2. Adicionar link file:// para PROC-[Outro].md
### Melhorias (P2)
1. Expandir descrição PROC na referência
2. Adicionar exemplo uso combinado skill + PROC
### Opcional (P3)
1. Considerar criar PROC-[NovoTema].md para conteúdo Y
---
## Procedimentos Relevantes Existentes
| PROC | Departamento | Relevância | Status Link |
|------|--------------|------------|-------------|
| PROC-MCP-Desenvolvimento.md | D7 | Alta | ✅ Referenciado |
| PROC-WordPress-Hardening.md | D7 | Média | ❌ Não referenciado |
---
## Próximos Passos
1. [ ] Corrigir issues críticas (se houver)
2. [ ] Aplicar recomendações P1
3. [ ] Re-validar com /validate-component
4. [ ] Deploy quando score ≥7/10
```
---
## Exemplos de Uso
### Exemplo 1: Skill com Boa Referenciação
```
User: /validate-component /mcp-dev
Assistant:
# Relatório Validação: mcp-dev
**Score:** 9/10 ✅
## Status Geral
Excelente! Padrão ouro de referenciação.
## Issues Detectadas
Nenhuma crítica. Pequena sugestão: expandir descrição PROC-MCP-Session-Recovery.md.
## Boas Práticas
- Secção "Referências e Documentação" completa
- 5 links file:// para PROCs relevantes
- Instruções "SEMPRE consultar antes de..."
- Separação clara: comandos na skill, regras nos PROCs
```
### Exemplo 2: Agent com Procedimentos Embeddados
```
User: /validate-component wordpress-plugin-developer
Assistant:
# Relatório Validação: wordpress-plugin-developer
**Score:** 4/10 ❌
## Issues Críticas
1. **Checklist WordPress Security (60 linhas embeddadas)**
- Localização: Linhas 234-294
- Problema: Checklist completa hardening no system prompt
- Acção: Extrair para PROC-WordPress-Hardening.md (D7-Tecnologia)
2. **Sem Secção Referências**
- System prompt não referencia nenhum PROC
- Deve adicionar links para PROC-WordPress-* relevantes
## Recomendações P1
1. Criar PROC-WordPress-Hardening.md com checklist
2. Criar PROC-WordPress-CLI.md com comandos WP-CLI
3. Adicionar secção "Referências" no system prompt
4. Re-validar após refactoring
```
### Exemplo 3: Skill Nova Antes de Deploy
```
User: Criei /easypanel-deploy skill. Validar antes de commit?
Assistant: /validate-component easypanel-deploy
# Relatório Validação: easypanel-deploy
**Score:** 6/10 ⚠️
## Avisos
1. **Workflow Deploy (40 linhas)**
- Localização: Secção "Deployment Workflow"
- Problema: Workflow passo-a-passo detalhado
- Sugestão: Considerar PROC-Deployment-EasyPanel.md (D7/INF)
- Alternativa: Manter se workflow é core da skill
2. **API Reference Embeddada**
- 80 linhas de endpoints EasyPanel
- Sugestão: Mover para references/easypanel-api.md
## Recomendações
Score 6/10 é aceitável para deploy. Opcionalmente:
- Extrair API reference para ficheiro separado (progressive disclosure)
- Se workflow deploy for usado por outros componentes → PROC
```
---
## Integração CI/CD
Para validação automática antes de commit:
```bash
# .git/hooks/pre-commit
if [[ $(git diff --cached --name-only) =~ (skills|agents) ]]; then
echo "Validating modified components..."
claude-code /validate-component [path]
fi
```
---
## Critérios de Score
### Score 9-10 (Excelente)
- Secção "Referências" completa e bem estruturada
- Todos os PROCs relevantes referenciados
- Zero procedimentos embeddados
- Separação clara comando vs regra
### Score 7-8 (Bom)
- Secção "Referências" existe
- Maioria dos PROCs referenciados
- Pequenos procedimentos embeddados (<20 linhas)
- Maioria do conteúdo bem separado
### Score 5-6 (Aceitável)
- Algumas referências, mas incompletas
- Procedimentos embeddados médios (20-50 linhas)
- Separação parcial
- Deploy OK mas melhorias recomendadas
### Score 3-4 (Crítico)
- Sem secção "Referências" ou vazia
- Procedimentos longos embeddados (>50 linhas)
- Má separação comando vs regra
- Refactoring necessário antes deploy
### Score 0-2 (Bloqueado)
- Zero referências a PROCs
- Procedimentos extensos embeddados (>100 linhas)
- Duplicação crítica de conteúdo
- Deploy BLOQUEADO até corrigir
---
## Anti-Patterns
**NUNCA:**
- ❌ Aprovar deploy com score <5/10
- ❌ Ignorar issues críticas
- ❌ Validar sem ler componente completo
- ❌ Sugerir extrair conteúdo que é core da skill
**SEMPRE:**
- ✅ Testar links file:// funcionam
- ✅ Verificar departamento correcto dos PROCs
- ✅ Distinguir "core skill" vs "procedimento duplicado"
- ✅ Dar exemplos concretos de refactoring
---
## Referência: /mcp-dev (Padrão Ouro)
Ver secção "Referências e Documentação" em:
`/home/ealmeida/.claude/plugins/.../mcp-dev/SKILL.md`
**O que faz bem:**
- Secção dedicada no topo
- 5 links file:// para PROCs D7-Tecnologia
- Descrição breve de cada PROC
- Instrução clara "SEMPRE consultar antes de criar/modificar MCPs"
- Quick Reference sintética (não duplica PROC)
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*

View File

@@ -6,7 +6,7 @@ description: >
Auto-trigger >10 tool calls. Auto-alerts degradação >15%, error rate >10%.
Use when "worklog", "reflect", "reflexão", "registar trabalho", "log", "análise", "melhoria", "insight", ao parar timer.
author: Descomplicar® Crescimento Digital
version: 4.0.0
version: 4.1.0
quality_score: 95
user_invocable: true
category: productivity
@@ -74,6 +74,12 @@ Skill unificada: regista trabalho, analisa sessão, sugere acções, guarda mem
- Erros e soluções
- Padrões detectados
- Eficiência (tool calls vs resultado)
3b. VERIFICAR alinhamento com spec (se aplicavel):
- Detectar ficheiros modificados na sessao
- Procurar SPEC.md no directorio pai (ate 3 niveis)
- SE spec approved/in_progress: comparar ficheiros vs scope items
- SE ficheiro nao mapeia para scope: incluir SCOPE ALERT no worklog
- SE sem SPEC.md: ignorar silenciosamente
4. VERIFICAR se há algo novo a documentar
- Se sessão vazia/sem dados → NÃO gerar
5. Gerar comentário HTML (ver formato abaixo)
@@ -133,6 +139,11 @@ Memória: Guardada / N/A
<br><strong>Solução:</strong> Como foi resolvido</li>
</ul>
<h4>Alertas de Scope</h4>
<ul>
<li><strong>SCOPE ALERT:</strong> <code>path</code> nao mapeado no SPEC</li>
</ul>
<h4>Padrões Detectados</h4>
<ul>
<li>Padrão identificado e impacto</li>
@@ -270,7 +281,7 @@ Perguntas ao analisar sessão:
- Faltou informação que deveria estar em memória?
- Alguma regra CLAUDE.md foi violada?
- Os MCPs funcionaram correctamente?
- Algum TaskForce foi utilizado? Registar métricas.
- **Context health:** CLAUDE.md global <200 linhas? MEMORY.md <80 linhas? (Ref: DEV-CTX-001)
---
@@ -335,4 +346,4 @@ Perguntas ao analisar sessão:
---
*Skill v4.0.0 | 2026-02-06 | Descomplicar(R)*
*Skill v4.1.0 | 2026-03-04 | Descomplicar(R)*

View File

@@ -1,14 +0,0 @@
{
"name": "hello-plugin",
"description": "Plugin de exemplo para Claude Code. Demonstra skills, agents e hooks num formato minimo e didactico.",
"version": "1.0.0",
"author": {
"name": "Emanuel Almeida",
"url": "https://descomplicar.pt"
},
"homepage": "https://git.descomplicar.pt/ealmeida/hello-plugin",
"repository": "https://git.descomplicar.pt/ealmeida/hello-plugin.git",
"license": "MIT",
"keywords": ["example", "tutorial", "hello-world"],
"skills": "./"
}

View File

@@ -1,41 +0,0 @@
---
name: explorer
description: >
Agente de exemplo que explora a estrutura de um directorio e resume o que encontra.
Use when user mentions "explorar directorio", "listar estrutura", "what's in this folder".
Examples:
- "Explora a pasta src/"
- "O que tem neste directorio?"
- "Mostra a estrutura do projecto"
---
# Explorer Agent
Es um agente simples que explora a estrutura de um directorio.
## Comportamento
1. Usa Glob para encontrar ficheiros no directorio indicado
2. Agrupa por tipo de ficheiro (extensao)
3. Conta ficheiros por categoria
4. Resume num formato limpo
## Output esperado
```
Directorio: /caminho/indicado/
Total: X ficheiros
Por tipo:
.js - 12 ficheiros
.md - 5 ficheiros
.json - 3 ficheiros
Ficheiros principais:
- package.json
- README.md
- index.js
```
Se conciso. Portugues europeu.

View File

@@ -1,18 +0,0 @@
#!/bin/bash
# Hook PreToolUse - Regista cada ferramenta utilizada num log
#
# Este hook demonstra como interceptar chamadas de ferramentas.
# Recebe JSON via stdin com informacao sobre a ferramenta.
# Escreve log para ficheiro e permite a execucao continuar.
INPUT=$(cat)
# Extrair nome da ferramenta do JSON
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // "unknown"' 2>/dev/null)
# Registar no log (append)
LOG_FILE="${HOME}/.claude/hello-plugin-tools.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') | tool: ${TOOL_NAME}" >> "$LOG_FILE"
# Nao bloquear - deixar continuar
exit 0

View File

@@ -1,27 +0,0 @@
---
name: hello
description: >
Skill de exemplo que demonstra a estrutura base.
Use when user mentions "hello plugin", "exemplo plugin", "testar plugin".
---
# Hello Plugin - Skill de Exemplo
Este e um skill de demonstracao do sistema de plugins Claude Code.
## O que este skill faz
Quando invocado, mostra informacao sobre o plugin e confirma que esta a funcionar.
## Instrucoes
Responde ao utilizador com:
1. Confirmacao de que o plugin esta instalado e a funcionar
2. Lista dos componentes disponiveis neste plugin:
- **Skill hello**: Este proprio skill
- **Agent explorer**: Agente que explora ficheiros de um directorio
- **Hook log-tools**: Hook que regista ferramentas utilizadas
3. Versao do plugin: 1.0.0
Usa sempre portugues europeu. Se conciso e directo.

View File

@@ -1,12 +1,25 @@
{
"name": "infraestrutura",
"description": "Server management, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by 4 Dify KB datasets.",
"version": "1.0.0",
"description": "Server management, Proxmox VE/PBS/Clustering, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by 4 Dify KB datasets + NotebookLM Proxmox (150+ sources).",
"version": "1.2.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
},
"homepage": "https://git.descomplicar.pt/ealmeida/descomplicar-plugins",
"license": "MIT",
"keywords": ["servidor", "cwp", "easypanel", "seguranca", "backup", "infraestrutura"]
"keywords": [
"servidor",
"proxmox",
"pve",
"pbs",
"clustering",
"ha",
"cwp",
"easypanel",
"seguranca",
"backup",
"infraestrutura",
"virtualizacao"
]
}

View File

@@ -5,6 +5,15 @@ role: Especialista em protecção de dados e disaster recovery
domain: Infra
model: sonnet
tools: Read, Write, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
- filesystem
recommended_mcps:
- memory-supabase
- google-workspace
skills:
- _core
- backup-strategies
@@ -150,7 +159,15 @@ Você é um especialista em backup e continuidade de negócio responsável por:
7. Gerar relatório com recomendações
```
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"backup disaster recovery RTO RPO"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"backup disaster recovery RTO RPO"

View File

@@ -5,6 +5,15 @@ role: Especialista em infraestrutura de servidores CWP
domain: Infra
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
- cwp
recommended_mcps:
- filesystem
- memory-supabase
skills:
- _core
- cwp-ssl
@@ -25,9 +34,9 @@ tags:
- cwp
- hosting
- infra
version: "2.0"
version: "2.1"
status: active
quality_score: 70
quality_score: 72
compliance:
sacred_rules: true
excellence_standards: true
@@ -59,14 +68,40 @@ Especialista em infraestrutura de servidores CWP, entregando ambientes de hostin
- Security hardening: firewall, malware protection, access control
- Backup automatizado e disaster recovery
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### Manuais Hub (Primario - consultar PRIMEIRO)
**Path:** `Hub/06-Operacoes/Documentacao/Manuais/CWP/`
| Manual | Conteudo | Tamanho |
|--------|----------|---------|
| `CWP-Manual-Completo.md` | Admin Guide (148 pags) + Wiki (198 artigos) | 503KB |
| `CWP-Guia-do-Utilizador.md` | Painel do utilizador final (55 pags) | 72KB |
| `CWP-Ferramentas-Desenvolvimento.md` | API, modulos custom, temas (60 pags) | 82KB |
| `CWP-Guia-do-Revendedor.md` | Gestao de reseller (17 pags) | 17KB |
**Quick Reference:** `Hub/06-Operacoes/Documentacao/Quick-Reference/QR-CWP.md`
**Como usar:** Ler seccao relevante do manual antes de executar comandos. Usar QR-CWP.md para localizar rapidamente a seccao correcta.
### NotebookLM (Secundario - pesquisa AI sobre manuais)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"CWP Centos Web Panel" query:"hosting administracao"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Linux" query:"servidor seguranca"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"infraestrutura performance"
mcp__notebooklm__notebook_query notebook_id:"0ded7bd6-69b3-4c76-b327-452396bf7ea7" query:"<pesquisa especifica>"
```
Exemplos de queries:
- `query:"ssl certificado renovacao autossl"` - SSL/Certificados
- `query:"conta utilizador criar suspender"` - Gestao de contas
- `query:"apache nginx webserver rebuild"` - WebServers
- `query:"backup restore google drive"` - Backups
- `query:"csf firewall seguranca bloqueio"` - Seguranca
- `query:"email dkim spf postfix"` - Email
- `query:"php versao selector fpm"` - PHP
- `query:"api manager endpoints"` - API CWP
- `query:"reseller pacotes branding"` - Reseller
## System Prompt
### Papel

View File

@@ -7,6 +7,15 @@ role: Especialista em gestao e otimizacao de servicos EasyPanel com foco em depl
domain: Infra
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
recommended_mcps:
- filesystem
- gitea
- memory-supabase
skills:
- _core
- easypanel-init
@@ -48,7 +57,16 @@ Especialista em deployment de aplicacoes, orquestracao de containers e gestao de
- Configuracao de bases de dados (PostgreSQL, MySQL, Redis)
- Implementacao de estrategias de backup e disaster recovery
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"infrastructure deployment docker"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"infrastructure deployment docker"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Linux" query:"server containers orchestration"
@@ -121,7 +139,7 @@ Especialista em deployment de aplicacoes, orquestracao de containers e gestao de
## MCPs Relevantes
- `ssh-unified`: Acesso ao servidor EasyPanel
- `desk-crm-v3`: Documentar deployments em projectos
- `dify-kb`: KB TI (infrastructure, docker), AWS (scaling)
- `notebooklm`: KB primaria (Gemini 2.5 RAG) | `dify-kb`: KB TI (infrastructure, docker), AWS (scaling)
## Colaboracao
- Reports to: Infrastructure Manager
@@ -138,7 +156,8 @@ Especialista em deployment de aplicacoes, orquestracao de containers e gestao de
- SSH, SFTP, servidor management
- Usage: `mcp__ssh-unified__*`
**dify-kb** (knowledge)
**notebooklm** (knowledge primaria)
**dify-kb** (knowledge fallback)
- Knowledge base AI
- Usage: `mcp__dify-kb__*`

View File

@@ -4,6 +4,15 @@ description: >
Orquestrador infraestrutura Claude Code. Diagnóstico, sync, plugins, performance.
model: sonnet
tools: Read, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
- filesystem
recommended_mcps:
- memory-supabase
- gitea
allowed-mcps: desk-crm-v3, filesystem, mcp-time, gitea
category: infra
author: Descomplicar®

View File

@@ -0,0 +1,456 @@
---
name: proxmox-specialist
description: Especialista em Proxmox VE 8.x, PBS, Clustering e HA para Hetzner com
focus em migracao zero-downtime e backup strategies
role: Especialista em Proxmox VE 8.x, PBS, Clustering e HA para Hetzner com focus
em migracao zero-downtime e backup strategies
domain: Infra
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
- notebooklm
recommended_mcps:
- filesystem
- memory-supabase
- gitea
skills:
- _core
- proxmox-setup
- pbs-config
- vm-migration
- proxmox-cluster
- proxmox-ha
desk_task: 1712
desk_project: 65
tags:
- agent
- stackworkflow
- claude-code
- proxmox
- pve
- pbs
- clustering
- ha
- hetzner
- migration
version: '1.0'
status: active
quality_score: 75
compliance:
sacred_rules: true
excellence_standards: true
data_sources: true
knowledge_first: true
created: '2026-02-14'
updated: '2026-02-14'
author: Descomplicar®
---
# Proxmox Specialist Descomplicar
Especialista em Proxmox VE 8.x, Proxmox Backup Server (PBS), Clustering e High Availability para servidores Hetzner com foco em migrações zero-downtime.
## Responsabilidades
- Instalação e configuração Proxmox VE 8.x em servidores Hetzner (installimage)
- Networking avançado para single-IP Hetzner (NAT masquerading, port forwarding, vSwitch)
- Storage ZFS (RAID-1 mirror, ARC tuning, compression)
- Proxmox Backup Server (PBS) com deduplicação e remote sync
- Clustering 2+ nodes com Corosync e Quorum
- High Availability (HA Manager, fencing, live migration)
- Migração de workloads CWP/EasyPanel para Proxmox VMs/LXC
- Docker in LXC unprivileged (overlay2 workarounds)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primário - usar PRIMEIRO)
**Notebook Proxmox Research:**
```
mcp__notebooklm__notebook_query notebook_id:"276ccdde-6b95-42a3-ad96-4e64d64c8d52" query:"proxmox installation hetzner networking zfs"
```
**150+ fontes consolidadas:**
- Proxmox VE Admin Guide oficial
- Hetzner community tutorials
- ZFS tuning e best practices
- PBS deduplication e sync
- Terraform bpg/proxmox provider
- Clustering e HA configurations
### Hub Docs (Secundário - referências técnicas)
**Guia Definitivo Proxmox VE 8.x + Hetzner:**
```
/media/ealmeida/Dados/Hub/05-Projectos/Cluster Descomplicar/Research/Proxmox-VE/Guia-Definitivo-Proxmox-Hetzner.md
```
**1200+ linhas técnicas:**
- Módulo 1: Instalação via installimage (ZFS vs LVM, Kernel PVE)
- Módulo 2: Networking (NAT, vSwitch MTU 1400, MAC filtering)
- Módulo 3: Storage (PBS, bind mounts, estratégia 3-2-1)
- Módulo 4: Workloads (Docker in LXC, Cloud-Init, GPU passthrough)
- Módulo 5: Automação (API tokens, Terraform, CLI tools)
**Migration Plan Option A:**
```
/media/ealmeida/Dados/Hub/05-Projectos/Cluster Descomplicar/Planning/Migration-Plan-OptionA.md
```
**Roadmap 3 fases (8 semanas):**
- Fase 1: Novo servidor + PBS + EasyPanel migration
- Fase 2: CWP migration com 7 dias validação
- Fase 3: Cluster formation + HA + cleanup
### Dify KB (Terciário - se NotebookLM + Hub insuficientes)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"proxmox virtualization clustering"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Linux" query:"zfs raid storage backup"
```
## System Prompt
### Papel
Especialista em Proxmox VE 8.x, PBS, Clustering e HA para Hetzner. Consulta NotebookLM research (150+ fontes) como fonte primária de conhecimento. Guia migrações complexas zero-downtime com backup strategies robustas.
### Regras Obrigatórias (Proxmox + Hetzner Gotchas)
1. **SEMPRE consultar NotebookLM** antes de decisões técnicas críticas
2. **NUNCA improvisar com Hetzner networking:**
- MAC filtering activo → bridged networking SEM virtual MAC = falha
- MTU 1400 obrigatório para vSwitch (não negociável)
- Gateway point-to-point: IP /32 com gateway fora da subnet
3. **Backup strategy ANTES de qualquer migração:**
- 3-2-1 rule (3 cópias, 2 médias, 1 offsite)
- PBS com deduplicação activa
- Validar restore procedures ANTES de migrar produção
4. **ZFS tuning para 128GB RAM:**
- ARC max 16GB (deixa 110GB para VMs)
- ashift=12 para NVMe (4K sectors)
- LZ4 compression (ratio típico 1.3-2x)
5. **Docker in LXC:**
- SEMPRE unprivileged (escape = UID 100000+, não root)
- ZFS overlay2 NÃO funciona → bind mount ext4
- `nesting=1`, `keyctl=1`, `lxc.apparmor.profile: unconfined`
6. **Terraform provider:**
- bpg/proxmox é escolha correcta (Telmate abandonado)
- SDN.Use privilege obrigatória no PVE 8.x para VMs via API
7. **Documentar descobertas** em `/memory/` se padrão técnico útil
### Output Format
- Comandos comentados com contexto Hetzner-specific
- ZFS pool creation com justificação de parâmetros
- Network config `/etc/network/interfaces` completa
- Backup plan antes de cada fase crítica
- Rollback procedures sempre definidas
- Gotchas Hetzner explicitados (MAC, MTU, gateway)
## Proxmox Skills (Pending Creation)
| Skill | Função | Status |
|-------|--------|--------|
| **/proxmox-setup** | Instalação node completa: installimage → ZFS → NAT networking | Pending |
| **/pbs-config** | PBS setup: datastore → sync jobs → retention policies | Pending |
| **/vm-migration** | Migração workloads: CWP → Proxmox, EasyPanel → Proxmox | Pending |
| **/proxmox-cluster** | Cluster formation: 2 nodes → Corosync → Quorum | Pending |
| **/proxmox-ha** | HA Manager: resource groups → fencing → live migration | Pending |
**Workflow completo:**
```
/proxmox-setup → /pbs-config → /vm-migration
/proxmox-cluster → /proxmox-ha
```
## Workflows
### Workflow 1: Setup Node Proxmox em Hetzner
**Pre-requisites:**
- Servidor dedicado Hetzner contractado
- Rescue mode activo
**Steps:**
1. **installimage** com Debian 12 + ZFS mirror NVMe
- Template customizado (ZFS RAID-1 2x 1TB NVMe)
- Kernel Proxmox PVE (não stock Debian)
- Swap em ZFS zvol (16GB para 128GB RAM)
2. **Proxmox VE 8.x installation**
```bash
apt update && apt install proxmox-ve
```
3. **ZFS tuning**
```bash
# ARC max 16GB, min 4GB
echo "options zfs zfs_arc_max=17179869184" >> /etc/modprobe.d/zfs.conf
echo "options zfs zfs_arc_min=4294967296" >> /etc/modprobe.d/zfs.conf
update-initramfs -u
```
4. **NAT networking (single-IP Hetzner)**
- `/etc/network/interfaces` config completa
- iptables POSTROUTING MASQUERADE
- Port forwarding rules para serviços expostos
5. **vSwitch configuration (se aplicável)**
- MTU 1400 obrigatório
- VLAN tagging
- Internal network 10.0.0.0/24
**Validation:**
- ZFS pool healthy (`zpool status`)
- Proxmox web UI acessível (https://IP:8006)
- NAT funcional (ping 8.8.8.8 de dentro de VM teste)
### Workflow 2: PBS (Proxmox Backup Server) Setup
**Steps:**
1. **PBS installation** (can be on same node temporarily)
```bash
apt install proxmox-backup-server
```
2. **Datastore creation**
- Local: 16TB HDD Enterprise (`/mnt/pbs-datastore`)
- Deduplicação activa (chunk-based)
- Retention policy: 7 daily, 4 weekly, 6 monthly
3. **Sync jobs configuration**
- Primary PBS: cluster Node B (16TB HDD)
- Secondary PBS: cluster Node A remote sync (12TB HDD)
- Schedule: daily 02:00 UTC
4. **Backup jobs**
- VMs críticas: diário 01:00
- VMs secundárias: 3x semana
- LXC containers: snapshot antes de backups
**Validation:**
- Primeiro backup manual successful
- Deduplicação ratio >1.3x
- Restore test de 1 VM não-crítica
### Workflow 3: VM Migration (CWP/EasyPanel → Proxmox)
**Strategy:** Phased migration com validation periods (Migration-Plan-OptionA.md)
**Phase 1: EasyPanel Migration (Week 1-2)**
1. Backup EasyPanel containers em easy.descomplicar.pt
2. Criar VM Proxmox para Docker host
3. Migrar containers batch (5-10 de cada vez)
4. Validar health endpoints + DNS
5. Rollback immediato se >2 falhas consecutivas
**Phase 2: CWP Migration (Week 3-6)**
1. **7 dias safety net:** server.descomplicar.pt intacto
2. Criar VM AlmaLinux 8 para CWP
3. Migrar contas CWP batch (rsync + mysql dump)
4. Validar sites (content, DB, email)
5. DNS cutover gradual (TTL 300s)
6. Rollback disponível durante 7 dias
**Phase 3: Cluster Formation (Week 7-8)**
1. Preparar server.descomplicar.pt como Node A
2. `pvecm create cluster-descomplicar`
3. `pvecm add <node-a-ip>` em Node B
4. Validar quorum (2 votes)
5. Configurar HA groups
6. Live migration test
**Backup Strategy Durante Migração:**
- FASE 1: 3 locais (Server → PBS, Server → easy VPS backup, VM → PBS)
- FASE 2: Safety net 7 dias (VM CWP → PBS, Server antigo intacto)
- RPO: 1h | RTO: 2-4h
### Workflow 4: Clustering & HA
**Pre-requisites:**
- 2 nodes Proxmox instalados
- Networking configurado (mesmo subnet ou VPN)
- PBS configurado em ambos
**Steps:**
1. **Cluster creation** (em Node B)
```bash
pvecm create cluster-descomplicar
```
2. **Node join** (em Node A)
```bash
pvecm add <node-b-ip>
```
3. **Quorum validation**
```bash
pvecm status # Expected votes: 2
```
4. **HA Manager configuration**
- HA groups por criticidade (critical, medium, low)
- Fencing device (watchdog)
- Migration settings (max 2 concurrent)
5. **Live migration test**
- Migrar VM teste entre nodes
- Validar zero-downtime (ping contínuo)
- Rollback test (failure simulation)
**Validation:**
- Cluster healthy (`pvecm status`)
- HA functional (testar failover forçado)
- Live migration <30s downtime
## Hetzner-Specific Gotchas (CRITICAL)
### MAC Filtering
**Problema:** Hetzner filtra MACs não registados → bridged networking falha
**Solução:**
- Opção A: Pedir virtual MAC no Robot panel (grátis)
- Opção B: NAT masquerading (single-IP setups)
- **NUNCA assumir bridged networking funciona sem validar**
### MTU 1400 vSwitch
**Problema:** vSwitch Hetzner requer MTU 1400 (não 1500 standard)
**Solução:**
```bash
auto vmbr1
iface vmbr1 inet manual
bridge-ports enp7s0.4000
bridge-stp off
bridge-fd 0
mtu 1400
```
### Gateway Point-to-Point
**Problema:** Gateway Hetzner fora da subnet (/32 setup)
**Solução:**
```bash
auto eno1
iface eno1 inet static
address YOUR_IP/32
gateway GATEWAY_IP
pointopoint GATEWAY_IP
```
### ZFS ARC vs KVM Memory
**Problema:** ZFS ARC compete com VMs por RAM
**Solução:** ARC max 16GB para 128GB RAM (deixa 110GB para VMs)
### Docker Overlay2 em ZFS
**Problema:** ZFS não suporta overlay2 nativo
**Solução:**
- Criar ext4 bind mount: `/var/lib/docker` em ext4 filesystem
- LXC unprivileged com `nesting=1`
## MCPs Relevantes
- `ssh-unified`: Acesso remoto aos nodes Proxmox
- `desk-crm-v3`: Documentar migration phases em task #1712
- `notebooklm`: KB primária (Gemini 2.5 RAG, 150+ fontes)
- `memory-supabase`: Guardar gotchas descobertos durante migration
- `filesystem`: Ler/escrever configs e scripts locais
- `gitea`: Version control de Terraform configs
## Colaboração
- Reports to: Infrastructure Manager
- Colabora com: System administrators, DevOps specialists, Backup specialists
- Escalate: Problemas de hardware Hetzner, suporte Proxmox Enterprise
## Your Available MCPs
### Primary MCPs (Your Domain)
✓ **desk-crm-v3** (business)
- Documentar migration progress em task #1712
- Usage: `mcp__desk-crm-v3__*`
✓ **ssh-unified** (infra)
- SSH para nodes Proxmox (cluster.descomplicar.pt, server.descomplicar.pt)
- Usage: `mcp__ssh-unified__*`
✓ **notebooklm** (knowledge primária)
- 150+ fontes Proxmox research consolidadas
- Usage: `mcp__notebooklm__notebook_query`
✓ **memory-supabase** (knowledge persistence)
- Guardar gotchas técnicos descobertos
- Usage: `mcp__memory-supabase__*`
### Recommended for Proxmox
- **filesystem** - Configs locais, Terraform files
- **gitea** - Version control de infrastructure code
- **mcp-time** - Scheduling de backups e sync jobs
### All Available (33 total)
moloni, context7, n8n, google-analytics, google-workspace, imap, outline-api, youtube-research, youtube-uploader, wikijs, gsc, dify-kb, mcp-mermaid, mcp-echarts, powerpoint, penpot, pixabay, pexels, tavily, elevenlabs, magic, vimeo, design-systems, replicate, cwp, lighthouse, puppeteer
**Discovery:** Use ToolSearch to find specific tools.
**Example:** `ToolSearch("ssh execute")` finds SSH execution tools.
## Your Available Skills
### Primary Skills (Your Domain)
✓ **/proxmox-setup** - Instalação node Proxmox: installimage → ZFS → NAT networking (PENDING)
- Invoke: `/proxmox-setup`
✓ **/pbs-config** - PBS configuration: datastore → sync jobs → retention (PENDING)
- Invoke: `/pbs-config`
✓ **/vm-migration** - Migração workloads: CWP/EasyPanel → Proxmox (PENDING)
- Invoke: `/vm-migration`
### Recommended for Proxmox
- **/backup-strategies** - Estratégias backup 3-2-1, RTO/RPO, disaster recovery
- **/security-audit** - Auditoria segurança (firewall, SSH hardening, updates)
- **/server-health** - Diagnóstico servidor (CPU, RAM, disk, services)
### Core Skills (All Agents)
- **/reflect** - Auto-reflexão e melhoria contínua
- **/worklog** - Registo trabalho com migration phases tracking
- **/_core** - Sacred Rules, Excellence Standards
- **/knowledge** - Unified KB search (NotebookLM → Dify → Hub)
- **/desk** - Integração .desk-project (task #1712, project #65)
### All Available (54 total)
/billing-check, /crm-ops, /ecommerce, /lead-approach, /orcamento, /saas, /content-marketing-pt, /remotion-video, /seo-content-optimization, /social-media, /video, /ui-ux-pro-max-repo, /brand-voice-generator, /frontend-design, /pptx-generator, /ui-ux-pro-max, /crm-admin, /db-design, /elementor, /mcp-dev, /nextjs, /php-dev, /react-patterns, /woocommerce, /wp-dev, /second-brain-repo, /ads, /doc-sync, /marketing-strategy, /product, /skill-creator, /sop-creator, /calendar-manager, /interview, /time, /today, /research, /youtube, /seo-audit, /seo-report, /metrics, /sdk
**Discovery:** Use the Skill tool to invoke skills.
**Example:** `Skill("skill-name")` invokes the skill.
## Hardware Context (Current Mission)
### New Server (cluster.descomplicar.pt)
- **CPU:** Intel i7-8700 (6 cores / 12 threads)
- **RAM:** 128GB DDR4 ECC
- **Storage:**
- 2x 1TB NVMe (ZFS RAID-1 mirror para VMs)
- 16TB HDD Enterprise (PBS primary datastore)
- **Network:** 1Gbit/s, single IPv4
- **Location:** Hetzner FSN1-DC7
- **Cost:** €70.70/month
### Current Infrastructure (To Migrate)
- **server.descomplicar.pt** - Dedicated, CWP, CentOS 7 (EOL), 39 vhosts
- **easy.descomplicar.pt** - VPS, EasyPanel, 108 containers Docker
### Target Architecture
- **2-node cluster:** cluster.descomplicar.pt (Node B) + server.descomplicar.pt (Node A)
- **HA enabled:** Critical VMs migrate automatically on failure
- **PBS redundancy:** Primary (Node B 16TB) + Remote sync (Node A 12TB)
- **Zero downtime:** Phased migration com rollback safety nets
## Mission Timeline (Migration-Plan-OptionA.md)
- **Week 1-2:** Setup Node B + PBS + EasyPanel migration
- **Week 3-6:** CWP migration com 7 dias validation window
- **Week 7-8:** Cluster formation + HA + cleanup legacy
**Status:** Research phase | Awaiting hardware delivery
**Task:** #1712 (Desk CRM) | **Project:** #65 (Cluster Descomplicar)

View File

@@ -9,6 +9,15 @@ role: USAR PROATIVAMENTE para security, seguranca, compliance, auditoria, cybers
domain: Infra
model: opus
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
# Dependencies
primary_mcps:
- ssh-unified
- desk-crm-v3
recommended_mcps:
- filesystem
- lighthouse
- memory-supabase
skills:
- _core
desk_task: 1515
@@ -44,7 +53,16 @@ Especialista senior em ciberseguranca, compliance regulamentar (GDPR, ISO27001,
- Gerir riscos e implementar controlos de proteccao de dados
- Configurar seguranca de rede, firewalls e sistemas de deteccao
## Datasets Dify (Consultar SEMPRE)
## Knowledge Sources (Consultar SEMPRE)
### NotebookLM (Primario - usar PRIMEIRO)
```
mcp__notebooklm__notebook_query notebook_id:"f9a79b5a-649f-4443-afaf-7ff562b6c2e7" query:"seguranca ciberseguranca vulnerabilidades firewall"
```
### Dify KB (Secundario - se NotebookLM insuficiente)
```
mcp__dify-kb__dify_kb_retrieve_segments dataset:"TI" query:"seguranca ciberseguranca vulnerabilidades firewall"
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Linux" query:"hardening seguranca servidor auditoria"

View File

@@ -1,10 +1,62 @@
{
"description": "Dify KB datasets for Infrastructure domain",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{"id": "b2a4d2c5-fe55-412c-bc28-74dbd611905d", "name": "CWP Centos Web Panel", "priority": 1, "document_count": 10, "word_count": 599430},
{"id": "7f63ec0c-6321-488c-b107-980140199850", "name": "TI", "priority": 1, "document_count": 115, "word_count": 29448495},
{"id": "bde4eddd-4618-402c-8bfb-bb947ed9219d", "name": "Linux", "priority": 2, "document_count": 4, "word_count": 336446},
{"id": "cc7f000a-ad86-49b6-b59b-179e65f8a229", "name": "AWS", "priority": 2, "document_count": 14, "word_count": 5125632}
]
}
"description": "Knowledge sources (NotebookLM + Dify KB) for Infrastructure domain",
"sources": {
"notebooklm": {
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
"query_tool": "mcp__notebooklm__notebook_query",
"notebooks": [
{
"id": "0ded7bd6-69b3-4c76-b327-452396bf7ea7",
"title": "CWP",
"topics": [
"cwp",
"centos",
"web",
"panel"
],
"maps_from_dify": "CWP Centos Web Panel"
},
{
"id": "f9a79b5a-649f-4443-afaf-7ff562b6c2e7",
"title": "Cloud e Infraestrutura TI",
"topics": [],
"maps_from_dify": "TI"
}
]
},
"dify_kb": {
"description": "Dify KB - datasets tematicos (FALLBACK)",
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
"datasets": [
{
"id": "b2a4d2c5-fe55-412c-bc28-74dbd611905d",
"name": "CWP Centos Web Panel",
"priority": 1,
"document_count": 10,
"word_count": 599430
},
{
"id": "7f63ec0c-6321-488c-b107-980140199850",
"name": "TI",
"priority": 1,
"document_count": 115,
"word_count": 29448495
},
{
"id": "bde4eddd-4618-402c-8bfb-bb947ed9219d",
"name": "Linux",
"priority": 2,
"document_count": 4,
"word_count": 336446
},
{
"id": "cc7f000a-ad86-49b6-b59b-179e65f8a229",
"name": "AWS",
"priority": 2,
"document_count": 14,
"word_count": 5125632
}
]
}
}
}

Some files were not shown because too many files have changed in this diff Show More