Files
descomplicar-meta-plugin/skills/db-maintenance-manager/SKILL.md
Emanuel Almeida 692475a315 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>
2026-02-04 16:18:02 +00:00

8.0 KiB

name, description, author, version, desk_task, allowed-tools
name description author version desk_task allowed-tools
db-maintenance-manager Manutenção automatizada das tabelas cr_* da infraestrutura Claude Code. Use when "manutenção BD", "limpeza órfãos", "migração schema", "backup tabelas", "archiving", "optimização BD", "database maintenance". Descomplicar® 1.0.0 1441 Read, Glob, Grep, ToolSearch

DB Maintenance Manager

Gestão e manutenção automatizada das tabelas cr_* (Claude Resources) na base de dados Desk CRM.

Triggers

Esta skill deve ser activada quando:

  • Utilizador menciona "manutenção BD", "database maintenance"
  • Detectados órfãos nas tabelas de relacionamento
  • Telemetria antiga (>90 dias) a ocupar espaço
  • Necessidade de migração de schema
  • Backup/restore de componentes

Schema das Tabelas cr_*

Core Tables (Entidades)

Tabela Descrição Manutenção
cr_agents Agentes especializados Sync, Backup
cr_skills Skills invocáveis Sync, Backup
cr_mcps Servidores MCP Sync, Backup
cr_lsps Language Server Protocols Sync, Backup
cr_sdks Software Development Kits Sync, Backup
cr_mcp_tools Ferramentas por MCP Sync
cr_plugins Plugins instalados Sync, Backup
cr_hooks Hooks configurados Sync, Backup

Relationship Tables (Limpeza de Órfãos)

Tabela FK Agent FK Resource Cleanup Priority
cr_agent_mcps agent_id → cr_agents mcp_id → cr_mcps Alta
cr_agent_lsps agent_id → cr_agents lsp_id → cr_lsps Alta
cr_sdk_agents sdk_id → cr_sdks agent_id → cr_agents Média
cr_sdk_skills sdk_id → cr_sdks skill_id → cr_skills Média
cr_sdk_mcps sdk_id → cr_sdks mcp_id → cr_mcps Média
cr_agent_skills agent_id → cr_agents skill_id → cr_skills Alta
cr_skill_mcps skill_id → cr_skills mcp_id → cr_mcps Alta
cr_agent_collaborations agent_id → cr_agents collaborator_id → cr_agents Média

Telemetry Tables (Archiving)

Tabela Retenção Activa Archive After
cr_agent_usage 90 dias cr_agent_usage_archive
cr_skill_usage 90 dias cr_skill_usage_archive
cr_mcp_tool_usage 90 dias cr_mcp_tool_usage_archive
cr_lsp_usage 90 dias cr_lsp_usage_archive

Capabilities

1. Cleanup de Órfãos

Detecta e remove referências inválidas nas tabelas de relacionamento.

Detecção:

-- Órfãos em cr_agent_mcps
SELECT am.id, am.agent_id, am.mcp_id
FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
WHERE a.id IS NULL OR m.id IS NULL;

Limpeza (com confirmação):

-- Backup antes de limpar
CREATE TABLE cr_agent_mcps_orphans_backup_YYYYMMDD AS
SELECT * FROM cr_agent_mcps am
WHERE agent_id NOT IN (SELECT id FROM cr_agents)
   OR mcp_id NOT IN (SELECT id FROM cr_mcps);

-- Limpar órfãos
DELETE FROM cr_agent_mcps
WHERE agent_id NOT IN (SELECT id FROM cr_agents)
   OR mcp_id NOT IN (SELECT id FROM cr_mcps);

2. Migração de Schema

Gestão de alterações estruturais nas tabelas cr_*.

Estrutura de Migrations:

migrations/
├── 001_initial_schema.sql
├── 002_add_lsp_tables.sql
├── 003_add_telemetry.sql
├── 004_add_archive_tables.sql
└── migrations_log.sql

Tabela de Controlo:

CREATE TABLE IF NOT EXISTS cr_migrations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    migration_name VARCHAR(100) NOT NULL,
    applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    checksum VARCHAR(64),
    status ENUM('applied', 'rolled_back', 'failed') DEFAULT 'applied'
);

3. Backup Selectivo

Backup apenas das tabelas cr_* (não toda a BD Desk).

Tabelas a incluir:

-- Lista de tabelas para backup
SELECT table_name
FROM information_schema.tables
WHERE table_schema = DATABASE()
  AND table_name LIKE 'cr_%';

Formato de Backup:

backups/
└── cr_backup_YYYYMMDD_HHMMSS/
    ├── manifest.json
    ├── cr_agents.sql
    ├── cr_skills.sql
    ├── cr_mcps.sql
    └── ... (todas as tabelas cr_*)

4. Archiving de Telemetria

Move dados antigos para tabelas de arquivo.

Processo:

-- 1. Criar tabela archive se não existir
CREATE TABLE IF NOT EXISTS cr_agent_usage_archive LIKE cr_agent_usage;

-- 2. Mover dados > 90 dias
INSERT INTO cr_agent_usage_archive
SELECT * FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

-- 3. Limpar tabela principal
DELETE FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

-- 4. Registar operação
INSERT INTO cr_maintenance_log (operation, table_name, rows_affected, executed_at)
VALUES ('archive', 'cr_agent_usage', ROW_COUNT(), NOW());

5. Optimização

Manutenção de performance das tabelas.

-- Optimizar tabelas fragmentadas
OPTIMIZE TABLE cr_agent_usage, cr_skill_usage, cr_mcp_tool_usage;

-- Analisar estatísticas
ANALYZE TABLE cr_agents, cr_skills, cr_mcps, cr_agent_mcps;

-- Verificar índices em falta
SELECT DISTINCT table_name, column_name
FROM information_schema.columns c
WHERE table_schema = DATABASE()
  AND table_name LIKE 'cr_%'
  AND column_name LIKE '%_id'
  AND NOT EXISTS (
    SELECT 1 FROM information_schema.statistics s
    WHERE s.table_schema = c.table_schema
      AND s.table_name = c.table_name
      AND s.column_name = c.column_name
  );

Workflow

ANALISAR → BACKUP → EXECUTAR → VALIDAR → REPORTAR
  1. ANALISAR: Identificar necessidades de manutenção
  2. BACKUP: Criar backup antes de operações destrutivas
  3. EXECUTAR: Correr operação com transação
  4. VALIDAR: Verificar integridade pós-operação
  5. REPORTAR: Registar em cr_maintenance_log

Integrações

  • MCP: desk-crm-v3 (operações MySQL)
  • Commands:
    • /descomplicar:db-cleanup - Limpeza de órfãos
    • /descomplicar:db-migrate - Migração de schema
    • /descomplicar:db-backup - Backup selectivo
    • /descomplicar:db-archive - Archiving telemetria
  • Skills: infrastructure-manager (detecção), quality-validator (validação)

Métricas de Sucesso

Métrica Target
Órfãos 0
Telemetria activa < 90 dias
Backup age < 7 dias
Migrations pendentes 0

Exemplo de Uso

User: A BD tem dados antigos e órfãos. Limpa tudo.

DB Maintenance Manager:
1. [Analisa estado actual]
   - Órfãos: 12 em cr_agent_mcps, 3 em cr_skill_mcps
   - Telemetria: 45.000 registos > 90 dias
   - Último backup: há 15 dias

2. [Cria backup preventivo]
   ✓ Backup criado: cr_backup_20260204_163000/

3. [Executa limpeza órfãos]
   ✓ cr_agent_mcps: 12 órfãos removidos
   ✓ cr_skill_mcps: 3 órfãos removidos

4. [Executa archiving]
   ✓ cr_agent_usage: 15.000 → archive
   ✓ cr_skill_usage: 20.000 → archive
   ✓ cr_mcp_tool_usage: 10.000 → archive

5. [Valida resultado]
   ✓ Integridade OK
   ✓ 0 órfãos
   ✓ Telemetria < 90 dias

Resultado:
╔════════════════════════════════════════╗
║  DB MAINTENANCE COMPLETE               ║
╠════════════════════════════════════════╣
║  Órfãos removidos:     15              ║
║  Registos arquivados:  45.000          ║
║  Espaço libertado:     ~12 MB          ║
║  Backup:               ✓ Criado        ║
╚════════════════════════════════════════╝

Limites

  • Não executa operações destrutivas sem backup prévio
  • Archiving mantém dados (move, não apaga)
  • Migrations requerem aprovação manual
  • Backup não inclui tabelas não-cr_*
  • Optimização pode demorar em tabelas grandes (>1M registos)
  • Não substitui backups gerais do Desk CRM