Files
claude-plugins/wordpress/skills/mcp-skyboot-icons/SKILL.md
T
Descomplicar Agent 36a0721349 feat(wordpress): nova skill mcp-skyboot-icons — MCP Skyboot Custom Icons for Elementor
- 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.
2026-08-19 07:06:30 +01:00

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 get com e sem --format=json devolvem a mesma estrutura, logo --format=json é seguro tanto para leitura como escrita. Skb_Cife_Base::include_files() só faz require_once da 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.php segue exactamente a mesma condição para o wp_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 build limpo, smoke test stdio (initialize + tools/list, 5 tools confirmadas).
  • 3 leituras reais: skyboot_get_status devolveu v1.2.0 activo, PRO false, Elementor 4.2.2, PHP 8.2.31, 15/15 packs activos — confirmado byte-a-byte contra wp plugin list/wp option get directos fora do MCP. skyboot_list_icon_packs devolveu as 15 entradas com contagens ao vivo idênticas às lidas manualmente via wp eval (ex. materialdesign_icon 5346, brands_icon 934, icofont_icon 2095). 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) → confirmado wp option get skb_cife_manage_icon com "open_iconic_icon":"off" e as outras 14 chaves intactas, e apply_filters('elementor/icons_manager/additional_tabs', []) já sem o tab skb_cife-open_iconic-icon (false) → skyboot_set_icon_pack_state(open_iconic_icon, true) → confirmado wp option get skb_cife_manage_icon byte-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.