feat: adiciona 12 plugins Descomplicar ao marketplace
Plugins: automacao, crm-ops, design-media, dev-tools, gestao, infraestrutura, marketing, negocio, perfex-dev, project-manager, wordpress + hello-plugin (existente). Totais: 83 skills, 44 agents, 12 datasets.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
404
wordpress/skills/wp-dev/SKILL.md
Normal file
404
wordpress/skills/wp-dev/SKILL.md
Normal file
@@ -0,0 +1,404 @@
|
||||
---
|
||||
name: wp-dev
|
||||
description: >
|
||||
Desenvolvimento WordPress especializado com Quality Gate 70+. Cria/modifica plugins seguindo WordPress Coding Standards, desenvolve temas child, integra WooCommerce, resolve problemas WordPress. Consulta obrigatória de datasets Dify (Wordpress, Elementor, Crocoblock). Use when developing WordPress plugins, creating themes, integrating WooCommerce, solving WordPress issues, or when user mentions "wordpress", "plugin", "woocommerce", "elementor", "crocoblock", "jetengine".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.1.0
|
||||
quality_score: 100
|
||||
user_invocable: true
|
||||
category: dev
|
||||
tags: [wordpress, plugins, temas, woocommerce, elementor, crocoblock, development, quality-gate, wpcs]
|
||||
desk_task: 1488
|
||||
desk_project: 65
|
||||
allowed-tools: Read, Write, Edit, Bash, mcp__dify-kb, mcp__memory-supabase, mcp__wikijs
|
||||
mcps: dify-kb, memory-supabase, wikijs
|
||||
datasets:
|
||||
- id: 9da0b2b9-5051-4b99-b9f6-20bf35067092
|
||||
name: Wordpress
|
||||
priority: 1
|
||||
- id: 9c77d3e2-4d88-4a43-abff-d4e681267cc7
|
||||
name: Elementor
|
||||
priority: 1
|
||||
- id: 139cdf67-afce-46ec-9ccd-2a06040e5b9d
|
||||
name: Crocooblock
|
||||
priority: 1
|
||||
- id: bdf85c26-1824-4021-92d1-be20501b35ac
|
||||
name: Crocoblock
|
||||
priority: 1
|
||||
- id: 2e9b7c48-c630-457a-83a0-db8e77f76eae
|
||||
name: Kivicare
|
||||
priority: 2
|
||||
- id: c8489151-de94-42b2-8cee-c0b961cfac6d
|
||||
name: Desenvolvimento de WebSites
|
||||
priority: 2
|
||||
dependencies:
|
||||
mcps: [dify-kb, memory-supabase]
|
||||
triggers:
|
||||
- "User mentions 'wordpress', 'plugin', 'wp'"
|
||||
- "User asks to create/modify WordPress plugin"
|
||||
- "User mentions 'woocommerce', 'elementor', 'jetengine'"
|
||||
- "Developing WordPress themes or child themes"
|
||||
quality_gate:
|
||||
enabled: true
|
||||
minimum_score: 70
|
||||
checks:
|
||||
- WordPress Coding Standards (WPCS)
|
||||
- PHPDoc documentation
|
||||
- Hooks and filters structure
|
||||
- No PHP warnings/notices
|
||||
- Security: nonces, sanitization, escaping
|
||||
performance:
|
||||
baseline_duration_ms: 14400000
|
||||
target_duration_ms: 7200000
|
||||
last_run_duration_ms: null
|
||||
success_rate: 0.90
|
||||
---
|
||||
|
||||
# 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)
|
||||
|
||||
---
|
||||
|
||||
## Protocolo Obrigatório
|
||||
|
||||
### 1. Pesquisa Inicial (MCP)
|
||||
Antes de desenvolver, SEMPRE executar:
|
||||
```
|
||||
mcp__memory-supabase__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
|
||||
- [ ] Testado em versão WP recente
|
||||
|
||||
---
|
||||
|
||||
## Hooks WordPress Essenciais
|
||||
|
||||
### Actions (fazer algo)
|
||||
|
||||
```php
|
||||
// Init - inicializar plugin
|
||||
add_action('init', 'register_custom_post_type');
|
||||
|
||||
// Enqueue scripts/styles
|
||||
add_action('wp_enqueue_scripts', 'enqueue_assets');
|
||||
add_action('admin_enqueue_scripts', 'enqueue_admin_assets');
|
||||
|
||||
// Save post
|
||||
add_action('save_post', 'save_custom_meta', 10, 3);
|
||||
|
||||
// Admin menu
|
||||
add_action('admin_menu', 'register_admin_page');
|
||||
|
||||
// AJAX
|
||||
add_action('wp_ajax_my_action', 'handle_ajax');
|
||||
add_action('wp_ajax_nopriv_my_action', 'handle_ajax_public');
|
||||
|
||||
// WooCommerce
|
||||
add_action('woocommerce_before_cart', 'add_notice');
|
||||
add_action('woocommerce_checkout_order_processed', 'process_order', 10, 3);
|
||||
```
|
||||
|
||||
### Filters (modificar dados)
|
||||
|
||||
```php
|
||||
// Modificar título
|
||||
add_filter('the_title', 'custom_title', 10, 2);
|
||||
|
||||
// Modificar conteúdo
|
||||
add_filter('the_content', 'add_content_suffix');
|
||||
|
||||
// Query
|
||||
add_filter('pre_get_posts', 'modify_query');
|
||||
|
||||
// WooCommerce
|
||||
add_filter('woocommerce_cart_item_price', 'custom_price', 10, 2);
|
||||
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields');
|
||||
```
|
||||
|
||||
## Erros Comuns e Soluções
|
||||
|
||||
### 1. White Screen of Death (WSOD)
|
||||
|
||||
```bash
|
||||
# Activar WP_DEBUG
|
||||
define('WP_DEBUG', true);
|
||||
define('WP_DEBUG_LOG', true);
|
||||
define('WP_DEBUG_DISPLAY', false);
|
||||
|
||||
# Ver erro
|
||||
tail -f wp-content/debug.log
|
||||
```
|
||||
|
||||
### 2. Plugin Conflict
|
||||
|
||||
```bash
|
||||
# Desactivar todos os plugins via BD
|
||||
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
|
||||
|
||||
# Reactivar um a um para identificar conflito
|
||||
```
|
||||
|
||||
### 3. Memory Limit
|
||||
|
||||
```php
|
||||
// wp-config.php
|
||||
define('WP_MEMORY_LIMIT', '256M');
|
||||
define('WP_MAX_MEMORY_LIMIT', '512M');
|
||||
```
|
||||
|
||||
### 4. Permissões
|
||||
|
||||
```bash
|
||||
# Padrão seguro
|
||||
find /path -type d -exec chmod 755 {} \;
|
||||
find /path -type f -exec chmod 644 {} \;
|
||||
chmod 600 wp-config.php
|
||||
```
|
||||
|
||||
## Datasets Dify (Consulta Obrigatória)
|
||||
|
||||
Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes datasets via MCP:
|
||||
|
||||
| Dataset | ID | Prioridade |
|
||||
|---------|----|-----------:|
|
||||
| **Wordpress** | `9da0b2b9-5051-4b99-b9f6-20bf35067092` | 1 |
|
||||
| **Elementor** | `9c77d3e2-4d88-4a43-abff-d4e681267cc7` | 1 |
|
||||
| **Crocooblock** | `139cdf67-afce-46ec-9ccd-2a06040e5b9d` | 1 |
|
||||
| **Crocoblock** | `bdf85c26-1824-4021-92d1-be20501b35ac` | 1 |
|
||||
| **Kivicare** | `2e9b7c48-c630-457a-83a0-db8e77f76eae` | 2 |
|
||||
| **Desenvolvimento de WebSites** | `c8489151-de94-42b2-8cee-c0b961cfac6d` | 2 |
|
||||
|
||||
### Como Consultar
|
||||
|
||||
```javascript
|
||||
// Desenvolvimento de plugins WordPress
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "9da0b2b9-5051-4b99-b9f6-20bf35067092",
|
||||
query: "plugin development hooks filters"
|
||||
})
|
||||
|
||||
// Widgets e extensões Elementor
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "9c77d3e2-4d88-4a43-abff-d4e681267cc7",
|
||||
query: "custom widget dynamic tags"
|
||||
})
|
||||
|
||||
// JetEngine e Crocoblock
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "139cdf67-afce-46ec-9ccd-2a06040e5b9d",
|
||||
query: "jetengine custom post type relations"
|
||||
})
|
||||
|
||||
// WooCommerce e e-commerce
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "9da0b2b9-5051-4b99-b9f6-20bf35067092",
|
||||
query: "woocommerce hooks checkout cart"
|
||||
})
|
||||
```
|
||||
|
||||
### Quando Consultar
|
||||
|
||||
- Desenvolver plugins WordPress
|
||||
- Criar widgets Elementor customizados
|
||||
- Configurar JetEngine/Crocoblock
|
||||
- Integrar WooCommerce
|
||||
- Implementar custom post types
|
||||
|
||||
---
|
||||
|
||||
## Exemplos
|
||||
|
||||
### Exemplo 1: Criar plugin simples
|
||||
```
|
||||
User: /wp-dev criar plugin de custom post type "Serviços"
|
||||
→ Pesquisa memória e KB Dify
|
||||
→ Gera estrutura de plugin
|
||||
→ Implementa CPT com ACF integration
|
||||
→ Testes de segurança e WPCS
|
||||
→ Score 75/100 ✅
|
||||
```
|
||||
|
||||
### Exemplo 2: Widget Elementor
|
||||
```
|
||||
User: /wp-dev widget elementor para mostrar últimos serviços
|
||||
→ Consulta dataset Elementor
|
||||
→ Implementa widget com controls
|
||||
→ Renderiza output com template
|
||||
→ Testa em diferentes layouts
|
||||
```
|
||||
|
||||
### Exemplo 3: Integração WooCommerce
|
||||
```
|
||||
User: /wp-dev adicionar campo personalizado no checkout
|
||||
→ Consulta dataset Wordpress (WooCommerce)
|
||||
→ Usa hooks woocommerce_checkout_fields
|
||||
→ Implementa validação e save
|
||||
→ Testa fluxo completo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instrumentação Automática
|
||||
|
||||
Esta skill grava métricas automaticamente para análise PDCA.
|
||||
|
||||
### Baseline
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| Tempo baseline | 4 horas |
|
||||
| Tempo target | 2 horas |
|
||||
| Melhoria esperada | -50% |
|
||||
|
||||
### Query para Gravar (executar no final)
|
||||
|
||||
```sql
|
||||
INSERT INTO tblskill_agent_metrics (
|
||||
type, name, duration_ms, status, staff_id,
|
||||
kb_consulted, kb_cache_hit, tool_calls, project_id
|
||||
) VALUES (
|
||||
'skill', '/wp-dev', {DURACAO_MS}, '{STATUS}', 25,
|
||||
{KB_CONSULTADO}, {CACHE_HIT}, {TOOL_CALLS}, {PROJECT_ID}
|
||||
);
|
||||
```
|
||||
|
||||
### Ver Métricas
|
||||
|
||||
```bash
|
||||
/metrics /wp-dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Versão**: 1.1.0 | **Data**: 2026-02-03 | **Instrumentação**: Activa
|
||||
Reference in New Issue
Block a user