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

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