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

332
commands/agent-config.md Normal file
View File

@@ -0,0 +1,332 @@
---
name: agent-config
description: >
Configuração completa de recursos por agente.
MCPs, Skills, SDKs, Colaborações e Datasets Dify.
argument-hint: "[agent-slug] [add-mcp|remove-mcp|add-skill|add-collab|export|import]"
---
# /descomplicar:agent-config
Configuração completa de recursos por agente usando tabelas de relacionamento existentes.
## Objectivo
Gerir o mapeamento entre agentes e os seus recursos usando as tabelas `cr_agent_mcps`, `cr_agent_skills`, `cr_sdk_agents`, e `cr_agent_collaborations`.
## Sintaxe
```
/descomplicar:agent-config [agent-slug] [action]
```
## Modo Visualização
### Listar todos os agentes com resumo
```
/descomplicar:agent-config
```
**Query:**
```sql
SELECT
a.slug,
a.name,
a.category,
(SELECT COUNT(*) FROM cr_agent_mcps WHERE agent_id = a.id) as mcps,
(SELECT COUNT(*) FROM cr_agent_skills WHERE agent_id = a.id) as skills,
(SELECT COUNT(*) FROM cr_sdk_agents WHERE agent_id = a.id) as sdks,
(SELECT COUNT(*) FROM cr_agent_collaborations WHERE agent_id = a.id) as collabs
FROM cr_agents a
WHERE a.status = 'active'
ORDER BY a.category, a.slug;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ AGENT CONFIGURATIONS (46 agentes) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Agent │ MCPs │ Skills │ SDKs │ Collabs ║
║ ─────────────────────────────────────────────────────────────────── ║
║ [DEV - 27 agentes] ║
║ wordpress-plugin-developer │ 12 │ 4 │ 2 │ 3 ║
║ php-fullstack-engineer │ 8 │ 3 │ 3 │ 4 ║
║ ... ║
║ [MARKETING - 13 agentes] ║
║ marketing-planning-expert │ 6 │ 5 │ 2 │ 2 ║
║ ... ║
╚══════════════════════════════════════════════════════════════════════╝
```
### Ver configuração de agente específico
```
/descomplicar:agent-config wordpress-plugin-developer
```
**Queries:**
```sql
-- MCPs do agente (cr_agent_mcps)
SELECT
m.slug,
m.name,
am.relationship_type,
am.priority
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 = 'wordpress-plugin-developer')
ORDER BY am.relationship_type, am.priority;
-- Skills do agente (cr_agent_skills)
SELECT
s.slug,
s.name,
s.category
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 = 'wordpress-plugin-developer');
-- SDKs do agente (cr_sdk_agents)
SELECT
sdk.slug,
sdk.name
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 = 'wordpress-plugin-developer');
-- Colaborações (cr_agent_collaborations)
SELECT
a2.slug as collaborator,
a2.name,
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 = 'wordpress-plugin-developer');
-- Decision Trees que usam este agente
SELECT
dt.name,
dt.trigger_keywords,
dt.confidence_score
FROM cr_decision_trees dt
WHERE dt.agent_id = (SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer')
AND dt.status = 'active';
-- Datasets Dify (do agent-knowledge-config.json)
-- Lido do ficheiro local
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ AGENT CONFIG: wordpress-plugin-developer ║
║ Category: dev | Status: active ║
╠══════════════════════════════════════════════════════════════════════╣
║ MCPs (12) via cr_agent_mcps ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Type │ MCP │ Priority │ Status ║
║ PRIMARY │ cwp │ 1 │ active ║
║ PRIMARY │ ssh-unified │ 2 │ active ║
║ RECOMMEND │ filesystem │ 1 │ active ║
║ RECOMMEND │ gitea │ 2 │ active ║
║ AVAILABLE │ google-workspace │ 1 │ active ║
║ AVAILABLE │ tavily │ 2 │ active ║
║ ... ║
╠══════════════════════════════════════════════════════════════════════╣
║ Skills (4) via cr_agent_skills ║
║ ─────────────────────────────────────────────────────────────────── ║
║ wp-dev, wp-performance, elementor, woocommerce ║
╠══════════════════════════════════════════════════════════════════════╣
║ SDKs (2) via cr_sdk_agents ║
║ ─────────────────────────────────────────────────────────────────── ║
║ wordpress, deskdev ║
╠══════════════════════════════════════════════════════════════════════╣
║ Collaborations (3) via cr_agent_collaborations ║
║ ─────────────────────────────────────────────────────────────────── ║
║ php-fullstack-engineer (technical), database-design-specialist, ║
║ seo-specialist (cross-domain) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Decision Trees (1) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ wordpress-tasks (confidence: 0.92, keywords: wordpress, wp, plugin) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Dify Datasets (agent-knowledge-config.json) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ wordpress-development, woocommerce-api, elementor-docs ║
║ Auto-consult: ON | Query template: "WordPress {topic} best practices"║
╠══════════════════════════════════════════════════════════════════════╣
║ Telemetry (30 dias) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Invocações: 156 | Success: 96% | Avg Duration: 52s ║
╚══════════════════════════════════════════════════════════════════════╝
```
## Modo Edição
### Adicionar MCP
```
/descomplicar:agent-config wordpress-plugin-developer add-mcp lighthouse primary
```
**Query:**
```sql
INSERT INTO cr_agent_mcps (agent_id, mcp_id, relationship_type, priority, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
(SELECT id FROM cr_mcps WHERE slug = 'lighthouse'),
'primary',
(SELECT COALESCE(MAX(priority), 0) + 1 FROM cr_agent_mcps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer')
AND relationship_type = 'primary'),
NOW()
);
```
### Remover MCP
```
/descomplicar:agent-config wordpress-plugin-developer remove-mcp lighthouse
```
**Query:**
```sql
DELETE FROM cr_agent_mcps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer')
AND mcp_id = (SELECT id FROM cr_mcps WHERE slug = 'lighthouse');
```
### Alterar tipo de relacionamento MCP
```
/descomplicar:agent-config wordpress-plugin-developer update-mcp lighthouse recommended
```
**Query:**
```sql
UPDATE cr_agent_mcps
SET relationship_type = 'recommended', updated_at = NOW()
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer')
AND mcp_id = (SELECT id FROM cr_mcps WHERE slug = 'lighthouse');
```
### Adicionar Skill
```
/descomplicar:agent-config wordpress-plugin-developer add-skill security-audit
```
**Query:**
```sql
INSERT INTO cr_agent_skills (agent_id, skill_id, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
(SELECT id FROM cr_skills WHERE slug = 'security-audit'),
NOW()
);
```
### Adicionar Colaboração
```
/descomplicar:agent-config wordpress-plugin-developer add-collab seo-specialist cross-domain
```
**Query:**
```sql
INSERT INTO cr_agent_collaborations (agent_id, collaborator_id, collaboration_type, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
(SELECT id FROM cr_agents WHERE slug = 'seo-specialist'),
'cross-domain',
NOW()
);
```
### Associar a SDK
```
/descomplicar:agent-config wordpress-plugin-developer add-sdk ecommerce
```
**Query:**
```sql
INSERT INTO cr_sdk_agents (sdk_id, agent_id, created_at)
VALUES (
(SELECT id FROM cr_sdks WHERE slug = 'ecommerce'),
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
NOW()
);
```
## Modo Bulk
### Adicionar MCP a todos os agentes de uma categoria
```
/descomplicar:agent-config --category=dev add-mcp gitea recommended
```
**Query:**
```sql
INSERT INTO cr_agent_mcps (agent_id, mcp_id, relationship_type, priority, created_at)
SELECT
a.id,
(SELECT id FROM cr_mcps WHERE slug = 'gitea'),
'recommended',
1,
NOW()
FROM cr_agents a
WHERE a.category = 'dev'
AND a.status = 'active'
AND NOT EXISTS (
SELECT 1 FROM cr_agent_mcps am
WHERE am.agent_id = a.id
AND am.mcp_id = (SELECT id FROM cr_mcps WHERE slug = 'gitea')
);
```
## Sincronização com agent-knowledge-config.json
O ficheiro `~/.claude/agents/agent-knowledge-config.json` contém configurações de datasets Dify que complementam os relacionamentos BD:
```json
{
"wordpress-plugin-developer": {
"datasets": ["wordpress-development", "woocommerce-api"],
"auto_consult": true,
"query_template": "WordPress {topic} best practices 2026",
"priority_datasets": ["wordpress-development"]
}
}
```
### Exportar config BD para JSON
```
/descomplicar:agent-config wordpress-plugin-developer export
```
### Importar config JSON para BD
```
/descomplicar:agent-config wordpress-plugin-developer import
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ AGENT CONFIG: wordpress-plugin-developer ║
╠══════════════════════════════════════════════════════════════════════╣
║ MCPs (12): cwp, ssh-unified (primary) | filesystem, gitea (rec) ║
║ Skills (4): wp-dev, wp-performance, elementor, woocommerce ║
║ SDKs (2): wordpress, deskdev ║
║ Collabs (3): php-fullstack-engineer, database-design-specialist ║
╠══════════════════════════════════════════════════════════════════════╣
║ Telemetry: 156 invocações | 96% success | 52s avg ║
╚══════════════════════════════════════════════════════════════════════╝
```

187
commands/create.md Normal file
View File

@@ -0,0 +1,187 @@
---
name: create
description: >
Cria novos componentes com templates Descomplicar®.
Scaffold de skills, agents e commands com qualidade garantida.
argument-hint: "<type> <name> [--category=X] [--desk-task=X]"
---
# /descomplicar:create
Cria novos componentes seguindo templates e standards Descomplicar®.
## Objectivo
Scaffold de componentes com:
- Frontmatter completo e correcto
- Estrutura de ficheiros apropriada
- Registo automático em MySQL
- Criação de tarefa Desk CRM
- Validação de qualidade (score >= 50)
## Sintaxe
```
/descomplicar:create <type> <name> [options]
```
### Tipos Suportados
| Tipo | Descrição |
|------|-----------|
| `skill` | Skill com SKILL.md |
| `agent` | Agent ficheiro .md |
| `command` | Command para plugin |
### Opções
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--category` | Categoria (dev, business, marketing, infra) | dev |
| `--desk-task` | ID da tarefa Desk CRM | - |
| `--no-register` | Não registar em MySQL | false |
| `--no-desk` | Não criar tarefa Desk | false |
## Acções Disponíveis
### 1. Criar Skill
```
/descomplicar:create skill backup-manager --desk-task=1500
```
**Processo:**
1. Criar `skills/backup-manager/SKILL.md`
2. Popular com template completo
3. Validar score >= 50
4. Registar em `cr_skills`
5. Criar tarefa Desk #1500 (se fornecido) ou nova
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ COMPONENT CREATED: backup-manager (skill) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Path: skills/backup-manager/SKILL.md ║
║ Status: Created ✓ ║
║ Score: 65/100 (Draft) ║
║ MySQL: Registered in cr_skills (ID: 55) ║
║ Desk: Task #1500 updated ║
╠══════════════════════════════════════════════════════════════════════╣
║ NEXT STEPS ║
║ 1. Editar SKILL.md para adicionar conteúdo específico ║
║ 2. Correr /descomplicar:validate para verificar qualidade ║
║ 3. Score >= 70 para activar em produção ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Criar Agent
```
/descomplicar:create agent video-producer --category=content
```
**Processo:**
1. Criar `agents/video-producer.md`
2. Popular com template + MCPs da categoria
3. Validar score >= 50
4. Registar em `cr_agents`
5. Criar mapeamentos em `cr_agent_mcps`
6. Criar tarefa Desk CRM
**MCPs Auto-Mapeados por Categoria:**
| Categoria | Primary | Recommended |
|-----------|---------|-------------|
| dev | gitea, filesystem | ssh-unified |
| business | desk-crm-v3, moloni | google-workspace |
| marketing | google-workspace | desk-crm-v3 |
| content | filesystem, elevenlabs | pexels, pixabay |
| infra | ssh-unified, cwp | filesystem |
### 3. Criar Command
```
/descomplicar:create command health-check
```
**Processo:**
1. Criar `commands/health-check.md`
2. Popular com template
3. Actualizar `plugin.json`
4. Validar sintaxe
## Validação Automática
Após criação, executa `quality-validator`:
- Score < 50: **ERRO** - componente não criado
- Score 50-69: **AVISO** - componente criado como draft
- Score >= 70: **OK** - componente pronto para uso
## Integração MySQL
```sql
-- Skill
INSERT INTO cr_skills (slug, name, category, status, quality_score, desk_task, created_at)
VALUES ('backup-manager', 'Backup Manager', 'infra', 'draft', 65, 1500, NOW());
-- Agent
INSERT INTO cr_agents (slug, name, category, status, quality_score, desk_task, created_at)
VALUES ('video-producer', 'Video Producer', 'content', 'draft', 68, NULL, NOW());
-- Agent MCPs (auto)
INSERT INTO cr_agent_mcps (agent_id, mcp_id, relationship_type, priority)
SELECT
(SELECT id FROM cr_agents WHERE slug = 'video-producer'),
id,
CASE WHEN slug IN ('filesystem', 'elevenlabs') THEN 'primary' ELSE 'recommended' END,
1
FROM cr_mcps
WHERE slug IN ('filesystem', 'elevenlabs', 'pexels', 'pixabay');
```
## Integração Desk CRM
```sql
-- Criar tarefa
INSERT INTO tbltasks (name, description, rel_type, rel_id, milestone, status, dateadded, startdate, addedfrom)
VALUES (
'Skill: backup-manager',
'<h3>Propósito</h3><p>Nova skill criada via /descomplicar:create</p><h3>Estado</h3><p>Draft - requer desenvolvimento</p>',
'project', 65, -- Stack Workflow
294, -- Milestone Skills
1, -- Não iniciado
NOW(), CURDATE(), 25 -- AikTop
);
```
## Exemplo de Uso
```
User: Cria uma nova skill para gestão de notificações
/descomplicar:create skill notification-manager
Output:
✓ Skill criada: skills/notification-manager/SKILL.md
✓ Score inicial: 58/100 (Draft)
✓ Registada em MySQL: cr_skills.id = 56
✓ Tarefa Desk criada: #1502
Próximo passo: Editar SKILL.md e correr /descomplicar:validate
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ COMPONENT CREATED: backup-manager (skill) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Path: skills/backup-manager/SKILL.md ║
║ Status: Created ✓ ║
║ Score: 65/100 (Draft) ║
║ MySQL: Registered in cr_skills (ID: 55) ║
║ Desk: Task #1500 updated ║
╠══════════════════════════════════════════════════════════════════════╣
║ NEXT: Editar SKILL.md → /descomplicar:validate ║
╚══════════════════════════════════════════════════════════════════════╝
```

224
commands/db-archive.md Normal file
View File

@@ -0,0 +1,224 @@
---
name: db-archive
description: >
Archiving de dados de telemetria antigos.
Move registos >90 dias para tabelas _archive.
argument-hint: "[--days=N] [--table=X] [--dry-run] [--delete-archived]"
---
# /descomplicar:db-archive
Move dados de telemetria antigos para tabelas de arquivo, mantendo as tabelas principais optimizadas.
## Objectivo
Mover registos de telemetria antigos (>90 dias) para tabelas _archive, mantendo as tabelas activas optimizadas.
## Sintaxe
```
/descomplicar:db-archive [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--days=N` | Arquivar registos com mais de N dias | 90 |
| `--table=X` | Arquivar apenas tabela específica | todas |
| `--dry-run` | Mostrar o que seria arquivado sem executar | false |
| `--delete-archived` | Apagar dados arquivados (após backup) | false |
| `--force` | Não pedir confirmação | false |
## Output Esperado
```
╔════════════════════════════════════════════════════════════╗
║ DB ARCHIVE ║
╠════════════════════════════════════════════════════════════╣
║ Threshold: 90 dias ║
║ cr_agent_usage: 15.234 → archive ✓ ║
║ cr_skill_usage: 22.456 → archive ✓ ║
║ cr_mcp_tool_usage: 8.901 → archive ✓ ║
╠════════════════════════════════════════════════════════════╣
║ TOTAL ARCHIVED: 46.591 registos | ~6.9 MB libertados ║
╚════════════════════════════════════════════════════════════╝
```
## Tabelas de Telemetria
| Tabela Activa | Tabela Archive | Critério |
|---------------|----------------|----------|
| `cr_agent_usage` | `cr_agent_usage_archive` | created_at < N dias |
| `cr_skill_usage` | `cr_skill_usage_archive` | created_at < N dias |
| `cr_mcp_tool_usage` | `cr_mcp_tool_usage_archive` | created_at < N dias |
| `cr_lsp_usage` | `cr_lsp_usage_archive` | created_at < N dias |
## Workflow
```
1. VERIFICAR tabelas archive existem (criar se necessário)
2. CONTAR registos a arquivar
3. MOSTRAR resumo ao utilizador
4. COPIAR para tabelas _archive
5. VERIFICAR integridade (count match)
6. ELIMINAR da tabela principal
7. REGISTAR em cr_maintenance_log
```
## Exemplos
### Dry-run (ver sem executar)
```bash
/descomplicar:db-archive --dry-run
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ DB ARCHIVE - DRY RUN ║
╠════════════════════════════════════════════════════════════════╣
║ Threshold: 90 dias (antes de 2025-11-06) ║
╠════════════════════════════════════════════════════════════════╣
║ Tabela Registos Oldest Size ║
║ ─────────────────────────────────────────────────────────────║
║ cr_agent_usage 15.234 2025-08-15 2.1 MB ║
║ cr_skill_usage 22.456 2025-08-20 3.4 MB ║
║ cr_mcp_tool_usage 8.901 2025-09-01 1.2 MB ║
║ cr_lsp_usage 1.234 2025-10-15 0.2 MB ║
╠════════════════════════════════════════════════════════════════╣
║ TOTAL: 47.825 registos | ~6.9 MB a arquivar ║
║ Executar sem --dry-run para arquivar ║
╚════════════════════════════════════════════════════════════════╝
```
### Archiving completo
```bash
/descomplicar:db-archive
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ DB ARCHIVE ║
╠════════════════════════════════════════════════════════════════╣
║ Threshold: 90 dias ║
╠════════════════════════════════════════════════════════════════╣
║ cr_agent_usage ║
║ Copying to archive... 15.234 rows ✓ ║
║ Verifying integrity... match ✓ ║
║ Removing from active... 15.234 rows ✓ ║
║ ║
║ cr_skill_usage ║
║ Copying to archive... 22.456 rows ✓ ║
║ Verifying integrity... match ✓ ║
║ Removing from active... 22.456 rows ✓ ║
║ ║
║ cr_mcp_tool_usage ║
║ Copying to archive... 8.901 rows ✓ ║
║ Verifying integrity... match ✓ ║
║ Removing from active... 8.901 rows ✓ ║
║ ║
║ cr_lsp_usage ║
║ Copying to archive... 1.234 rows ✓ ║
║ Verifying integrity... match ✓ ║
║ Removing from active... 1.234 rows ✓ ║
╠════════════════════════════════════════════════════════════════╣
║ TOTAL ARCHIVED: 47.825 registos ║
║ Space freed: ~6.9 MB ║
║ Status: ✓ SUCCESS ║
╚════════════════════════════════════════════════════════════════╝
```
### Arquivar com threshold diferente
```bash
/descomplicar:db-archive --days=30
```
### Apenas uma tabela
```bash
/descomplicar:db-archive --table=cr_agent_usage
```
### Apagar dados muito antigos do archive
```bash
/descomplicar:db-archive --delete-archived --days=365
```
**Atenção**: `--delete-archived` apaga permanentemente dados com mais de N dias das tabelas _archive. Backup recomendado antes.
## SQL Executado
```sql
-- 1. Criar tabela archive se não existir
CREATE TABLE IF NOT EXISTS cr_agent_usage_archive LIKE cr_agent_usage;
-- 2. Contar registos a arquivar
SELECT COUNT(*) FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- 3. Copiar para archive
INSERT INTO cr_agent_usage_archive
SELECT * FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- 4. Verificar integridade
SELECT
(SELECT COUNT(*) FROM cr_agent_usage_archive
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY)) as archived,
@expected_count as expected;
-- 5. Remover da tabela activa
DELETE FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
-- 6. Registar operação
INSERT INTO cr_maintenance_log (operation, table_name, rows_affected, details)
VALUES ('archive', 'cr_agent_usage', @row_count, JSON_OBJECT(
'threshold_days', 90,
'archived_to', 'cr_agent_usage_archive',
'oldest_record', @oldest_date
));
```
## Políticas de Retenção
| Dados | Activo | Archive | Total |
|-------|--------|---------|-------|
| Telemetria diária | 90 dias | 1 ano | 15 meses |
| Métricas agregadas | Sempre | - | Ilimitado |
| Logs manutenção | 1 ano | 2 anos | 3 anos |
## Automação Sugerida
### Hook Stop (diário)
```json
{
"hooks": {
"Stop": [{
"type": "command",
"command": "/descomplicar:db-archive --days=90 --force",
"condition": "daily"
}]
}
}
```
### Cron Semanal
```bash
# Arquivar telemetria > 90 dias todos os domingos
0 3 * * 0 claude /descomplicar:db-archive --force
```
## Integração
- **Skill**: db-maintenance-manager
- **MCP**: desk-crm-v3
- **Relacionado**:
- /descomplicar:db-backup (antes de delete-archived)
- /descomplicar:telemetry (fonte dos dados)
## Segurança
- Dados são MOVIDOS, não apagados (excepto --delete-archived)
- Verificação de integridade antes de DELETE
- Rollback automático se count mismatch
- Log completo em cr_maintenance_log

225
commands/db-backup.md Normal file
View File

@@ -0,0 +1,225 @@
---
name: db-backup
description: >
Backup selectivo das tabelas cr_* da infraestrutura.
Exporta estrutura e dados para restauro.
argument-hint: "[--tables=X,Y] [--data-only] [--schema-only] [--output=path]"
---
# /descomplicar:db-backup
Backup selectivo das tabelas cr_* (Claude Resources) da infraestrutura.
## Objectivo
Criar backup das tabelas cr_* para permitir restauro em caso de problemas ou migração.
## Sintaxe
```
/descomplicar:db-backup [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--tables=X,Y` | Backup apenas tabelas específicas | todas cr_* |
| `--data-only` | Apenas dados (sem schema) | false |
| `--schema-only` | Apenas schema (sem dados) | false |
| `--output=path` | Directório de output | ./backups/ |
| `--compress` | Comprimir backup (gzip) | false |
| `--include-archive` | Incluir tabelas *_archive | false |
## Output Esperado
```
╔════════════════════════════════════════════════════════════╗
║ DB BACKUP ║
╠════════════════════════════════════════════════════════════╣
║ Backup ID: cr_backup_20260204_163500 ║
║ Output: ./backups/cr_backup_20260204_163500/ ║
╠════════════════════════════════════════════════════════════╣
║ Exporting: 25 tabelas | 1.847 registos | 1.2 MB ║
║ Checksum: abc123def456... ║
║ Status: ✓ SUCCESS ║
╚════════════════════════════════════════════════════════════╝
```
## Tabelas Incluídas por Defeito
### Core (sempre incluídas)
- cr_agents, cr_skills, cr_mcps, cr_lsps, cr_sdks
- cr_mcp_tools, cr_plugins, cr_hooks
### Relacionamentos (sempre incluídas)
- cr_agent_mcps, cr_agent_lsps, cr_agent_skills
- cr_skill_mcps, cr_sdk_agents, cr_sdk_skills, cr_sdk_mcps
- cr_agent_collaborations
### Telemetria (sempre incluídas)
- cr_agent_usage, cr_skill_usage
- cr_mcp_tool_usage, cr_lsp_usage
### Intelligence (sempre incluídas)
- cr_decision_trees, cr_recommendations
- cr_component_issues, cr_reflections
### System (sempre incluídas)
- cr_migrations, cr_maintenance_log
### Archive (apenas com --include-archive)
- cr_agent_usage_archive, cr_skill_usage_archive
- cr_mcp_tool_usage_archive, cr_lsp_usage_archive
## Estrutura de Backup
```
backups/
└── cr_backup_YYYYMMDD_HHMMSS/
├── manifest.json # Metadata do backup
├── schema/
│ ├── cr_agents.sql
│ ├── cr_skills.sql
│ └── ...
├── data/
│ ├── cr_agents.sql
│ ├── cr_skills.sql
│ └── ...
└── checksums.md5 # Verificação integridade
```
### manifest.json
```json
{
"backup_id": "cr_backup_20260204_163500",
"created_at": "2026-02-04T16:35:00Z",
"created_by": "descomplicar-meta-plugin",
"version": "1.5.0",
"database": "perfex_crm",
"tables": {
"total": 25,
"core": 8,
"relationships": 8,
"telemetry": 4,
"intelligence": 4,
"system": 2
},
"rows": {
"cr_agents": 46,
"cr_skills": 54,
"cr_mcps": 33,
"...": "..."
},
"size_bytes": 1234567,
"checksum": "abc123...",
"options": {
"data_only": false,
"schema_only": false,
"compressed": false,
"include_archive": false
}
}
```
## Exemplos
### Backup completo
```bash
/descomplicar:db-backup
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ DB BACKUP ║
╠════════════════════════════════════════════════════════════════╣
║ Backup ID: cr_backup_20260204_163500 ║
║ Output: ./backups/cr_backup_20260204_163500/ ║
╠════════════════════════════════════════════════════════════════╣
║ Exporting schema... ║
║ cr_agents ✓ ║
║ cr_skills ✓ ║
║ cr_mcps ✓ ║
║ ... (25 tabelas) ✓ ║
║ ║
║ Exporting data... ║
║ cr_agents 46 rows ✓ ║
║ cr_skills 54 rows ✓ ║
║ cr_mcps 33 rows ✓ ║
║ cr_agent_mcps 483 rows ✓ ║
║ ... (25 tabelas) ✓ ║
╠════════════════════════════════════════════════════════════════╣
║ Total: 25 tabelas | 1.847 registos | 1.2 MB ║
║ Checksum: abc123def456... ║
║ Status: ✓ SUCCESS ║
╚════════════════════════════════════════════════════════════════╝
```
### Backup comprimido
```bash
/descomplicar:db-backup --compress
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ DB BACKUP (Compressed) ║
╠════════════════════════════════════════════════════════════════╣
║ Output: ./backups/cr_backup_20260204_163500.tar.gz ║
║ Original size: 1.2 MB ║
║ Compressed size: 245 KB (80% reduction) ║
║ Status: ✓ SUCCESS ║
╚════════════════════════════════════════════════════════════════╝
```
### Apenas tabelas core
```bash
/descomplicar:db-backup --tables=cr_agents,cr_skills,cr_mcps
```
### Schema only (para migrations)
```bash
/descomplicar:db-backup --schema-only --output=./migrations/reference/
```
### Incluir archives
```bash
/descomplicar:db-backup --include-archive --compress
```
## Restore
Para restaurar um backup:
```bash
# Ver backups disponíveis
ls -la ./backups/
# Restaurar (via desk-crm-v3 MCP ou mysql client)
mysql perfex_crm < ./backups/cr_backup_XXXXX/data/cr_agents.sql
```
**Nota**: Restore completo requer script separado ou uso manual do mysql client.
## Retenção Sugerida
| Tipo | Retenção | Automação |
|------|----------|-----------|
| Diário | 7 dias | Hook SessionStart |
| Semanal | 4 semanas | Cron domingo |
| Mensal | 12 meses | Cron dia 1 |
## Integração
- **Skill**: db-maintenance-manager
- **MCP**: desk-crm-v3
- **Relacionado**:
- /descomplicar:db-migrate (backup antes de migrations)
- /descomplicar:db-cleanup (backup antes de limpeza)
## Segurança
- Backups não incluem credenciais
- Checksums MD5 para verificação
- Ficheiros com permissões 600
- Não incluir em repositórios git (.gitignore)

167
commands/db-cleanup.md Normal file
View File

@@ -0,0 +1,167 @@
---
name: db-cleanup
description: >
Limpeza de órfãos nas tabelas de relacionamento cr_*.
Remove referências inválidas com backup automático.
argument-hint: "[--table=X] [--dry-run] [--no-backup]"
---
# /descomplicar:db-cleanup
Detecta e remove registos órfãos nas tabelas de relacionamento da infraestrutura Claude Code.
## Objectivo
Garantir integridade referencial das tabelas cr_* removendo registos que apontam para entidades inexistentes (órfãos).
## Sintaxe
```
/descomplicar:db-cleanup [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--table=X` | Limpar apenas tabela específica | todas |
| `--dry-run` | Mostrar o que seria removido sem executar | false |
| `--no-backup` | Não criar backup (não recomendado) | false |
| `--force` | Não pedir confirmação | false |
## Output Esperado
```
╔════════════════════════════════════════════════════════════╗
║ DB CLEANUP ║
╠════════════════════════════════════════════════════════════╣
║ Backup criado: cr_orphans_backup_20260204 ║
║ cr_agent_mcps: 12 → 0 órfãos ✓ ║
║ cr_agent_skills: 3 → 0 órfãos ✓ ║
║ cr_skill_mcps: 5 → 0 órfãos ✓ ║
╠════════════════════════════════════════════════════════════╣
║ TOTAL REMOVIDO: 20 órfãos | Integridade: ✓ OK ║
╚════════════════════════════════════════════════════════════╝
```
## Tabelas Verificadas
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--table=X` | Limpar apenas tabela específica | todas |
| `--dry-run` | Mostrar o que seria removido sem executar | false |
| `--no-backup` | Não criar backup (não recomendado) | false |
| `--force` | Não pedir confirmação | false |
## Tabelas Verificadas
| Tabela | FK 1 | FK 2 |
|--------|------|------|
| `cr_agent_mcps` | agent_id → cr_agents | mcp_id → cr_mcps |
| `cr_agent_lsps` | agent_id → cr_agents | lsp_id → cr_lsps |
| `cr_agent_skills` | agent_id → cr_agents | skill_id → cr_skills |
| `cr_skill_mcps` | skill_id → cr_skills | mcp_id → cr_mcps |
| `cr_sdk_agents` | sdk_id → cr_sdks | agent_id → cr_agents |
| `cr_sdk_skills` | sdk_id → cr_sdks | skill_id → cr_skills |
| `cr_sdk_mcps` | sdk_id → cr_sdks | mcp_id → cr_mcps |
| `cr_agent_collaborations` | agent_id → cr_agents | collaborator_id → cr_agents |
## Workflow
```
1. DETECTAR órfãos em cada tabela
2. CRIAR backup das linhas a remover
3. MOSTRAR resumo ao utilizador
4. PEDIR confirmação (se não --force)
5. EXECUTAR DELETE em transação
6. VALIDAR integridade
7. REPORTAR resultado
```
## Exemplos
### Dry-run (ver sem executar)
```bash
/descomplicar:db-cleanup --dry-run
```
Output:
```
╔════════════════════════════════════════════════════════════╗
║ DB CLEANUP - DRY RUN ║
╠════════════════════════════════════════════════════════════╣
║ cr_agent_mcps: 12 órfãos detectados ║
║ cr_agent_lsps: 0 órfãos detectados ║
║ cr_agent_skills: 3 órfãos detectados ║
║ cr_skill_mcps: 5 órfãos detectados ║
║ cr_sdk_agents: 0 órfãos detectados ║
║ cr_sdk_skills: 2 órfãos detectados ║
║ cr_sdk_mcps: 0 órfãos detectados ║
║ cr_agent_collaborations: 1 órfão detectado ║
╠════════════════════════════════════════════════════════════╣
║ TOTAL: 23 órfãos a remover ║
║ Executar sem --dry-run para limpar ║
╚════════════════════════════════════════════════════════════╝
```
### Limpeza completa
```bash
/descomplicar:db-cleanup
```
Output:
```
╔════════════════════════════════════════════════════════════╗
║ DB CLEANUP ║
╠════════════════════════════════════════════════════════════╣
║ Backup criado: cr_orphans_backup_20260204_163500 ║
╠════════════════════════════════════════════════════════════╣
║ cr_agent_mcps: 12 → 0 órfãos ✓ ║
║ cr_agent_skills: 3 → 0 órfãos ✓ ║
║ cr_skill_mcps: 5 → 0 órfãos ✓ ║
║ cr_sdk_skills: 2 → 0 órfãos ✓ ║
║ cr_agent_collaborations: 1 → 0 órfãos ✓ ║
╠════════════════════════════════════════════════════════════╣
║ TOTAL REMOVIDO: 23 órfãos ║
║ Integridade: ✓ OK ║
╚════════════════════════════════════════════════════════════╝
```
### Tabela específica
```bash
/descomplicar:db-cleanup --table=cr_agent_mcps
```
## SQL Executado
```sql
-- Detecção (para cada tabela)
SELECT COUNT(*) as orphans 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;
-- Backup
CREATE TABLE cr_orphans_backup_YYYYMMDD_HHMMSS AS
SELECT 'cr_agent_mcps' as source_table, am.*
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
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);
```
## Integração
- **Skill**: db-maintenance-manager
- **MCP**: desk-crm-v3
- **Relacionado**: /descomplicar:status (detecta órfãos)
## Segurança
- Backup SEMPRE criado antes de DELETE (excepto --no-backup)
- Operações em transação (rollback se erro)
- Log em cr_maintenance_log
- Não remove dados de entidades (apenas relacionamentos)

240
commands/db-migrate.md Normal file
View File

@@ -0,0 +1,240 @@
---
name: db-migrate
description: >
Gestão de migrations do schema cr_*.
Aplica, reverte e lista migrations pendentes.
argument-hint: "[up|down|status|create] [migration-name]"
---
# /descomplicar:db-migrate
Gestão de migrations para as tabelas cr_* da infraestrutura Claude Code.
## Objectivo
Gerir versões do schema das tabelas cr_*, aplicando ou revertendo migrations de forma controlada.
## Sintaxe
```
/descomplicar:db-migrate <action> [options]
```
| Acção | Descrição |
|-------|-----------|
| `status` | Mostra migrations pendentes e aplicadas |
| `up` | Aplica próxima migration pendente |
| `up --all` | Aplica todas as migrations pendentes |
| `down` | Reverte última migration aplicada |
| `create <name>` | Cria nova migration |
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--all` | Aplicar todas pendentes (com up) | false |
| `--force` | Não pedir confirmação | false |
| `--dry-run` | Mostrar SQL sem executar | false |
## Output Esperado
```
╔════════════════════════════════════════════════════════════╗
║ MIGRATIONS STATUS ║
╠════════════════════════════════════════════════════════════╣
║ ✓ 001_initial_schema.sql 2026-01-15 (1.2s) ║
║ ✓ 002_add_lsps.sql 2026-01-20 (0.8s) ║
║ ✓ 003_add_relationships.sql 2026-02-01 (0.5s) ║
║ ○ 004_add_telemetry.sql PENDENTE ║
╠════════════════════════════════════════════════════════════╣
║ Aplicadas: 3 | Pendentes: 1 ║
╚════════════════════════════════════════════════════════════╝
```
## Estrutura de Migrations
```
migrations/
├── 001_initial_schema.sql # Tabelas core
├── 002_add_relationships.sql # Tabelas de relacionamento
├── 003_add_telemetry.sql # Tabelas de telemetria
├── 004_add_archive_tables.sql # Tabelas de arquivo
├── 005_add_maintenance_log.sql # Log de manutenção
└── README.md # Documentação
```
### Formato de Migration
```sql
-- Migration: 005_add_maintenance_log
-- Author: Descomplicar®
-- Date: 2026-02-04
-- Description: Adiciona tabela de log de manutenção
-- UP
CREATE TABLE IF NOT EXISTS cr_maintenance_log (
id INT AUTO_INCREMENT PRIMARY KEY,
operation VARCHAR(50) NOT NULL,
table_name VARCHAR(100),
rows_affected INT DEFAULT 0,
details JSON,
executed_by VARCHAR(100) DEFAULT 'system',
executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('success', 'failed', 'rolled_back') DEFAULT 'success'
);
CREATE INDEX idx_maintenance_operation ON cr_maintenance_log(operation);
CREATE INDEX idx_maintenance_date ON cr_maintenance_log(executed_at);
-- DOWN
DROP TABLE IF EXISTS cr_maintenance_log;
```
## Tabela de Controlo
```sql
CREATE TABLE IF NOT EXISTS cr_migrations (
id INT AUTO_INCREMENT PRIMARY KEY,
migration_name VARCHAR(100) NOT NULL UNIQUE,
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
checksum VARCHAR(64),
status ENUM('applied', 'rolled_back', 'failed') DEFAULT 'applied',
execution_time_ms INT
);
```
## Exemplos
### Ver status
```bash
/descomplicar:db-migrate status
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ MIGRATIONS STATUS ║
╠════════════════════════════════════════════════════════════════╣
║ ✓ 001_initial_schema.sql 2026-01-15 10:30 (1.2s) ║
║ ✓ 002_add_relationships.sql 2026-01-20 14:15 (0.8s) ║
║ ✓ 003_add_telemetry.sql 2026-02-01 09:00 (0.5s) ║
║ ○ 004_add_archive_tables.sql PENDENTE ║
║ ○ 005_add_maintenance_log.sql PENDENTE ║
╠════════════════════════════════════════════════════════════════╣
║ Aplicadas: 3 | Pendentes: 2 ║
╚════════════════════════════════════════════════════════════════╝
```
### Aplicar próxima
```bash
/descomplicar:db-migrate up
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ APPLYING MIGRATION ║
╠════════════════════════════════════════════════════════════════╣
║ Migration: 004_add_archive_tables.sql ║
║ ║
║ Creating cr_agent_usage_archive... ✓ ║
║ Creating cr_skill_usage_archive... ✓ ║
║ Creating cr_mcp_tool_usage_archive... ✓ ║
║ Creating cr_lsp_usage_archive... ✓ ║
║ Creating indexes... ✓ ║
╠════════════════════════════════════════════════════════════════╣
║ Status: SUCCESS ║
║ Execution time: 1.8s ║
╚════════════════════════════════════════════════════════════════╝
```
### Aplicar todas pendentes
```bash
/descomplicar:db-migrate up --all
```
### Reverter última
```bash
/descomplicar:db-migrate down
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ ROLLING BACK MIGRATION ║
╠════════════════════════════════════════════════════════════════╣
║ Migration: 004_add_archive_tables.sql ║
║ ║
║ Dropping cr_lsp_usage_archive... ✓ ║
║ Dropping cr_mcp_tool_usage_archive... ✓ ║
║ Dropping cr_skill_usage_archive... ✓ ║
║ Dropping cr_agent_usage_archive... ✓ ║
╠════════════════════════════════════════════════════════════════╣
║ Status: ROLLED BACK ║
║ Execution time: 0.3s ║
╚════════════════════════════════════════════════════════════════╝
```
### Criar nova migration
```bash
/descomplicar:db-migrate create add_plugin_versions
```
Output:
```
Created: migrations/006_add_plugin_versions.sql
Edit the file and add your UP and DOWN SQL statements.
```
### Dry-run
```bash
/descomplicar:db-migrate up --dry-run
```
Output:
```
╔════════════════════════════════════════════════════════════════╗
║ DRY RUN - Would execute: ║
╠════════════════════════════════════════════════════════════════╣
║ ║
║ CREATE TABLE IF NOT EXISTS cr_agent_usage_archive ( ║
║ id INT AUTO_INCREMENT PRIMARY KEY, ║
║ agent_id INT NOT NULL, ║
║ ... ║
║ ); ║
║ ║
╚════════════════════════════════════════════════════════════════╝
```
## Migrations Incluídas
### 001_initial_schema.sql
- cr_agents, cr_skills, cr_mcps, cr_lsps, cr_sdks
- cr_mcp_tools, cr_plugins, cr_hooks
### 002_add_relationships.sql
- cr_agent_mcps, cr_agent_lsps, cr_agent_skills
- cr_skill_mcps, cr_sdk_agents, cr_sdk_skills, cr_sdk_mcps
- cr_agent_collaborations
### 003_add_telemetry.sql
- cr_agent_usage, cr_skill_usage
- cr_mcp_tool_usage, cr_lsp_usage
### 004_add_archive_tables.sql
- *_archive tables para telemetria
### 005_add_maintenance_log.sql
- cr_maintenance_log, cr_migrations
## Integração
- **Skill**: db-maintenance-manager
- **MCP**: desk-crm-v3
- **Relacionado**: /descomplicar:db-backup (antes de migrations)
## Segurança
- Checksum verificado antes de aplicar
- Rollback automático em caso de erro
- Log completo em cr_migrations
- Backup recomendado antes de migrations destrutivas

286
commands/decision-trees.md Normal file
View File

@@ -0,0 +1,286 @@
---
name: decision-trees
description: >
Gestão das árvores de decisão para selecção automática de agentes.
Listar, criar, ajustar confidence, testar e recalibrar.
argument-hint: "[list|show|create|adjust|test|recalibrate] [tree-name] [args]"
---
# /descomplicar:decision-trees
Gestão das árvores de decisão para selecção automática de agentes.
## Objectivo
Visualizar, criar e ajustar as decision trees que determinam qual agente usar para cada tipo de tarefa.
## Sintaxe
```
/descomplicar:decision-trees [action] [args]
```
## Acções Disponíveis
### 1. Listar Decision Trees
```
/descomplicar:decision-trees list
```
**Query:**
```sql
SELECT
dt.id,
dt.name,
a.slug as agent,
dt.trigger_keywords,
dt.confidence_score,
dt.usage_count,
dt.status
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
ORDER BY dt.usage_count DESC;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREES (5 activas) ║
╠══════════════════════════════════════════════════════════════════════╣
║ ID │ Nome │ Agent │ Conf │ Uses ║
║ ─────────────────────────────────────────────────────────────────── ║
║ 1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ 156 ║
║ 2 │ marketing-campaigns │ marketing-planning-exp │ 0.88 │ 134 ║
║ 3 │ seo-optimization │ seo-specialist │ 0.85 │ 87 ║
║ 4 │ php-development │ php-fullstack-engineer │ 0.90 │ 98 ║
║ 5 │ infrastructure-tasks │ easypanel-specialist │ 0.82 │ 38 ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Ver Detalhes
```
/descomplicar:decision-trees show wordpress-tasks
```
**Query:**
```sql
SELECT
dt.*,
a.slug as agent_slug,
a.name as agent_name,
a.category as agent_category
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.name = 'wordpress-tasks';
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREE: wordpress-tasks ║
╠══════════════════════════════════════════════════════════════════════╣
║ Agent: wordpress-plugin-developer ║
║ Category: dev ║
║ Confidence: 0.92 ║
║ Usage Count: 156 ║
║ Status: active ║
╠══════════════════════════════════════════════════════════════════════╣
║ TRIGGER KEYWORDS ║
║ ├── Primary: wordpress, wp, plugin, tema, theme ║
║ ├── Secondary: woocommerce, elementor, gutenberg ║
║ └── Negative: performance (→ wordpress-performance-specialist) ║
╠══════════════════════════════════════════════════════════════════════╣
║ TRIGGER CONDITIONS ║
║ { ║
║ "keywords": ["wordpress", "wp", "plugin", "tema"], ║
║ "exclude_keywords": ["performance", "speed", "cache"], ║
║ "min_confidence": 0.7, ║
║ "fallback_agent": "dev-helper" ║
║ } ║
╠══════════════════════════════════════════════════════════════════════╣
║ PERFORMANCE (30 dias) ║
║ ├── Invocações: 156 ║
║ ├── Success Rate: 96% ║
║ └── Avg Duration: 52s ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Criar Decision Tree
```
/descomplicar:decision-trees create
```
Modo interactivo:
1. Nome da tree
2. Agente a recomendar
3. Keywords primárias
4. Keywords secundárias (opcional)
5. Keywords negativas (opcional)
6. Confidence inicial (default: 0.75)
**Query:**
```sql
INSERT INTO cr_decision_trees
(name, agent_id, trigger_keywords, trigger_condition, confidence_score, status, created_at)
VALUES (
'new-tree-name',
(SELECT id FROM cr_agents WHERE slug = 'target-agent'),
'keyword1, keyword2, keyword3',
'{"keywords": ["keyword1", "keyword2"], "min_confidence": 0.7}',
0.75,
'active',
NOW()
);
```
### 4. Ajustar Confidence
```
/descomplicar:decision-trees adjust wordpress-tasks +0.05
/descomplicar:decision-trees adjust wordpress-tasks 0.95
```
**Query:**
```sql
UPDATE cr_decision_trees
SET confidence_score = 0.95, updated_at = NOW()
WHERE name = 'wordpress-tasks';
```
### 5. Testar Selecção
```
/descomplicar:decision-trees test "criar plugin wordpress para formulários"
```
**Processo:**
1. Extrair keywords do input
2. Comparar com todas as decision trees activas
3. Calcular score para cada match
4. Retornar agente com maior confidence
**Query:**
```sql
SELECT
dt.name as tree,
a.slug as agent,
dt.confidence_score,
-- Simular match score
(
LENGTH(dt.trigger_keywords) -
LENGTH(REPLACE(LOWER(dt.trigger_keywords), 'wordpress', ''))
) / LENGTH('wordpress') as keyword_matches
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.status = 'active'
AND (
LOWER(dt.trigger_keywords) LIKE '%wordpress%'
OR LOWER(dt.trigger_keywords) LIKE '%plugin%'
OR LOWER(dt.trigger_keywords) LIKE '%formulário%'
)
ORDER BY dt.confidence_score * keyword_matches DESC
LIMIT 3;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ TEST: "criar plugin wordpress para formulários" ║
╠══════════════════════════════════════════════════════════════════════╣
║ MATCHES ║
║ ─────────────────────────────────────────────────────────────────── ║
║ #1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ ████ ║
║ #2 │ php-development │ php-fullstack-engineer │ 0.65 │ ██░░ ║
║ #3 │ (fallback) │ dev-helper │ 0.50 │ █░░░ ║
╠══════════════════════════════════════════════════════════════════════╣
║ RECOMENDAÇÃO: wordpress-plugin-developer (confidence: 0.92) ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 6. Actualizar Baseado em Telemetria
```
/descomplicar:decision-trees recalibrate
```
Actualiza confidence scores baseado no success rate real:
**Query:**
```sql
UPDATE cr_decision_trees dt
SET
confidence_score = GREATEST(0.5, LEAST(0.99,
(SELECT
AVG(CASE WHEN au.success = 1 THEN 1.0 ELSE 0.3 END) *
(1 + LOG10(COUNT(*) + 1) / 10)
FROM cr_agent_usage au
WHERE au.agent_id = dt.agent_id
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY))
)),
updated_at = NOW()
WHERE dt.status = 'active';
```
### 7. Desactivar/Activar
```
/descomplicar:decision-trees disable wordpress-tasks
/descomplicar:decision-trees enable wordpress-tasks
```
## Integração com Selecção de Agentes
Quando o Claude recebe uma tarefa, o sistema:
1. Extrai keywords do prompt
2. Query decision trees activas
3. Calcula score: `confidence * keyword_match_ratio`
4. Selecciona agente com maior score
5. Regista em telemetria
6. Incrementa usage_count
```python
# Pseudo-código do context-builder.py
def select_agent(task_description):
keywords = extract_keywords(task_description)
query = """
SELECT a.slug, dt.confidence_score, dt.trigger_keywords
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.status = 'active'
"""
trees = db.execute(query)
best_match = None
best_score = 0
for tree in trees:
match_ratio = calculate_keyword_match(keywords, tree.trigger_keywords)
score = tree.confidence_score * match_ratio
if score > best_score:
best_score = score
best_match = tree.agent_slug
return best_match or 'dev-helper' # fallback
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREES (5 activas) ║
╠══════════════════════════════════════════════════════════════════════╣
║ ID │ Nome │ Agent │ Conf │ Uses ║
║ 1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ 156 ║
║ 2 │ marketing-campaigns │ marketing-planning-exp │ 0.88 │ 134 ║
║ 3 │ seo-optimization │ seo-specialist │ 0.85 │ 87 ║
╠══════════════════════════════════════════════════════════════════════╣
║ Telemetria-based confidence recalibration: ON ║
╚══════════════════════════════════════════════════════════════════════╝
```

View File

@@ -0,0 +1,110 @@
---
name: discover
description: >
Descoberta de plugins relevantes nos marketplaces.
Analisa gaps, avalia qualidade e recomenda instalação.
argument-hint: "[--category=X] [--official-only] [--install-recommended]"
---
# /descomplicar:discover
Descoberta de plugins relevantes nos marketplaces.
## Objectivo
Analisar marketplaces oficiais e da comunidade para recomendar plugins úteis baseados nas necessidades do sistema.
## Instruções
Quando invocado, deves:
1. **Verificar plugins já instalados**:
- Ler `~/.claude/plugins/`
- Query `cr_plugins` em MySQL
2. **Analisar gaps no sistema**:
- Comparar skills existentes com categorias de plugins disponíveis
- Identificar áreas sem cobertura (ex: se não há skills de testing, recomendar plugins de QA)
3. **Consultar marketplaces** (via WebFetch se necessário):
- `anthropics/claude-plugins-official` - Plugins oficiais Anthropic
- `coreyhaines31/marketingskills` - Marketing (25 skills)
- `alirezarezvani/claude-skills` - Skills gerais
- `Chat2AnyLLM/awesome-claude-plugins` - Curadoria comunidade
- `obra/superpowers` - Metodologia TDD
4. **Avaliar relevância** de cada plugin:
- Match com keywords das skills existentes: +3 pontos
- Categoria alinhada com SDKs activos: +2 pontos
- Popularidade (stars > 1k): +2 pontos
- Actualizado recentemente (< 30 dias): +1 ponto
- Sem conflitos com sistema actual: +2 pontos
5. **Gerar recomendações**:
```
╔══════════════════════════════════════════════════════════════╗
║ PLUGIN DISCOVERY - 2026-02-04 ║
╠══════════════════════════════════════════════════════════════╣
║ RECOMENDADOS (Score >= 7) ║
║ ─────────────────────────────────────────────────────────── ║
║ 1. marketingskills (9/10) ⭐ ║
║ └── 25 skills CRO, SEO, copywriting ║
║ └── Comando: /plugin marketplace add coreyhaines31/... ║
║ ║
║ 2. superpowers (8/10) ║
║ └── TDD obrigatório, 14 skills metodologia ║
║ └── JÁ INSTALADO ✓ ║
║ ║
║ 3. code-review (8/10) ║
║ └── 5 agents paralelo, PR automation ║
║ └── JÁ INSTALADO ✓ ║
╠══════════════════════════════════════════════════════════════╣
║ OPCIONAIS (Score 5-6) ║
║ ─────────────────────────────────────────────────────────── ║
║ 4. frontend-design (6/10) ║
║ └── UI design, evita estética genérica AI ║
║ ║
║ 5. hookify (5/10) ║
║ └── Criar hooks customizados ║
╠══════════════════════════════════════════════════════════════╣
║ GAPS IDENTIFICADOS ║
║ ├── Testing/QA: Nenhum plugin instalado ║
║ ├── Database: Nenhum plugin instalado ║
║ └── CI/CD: Parcialmente coberto por commit-commands ║
╚══════════════════════════════════════════════════════════════╝
```
6. **Oferecer instalação**:
- Perguntar ao utilizador quais quer instalar
- Executar `/plugin install` para cada seleccionado
- Actualizar `cr_plugins` com novos plugins
## Sintaxe
```
/descomplicar:discover [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--category=X` | Filtrar por categoria (dev, marketing, infra) | todas |
| `--official-only` | Apenas plugins Anthropic | false |
| `--install-recommended` | Instalar todos com score >= 7 | false |
| `--json` | Output em JSON | false |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ PLUGIN DISCOVERY - 2026-02-04 ║
╠══════════════════════════════════════════════════════════════════════╣
║ RECOMENDADOS (Score >= 7) ║
║ 1. marketingskills (9/10) ⭐ - 25 skills CRO, SEO, copywriting ║
║ 2. superpowers (8/10) - TDD, metodologia (JÁ INSTALADO ✓) ║
╠══════════════════════════════════════════════════════════════════════╣
║ GAPS IDENTIFICADOS ║
║ ├── Testing/QA: Nenhum plugin instalado ║
║ └── Database: Parcialmente coberto ║
╚══════════════════════════════════════════════════════════════════════╝
```

154
commands/infra-status.md Normal file
View File

@@ -0,0 +1,154 @@
---
name: status
description: >
Dashboard completo de infraestrutura Claude Code.
Entidades, relacionamentos, intelligence, telemetria e health score.
argument-hint: ""
---
# /descomplicar:status
Dashboard completo de infraestrutura Claude Code.
## Objectivo
Mostrar estado actual de todos os componentes e relacionamentos do sistema SDK + Plugins.
## Instruções
Quando invocado, deves:
1. **Verificar data/hora actual** via `mcp__mcp-time__current_time`
2. **Obter métricas dos componentes** (Core Tables):
```sql
SELECT
(SELECT COUNT(*) FROM cr_agents WHERE status='active') as agents,
(SELECT COUNT(*) FROM cr_skills WHERE status='active') as skills,
(SELECT COUNT(*) FROM cr_mcps WHERE status='active') as mcps,
(SELECT COUNT(*) FROM cr_lsps WHERE status='active') as lsps,
(SELECT COUNT(*) FROM cr_sdks WHERE status='active') as sdks,
(SELECT COUNT(*) FROM cr_mcp_tools) as mcp_tools
```
3. **Obter métricas de relacionamentos** (Relationship Tables):
```sql
SELECT
(SELECT COUNT(*) FROM cr_agent_mcps) as agent_mcps,
(SELECT COUNT(*) FROM cr_agent_lsps) as agent_lsps,
(SELECT COUNT(*) FROM cr_sdk_agents) as sdk_agents,
(SELECT COUNT(*) FROM cr_sdk_skills) as sdk_skills,
(SELECT COUNT(*) FROM cr_sdk_mcps) as sdk_mcps,
(SELECT COUNT(*) FROM cr_agent_skills) as agent_skills,
(SELECT COUNT(*) FROM cr_skill_mcps) as skill_mcps,
(SELECT COUNT(*) FROM cr_agent_collaborations) as agent_collabs
```
4. **Obter métricas de intelligence** (Intelligence Tables):
```sql
SELECT
(SELECT COUNT(*) FROM cr_decision_trees WHERE status='active') as decision_trees,
(SELECT COUNT(*) FROM cr_recommendations WHERE status='pending') as recommendations,
(SELECT COUNT(*) FROM cr_component_issues WHERE status='open') as issues,
(SELECT COUNT(*) FROM cr_reflections) as reflections
```
5. **Obter métricas de telemetria** (últimos 30 dias):
```sql
SELECT
(SELECT COUNT(*) FROM cr_agent_usage WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)) as agent_usage_30d,
(SELECT COUNT(*) FROM cr_skill_usage WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)) as skill_usage_30d,
(SELECT COUNT(*) FROM cr_mcp_tool_usage WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)) as tool_usage_30d,
(SELECT COUNT(*) FROM cr_lsp_usage WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)) as lsp_usage_30d
```
6. **Verificar plugins instalados**:
```sql
SELECT COUNT(*) FROM cr_plugins WHERE status='active'
```
7. **Calcular Health Score**:
- Entidades sincronizadas (ficheiros = BD): +20 pontos
- Relacionamentos consistentes (sem órfãos): +20 pontos
- MCPs activos respondem: +15 pontos
- Hooks sem erros: +15 pontos
- Decision trees funcionais: +10 pontos
- Telemetria activa: +10 pontos
- Plugins funcionais: +10 pontos
8. **Apresentar dashboard**:
```
╔══════════════════════════════════════════════════════════════════════╗
║ DESCOMPLICAR INFRASTRUCTURE STATUS ║
║ 2026-02-04 15:30 ║
╠══════════════════════════════════════════════════════════════════════╣
║ CORE ENTITIES ║
║ ├── Agents: 46 activos ✓ ║
║ ├── Skills: 54 activas ✓ ║
║ ├── MCPs: 33 (18 activos) ✓ ║
║ ├── LSPs: 11 configurados ✓ ║
║ ├── SDKs: 29 registados ✓ ║
║ ├── MCP Tools: 822 mapeadas ✓ ║
║ └── Plugins: 5 instalados ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ RELATIONSHIPS (800+ total) ║
║ ├── Agent ↔ MCP: 483 (cr_agent_mcps) ║
║ ├── Agent ↔ LSP: 40 (cr_agent_lsps) ║
║ ├── SDK ↔ Agent: 131 (cr_sdk_agents) ║
║ ├── SDK ↔ Skill: 75 (cr_sdk_skills) ║
║ ├── SDK ↔ MCP: 56 (cr_sdk_mcps) ║
║ ├── Agent ↔ Skill: ? (cr_agent_skills) ║
║ ├── Skill ↔ MCP: ? (cr_skill_mcps) ║
║ └── Agent ↔ Agent: ? (cr_agent_collaborations) ║
╠══════════════════════════════════════════════════════════════════════╣
║ INTELLIGENCE LAYER ║
║ ├── Decision Trees: 5 activas ║
║ ├── Recommendations: 3 pendentes ║
║ ├── Open Issues: 2 ║
║ └── Reflections: 1 ║
╠══════════════════════════════════════════════════════════════════════╣
║ TELEMETRY (30 dias) ║
║ ├── Agent Usage: 1,234 invocações ║
║ ├── Skill Usage: 567 invocações ║
║ ├── MCP Tool Usage: 8,901 chamadas ║
║ └── LSP Usage: 2,456 operações ║
╠══════════════════════════════════════════════════════════════════════╣
║ HEALTH SCORE: 95/100 ████████████████████░░ EXCELENTE ║
╠══════════════════════════════════════════════════════════════════════╣
║ SYNC STATUS ║
║ ├── Ficheiros ↔ MySQL: Sincronizado (há 2h) ║
║ ├── Relacionamentos: Consistentes (0 órfãos) ║
║ └── Última telemetria: 2026-02-04 14:15 ║
╚══════════════════════════════════════════════════════════════════════╝
```
## Sintaxe
```
/descomplicar:status [options]
```
| Opção | Descrição |
|-------|-----------|
| `--json` | Output em formato JSON |
| `--compact` | Versão compacta (apenas score e alertas) |
| `--no-telemetry` | Omitir secção de telemetria |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ DESCOMPLICAR INFRASTRUCTURE STATUS ║
║ 2026-02-04 15:30 ║
╠══════════════════════════════════════════════════════════════════════╣
║ CORE: 46 agents | 54 skills | 33 MCPs | 11 LSPs ║
║ RELATIONSHIPS: 825 total (0 órfãos) ║
║ HEALTH SCORE: 95/100 ████████████████████░░ EXCELENTE ║
╚══════════════════════════════════════════════════════════════════════╝
```
Sempre terminar com:
- Health Score numérico
- Alertas se houver problemas (relacionamentos órfãos, MCPs não responsivos)
- Sugestão de próxima acção se score < 90

198
commands/infra-sync.md Normal file
View File

@@ -0,0 +1,198 @@
---
name: sync
description: >
Sincronização completa: entidades + relacionamentos.
Compara ficheiros locais com MySQL e corrige inconsistências.
argument-hint: "[--dry-run] [--force] [--entities-only] [--relationships-only]"
---
# /descomplicar:sync
Sincronização completa: entidades + relacionamentos.
## Objectivo
Garantir que ficheiros locais, BD MySQL e relacionamentos estão todos sincronizados e consistentes.
## Instruções
Quando invocado, deves:
### Fase 1: Sync Entidades Core
1. **Ler estado local** dos ficheiros JSON:
```
~/.claude/sdks/_resources/agents.json
~/.claude/sdks/_resources/skills.json
~/.claude/sdks/_resources/mcps.json
~/.claude/sdks/_registry.json
```
2. **Comparar com MySQL** (Core Tables):
```sql
SELECT slug, name, category, status FROM cr_agents;
SELECT slug, name, category, status FROM cr_skills;
SELECT slug, name, transport, status FROM cr_mcps;
SELECT slug, name, status FROM cr_sdks;
```
3. **Aplicar diferenças** nas entidades:
- Novos em ficheiros → INSERT
- Diferentes → UPDATE
- Removidos → Marcar inactive
### Fase 2: Sync Relacionamentos
4. **Verificar consistência de relacionamentos**:
**cr_agent_mcps (Agent ↔ MCP):**
```sql
-- Verificar órfãos (agent_id que não existe em cr_agents)
SELECT am.* FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
WHERE a.id IS NULL;
-- Verificar órfãos (mcp_id que não existe em cr_mcps)
SELECT am.* FROM cr_agent_mcps am
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
WHERE m.id IS NULL;
```
**cr_sdk_agents (SDK ↔ Agent):**
```sql
SELECT sa.* FROM cr_sdk_agents sa
LEFT JOIN cr_sdks s ON sa.sdk_id = s.id
LEFT JOIN cr_agents a ON sa.agent_id = a.id
WHERE s.id IS NULL OR a.id IS NULL;
```
**cr_sdk_skills (SDK ↔ Skill):**
```sql
SELECT ss.* FROM cr_sdk_skills ss
LEFT JOIN cr_sdks s ON ss.sdk_id = s.id
LEFT JOIN cr_skills sk ON ss.skill_id = sk.id
WHERE s.id IS NULL OR sk.id IS NULL;
```
**cr_sdk_mcps (SDK ↔ MCP):**
```sql
SELECT sm.* FROM cr_sdk_mcps sm
LEFT JOIN cr_sdks s ON sm.sdk_id = s.id
LEFT JOIN cr_mcps m ON sm.mcp_id = m.id
WHERE s.id IS NULL OR m.id IS NULL;
```
5. **Limpar órfãos** (com confirmação se > 10):
```sql
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);
-- Repetir para todas as tabelas de relacionamento
```
### Fase 3: Sync MCP Tools
6. **Actualizar cr_mcp_tools**:
```sql
-- Para cada MCP activo, verificar se tools estão mapeadas
SELECT m.slug, COUNT(mt.id) as tools_count
FROM cr_mcps m
LEFT JOIN cr_mcp_tools mt ON m.id = mt.mcp_id
WHERE m.status = 'active'
GROUP BY m.id;
```
### Fase 4: Verificar Intelligence Layer
7. **Validar Decision Trees**:
```sql
-- Verificar se agentes referenciados existem
SELECT dt.* FROM cr_decision_trees dt
LEFT JOIN cr_agents a ON dt.agent_id = a.id
WHERE a.id IS NULL;
```
8. **Actualizar recommendations** se necessário:
```sql
-- Marcar recommendations implementadas
UPDATE cr_recommendations
SET status = 'implemented', implemented_at = NOW()
WHERE status = 'pending'
AND component_type = 'agent'
AND component_id IN (SELECT slug FROM cr_agents WHERE status = 'active');
```
### Fase 5: Registar Sync
9. **Log da operação**:
```sql
INSERT INTO cr_infrastructure_sync
(sync_type, entities_synced, relationships_checked, orphans_removed, status, created_at)
VALUES ('full', X, Y, Z, 'success', NOW());
```
10. **Apresentar relatório**:
```
╔══════════════════════════════════════════════════════════════════════╗
║ SYNC REPORT - 2026-02-04 15:35 ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 1: ENTIDADES CORE ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Componente │ Local │ MySQL │ Adicionados │ Actualizados │ Status ║
║ Agents │ 46 │ 46 │ 0 │ 2 │ ✓ ║
║ Skills │ 54 │ 54 │ 0 │ 0 │ ✓ ║
║ MCPs │ 33 │ 33 │ 0 │ 1 │ ✓ ║
║ SDKs │ 29 │ 29 │ 0 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 2: RELACIONAMENTOS ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Tabela │ Total │ Órfãos │ Removidos │ Status ║
║ cr_agent_mcps │ 483 │ 0 │ 0 │ ✓ ║
║ cr_sdk_agents │ 131 │ 0 │ 0 │ ✓ ║
║ cr_sdk_skills │ 75 │ 0 │ 0 │ ✓ ║
║ cr_sdk_mcps │ 56 │ 0 │ 0 │ ✓ ║
║ cr_agent_skills │ 23 │ 0 │ 0 │ ✓ ║
║ cr_skill_mcps │ 45 │ 0 │ 0 │ ✓ ║
║ cr_agent_collabs │ 12 │ 0 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 3: MCP TOOLS ║
║ ─────────────────────────────────────────────────────────────────── ║
║ MCPs com tools mapeadas: 33/33 (822 tools total) ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 4: INTELLIGENCE ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Decision Trees válidas: 5/5 ║
║ Recommendations actualizadas: 1 ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: Sync completo, 0 problemas ║
║ PRÓXIMO SYNC: Automático em 6h (cron) ║
╚══════════════════════════════════════════════════════════════════════╝
```
## Sintaxe
```
/descomplicar:sync [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--dry-run` | Mostrar alterações sem aplicar | false |
| `--force` | Aplicar sem confirmação | false |
| `--entities-only` | Sync apenas entidades core | false |
| `--relationships-only` | Sync apenas relacionamentos | false |
| `--fix-orphans` | Remover órfãos automaticamente | false |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ SYNC REPORT - 2026-02-04 15:35 ║
╠══════════════════════════════════════════════════════════════════════╣
║ ENTIDADES: Agents 46 ✓ | Skills 54 ✓ | MCPs 33 ✓ | SDKs 29 ✓ ║
║ RELACIONAMENTOS: 825 verificados, 0 órfãos removidos ║
║ INTELLIGENCE: 5 decision trees válidas ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: Sync completo, 0 problemas ║
╚══════════════════════════════════════════════════════════════════════╝
```

391
commands/lsps.md Normal file
View File

@@ -0,0 +1,391 @@
---
name: lsps
description: >
Gestão de Language Server Protocols (LSPs) integrados.
Listar, mapear, verificar instalação, sincronizar.
argument-hint: "[list|show|add|map|check|install|sync] [args]"
---
# /descomplicar:lsps
Gestão de Language Server Protocols (LSPs) integrados no sistema.
## Objectivo
Gerir os LSPs disponíveis, mapear para agentes de desenvolvimento, e monitorizar o seu estado.
## Sintaxe
```
/descomplicar:lsps [action] [args]
```
## Schema de Base de Dados
### Tabela Principal: cr_lsps
```sql
CREATE TABLE IF NOT EXISTS cr_lsps (
id INT AUTO_INCREMENT PRIMARY KEY,
slug VARCHAR(100) NOT NULL UNIQUE,
name VARCHAR(200) NOT NULL,
language VARCHAR(50) NOT NULL,
package_manager ENUM('npm', 'pip', 'cargo', 'go', 'composer', 'gem', 'native') NOT NULL,
package_name VARCHAR(200) NOT NULL,
binary_path VARCHAR(500),
config_file VARCHAR(200),
capabilities JSON,
status ENUM('active', 'inactive', 'deprecated') DEFAULT 'active',
version VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```
### Tabela de Relacionamento: cr_agent_lsps
```sql
CREATE TABLE IF NOT EXISTS cr_agent_lsps (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
lsp_id INT NOT NULL,
relationship_type ENUM('primary', 'recommended', 'available') DEFAULT 'recommended',
priority INT DEFAULT 1,
auto_start BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
FOREIGN KEY (lsp_id) REFERENCES cr_lsps(id) ON DELETE CASCADE,
UNIQUE KEY unique_agent_lsp (agent_id, lsp_id)
);
```
### Tabela de Telemetria: cr_lsp_usage
```sql
CREATE TABLE IF NOT EXISTS cr_lsp_usage (
id INT AUTO_INCREMENT PRIMARY KEY,
lsp_id INT NOT NULL,
agent_id INT,
operation VARCHAR(50),
response_time_ms INT,
success BOOLEAN DEFAULT TRUE,
error_message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (lsp_id) REFERENCES cr_lsps(id) ON DELETE CASCADE,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE SET NULL
);
```
## LSPs Predefinidos
| LSP | Linguagem | Package | Agentes Típicos |
|-----|-----------|---------|-----------------|
| typescript-language-server | TypeScript/JS | npm | javascript-fullstack-specialist |
| pyright | Python | pip | dev-helper |
| intelephense | PHP | npm | php-fullstack-engineer, wordpress-plugin-developer |
| phpactor | PHP | composer | php-fullstack-engineer |
| gopls | Go | go | dev-helper |
| rust-analyzer | Rust | cargo | dev-helper |
| vscode-css-languageserver | CSS | npm | web-designer, ui-designer |
| vscode-html-languageserver | HTML | npm | web-designer, elementor-specialist |
| yaml-language-server | YAML | npm | easypanel-specialist, n8n-automation-expert |
| bash-language-server | Bash | npm | cwp-server-manager, backup-specialist |
| sql-language-server | SQL | npm | database-design-specialist |
## Acções Disponíveis
### 1. Listar LSPs
```
/descomplicar:lsps list
```
**Query:**
```sql
SELECT
l.slug,
l.name,
l.language,
l.status,
l.version,
COUNT(DISTINCT al.agent_id) as agents_using
FROM cr_lsps l
LEFT JOIN cr_agent_lsps al ON l.id = al.lsp_id
GROUP BY l.id
ORDER BY agents_using DESC, l.language;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ LANGUAGE SERVER PROTOCOLS (11 configurados) ║
╠══════════════════════════════════════════════════════════════════════╣
║ LSP │ Lang │ Status │ Agents │ Version ║
║ ─────────────────────────────────────────────────────────────────── ║
║ intelephense │ PHP │ active │ 8 │ 1.10.4 ║
║ typescript-language-server │ TS/JS │ active │ 5 │ 4.3.3 ║
║ pyright │ Python │ active │ 4 │ 1.1.350 ║
║ yaml-language-server │ YAML │ active │ 3 │ 1.14.0 ║
║ bash-language-server │ Bash │ active │ 2 │ 5.1.2 ║
║ sql-language-server │ SQL │ active │ 2 │ 1.7.0 ║
║ ... ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Ver Detalhes de LSP
```
/descomplicar:lsps show intelephense
```
**Query:**
```sql
SELECT
l.*,
GROUP_CONCAT(DISTINCT a.slug ORDER BY al.relationship_type, al.priority) as agents
FROM cr_lsps l
LEFT JOIN cr_agent_lsps al ON l.id = al.lsp_id
LEFT JOIN cr_agents a ON al.agent_id = a.id
WHERE l.slug = 'intelephense'
GROUP BY l.id;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ LSP: intelephense ║
╠══════════════════════════════════════════════════════════════════════╣
║ Language: PHP ║
║ Package: npm install intelephense ║
║ Binary: node_modules/.bin/intelephense ║
║ Version: 1.10.4 ║
║ Status: active ║
╠══════════════════════════════════════════════════════════════════════╣
║ CAPABILITIES ║
║ ├── completionProvider: true ║
║ ├── hoverProvider: true ║
║ ├── definitionProvider: true ║
║ ├── referencesProvider: true ║
║ ├── documentSymbolProvider: true ║
║ ├── workspaceSymbolProvider: true ║
║ ├── codeActionProvider: true ║
║ └── renameProvider: true ║
╠══════════════════════════════════════════════════════════════════════╣
║ AGENTS (8) ║
║ ├── PRIMARY: php-fullstack-engineer, wordpress-plugin-developer ║
║ ├── RECOMMENDED: woocommerce-specialist, elementor-specialist ║
║ └── AVAILABLE: perfex-crm-module-developer, dev-helper ║
╠══════════════════════════════════════════════════════════════════════╣
║ TELEMETRY (30 dias) ║
║ ├── Invocações: 1,234 ║
║ ├── Avg Response: 45ms ║
║ └── Success Rate: 99.8% ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Adicionar LSP
```
/descomplicar:lsps add
```
Modo interactivo:
1. Slug (identificador único)
2. Nome
3. Linguagem
4. Package manager (npm/pip/cargo/go/composer/gem/native)
5. Package name
6. Capabilities (JSON)
**Query:**
```sql
INSERT INTO cr_lsps (slug, name, language, package_manager, package_name, capabilities, status)
VALUES (
'lua-language-server',
'Lua Language Server',
'Lua',
'native',
'lua-language-server',
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true}',
'active'
);
```
### 4. Mapear LSP para Agente
```
/descomplicar:lsps map intelephense php-fullstack-engineer primary
```
**Query:**
```sql
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
VALUES (
(SELECT id FROM cr_agents WHERE slug = 'php-fullstack-engineer'),
(SELECT id FROM cr_lsps WHERE slug = 'intelephense'),
'primary',
1
)
ON DUPLICATE KEY UPDATE
relationship_type = 'primary',
priority = 1;
```
### 5. Ver LSPs por Agente
```
/descomplicar:lsps agent php-fullstack-engineer
```
**Query:**
```sql
SELECT
l.slug,
l.name,
l.language,
al.relationship_type,
al.auto_start
FROM cr_agent_lsps al
JOIN cr_lsps l ON al.lsp_id = l.id
WHERE al.agent_id = (SELECT id FROM cr_agents WHERE slug = 'php-fullstack-engineer')
ORDER BY al.relationship_type, al.priority;
```
### 6. Ver Agentes por Linguagem
```
/descomplicar:lsps language PHP
```
**Query:**
```sql
SELECT
a.slug as agent,
l.slug as lsp,
al.relationship_type
FROM cr_lsps l
JOIN cr_agent_lsps al ON l.id = al.lsp_id
JOIN cr_agents a ON al.agent_id = a.id
WHERE l.language = 'PHP'
ORDER BY al.relationship_type, a.slug;
```
### 7. Verificar Instalação
```
/descomplicar:lsps check
```
Verifica se os LSPs estão instalados e funcionais:
```bash
# TypeScript
which typescript-language-server && typescript-language-server --version
# PHP
which intelephense || npm list -g intelephense
# Python
which pyright && pyright --version
# etc.
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ LSP HEALTH CHECK ║
╠══════════════════════════════════════════════════════════════════════╣
║ LSP │ Status │ Version │ Path ║
║ ─────────────────────────────────────────────────────────────────── ║
║ typescript-language-server │ ✓ OK │ 4.3.3 │ /usr/bin/... ║
║ intelephense │ ✓ OK │ 1.10.4 │ ~/.npm/... ║
║ pyright │ ✗ MISSING │ - │ - ║
║ gopls │ ✓ OK │ 0.15.3 │ ~/go/bin/... ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: 3/4 instalados (75%) ║
║ ACÇÃO: pip install pyright ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 8. Instalar LSP em Falta
```
/descomplicar:lsps install pyright
```
Executa a instalação baseada no package_manager:
```bash
# npm
npm install -g <package>
# pip
pip install <package>
# cargo
cargo install <package>
# go
go install <package>@latest
```
### 9. Sincronizar com BD
```
/descomplicar:lsps sync
```
Sincroniza o estado local com a base de dados:
1. Detecta LSPs instalados localmente
2. Actualiza versões na BD
3. Marca inactivos os não encontrados
4. Reporta discrepâncias
## Integração com Injecção de Contexto
Quando um agente é iniciado, o contexto inclui os LSPs recomendados:
```markdown
## Language Servers Disponíveis
### Primary LSPs (iniciar automaticamente)
- **intelephense** (PHP) - Completions, hover, go-to-definition
### Recommended LSPs
- **yaml-language-server** (YAML) - Para ficheiros de config
### Para Activar
Se necessário LSP adicional, usar: /descomplicar:lsps install <nome>
```
## Métricas
| Métrica | Descrição |
|---------|-----------|
| Coverage | % de agentes dev com LSP mapeado |
| Response Time | Tempo médio de resposta LSP |
| Availability | % de LSPs instalados vs configurados |
| Usage | Invocações por LSP por período |
## Workflow de Setup
1. **Instalar LSP:** `/descomplicar:lsps install <slug>`
2. **Mapear para agentes:** `/descomplicar:lsps map <lsp> <agent> <type>`
3. **Verificar:** `/descomplicar:lsps check`
4. **Sincronizar:** `/descomplicar:lsps sync`
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ LANGUAGE SERVER PROTOCOLS (11 configurados) ║
╠══════════════════════════════════════════════════════════════════════╣
║ LSP │ Lang │ Status │ Agents │ Version ║
║ intelephense │ PHP │ active │ 8 │ 1.10.4 ║
║ typescript-language-server │ TS/JS │ active │ 5 │ 4.3.3 ║
║ pyright │ Python │ active │ 4 │ 1.1.350 ║
╠══════════════════════════════════════════════════════════════════════╣
║ Coverage: 85% | Avg Response: 45ms | Success: 99.8% ║
╚══════════════════════════════════════════════════════════════════════╝
```

255
commands/relationships.md Normal file
View File

@@ -0,0 +1,255 @@
---
name: relationships
description: >
Gestão de relacionamentos entre componentes do sistema.
Visualizar, criar, modificar e validar relacionamentos.
argument-hint: "[list|show|add|remove|validate|suggest] [type] [args]"
---
# /descomplicar:relationships
Gestão de relacionamentos entre componentes.
## Objectivo
Visualizar, criar, modificar e validar relacionamentos entre entidades (Agents, Skills, MCPs, SDKs).
## Sintaxe
```
/descomplicar:relationships [action] [type] [args]
```
## Acções Disponíveis
### 1. Listar Relacionamentos
**Por tipo:**
```
/descomplicar:relationships list agent-mcps
/descomplicar:relationships list sdk-agents
/descomplicar:relationships list sdk-skills
/descomplicar:relationships list sdk-mcps
/descomplicar:relationships list agent-skills
/descomplicar:relationships list skill-mcps
/descomplicar:relationships list agent-collabs
```
**Por entidade específica:**
```
/descomplicar:relationships list agent wordpress-plugin-developer
/descomplicar:relationships list sdk wordpress
/descomplicar:relationships list mcp desk-crm-v3
```
### 2. Ver Detalhes de Relacionamento
```
/descomplicar:relationships show agent wordpress-plugin-developer
```
**Output esperado:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ RELATIONSHIPS: wordpress-plugin-developer ║
╠══════════════════════════════════════════════════════════════════════╣
║ MCPs (via cr_agent_mcps) ║
║ ├── PRIMARY: cwp, ssh-unified ║
║ ├── RECOMMENDED: filesystem, gitea ║
║ └── AVAILABLE: google-workspace, tavily ║
╠══════════════════════════════════════════════════════════════════════╣
║ Skills (via cr_agent_skills) ║
║ └── wp-dev, wp-performance, elementor, woocommerce ║
╠══════════════════════════════════════════════════════════════════════╣
║ SDKs (via cr_sdk_agents) ║
║ └── wordpress, deskdev ║
╠══════════════════════════════════════════════════════════════════════╣
║ Collaborations (via cr_agent_collaborations) ║
║ └── php-fullstack-engineer, database-design-specialist ║
╠══════════════════════════════════════════════════════════════════════╣
║ Decision Trees (via cr_decision_trees) ║
║ └── wordpress-tasks (confidence: 0.92) ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Criar Relacionamento
**Agent ↔ MCP:**
```
/descomplicar:relationships add agent-mcp wordpress-plugin-developer cwp primary
```
```sql
INSERT INTO cr_agent_mcps (agent_id, mcp_id, relationship_type, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
(SELECT id FROM cr_mcps WHERE slug = 'cwp'),
'primary',
NOW()
);
```
**SDK ↔ Agent:**
```
/descomplicar:relationships add sdk-agent wordpress wordpress-plugin-developer
```
```sql
INSERT INTO cr_sdk_agents (sdk_id, agent_id, created_at)
VALUES (
(SELECT id FROM cr_sdks WHERE slug = 'wordpress'),
(SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer'),
NOW()
);
```
**Agent ↔ Skill:**
```
/descomplicar:relationships add agent-skill wordpress-plugin-developer wp-dev
```
**Agent ↔ Agent (Collaboration):**
```
/descomplicar:relationships add agent-collab wordpress-plugin-developer php-fullstack-engineer
```
### 4. Remover Relacionamento
```
/descomplicar:relationships remove agent-mcp wordpress-plugin-developer cwp
```
```sql
DELETE FROM cr_agent_mcps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = 'wordpress-plugin-developer')
AND mcp_id = (SELECT id FROM cr_mcps WHERE slug = 'cwp');
```
### 5. Validar Consistência
```
/descomplicar:relationships validate
```
**Verificações:**
1. Todos os agent_id em cr_agent_mcps existem em cr_agents
2. Todos os mcp_id em cr_agent_mcps existem em cr_mcps
3. Todos os sdk_id em cr_sdk_* existem em cr_sdks
4. Todos os skill_id em cr_*_skills existem em cr_skills
5. Decision trees referenciam agentes válidos
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ RELATIONSHIP VALIDATION REPORT ║
╠══════════════════════════════════════════════════════════════════════╣
║ Tabela │ Total │ Válidos │ Órfãos │ Status ║
║ cr_agent_mcps │ 483 │ 483 │ 0 │ ✓ ║
║ cr_sdk_agents │ 131 │ 131 │ 0 │ ✓ ║
║ cr_sdk_skills │ 75 │ 75 │ 0 │ ✓ ║
║ cr_sdk_mcps │ 56 │ 56 │ 0 │ ✓ ║
║ cr_agent_skills │ 23 │ 23 │ 0 │ ✓ ║
║ cr_skill_mcps │ 45 │ 45 │ 0 │ ✓ ║
║ cr_agent_collabs │ 12 │ 12 │ 0 │ ✓ ║
║ cr_decision_trees │ 5 │ 5 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: 100% consistente, 0 órfãos ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 6. Sugerir Relacionamentos
```
/descomplicar:relationships suggest agent wordpress-plugin-developer
```
Analisa:
- MCPs usados por agentes similares
- Skills da mesma categoria
- Padrões de uso na telemetria
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ SUGGESTED RELATIONSHIPS: wordpress-plugin-developer ║
╠══════════════════════════════════════════════════════════════════════╣
║ MCPs Sugeridos (baseado em agentes similares) ║
║ ├── lighthouse (usado por 80% dos agentes WP) ║
║ └── gsc (Google Search Console - SEO) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Skills Sugeridas (mesma categoria: dev) ║
║ └── security-audit (não mapeada, relevante para WP) ║
╠══════════════════════════════════════════════════════════════════════╣
║ Collaborations Sugeridas (baseado em workflows) ║
║ └── seo-specialist (frequentemente usado em conjunto) ║
╚══════════════════════════════════════════════════════════════════════╝
Adicionar sugestões? [s/n]
```
## Queries SQL de Referência
### Ver todos os relacionamentos de um agente
```sql
SELECT
a.slug as agent,
'MCP' as rel_type,
m.slug as related,
am.relationship_type as rel_subtype
FROM cr_agents a
JOIN cr_agent_mcps am ON a.id = am.agent_id
JOIN cr_mcps m ON am.mcp_id = m.id
WHERE a.slug = 'wordpress-plugin-developer'
UNION ALL
SELECT
a.slug as agent,
'SDK' as rel_type,
s.slug as related,
'member' as rel_subtype
FROM cr_agents a
JOIN cr_sdk_agents sa ON a.id = sa.agent_id
JOIN cr_sdks s ON sa.sdk_id = s.id
WHERE a.slug = 'wordpress-plugin-developer'
UNION ALL
SELECT
a.slug as agent,
'Skill' as rel_type,
sk.slug as related,
'uses' as rel_subtype
FROM cr_agents a
JOIN cr_agent_skills asks ON a.id = asks.agent_id
JOIN cr_skills sk ON asks.skill_id = sk.id
WHERE a.slug = 'wordpress-plugin-developer';
```
### Estatísticas de relacionamentos
```sql
SELECT
'cr_agent_mcps' as table_name, COUNT(*) as count FROM cr_agent_mcps
UNION ALL SELECT 'cr_sdk_agents', COUNT(*) FROM cr_sdk_agents
UNION ALL SELECT 'cr_sdk_skills', COUNT(*) FROM cr_sdk_skills
UNION ALL SELECT 'cr_sdk_mcps', COUNT(*) FROM cr_sdk_mcps
UNION ALL SELECT 'cr_agent_skills', COUNT(*) FROM cr_agent_skills
UNION ALL SELECT 'cr_skill_mcps', COUNT(*) FROM cr_skill_mcps
UNION ALL SELECT 'cr_agent_collaborations', COUNT(*) FROM cr_agent_collaborations;
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ RELATIONSHIP VALIDATION REPORT ║
╠══════════════════════════════════════════════════════════════════════╣
║ Tabela │ Total │ Válidos │ Órfãos │ Status ║
║ cr_agent_mcps │ 483 │ 483 │ 0 │ ✓ ║
║ cr_sdk_agents │ 131 │ 131 │ 0 │ ✓ ║
║ cr_sdk_skills │ 75 │ 75 │ 0 │ ✓ ║
║ cr_agent_skills │ 23 │ 23 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: 100% consistente, 0 órfãos, 800+ relacionamentos ║
╚══════════════════════════════════════════════════════════════════════╝
```

229
commands/release.md Normal file
View File

@@ -0,0 +1,229 @@
---
name: release
description: >
Prepara e executa release do meta-plugin.
Valida qualidade, bump versão, gera CHANGELOG, git tag.
argument-hint: "[major|minor|patch] [--dry-run] [--force]"
---
# /descomplicar:release
Prepara e executa release do meta-plugin com quality gates.
## Objectivo
Executar release controlado com:
- Validação de todos os componentes (score >= 90)
- Bump de versão semântica
- Actualização de CHANGELOG.md
- Git commit + tag
- Push para Gitea
## Sintaxe
```
/descomplicar:release [version-bump] [options]
```
### Version Bump
| Tipo | Descrição | Exemplo |
|------|-----------|---------|
| `patch` | Bug fixes | 1.3.0 → 1.3.1 |
| `minor` | New features (default) | 1.3.0 → 1.4.0 |
| `major` | Breaking changes | 1.3.0 → 2.0.0 |
### Opções
| Opção | Descrição |
|-------|-----------|
| `--dry-run` | Simular sem executar |
| `--force` | Ignorar quality gates |
| `--no-git` | Não criar commit/tag |
| `--no-push` | Não fazer push |
## Workflow de Release
```
VALIDATE → BUMP VERSION → UPDATE CHANGELOG → COMMIT → TAG → PUSH
↓ ↓ ↓ ↓ ↓ ↓
Score>=90 plugin.json CHANGELOG.md git add v1.4.0 origin
```
## Acções Disponíveis
### 1. Release Minor (Default)
```
/descomplicar:release
```
**Processo:**
1. Validar todos os componentes (score >= 90)
2. Se falhar: BLOQUEAR e listar componentes
3. Ler versão actual de plugin.json
4. Incrementar minor (1.3.0 → 1.4.0)
5. Actualizar plugin.json
6. Actualizar CHANGELOG.md
7. Git commit: "chore: release v1.4.0"
8. Git tag: v1.4.0
9. Git push + push tags
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ RELEASE: descomplicar-meta-plugin ║
╠══════════════════════════════════════════════════════════════════════╣
║ PRE-RELEASE VALIDATION ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ Skills validated: 7/7 (avg: 88/100) ║
║ ✓ Agents validated: 2/2 (avg: 86/100) ║
║ ✓ Commands validated: 11/11 (avg: 85/100) ║
║ ✓ All components >= 70 ║
╠══════════════════════════════════════════════════════════════════════╣
║ VERSION BUMP ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Previous: 1.3.0 ║
║ New: 1.4.0 (minor) ║
║ File: .claude-plugin/plugin.json ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ CHANGELOG ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ Added entry for v1.4.0 ║
║ ✓ Listed 2 new skills, 3 new commands ║
╠══════════════════════════════════════════════════════════════════════╣
║ GIT OPERATIONS ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ Staged: plugin.json, CHANGELOG.md ║
║ ✓ Commit: chore: release v1.4.0 ║
║ ✓ Tag: v1.4.0 ║
║ ✓ Push: origin/main ║
║ ✓ Push tags: v1.4.0 ║
╠══════════════════════════════════════════════════════════════════════╣
║ RELEASE COMPLETE: v1.4.0 ✓ ║
║ URL: https://git.descomplicar.pt/descomplicar/descomplicar-meta-plugin/releases/tag/v1.4.0
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Dry Run
```
/descomplicar:release --dry-run
```
**Comportamento:**
- Executa todas as validações
- Mostra o que seria feito
- Não modifica ficheiros
- Não executa git
### 3. Force Release
```
/descomplicar:release --force
```
**Comportamento:**
- Ignora quality gates (score >= 70 aceite)
- Útil para hotfixes urgentes
- Adiciona WARNING no CHANGELOG
### 4. Release com Quality Gate Falhado
```
/descomplicar:release
Output:
╔══════════════════════════════════════════════════════════════════════╗
║ RELEASE BLOCKED ║
╠══════════════════════════════════════════════════════════════════════╣
║ Quality gate failed: 2 components below threshold ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✗ component-generator 65/100 (need 70) ║
║ ✗ old-command 58/100 (need 70) ║
╠══════════════════════════════════════════════════════════════════════╣
║ ACTIONS ║
║ 1. Run /descomplicar:validate <path> --fix ║
║ 2. Or use /descomplicar:release --force ║
╚══════════════════════════════════════════════════════════════════════╝
```
## CHANGELOG Generation
**Formato automático:**
```markdown
## [1.4.0] - 2026-02-04
### Added
- New skill: component-generator
- New skill: quality-validator
- New commands: create, validate, release
### Changed
- Updated hooks with timeout and statusMessage
- Improved .mcp.json with MCP mappings
### Fixed
- Frontmatter validation in all components
```
## Git Commands
```bash
# Stage changes
git add .claude-plugin/plugin.json CHANGELOG.md
# Commit
git commit -m "chore: release v1.4.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
# Tag
git tag -a v1.4.0 -m "Release v1.4.0"
# Push
git push origin main
git push origin v1.4.0
```
## Quality Gates
| Componente | Threshold Normal | Threshold Force |
|------------|------------------|-----------------|
| Skills | >= 90 | >= 70 |
| Agents | >= 90 | >= 70 |
| Commands | >= 90 | >= 70 |
## Exemplo de Uso
```
User: Prepara release com as novas funcionalidades
/descomplicar:release minor
Output:
Validando componentes...
✓ 20/20 passaram quality gate
Bump versão: 1.3.0 → 1.4.0
CHANGELOG actualizado
Git commit + tag criados
Push para origin completo
Release v1.4.0 publicado com sucesso!
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ RELEASE: descomplicar-meta-plugin ║
╠══════════════════════════════════════════════════════════════════════╣
║ VALIDATION: Skills 8/8 ✓ | Agents 2/2 ✓ | Commands 15/15 ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ VERSION: 1.4.0 → 1.5.0 (minor) ║
║ CHANGELOG: ✓ Updated ║
║ GIT: ✓ Commit + Tag v1.5.0 + Push ║
╠══════════════════════════════════════════════════════════════════════╣
║ RELEASE COMPLETE: v1.5.0 ✓ ║
╚══════════════════════════════════════════════════════════════════════╝
```

249
commands/telemetry.md Normal file
View File

@@ -0,0 +1,249 @@
---
name: telemetry
description: >
Visualização e gestão de telemetria de uso.
Dashboard, top componentes, análise de erros, subutilização.
argument-hint: "[dashboard|top|unused|errors] [period] [filter]"
---
# /descomplicar:telemetry
Visualização e gestão de telemetria de uso.
## Objectivo
Mostrar métricas de uso de agentes, skills e MCPs. Identificar padrões, componentes subutilizados e oportunidades de optimização.
## Sintaxe
```
/descomplicar:telemetry [action] [period] [filter]
```
## Acções Disponíveis
### 1. Dashboard Geral
```
/descomplicar:telemetry dashboard
/descomplicar:telemetry dashboard 7d # Últimos 7 dias
/descomplicar:telemetry dashboard 30d # Últimos 30 dias (default)
```
**Query:**
```sql
SELECT
'Agents' as component,
COUNT(DISTINCT agent_id) as unique_used,
COUNT(*) as total_invocations,
AVG(duration_sec) as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_agent_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
UNION ALL
SELECT
'Skills' as component,
COUNT(DISTINCT skill_id) as unique_used,
COUNT(*) as total_invocations,
AVG(duration_sec) as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_skill_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
UNION ALL
SELECT
'MCP Tools' as component,
COUNT(DISTINCT mcp_tool_id) as unique_used,
COUNT(*) as total_invocations,
AVG(response_time_ms) / 1000 as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_mcp_tool_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY);
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
╠══════════════════════════════════════════════════════════════════════╣
║ TENDÊNCIA: ↑ 12% vs período anterior ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Top Componentes
```
/descomplicar:telemetry top agents 10
/descomplicar:telemetry top skills 10
/descomplicar:telemetry top mcps 10
```
**Query (Agents):**
```sql
SELECT
a.slug,
a.name,
COUNT(*) as invocations,
AVG(au.duration_sec) as avg_duration,
SUM(CASE WHEN au.success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_agent_usage au
JOIN cr_agents a ON au.agent_id = a.id
WHERE au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY a.id
ORDER BY invocations DESC
LIMIT 10;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ TOP 10 AGENTS - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ # │ Agent │ Invocações │ Avg │ Success ║
║ ─────────────────────────────────────────────────────────────────── ║
║ 1 │ wordpress-plugin-developer │ 156 │ 52s │ 96% ║
║ 2 │ marketing-planning-expert │ 134 │ 38s │ 94% ║
║ 3 │ php-fullstack-engineer │ 98 │ 61s │ 92% ║
║ 4 │ seo-specialist │ 87 │ 45s │ 98% ║
║ 5 │ content-manager │ 76 │ 32s │ 97% ║
║ 6 │ copywriter │ 65 │ 28s │ 99% ║
║ 7 │ sales-manager │ 54 │ 41s │ 91% ║
║ 8 │ dev-helper │ 48 │ 55s │ 89% ║
║ 9 │ n8n-automation-expert │ 42 │ 67s │ 95% ║
║ 10 │ easypanel-specialist │ 38 │ 72s │ 93% ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Componentes Subutilizados
```
/descomplicar:telemetry unused
/descomplicar:telemetry unused 90d # Não usados há 90 dias
```
**Query:**
```sql
-- Agentes nunca usados ou não usados há 30+ dias
SELECT a.slug, a.name, a.category,
COALESCE(MAX(au.created_at), 'Nunca') as last_used,
DATEDIFF(NOW(), COALESCE(MAX(au.created_at), '2020-01-01')) as days_since
FROM cr_agents a
LEFT JOIN cr_agent_usage au ON a.id = au.agent_id
WHERE a.status = 'active'
GROUP BY a.id
HAVING days_since > 30 OR last_used = 'Nunca'
ORDER BY days_since DESC;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ COMPONENTES SUBUTILIZADOS (>30 dias sem uso) ║
╠══════════════════════════════════════════════════════════════════════╣
║ AGENTS (14 de 46) ║
║ ├── backup-specialist │ Nunca usado │ Considerar arquivar ║
║ ├── reflect-agent │ 45 dias │ Auto-trigger activo?║
║ └── ... ║
╠══════════════════════════════════════════════════════════════════════╣
║ SKILLS (26 de 54) ║
║ ├── archive │ 60 dias │ Raramente necessária║
║ └── ... ║
╠══════════════════════════════════════════════════════════════════════╣
║ RECOMENDAÇÃO: Revisar componentes não usados há >90 dias ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 4. Análise de Erros
```
/descomplicar:telemetry errors
/descomplicar:telemetry errors agent wordpress-plugin-developer
```
**Query:**
```sql
SELECT
a.slug,
COUNT(*) as total_errors,
COUNT(*) * 100.0 / (SELECT COUNT(*) FROM cr_agent_usage WHERE agent_id = a.id) as error_rate,
MAX(au.created_at) as last_error
FROM cr_agent_usage au
JOIN cr_agents a ON au.agent_id = a.id
WHERE au.success = 0
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY a.id
ORDER BY total_errors DESC
LIMIT 10;
```
### 5. Registar Uso (automático via hooks)
```sql
-- Registado automaticamente pelo hook PostToolUse
INSERT INTO cr_agent_usage (agent_id, session_id, success, duration_sec, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
'{session_id}',
{success},
{duration},
NOW()
);
INSERT INTO cr_mcp_tool_usage (mcp_tool_id, agent_id, response_time_ms, success, created_at)
VALUES (
(SELECT id FROM cr_mcp_tools WHERE tool_name = '{tool_name}'),
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
{response_time},
{success},
NOW()
);
```
## Integração com Decision Trees
A telemetria alimenta as decision trees para melhorar a selecção de agentes:
```sql
-- Actualizar confidence baseado em success rate
UPDATE cr_decision_trees dt
SET dt.confidence_score = (
SELECT AVG(CASE WHEN au.success = 1 THEN 1.0 ELSE 0.5 END)
FROM cr_agent_usage au
WHERE au.agent_id = dt.agent_id
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
)
WHERE dt.status = 'active';
```
## Métricas de Saúde
| Métrica | Threshold | Acção |
|---------|-----------|-------|
| Success Rate | < 90% | Investigar erros |
| Avg Duration | > 120s | Optimizar agente |
| Unused (dias) | > 90 | Considerar arquivar |
| Error Spike | > 5 em 1h | Alerta imediato |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
╠══════════════════════════════════════════════════════════════════════╣
║ TENDÊNCIA: ↑ 12% vs período anterior ║
╚══════════════════════════════════════════════════════════════════════╝
```

213
commands/validate.md Normal file
View File

@@ -0,0 +1,213 @@
---
name: validate
description: >
Valida componentes contra standards Descomplicar®.
Calcula score, verifica frontmatter, reporta issues.
argument-hint: "<path|all> [--fix] [--strict]"
---
# /descomplicar:validate
Valida qualidade de componentes do plugin.
## Objectivo
Verificar que componentes cumprem standards:
- Frontmatter YAML completo
- Secções obrigatórias presentes
- Score >= 70 para produção
- Sem erros de sintaxe
## Sintaxe
```
/descomplicar:validate <target> [options]
```
### Targets
| Target | Descrição |
|--------|-----------|
| `<path>` | Validar componente específico |
| `all` | Validar todos os componentes |
| `skills` | Validar todas as skills |
| `agents` | Validar todos os agents |
| `commands` | Validar todos os commands |
### Opções
| Opção | Descrição |
|-------|-----------|
| `--fix` | Tentar corrigir automaticamente |
| `--strict` | Falhar se score < 90 |
| `--json` | Output em JSON |
## Acções Disponíveis
### 1. Validar Componente Específico
```
/descomplicar:validate skills/infrastructure-manager/SKILL.md
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ VALIDATION: infrastructure-manager ║
║ Type: Skill | Path: skills/infrastructure-manager/SKILL.md ║
╠══════════════════════════════════════════════════════════════════════╣
║ FRONTMATTER Score: 55/55 ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ name: infrastructure-manager ║
║ ✓ description: (67 chars, 5 keywords) ║
║ ✓ author: Descomplicar® ║
║ ✓ version: 1.0.0 ║
║ ✓ desk_task: 1441 ║
║ ✓ allowed-tools: Read, Glob, Grep, ToolSearch ║
╠══════════════════════════════════════════════════════════════════════╣
║ CONTENT SECTIONS Score: 30/35 ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ # Title ║
║ ✓ ## Triggers (4 items) ║
║ ✓ ## Capabilities (6 items) ║
║ ✓ ## Workflow ║
║ ✗ ## Exemplo de Uso (missing) ║
║ ✗ ## Limites (missing) ║
╠══════════════════════════════════════════════════════════════════════╣
║ QUALITY CHECKS Score: 10/10 ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ YAML syntax valid ║
║ ✓ Lines: 184 (< 500) ║
║ ✓ Keywords in description: 5 ║
╠══════════════════════════════════════════════════════════════════════╣
║ TOTAL SCORE: 95/100 ████████████████████░ PRODUCTION ║
╠══════════════════════════════════════════════════════════════════════╣
║ STATUS: PASS ✓ ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Validar Todos os Componentes
```
/descomplicar:validate all
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ FULL VALIDATION REPORT ║
╠══════════════════════════════════════════════════════════════════════╣
║ SKILLS (7) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ infrastructure-manager 95/100 PRODUCTION ║
║ ✓ relationship-manager 92/100 PRODUCTION ║
║ ✓ plugin-curator 88/100 BETA ║
║ ✓ agent-context-injector 85/100 BETA ║
║ ✓ lsp-manager 90/100 PRODUCTION ║
║ ✓ component-generator 78/100 BETA ║
║ ✓ quality-validator 82/100 BETA ║
╠══════════════════════════════════════════════════════════════════════╣
║ AGENTS (2) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ infrastructure-orchestrator 88/100 BETA ║
║ ✓ plugin-evaluator 85/100 BETA ║
╠══════════════════════════════════════════════════════════════════════╣
║ COMMANDS (11) ║
║ ─────────────────────────────────────────────────────────────────── ║
║ ✓ status 95/100 PRODUCTION ║
║ ✓ sync 92/100 PRODUCTION ║
║ ✓ discover 90/100 PRODUCTION ║
║ ✓ relationships 88/100 BETA ║
║ ✓ telemetry 85/100 BETA ║
║ ✓ decision-trees 82/100 BETA ║
║ ✓ agent-config 80/100 BETA ║
║ ✓ lsps 78/100 BETA ║
║ ✓ create 85/100 BETA ║
║ ✓ validate 88/100 BETA ║
║ ✓ release 82/100 BETA ║
╠══════════════════════════════════════════════════════════════════════╣
║ SUMMARY ║
║ ├── Total Components: 20 ║
║ ├── Production Ready (>=90): 6 ║
║ ├── Beta (70-89): 14 ║
║ ├── Draft (50-69): 0 ║
║ └── Invalid (<50): 0 ║
╠══════════════════════════════════════════════════════════════════════╣
║ AVERAGE SCORE: 86/100 ████████████████████░░ BETA ║
║ STATUS: PASS ✓ (all >= 70) ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Validar com Auto-Fix
```
/descomplicar:validate skills/old-skill/SKILL.md --fix
```
**Correcções Automáticas:**
- Adicionar frontmatter faltante (com valores default)
- Formatar YAML correctamente
- Adicionar secções obrigatórias (vazias)
### 4. Modo Strict
```
/descomplicar:validate all --strict
```
**Comportamento:**
- Falha se qualquer componente < 90
- Usado antes de releases
## Integração com MySQL
```sql
-- Actualizar score após validação
UPDATE cr_skills
SET quality_score = ?, updated_at = NOW()
WHERE slug = ?;
UPDATE cr_agents
SET quality_score = ?, updated_at = NOW()
WHERE slug = ?;
```
## Quality Gates
| Gate | Threshold | Acção |
|------|-----------|-------|
| Create | >= 50 | Permitir criação |
| Activate | >= 70 | Permitir activação |
| Release | >= 90 | Permitir release |
## Exemplo de Uso
```
User: Valida todos os componentes
/descomplicar:validate all
Output:
Validando 20 componentes...
✓ 6 Production ready
✓ 14 Beta
✗ 0 Invalid
Score médio: 86/100
Status: PASS
```
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ FULL VALIDATION REPORT ║
╠══════════════════════════════════════════════════════════════════════╣
║ SKILLS (8): ✓ 8 pass | avg 95/100 ║
║ AGENTS (2): ✓ 2 pass | avg 92/100 ║
║ COMMANDS (15): ✓ 15 pass | avg 90/100 ║
╠══════════════════════════════════════════════════════════════════════╣
║ Total: 25 | Production: 20 | Beta: 5 | Invalid: 0 ║
║ AVERAGE SCORE: 92/100 ████████████████████░░ PRODUCTION ║
╚══════════════════════════════════════════════════════════════════════╝
```