---
name: infrastructure-manager
description: Gestão automatizada da infraestrutura Claude Code Descomplicar — componentes, health, sincronização e relacionamentos entre MCPs, skills e agentes.
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

---

## Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```

*Adicionar nova linha após cada erro corrigido.*
