- 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>
7.5 KiB
7.5 KiB
name, description, author, version, desk_task, allowed-tools
| name | description | author | version | desk_task | allowed-tools |
|---|---|---|---|---|---|
| lsp-manager | Gestão inteligente de Language Server Protocols para agentes dev. Use when "lsp", "language server", "autocomplete", "intellisense", "intelephense", "pyright", "typescript-language-server", "gopls". | Descomplicar® | 1.0.0 | 1441 | Read, Glob, Grep, Bash, ToolSearch |
LSP Manager
Gestão inteligente de Language Server Protocols para agentes de desenvolvimento.
Triggers
Esta skill deve ser activada quando:
- Utilizador pede para configurar LSPs
- Novo agente de desenvolvimento é criado
- Erros de LSP detectados em sessão
- Análise de tooling de desenvolvimento
- Pedido de autocomplete/intellisense para linguagem específica
Conceitos
LSP vs MCP
| Aspecto | LSP | MCP |
|---|---|---|
| Propósito | Inteligência de código | Acesso a recursos externos |
| Exemplos | autocomplete, hover, go-to-def | filesystem, CRM, APIs |
| Protocolo | Language Server Protocol | Model Context Protocol |
| Escopo | Análise de código | Integração de sistemas |
Tipos de Relacionamento
cr_agent_lsps.relationship_type:
primary- LSPs essenciais para o agente (auto-start)recommended- LSPs úteis, activar quando relevanteavailable- LSPs opcionais, disponíveis se necessário
Capabilities
1. Detecção Automática de LSPs
Quando um agente de desenvolvimento inicia:
def detect_needed_lsps(agent_slug, file_extensions):
"""
Detecta LSPs necessários baseado em:
- Ficheiros no projecto (extensões)
- Configuração do agente (cr_agent_lsps)
- Padrões da linguagem
"""
extension_to_lsp = {
'.php': 'intelephense',
'.ts': 'typescript-language-server',
'.tsx': 'typescript-language-server',
'.js': 'typescript-language-server',
'.py': 'pyright',
'.go': 'gopls',
'.rs': 'rust-analyzer',
'.yaml': 'yaml-language-server',
'.yml': 'yaml-language-server',
'.sh': 'bash-language-server',
'.sql': 'sql-language-server',
'.css': 'vscode-css-languageserver',
'.html': 'vscode-html-languageserver',
}
needed = set()
for ext in file_extensions:
if ext in extension_to_lsp:
needed.add(extension_to_lsp[ext])
return needed
2. Verificação de Instalação
-- Obter LSPs configurados vs instalados
SELECT
l.slug,
l.package_manager,
l.package_name,
l.binary_path,
l.status as db_status,
-- Status local determinado por script externo
'unknown' as local_status
FROM cr_lsps l
WHERE l.status = 'active';
Script de verificação:
#!/bin/bash
# check-lsp-installed.sh
check_lsp() {
local slug=$1
local binary=$2
if command -v "$binary" &> /dev/null; then
version=$("$binary" --version 2>/dev/null | head -1)
echo "$slug:installed:$version"
else
echo "$slug:missing:-"
fi
}
# Verificar cada LSP
check_lsp "typescript-language-server" "typescript-language-server"
check_lsp "intelephense" "intelephense"
check_lsp "pyright" "pyright"
check_lsp "gopls" "gopls"
check_lsp "rust-analyzer" "rust-analyzer"
check_lsp "yaml-language-server" "yaml-language-server"
check_lsp "bash-language-server" "bash-language-server"
3. Instalação Automática
#!/bin/bash
# install-lsp.sh
install_lsp() {
local slug=$1
local pkg_manager=$2
local package=$3
case $pkg_manager in
npm)
npm install -g "$package"
;;
pip)
pip install "$package"
;;
cargo)
cargo install "$package"
;;
go)
go install "$package@latest"
;;
composer)
composer global require "$package"
;;
*)
echo "Package manager não suportado: $pkg_manager"
return 1
;;
esac
}
4. Mapeamento Inteligente
Baseado na categoria do agente:
-- Sugerir LSPs para agentes de categoria 'dev'
SELECT l.slug, l.language
FROM cr_lsps l
WHERE l.status = 'active'
AND l.language IN (
SELECT DISTINCT
CASE a.slug
WHEN 'php-fullstack-engineer' THEN 'PHP'
WHEN 'wordpress-plugin-developer' THEN 'PHP'
WHEN 'javascript-fullstack-specialist' THEN 'TypeScript'
WHEN 'database-design-specialist' THEN 'SQL'
-- etc.
END
FROM cr_agents a
WHERE a.slug = ?
)
AND l.id NOT IN (
SELECT lsp_id FROM cr_agent_lsps
WHERE agent_id = (SELECT id FROM cr_agents WHERE slug = ?)
);
5. Telemetria de LSP
-- Registar uso de LSP
INSERT INTO cr_lsp_usage (lsp_id, agent_id, operation, response_time_ms, success)
VALUES (
(SELECT id FROM cr_lsps WHERE slug = ?),
(SELECT id FROM cr_agents WHERE slug = ?),
?, -- 'completion', 'hover', 'definition', etc.
?,
?
);
-- Métricas agregadas
SELECT
l.slug,
COUNT(*) as total_ops,
AVG(lu.response_time_ms) as avg_response,
SUM(CASE WHEN lu.success THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_lsp_usage lu
JOIN cr_lsps l ON lu.lsp_id = l.id
WHERE lu.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY l.id
ORDER BY total_ops DESC;
6. Sugestões de Melhoria
-- Agentes dev sem LSP mapeado
SELECT a.slug, a.name, a.category
FROM cr_agents a
WHERE a.category = 'dev'
AND a.status = 'active'
AND NOT EXISTS (
SELECT 1 FROM cr_agent_lsps al
WHERE al.agent_id = a.id
);
-- LSPs com baixa taxa de sucesso
SELECT l.slug,
AVG(lu.response_time_ms) as avg_response,
SUM(CASE WHEN lu.success THEN 0 ELSE 1 END) as errors
FROM cr_lsps l
JOIN cr_lsp_usage lu ON l.id = lu.lsp_id
WHERE lu.created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP BY l.id
HAVING errors > 10 OR avg_response > 500;
Workflow
Setup Inicial
1. INVENTARIAR → Listar LSPs instalados localmente
2. REGISTAR → Inserir em cr_lsps
3. MAPEAR → Associar a agentes em cr_agent_lsps
4. VERIFICAR → Testar funcionamento
5. MONITORIZAR → Activar telemetria
Quando Agente Inicia
1. QUERY → Obter LSPs do agente (cr_agent_lsps)
2. CHECK → Verificar instalação local
3. INSTALL → Instalar em falta (se auto_start=true)
4. INJECT → Adicionar ao contexto do agente
5. LOG → Registar em telemetria
Integrações
- MCPs: desk-crm-v3 (BD), filesystem (verificação local)
- Commands:
/descomplicar:lsps- Gestão completa de LSPs/descomplicar:agent-config- Ver LSPs do agente/descomplicar:status- Dashboard inclui LSPs
Métricas de Sucesso
| Métrica | Target |
|---|---|
| LSP Coverage (agentes dev) | >= 80% |
| Installation Rate | >= 95% |
| Avg Response Time | < 200ms |
| Success Rate | >= 99% |
Exemplo de Uso
User: Configura LSPs para o agente wordpress-plugin-developer
LSP Manager:
1. [Analisa categoria e slug do agente]
2. [Detecta linguagens: PHP, JavaScript, CSS, HTML]
3. [Identifica LSPs:
- PRIMARY: intelephense (PHP)
- RECOMMENDED: typescript-language-server, vscode-css-languageserver
- AVAILABLE: yaml-language-server]
4. [Verifica instalação local]
5. [Cria mapeamentos em cr_agent_lsps]
6. [Reporta: "Agente configurado com 4 LSPs (1 primary, 2 recommended, 1 available)"]
Limites
- Não instala LSPs automaticamente sem confirmação
- Verificação de instalação local limitada a binários no PATH
- Telemetria requer integração com hooks activos
- Suporte apenas para LSPs com package manager conhecido (npm, pip, cargo, go, composer)
- Não gere configurações específicas de LSP (settings.json)