- Estado do plugin, catalogo dos 15 icon packs, listar icones de um pack activo, activar/desactivar pack. - Plugin so encontrado activo em descomplicar.pt (producao); os outros 7 sites do bundle confirmados sem ele. - MCP maioritariamente so-leitura: unica escrita real e o toggle on/off por pack (skb_cife_manage_icon), testada em ciclo idempotente contra producao.
8.1 KiB
name, description, layer
| name | description | layer |
|---|---|---|
| mcp-skyboot-icons | MCP dedicado (node stdio, ligação `skyboot-icons` em ~/.omp/agent/mcp.json) para o Skyboot Custom Icons for Elementor — confirmado activo só em descomplicar.pt (produção). Estado do plugin, catálogo dos 15 icon packs bundlados (Elegant, Linearicons, Themify, Simple Line, Line, Ionicons, Icofont, Line Awesome, Material Design, Devicons, Icomoon, Elusive, Iconic, Brands, Open Iconic) com prefixo CSS e contagem de ícones ao vivo, listar os nomes de ícone de um pack activo, activar/desactivar um pack no selector de ícones do Elementor. Usar quando "skyboot icons", "custom icons elementor", "icon pack elementor", "activar pack de ícones", "material design icons elementor", "brands icon elementor", "quantos ícones tem o pack X". | wiki |
/mcp-skyboot-icons — MCP dedicado ao Skyboot Custom Icons for Elementor
Projecto em /media/ealmeida/Dados/Dev/mcp-skyboot-icons/ (TypeScript, SDK MCP oficial, stdio).
Sem código PHP novo no WordPress — leituras via wp option get/wp plugin list e wp eval sobre o
próprio filtro que o plugin usa (elementor/icons_manager/additional_tabs); a única escrita é
wp option update sobre o option nativo do plugin.
Âmbito real do plugin (investigado no código-fonte v1.2.0 em 19-08-2026)
O Skyboot Custom Icons for Elementor não gere ícones custom enviados pelo utilizador — é um
plugin utilitário que embrulha 15 fontes de ícones de terceiros já bundladas (CSS + fontes
estáticas em assets/, ~18k linhas de PHP a registá-las) e as regista no selector de ícones nativo
do Elementor via add_filter('elementor/icons_manager/additional_tabs', ...), uma classe PHP
dedicada por pack em classes/icons/class-<pack>-icon.php.
A única configuração real e gravável é um interruptor on/off por pack, tudo dentro de UM único wp_option:
skb_cife_manage_icon— array associativo nativo{ pack_key: "on"|"off" }, um por cada um dos 15 packs. Confirmado como array PHP nativo (não string com JSON dentro) —wp option getcom e sem--format=jsondevolvem a mesma estrutura, logo--format=jsoné seguro tanto para leitura como escrita.Skb_Cife_Base::include_files()só fazrequire_onceda classe de um pack se a sua chave estiver"on"— um pack desactivado nunca chega a registar o seu tab no Elementor nem a enfileirar o CSS (classes/class-scripts-manager.phpsegue exactamente a mesma condição para owp_enqueue_style).skb_cife_version— string simples com a versão gravada na última activação/upgrade (Skb_Cife_Base::activate()/check_for_updates()).
Não há upload de packs SVG custom, não há gestão de licença PRO gravável (o gate PRO é só
defined('SKB_CIFE_PRO_VERSION') + filtro skb_cife_is_pro, sem UI de licença na Free), e não há
nenhuma outra opção do utilizador exposta pelo settings-api/ além deste único toggle por pack —
confirmado por leitura de settings-api/settings-fields.php::get_icon_packs() (15 entradas, sem
mais nada). Por isso este MCP é maioritariamente só-leitura com uma única tool de escrita real,
em vez de inventar capacidades que o plugin não tem.
Sites conhecidos
Chamar skyboot_list_sites para a lista actual. Verificado ao vivo via wp plugin list nos 8 sites
reais do bundle em 19-08-2026: só descomplicar (produção, /home/ealmeida/public_html) tem o
plugin instalado (v1.2.0, activo). Os outros 7 (starter, emanuelalmeida, ccv, care,
ecommerce-demo, e-commerce, ecommerce) não o têm. Também aceita um path absoluto directamente
(/home/ealmeida/<site>) para sites fora desta lista, sem exigir rebuild do MCP.
Estado verificado em produção em 19-08-2026: todos os 15 packs activos ("on"), PRO não
activo, Elementor 4.2.2, PHP 8.2.31.
Tools (5)
| Tool | Read-only | Uso |
|---|---|---|
skyboot_list_sites |
sim | Aliases conhecidos, path WP, nota de estado |
skyboot_get_status |
sim | Instalado/activo, versão (plugin list + option), PRO activo, Elementor/PHP vistos pelo plugin, contagem de packs activos/totais |
skyboot_list_icon_packs |
sim | 15 packs: nome, descrição, fonte, contagem aproximada estática, estado activo/inactivo (skb_cife_manage_icon) e, se activo, prefixo CSS real + contagem exacta de ícones ao vivo |
skyboot_get_icon_pack_icons |
sim | Nomes de ícone (sufixo, sem prefixo CSS) de UM pack activo, com pesquisa por substring e paginação (limit/offset) |
skyboot_set_icon_pack_state |
não | Activa/desactiva um pack — merge sobre o skb_cife_manage_icon actual, as outras chaves ficam intactas |
Todas as tools exigem site como primeiro parâmetro. skyboot_get_icon_pack_icons e
skyboot_set_icon_pack_state exigem pack como uma das 15 chaves de ICON_PACK_KEYS (validado
pelo próprio schema Zod da tool — elegant_icon, linearicons_icon, themify_icon,
simpleline_icon, line_icon, ion_icon, icofont_icon, lineawesome_icon,
materialdesign_icon, devicons_icon, icomoon_icon, elusive_icon, iconic_icon,
brands_icon, open_iconic_icon).
Gotcha ao consultar ícones: skyboot_get_icon_pack_icons só funciona para um pack já
activo — se estiver desactivado a sua classe PHP nunca é carregada e o Elementor nunca viu o tab
(tab_not_found, mensagem de erro explícita a sugerir activar primeiro com
skyboot_set_icon_pack_state). Não há forma segura de ler os nomes de ícone de um pack desactivado
sem carregar código PHP arbitrário fora do fluxo normal do WordPress.
Segurança
Todas as escritas usam wp option update sobre o option nativo do plugin, nunca SQL directo. O
merge (ler o option completo → alterar só a chave do pack pedido → escrever o objecto completo)
replica exactamente o que acontece quando um humano grava a página "Manage Icons" via
options.php (confirmado em settings-api/class.settings-api.php::sanitize_options() — o
register_setting por secção substitui o option inteiro, por isso o form da própria página também
submete sempre todas as checkboxes de uma vez). O JSON completo viaja em base64 pelo STDIN do
processo SSH remoto (base64 -d | wp option update ... --format=json), nunca interpolado na linha
de comando. As leituras dinâmicas (skyboot_list_icon_packs, skyboot_get_icon_pack_icons) usam
wp eval com um corpo PHP estático (template fixo, só os parâmetros tabKey/search/limit/
offset são interpolados via JSON.stringify, nunca texto livre do utilizador sem escaping JSON).
Verificação
Construído e testado ponta-a-ponta contra produção (descomplicar.pt) em 19-08-2026:
npm run buildlimpo, smoke test stdio (initialize+tools/list, 5 tools confirmadas).- 3 leituras reais:
skyboot_get_statusdevolveuv1.2.0 activo, PRO false, Elementor 4.2.2, PHP 8.2.31, 15/15 packs activos— confirmado byte-a-byte contrawp plugin list/wp option getdirectos fora do MCP.skyboot_list_icon_packsdevolveu as 15 entradas com contagens ao vivo idênticas às lidas manualmente viawp eval(ex.materialdesign_icon5346,brands_icon934,icofont_icon2095).skyboot_get_icon_pack_icons(brands_icon, search="adobe")devolveu as 14 entradas Adobe (adobe,adobeacrobatreader, …,adobexd), idênticas ao array PHP lido directamente do código-fonte da classe. - Escrita testada com ciclo completo idempotente:
skyboot_set_icon_pack_state(open_iconic_icon, false)→ confirmadowp option get skb_cife_manage_iconcom"open_iconic_icon":"off"e as outras 14 chaves intactas, eapply_filters('elementor/icons_manager/additional_tabs', [])já sem o tabskb_cife-open_iconic-icon(false) →skyboot_set_icon_pack_state(open_iconic_icon, true)→ confirmadowp option get skb_cife_manage_iconbyte-a-byte idêntico ao estado inicial (todos os 15 packs"on").
Skills relacionadas
Nenhuma skill de conhecimento dedicada ao Skyboot Custom Icons for Elementor existe neste bundle —
esta skill é a única documentação (âmbito real + tools). Ver elementor para o ecossistema
Elementor/Crocoblock mais amplo e wp-cli para o padrão geral de gestão via WP-CLI no servidor CWP.