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:
12
core-tools/.claude-plugin/plugin.json
Normal file
12
core-tools/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "core-tools",
|
||||
"description": "Core system tools for plugin management, metrics, and infrastructure meta-operations",
|
||||
"version": "2.0.0",
|
||||
"author": {
|
||||
"name": "Descomplicar",
|
||||
"url": "https://descomplicar.pt"
|
||||
},
|
||||
"homepage": "https://descomplicar.pt",
|
||||
"license": "MIT",
|
||||
"keywords": ["core", "plugins", "management", "profiles", "infrastructure", "meta"]
|
||||
}
|
||||
41
core-tools/README.md
Normal file
41
core-tools/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Core Tools Plugin
|
||||
|
||||
**Versão:** 1.0.0
|
||||
**Autor:** Descomplicar®
|
||||
**Desk Project:** #65 Stack Workflow
|
||||
|
||||
## Descrição
|
||||
|
||||
Core system tools for Claude Code infrastructure and meta-management.
|
||||
|
||||
Este plugin contém skills fundamentais para gestão e manutenção do ecossistema Claude Code.
|
||||
|
||||
## Skills Incluídas
|
||||
|
||||
### Infraestrutura
|
||||
- **infrastructure-manager** - Gestão automatizada da infraestrutura Claude Code
|
||||
- **db-maintenance-manager** - Manutenção das tabelas cr_* do sistema
|
||||
- **relationship-manager** - Gestão de relacionamentos entre componentes
|
||||
|
||||
### Plugins & Componentes
|
||||
- **plugin-manager** - Gestão dinâmica de plugins (activar/desactivar por perfil)
|
||||
- **plugin-curator** - Curadoria inteligente de plugins
|
||||
- **component-generator** - Gera skills/agents/commands automaticamente
|
||||
- **quality-validator** - Valida componentes contra standards
|
||||
|
||||
### Agentes
|
||||
- **agent-context-injector** - Injeta contexto específico quando um agente é iniciado
|
||||
|
||||
### Métricas
|
||||
- **metrics** - Dashboard de performance com ROI e telemetria
|
||||
|
||||
### Core
|
||||
- **_core** - Padrões fundamentais Descomplicar® (Sacred Rules, Excellence Standards, MCP Protocol)
|
||||
|
||||
## Utilização
|
||||
|
||||
Skills activadas automaticamente pelo sistema quando necessário.
|
||||
|
||||
## Tags
|
||||
|
||||
infrastructure, meta, system, core
|
||||
23
core-tools/plugin.json
Normal file
23
core-tools/plugin.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "core-tools",
|
||||
"version": "1.0.0",
|
||||
"description": "Core system tools for Claude Code infrastructure and meta-management",
|
||||
"author": "Descomplicar®",
|
||||
"skills": [
|
||||
"agent-context-injector",
|
||||
"component-generator",
|
||||
"metrics",
|
||||
"plugin-curator",
|
||||
"plugin-manager",
|
||||
"quality-validator",
|
||||
"relationship-manager",
|
||||
"infrastructure-manager",
|
||||
"db-maintenance-manager",
|
||||
"_core"
|
||||
],
|
||||
"agents": [],
|
||||
"hooks": [],
|
||||
"commands": [],
|
||||
"tags": ["infrastructure", "meta", "system", "core"],
|
||||
"desk_project": 65
|
||||
}
|
||||
121
core-tools/skills/_core/SKILL.md
Normal file
121
core-tools/skills/_core/SKILL.md
Normal 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*
|
||||
283
core-tools/skills/_core/datasets-mapping.json
Normal file
283
core-tools/skills/_core/datasets-mapping.json
Normal 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"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
128
core-tools/skills/_core/dify-integration-protocol.md
Normal file
128
core-tools/skills/_core/dify-integration-protocol.md
Normal 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)
|
||||
157
core-tools/skills/_core/instrumentation-protocol.md
Normal file
157
core-tools/skills/_core/instrumentation-protocol.md
Normal 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
|
||||
69
core-tools/skills/_core/notebooklm-mapping.json
Normal file
69
core-tools/skills/_core/notebooklm-mapping.json
Normal 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"}
|
||||
}
|
||||
}
|
||||
154
core-tools/skills/agent-context-injector/SKILL.md
Normal file
154
core-tools/skills/agent-context-injector/SKILL.md
Normal 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
|
||||
290
core-tools/skills/component-generator/SKILL.md
Normal file
290
core-tools/skills/component-generator/SKILL.md
Normal 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)
|
||||
267
core-tools/skills/db-maintenance-manager/SKILL.md
Normal file
267
core-tools/skills/db-maintenance-manager/SKILL.md
Normal 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
|
||||
211
core-tools/skills/infrastructure-manager/SKILL.md
Normal file
211
core-tools/skills/infrastructure-manager/SKILL.md
Normal 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
|
||||
591
core-tools/skills/metrics/SKILL.md
Normal file
591
core-tools/skills/metrics/SKILL.md
Normal 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
|
||||
105
core-tools/skills/plugin-curator/SKILL.md
Normal file
105
core-tools/skills/plugin-curator/SKILL.md
Normal 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
|
||||
153
core-tools/skills/plugin-manager/SKILL.md
Normal file
153
core-tools/skills/plugin-manager/SKILL.md
Normal 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*
|
||||
143
core-tools/skills/plugin-manager/profiles.json
Normal file
143
core-tools/skills/plugin-manager/profiles.json
Normal 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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
196
core-tools/skills/quality-validator/SKILL.md
Normal file
196
core-tools/skills/quality-validator/SKILL.md
Normal 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)
|
||||
231
core-tools/skills/relationship-manager/SKILL.md
Normal file
231
core-tools/skills/relationship-manager/SKILL.md
Normal 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
|
||||
Reference in New Issue
Block a user