feat(v1.5.2): Execute database migrations and complete setup

- Execute all 6 migrations on Desk CRM production database
- Create missing tables: cr_lsps, cr_agent_lsps, cr_lsp_usage
- Create archive tables: cr_*_usage_archive (4 tables)
- Create system tables: cr_migrations, cr_maintenance_log
- Make all scripts executable (chmod +x)
- Total cr_* tables: 38

Migration files:
- 001_initial_schema.sql
- 002_add_lsps.sql
- 003_add_relationships.sql
- 004_add_telemetry.sql
- 005_add_archive_tables.sql
- 006_add_maintenance_log.sql

Scripts:
- session-init.sh, session-end.sh
- inject-context.sh, inject-agent-context.sh
- record-usage.sh, db-backup.sh, sync-to-mysql.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 16:18:02 +00:00
commit 692475a315
55 changed files with 11950 additions and 0 deletions

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,211 @@
---
name: infrastructure-manager
description: >
Gestão automatizada da infraestrutura Claude Code Descomplicar.
Use when "infraestrutura", "sistema", "componentes", "health",
"sincronização", "relacionamentos", "mcps", "skills", "agents".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Infrastructure Manager
Gestão automatizada da infraestrutura Claude Code Descomplicar com suporte completo a relacionamentos.
## Triggers
Esta skill deve ser activada quando:
- Utilizador menciona "infraestrutura", "sistema", "componentes"
- Há problemas de sincronização detectados
- Health score cai abaixo de 90
- Novo componente é adicionado ao sistema
- Relacionamentos inconsistentes detectados
## Schema da Base de Dados
### Core Tables (Entidades)
| Tabela | Registos | Descrição |
|--------|----------|-----------|
| `cr_agents` | 46 | Agentes especializados |
| `cr_skills` | 54 | Skills invocáveis |
| `cr_mcps` | 33 | Servidores MCP |
| `cr_lsps` | 11+ | Language Server Protocols |
| `cr_sdks` | 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_sdk_agents` | 131 | SDK ↔ Agente |
| `cr_sdk_skills` | 75 | SDK ↔ Skill |
| `cr_sdk_mcps` | 56 | SDK ↔ 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_sdks;
```
**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_sdk_agents
UNION ALL SELECT 'sdk_skills', COUNT(*) FROM cr_sdk_skills
UNION ALL SELECT 'sdk_mcps', COUNT(*) FROM cr_sdk_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_sdk_agents WHERE sdk_id NOT IN (SELECT id FROM cr_sdks);
DELETE FROM cr_sdk_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

300
skills/lsp-manager/SKILL.md Normal file
View File

@@ -0,0 +1,300 @@
---
name: lsp-manager
description: >
Gestão inteligente de Language Server Protocols para agentes dev.
Use when "lsp", "language server", "autocomplete", "intellisense",
"intelephense", "pyright", "typescript-language-server", "gopls".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, Bash, ToolSearch
---
# LSP Manager
Gestão inteligente de Language Server Protocols para agentes de desenvolvimento.
## Triggers
Esta skill deve ser activada quando:
- Utilizador pede para configurar LSPs
- Novo agente de desenvolvimento é criado
- Erros de LSP detectados em sessão
- Análise de tooling de desenvolvimento
- Pedido de autocomplete/intellisense para linguagem específica
## Conceitos
### LSP vs MCP
| Aspecto | LSP | MCP |
|---------|-----|-----|
| **Propósito** | Inteligência de código | Acesso a recursos externos |
| **Exemplos** | autocomplete, hover, go-to-def | filesystem, CRM, APIs |
| **Protocolo** | Language Server Protocol | Model Context Protocol |
| **Escopo** | Análise de código | Integração de sistemas |
### Tipos de Relacionamento
**cr_agent_lsps.relationship_type:**
- `primary` - LSPs essenciais para o agente (auto-start)
- `recommended` - LSPs úteis, activar quando relevante
- `available` - LSPs opcionais, disponíveis se necessário
## Capabilities
### 1. Detecção Automática de LSPs
Quando um agente de desenvolvimento inicia:
```python
def detect_needed_lsps(agent_slug, file_extensions):
"""
Detecta LSPs necessários baseado em:
- Ficheiros no projecto (extensões)
- Configuração do agente (cr_agent_lsps)
- Padrões da linguagem
"""
extension_to_lsp = {
'.php': 'intelephense',
'.ts': 'typescript-language-server',
'.tsx': 'typescript-language-server',
'.js': 'typescript-language-server',
'.py': 'pyright',
'.go': 'gopls',
'.rs': 'rust-analyzer',
'.yaml': 'yaml-language-server',
'.yml': 'yaml-language-server',
'.sh': 'bash-language-server',
'.sql': 'sql-language-server',
'.css': 'vscode-css-languageserver',
'.html': 'vscode-html-languageserver',
}
needed = set()
for ext in file_extensions:
if ext in extension_to_lsp:
needed.add(extension_to_lsp[ext])
return needed
```
### 2. Verificação de Instalação
```sql
-- Obter LSPs configurados vs instalados
SELECT
l.slug,
l.package_manager,
l.package_name,
l.binary_path,
l.status as db_status,
-- Status local determinado por script externo
'unknown' as local_status
FROM cr_lsps l
WHERE l.status = 'active';
```
Script de verificação:
```bash
#!/bin/bash
# check-lsp-installed.sh
check_lsp() {
local slug=$1
local binary=$2
if command -v "$binary" &> /dev/null; then
version=$("$binary" --version 2>/dev/null | head -1)
echo "$slug:installed:$version"
else
echo "$slug:missing:-"
fi
}
# Verificar cada LSP
check_lsp "typescript-language-server" "typescript-language-server"
check_lsp "intelephense" "intelephense"
check_lsp "pyright" "pyright"
check_lsp "gopls" "gopls"
check_lsp "rust-analyzer" "rust-analyzer"
check_lsp "yaml-language-server" "yaml-language-server"
check_lsp "bash-language-server" "bash-language-server"
```
### 3. Instalação Automática
```bash
#!/bin/bash
# install-lsp.sh
install_lsp() {
local slug=$1
local pkg_manager=$2
local package=$3
case $pkg_manager in
npm)
npm install -g "$package"
;;
pip)
pip install "$package"
;;
cargo)
cargo install "$package"
;;
go)
go install "$package@latest"
;;
composer)
composer global require "$package"
;;
*)
echo "Package manager não suportado: $pkg_manager"
return 1
;;
esac
}
```
### 4. Mapeamento Inteligente
Baseado na categoria do agente:
```sql
-- Sugerir LSPs para agentes de categoria 'dev'
SELECT l.slug, l.language
FROM cr_lsps l
WHERE l.status = 'active'
AND l.language IN (
SELECT DISTINCT
CASE a.slug
WHEN 'php-fullstack-engineer' THEN 'PHP'
WHEN 'wordpress-plugin-developer' THEN 'PHP'
WHEN 'javascript-fullstack-specialist' THEN 'TypeScript'
WHEN 'database-design-specialist' THEN 'SQL'
-- etc.
END
FROM cr_agents a
WHERE a.slug = ?
)
AND l.id NOT IN (
SELECT lsp_id FROM cr_agent_lsps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
);
```
### 5. Telemetria de LSP
```sql
-- Registar uso de LSP
INSERT INTO cr_lsp_usage (lsp_id, agent_id, operation, response_time_ms, success)
VALUES (
(SELECT id FROM cr_lsps WHERE slug = ?),
(SELECT id FROM cr_agents WHERE slug = ?),
?, -- 'completion', 'hover', 'definition', etc.
?,
?
);
-- Métricas agregadas
SELECT
l.slug,
COUNT(*) as total_ops,
AVG(lu.response_time_ms) as avg_response,
SUM(CASE WHEN lu.success THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_lsp_usage lu
JOIN cr_lsps l ON lu.lsp_id = l.id
WHERE lu.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY l.id
ORDER BY total_ops DESC;
```
### 6. Sugestões de Melhoria
```sql
-- Agentes dev sem LSP mapeado
SELECT a.slug, a.name, a.category
FROM cr_agents a
WHERE a.category = 'dev'
AND a.status = 'active'
AND NOT EXISTS (
SELECT 1 FROM cr_agent_lsps al
WHERE al.agent_id = a.id
);
-- LSPs com baixa taxa de sucesso
SELECT l.slug,
AVG(lu.response_time_ms) as avg_response,
SUM(CASE WHEN lu.success THEN 0 ELSE 1 END) as errors
FROM cr_lsps l
JOIN cr_lsp_usage lu ON l.id = lu.lsp_id
WHERE lu.created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP BY l.id
HAVING errors > 10 OR avg_response > 500;
```
## Workflow
### Setup Inicial
```
1. INVENTARIAR → Listar LSPs instalados localmente
2. REGISTAR → Inserir em cr_lsps
3. MAPEAR → Associar a agentes em cr_agent_lsps
4. VERIFICAR → Testar funcionamento
5. MONITORIZAR → Activar telemetria
```
### Quando Agente Inicia
```
1. QUERY → Obter LSPs do agente (cr_agent_lsps)
2. CHECK → Verificar instalação local
3. INSTALL → Instalar em falta (se auto_start=true)
4. INJECT → Adicionar ao contexto do agente
5. LOG → Registar em telemetria
```
## Integrações
- **MCPs:** desk-crm-v3 (BD), filesystem (verificação local)
- **Commands:**
- `/descomplicar:lsps` - Gestão completa de LSPs
- `/descomplicar:agent-config` - Ver LSPs do agente
- `/descomplicar:status` - Dashboard inclui LSPs
## Métricas de Sucesso
| Métrica | Target |
|---------|--------|
| LSP Coverage (agentes dev) | >= 80% |
| Installation Rate | >= 95% |
| Avg Response Time | < 200ms |
| Success Rate | >= 99% |
## Exemplo de Uso
```
User: Configura LSPs para o agente wordpress-plugin-developer
LSP Manager:
1. [Analisa categoria e slug do agente]
2. [Detecta linguagens: PHP, JavaScript, CSS, HTML]
3. [Identifica LSPs:
- PRIMARY: intelephense (PHP)
- RECOMMENDED: typescript-language-server, vscode-css-languageserver
- AVAILABLE: yaml-language-server]
4. [Verifica instalação local]
5. [Cria mapeamentos em cr_agent_lsps]
6. [Reporta: "Agente configurado com 4 LSPs (1 primary, 2 recommended, 1 available)"]
```
## Limites
- Não instala LSPs automaticamente sem confirmação
- Verificação de instalação local limitada a binários no PATH
- Telemetria requer integração com hooks activos
- Suporte apenas para LSPs com package manager conhecido (npm, pip, cargo, go, composer)
- Não gere configurações específicas de LSP (settings.json)

View File

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

View File

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

View File

@@ -0,0 +1,231 @@
---
name: relationship-manager
description: >
Gestão inteligente de relacionamentos entre componentes do sistema.
Use when "relacionamentos", "mapeamento", "colaborações", "dependências",
"agent-mcp", "agent-skill", "sdk", "impacto", "inconsistências".
author: Descomplicar®
version: 1.0.0
desk_task: 1441
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Relationship Manager
Gestão inteligente de relacionamentos entre componentes do sistema.
## Triggers
Esta skill deve ser activada quando:
- Utilizador pede para configurar relacionamentos
- Novo componente é adicionado e precisa de mapeamentos
- Inconsistências detectadas em relacionamentos
- Análise de impacto de mudanças
## Schema de Relacionamentos
### Hierarquia
```
SDK
├── cr_sdk_agents → Agentes do SDK
├── cr_sdk_skills → Skills do SDK
└── cr_sdk_mcps → MCPs do SDK
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 'SDK', sdk.slug, 'member'
FROM cr_sdk_agents sa
JOIN cr_sdks sdk ON sa.sdk_id = sdk.id
WHERE sa.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 SDKs em `cr_sdk_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