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:
154
skills/agent-context-injector/SKILL.md
Normal file
154
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
skills/component-generator/SKILL.md
Normal file
290
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>',
|
||||
'<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)
|
||||
267
skills/db-maintenance-manager/SKILL.md
Normal file
267
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_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
|
||||
211
skills/infrastructure-manager/SKILL.md
Normal file
211
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_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
300
skills/lsp-manager/SKILL.md
Normal 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)
|
||||
105
skills/plugin-curator/SKILL.md
Normal file
105
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
|
||||
196
skills/quality-validator/SKILL.md
Normal file
196
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
skills/relationship-manager/SKILL.md
Normal file
231
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
|
||||
|
||||
```
|
||||
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
|
||||
Reference in New Issue
Block a user