feat(wordpress): adiciona plugin wordpress (agents, skills, knowledge e metadados do projeto)
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
---
|
||||
name: wp-dev
|
||||
description: Desenvolvimento WordPress especializado com Quality Gate 70+. Cria e modifica plugins seguindo WordPress Coding Standards, desenvolve temas child, integra WooCommerce e resolve problemas WordPress.
|
||||
layer: 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
|
||||
<?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
|
||||
<?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
|
||||
Reference in New Issue
Block a user