Files
claude-plugins/wordpress/skills/wp-dev/SKILL.md
T

5.0 KiB

name, description, layer
name description layer
wp-dev Desenvolvimento WordPress especializado com Quality Gate 70+. Cria e modifica plugins seguindo WordPress Coding Standards, desenvolve temas child, integra WooCommerce e resolve problemas WordPress. wiki

WordPress Plugin Developer

Skill para desenvolvimento WordPress profissional seguindo padrões Descomplicar®.

Quando Usar

  • Criar ou modificar plugins WordPress
  • Desenvolver temas ou child themes
  • Integrar funcionalidades WooCommerce
  • Resolver problemas específicos WordPress
  • Criar custom post types, taxonomias, widgets

Quando NÃO Usar

  • Para operações CRM (usar /crm-ops)
  • Para operações servidor/SSH genéricas (usar agente especializado)
  • Para manutenção rotineira WP (usar /today às segundas)

Contexto NotebookLM

ANTES de executar, consultar notebooks para contexto especializado:

Notebook ID Consultar quando
WordPress e Elementor 5be0d1a6 Sempre
WordPress Config CLI fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d Para WP-CLI e configuração
mcp__notebooklm__notebook_query({
  notebook_id: "5be0d1a6-00f2-4cd9-b835-978cb7721601",
  query: "<adaptar ao contexto do pedido do utilizador>"
})

mcp__notebooklm__notebook_query({
  notebook_id: "fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d",
  query: "<adaptar ao contexto de WP-CLI e configuração WordPress>"
})

Integrar insights do NotebookLM nas recomendações e decisões.

Procedimentos Relacionados

  • PROC-WiP-Definicao.md — Definição de projectos WordPress in a Package
  • PROC-WiP-Instalacao.md — Instalação e configuração WiP
  • PROC-WiP-Gestao.md — Gestão e manutenção WiP

Protocolo Obrigatório

1. Pesquisa Inicial (MCP)

Antes de desenvolver, SEMPRE executar:

mcp__mem_search_memories "[keywords wordpress]"
mcp__wikijs__search_pages "[plugin/funcionalidade]"

2. Quality Gate 70+

Todo código WordPress deve atingir score mínimo 70/100:

  • WordPress Coding Standards (WPCS)
  • Funções documentadas com PHPDoc
  • Hooks e filters bem estruturados
  • Sem warnings/notices PHP
  • Segurança: nonces, sanitização, escaping

3. Assinatura Obrigatória

Todo ficheiro PHP deve incluir:

<?php
/**
 * [Nome do Plugin/Ficheiro]
 *
 * @author Descomplicar® Crescimento Digital
 * @link https://descomplicar.pt
 * @copyright 2025 Descomplicar®
 */

Segurança WordPress (OBRIGATÓRIO)

  • Sanitizar inputs: sanitize_text_field(), sanitize_email(), absint()
  • Escapar outputs: esc_html(), esc_attr(), esc_url()
  • Nonces para forms: wp_nonce_field(), wp_verify_nonce()
  • AJAX nonces: check_ajax_referer()
  • Capability checks: current_user_can() antes de acções admin
  • Prepared statements: $wpdb->prepare() para queries

Performance

  • Enqueueing correcto: wp_enqueue_script(), wp_enqueue_style()
  • Hooks no momento certo: init, admin_init, wp_enqueue_scripts
  • Evitar queries em loops
  • Usar transients para cache: get_transient(), set_transient()

Estrutura Plugin Standard

plugin-name/
├── plugin-name.php          # Ficheiro principal
├── includes/
│   ├── class-plugin-name.php
│   └── class-plugin-name-admin.php
├── assets/
│   ├── css/
│   └── js/
├── templates/
├── languages/
└── readme.txt

Template Plugin Principal

<?php
/**
 * Plugin Name
 *
 * @package           PluginName
 * @author            Descomplicar® Crescimento Digital
 * @copyright         2025 Descomplicar®
 * @license           GPL-2.0-or-later
 *
 * @wordpress-plugin
 * Plugin Name:       Plugin Name
 * Plugin URI:        https://descomplicar.pt/plugin-name
 * Description:       Descrição do plugin.
 * Version:           1.0.0
 * Requires at least: 6.0
 * Requires PHP:      8.0
 * Author:            Descomplicar®
 * Author URI:        https://descomplicar.pt
 * Text Domain:       plugin-name
 * License:           GPL v2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 */

defined('ABSPATH') || exit;

define('PLUGIN_NAME_VERSION', '1.0.0');
define('PLUGIN_NAME_PATH', plugin_dir_path(__FILE__));
define('PLUGIN_NAME_URL', plugin_dir_url(__FILE__));

// Autoloader ou includes
require_once PLUGIN_NAME_PATH . 'includes/class-plugin-name.php';

// Inicialização
function plugin_name_init() {
    load_plugin_textdomain('plugin-name', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'plugin_name_init');

// Activação
register_activation_hook(__FILE__, 'plugin_name_activate');
function plugin_name_activate() {
    // Criar tabelas, opções, etc.
}

// Desactivação
register_deactivation_hook(__FILE__, 'plugin_name_deactivate');
function plugin_name_deactivate() {
    // Limpeza
}

Checklist Antes de Entregar

  • Assinatura Descomplicar® em todos os ficheiros
  • Segurança: nonces, sanitização, escaping
  • WordPress Coding Standards
  • Sem erros PHP (php -l)
  • Textdomain para traduções
  • Uninstall hook para limpeza