feat(wordpress): adiciona mcp-abilities-elementor (testado ao vivo)

Plugin Devenia instalado e testado em emanuelalmeida.pt (19-08-2026):
89 abilities elementor/* via WordPress Abilities API nativa. Confirmado
nao acessivel por MCP nesta sessao (sem servidor MCP proprio) - testado
via wp eval-file + WP_Ability::execute(). Achados reais: camada de
auditoria de design funcional (evaluate-design score 88/100 em pagina
real), delete-template funcional (preenche gap do EMCP), gate
template-first em authoring primitives, bug de poluicao de settings
em add-heading, bug de PHP warning em list-experiments, update-element
exige objecto completo (nao merge parcial como EMCP). Artefactos de
teste removidos (post 18166, template 18168).
This commit is contained in:
Claude Code
2026-08-19 04:09:24 +01:00
parent 7363300a7f
commit 8bfdd34bb6
2 changed files with 204 additions and 0 deletions
@@ -0,0 +1,131 @@
# Catálogo completo — 89 abilities `elementor/*` (mcp-abilities-elementor v2.3.36)
Fonte: README oficial do repositório, cruzado com `wp eval` (`count(array_filter(array_keys(wp_get_abilities()), fn($k)=>str_starts_with($k,"elementor/")))` → 89, confirmado ao vivo em emanuelalmeida.pt 19-08-2026).
## Page/Post Data (43)
| Ability | Descrição |
|---|---|
| `elementor/get-data` | Estrutura JSON Elementor de uma página |
| `elementor/clone-data` | Copia dados Elementor + definições de página entre documentos, com confirmação explícita |
| `elementor/get-element` | Um elemento específico por ID |
| `elementor/get-widget-controls` | Inspecciona chaves e metadados de controlo nativo de um tipo de widget |
| `elementor/find-elements` | Encontra elementos por tipo, widget, ou texto |
| `elementor/update-element` | Actualiza um elemento específico por ID (objecto completo, ver gotcha #2) |
| `elementor/merge-element-settings` | Deep-merge de settings num elemento (alternativa ao update-element completo) |
| `elementor/zero-container-padding-subtree` | Zera padding de container numa subárvore |
| `elementor/copy-lane-settings` | Copia settings de largura/gap entre elementos |
| `elementor/copy-row-balance` | Copia ritmo de linha e balanço de colunas filhas entre linhas |
| `elementor/image-widget-to-background-container` | Converte widget de imagem num container com background-image nativo |
| `elementor/fix-visible-gap-rhythm` | Remove espaçamento oculto que quebra o ritmo visual de gaps |
| `elementor/enforce-boundary-coherence` | Normaliza subárvore para full-width verdadeiro ou fronteiras boxed coerentes |
| `elementor/audit-generic-layout-patterns` | Audita padrões de composição genéricos repetidos numa página/subárvore |
| `elementor/score-distinctiveness` | Pontua distintividade composicional sem prescrever estilo |
| `elementor/audit-generic-component-repetition` | Assinala mobília repetida (botões em excesso, cartões repetidos) |
| `elementor/audit-surface-overuse` | Reporta tratamentos de superfície repetidos com cautela |
| `elementor/audit-emphasis-drift` | Verifica se secções de topo têm peso de ênfase demasiado semelhante |
| `elementor/audit-section-rivalry` | Apanha páginas com demasiadas secções a competir como clímax simultâneos |
| `elementor/audit-composition-rhythm` | Inspecciona ritmo/pacing de secções de topo |
| `elementor/audit-separator-discipline` | Avisa quando separadores achatam a hierarquia de secções maiores |
| `elementor/get-theme-context` | Resume tema activo, versão Elementor, kit activo, definições de viewport |
| `elementor/get-official-widget-catalog` | Catálogo oficial completo de widgets Elementor, de elementor.com/widgets |
| `elementor/get-official-pattern-guidance` | Catálogo de orientação oficial elementor.com para widgets/layout |
| `elementor/get-style-guide` | Resumo de style guide a partir do kit activo e tokens |
| `elementor/evaluate-design` | Agrega as auditorias de design num score, lista de issues e recomendações — **testado ao vivo, funciona** |
| `elementor/suggest-design-fixes` | Transforma a avaliação agregada em sugestões concretas de correcção |
| `elementor/evaluate-render-context` | Inspecciona o contexto de render frontend separado da qualidade de conteúdo |
| `elementor/audit-column-patterns` | Audita rácios de coluna repetidos (50/50, terços iguais) |
| `elementor/audit-layout-mechanism-fit` | Recomenda Grid em vez de Flexbox para grupos de colunas simétricos |
| `elementor/audit-native-widget-opportunities` | Sugere widgets nativos/Pro quando um padrão hand-built os recria |
| `elementor/audit-column-dominance` | Assinala splits de coluna iguais que podem esconder um lado dominante |
| `elementor/audit-column-alignment-rhythm` | Reporta rácios semelhantes com ritmos de gutter inconsistentes |
| `elementor/audit-column-balance` | Assinala linhas assimétricas que podem não justificar a assimetria |
| `elementor/audit-column-necessity` | Assinala splits que podem não justificar a complexidade |
| `elementor/reset-negative-margins-subtree` | Limita margens negativas numa subárvore |
| `elementor/extract-design-tokens` | Extrai cores/tipografia/spacing/tokens dimensionais recorrentes — **testado ao vivo, funciona** |
| `elementor/apply-text-hierarchy` | Normaliza tipografia de heading/body/button numa subárvore |
| `elementor/normalize-section-spacing-rhythm` | Ajusta spacing de secção e gaps de linha a um ritmo consistente |
| `elementor/normalize-responsive-values` | Preenche/normaliza valores tablet/mobile a partir do desktop |
| `elementor/sync-component-variant` | Copia settings relevantes de design entre subárvores de componentes |
| `elementor/delete-element` | Apaga um elemento por ID (exige `force_delete:true` — testado) |
| `elementor/update-data` | Substitui o JSON Elementor inteiro de uma página (exige confirmação explícita) |
| `elementor/patch-data` | Find/replace de texto dentro do JSON Elementor (exige confirmação explícita) |
| `elementor/update-page-settings` | Actualiza definições de página Elementor |
## Authoring Primitives (12) — todas sujeitas ao gate "template-first"
| Ability | Descrição |
|---|---|
| `elementor/create-page` | Cria página/post novo com Elementor builder activo — **testado ao vivo, funciona** |
| `elementor/add-container` | Adiciona container top-level ou aninhado (legacy, não atómico) — **testado ao vivo** |
| `elementor/add-widget` | Adiciona qualquer tipo de widget Elementor com settings brutos |
| `elementor/add-post-tabs` | Adiciona Nested Tabs nativo, cada tab com um widget Posts nativo |
| `elementor/add-heading` | Adiciona widget heading — **testado ao vivo** |
| `elementor/add-text-editor` | Adiciona widget text editor |
| `elementor/add-image` | Adiciona widget imagem a partir de attachment ID ou URL |
| `elementor/add-button` | Adiciona widget botão |
| `elementor/move-element` | Move elemento para novo pai/posição |
| `elementor/remove-element` | Remove elemento com guardas de segurança |
| `elementor/duplicate-element` | Duplica subárvore de elemento com IDs novos |
| `elementor/reorder-elements` | Reordena filhos directos de um pai ou ao nível de topo |
## Template Management (11)
| Ability | Descrição |
|---|---|
| `elementor/list-templates` | Lista todos os templates Elementor guardados — **testado ao vivo** |
| `elementor/find-template-for-pattern` | Encontra templates guardados que correspondem a padrões reutilizáveis |
| `elementor/get-template` | Obtém um template com todos os dados |
| `elementor/create-template` | Cria template page/section/popup/header/footer — **testado ao vivo** |
| `elementor/update-template` | Modifica template existente |
| `elementor/delete-template` | Move para lixo ou apaga em definitivo — **testado ao vivo, confirmado funcional** |
| `elementor/restore-template` | Restaura template do lixo |
| `elementor/empty-trash` | Apaga em definitivo todos os templates no lixo |
| `elementor/duplicate-template` | Copia um template |
| `elementor/export-template` | Exporta como JSON |
| `elementor/import-template` | Importa de JSON |
## Theme Builder (2)
| Ability | Descrição |
|---|---|
| `elementor/get-theme-builder-conditions` | Condições de exibição de um template/tipo |
| `elementor/update-theme-builder-conditions` | Actualiza condições de exibição de um template |
## Custom Code (5, requer Elementor Pro)
| Ability | Descrição |
|---|---|
| `elementor/list-custom-code` | Lista snippets — **testado ao vivo: falhou graciosamente, "post type is not available" nesta versão/licença Pro** |
| `elementor/get-custom-code` | Obtém um snippet |
| `elementor/create-custom-code` | Cria snippet |
| `elementor/update-custom-code` | Actualiza snippet |
| `elementor/delete-custom-code` | Apaga snippet |
## Form Submissions (3, requer Elementor Pro)
| Ability | Descrição |
|---|---|
| `elementor/list-form-submissions` | Lista submissões — **testado ao vivo, funciona (0 submissões no site)** |
| `elementor/get-form-submission` | Obtém uma submissão |
| `elementor/delete-form-submission` | Apaga uma submissão |
## Site Tools & Settings (11)
| Ability | Descrição |
|---|---|
| `elementor/list-global-widgets` | Lista todos os widgets globais — **testado ao vivo, 0 no site** |
| `elementor/list-kits` | Lista kits Elementor disponíveis — **testado ao vivo: 2 kits (Kit Padrão id 14, Default Kit id 11 activo)** |
| `elementor/get-kit-settings` | Definições Elementor de todo o site — **testado ao vivo** |
| `elementor/update-kit-settings` | Actualiza cores/tipografia globais |
| `elementor/set-active-kit` | Define o kit activo |
| `elementor/clear-cache` | Limpa cache Elementor (âmbito post ou site) |
| `elementor/replace-urls` | Substitui URLs dentro de dados Elementor |
| `elementor/get-maintenance-mode` | Definições de modo de manutenção — **testado ao vivo** |
| `elementor/update-maintenance-mode` | Activa/actualiza modo de manutenção |
| `elementor/list-experiments` | Lista experiments Elementor — **testado ao vivo: funciona mas emite `PHP Warning: Array to string conversion` em register-site-tools.php:632 (bug confirmado)** |
| `elementor/update-experiment` | Actualiza estado de um experiment |
## Nota sobre a arquitectura legacy vs atómica
Confirmado ao vivo: `add-container`/`add-heading` neste site (Elementor 4.2.2, com suporte atómico) produzem `elType:"container"`/`widgetType:"heading"` — arquitectura **legacy**, não `e-flexbox`/`e-heading` (Elementor 4.0 atómico). Presumir que todas as "Authoring Primitives" desta lista seguem o mesmo padrão legacy até prova em contrário.