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:
332
commands/agent-config.md
Normal file
332
commands/agent-config.md
Normal 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
187
commands/create.md
Normal 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
224
commands/db-archive.md
Normal 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
225
commands/db-backup.md
Normal 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
167
commands/db-cleanup.md
Normal 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
240
commands/db-migrate.md
Normal 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
286
commands/decision-trees.md
Normal 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 ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
110
commands/discover-plugins.md
Normal file
110
commands/discover-plugins.md
Normal 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
154
commands/infra-status.md
Normal 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
198
commands/infra-sync.md
Normal 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
391
commands/lsps.md
Normal 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
255
commands/relationships.md
Normal 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
229
commands/release.md
Normal 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
249
commands/telemetry.md
Normal 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
213
commands/validate.md
Normal 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 ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
Reference in New Issue
Block a user