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:
278
wordpress/skills/elementor/SKILL.md
Normal file
278
wordpress/skills/elementor/SKILL.md
Normal file
@@ -0,0 +1,278 @@
|
||||
---
|
||||
name: elementor
|
||||
description: >
|
||||
Advanced development with Elementor Pro and Crocoblock ecosystem. Creates custom widgets, configures Theme Builder, develops with JetEngine, JetWooBuilder, optimizes performance and troubleshoots issues.
|
||||
Use when building Elementor sites, creating custom widgets, configuring theme templates, developing with Crocoblock, or when user mentions
|
||||
"elementor", "custom widget", "theme builder", "jetengine", "crocoblock", "jetwoobuilder", "page builder", "elementor pro".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.1.0
|
||||
user_invocable: true
|
||||
tags: [wordpress, elementor, pagebuilder, crocoblock, jetengine, widgets]
|
||||
desk_task: 1478
|
||||
allowed-tools: Read, Write, Edit, Bash, mcp__ssh-unified__ssh_execute, mcp__dify-kb__dify_kb_retrieve_segments
|
||||
category: dev
|
||||
quality_score: 75
|
||||
updated: "2026-02-04T18:00:00Z"
|
||||
---
|
||||
|
||||
# /elementor - Elementor Development
|
||||
|
||||
Desenvolvimento avançado com Elementor Pro e Crocoblock.
|
||||
|
||||
## Quando Usar
|
||||
|
||||
- Criar widgets Elementor customizados
|
||||
- Configurar Theme Builder
|
||||
- Desenvolver com Crocoblock (JetEngine, JetWooBuilder)
|
||||
- Optimizar performance Elementor
|
||||
- Troubleshooting Elementor
|
||||
|
||||
## Estrutura Custom Widget
|
||||
|
||||
```php
|
||||
<?php
|
||||
/**
|
||||
* Custom Elementor Widget
|
||||
*
|
||||
* @author Descomplicar® Crescimento Digital
|
||||
* @link https://descomplicar.pt
|
||||
* @copyright 2026 Descomplicar®
|
||||
*/
|
||||
|
||||
class Custom_Widget extends \Elementor\Widget_Base {
|
||||
|
||||
public function get_name() {
|
||||
return 'custom-widget';
|
||||
}
|
||||
|
||||
public function get_title() {
|
||||
return 'Custom Widget';
|
||||
}
|
||||
|
||||
public function get_icon() {
|
||||
return 'eicon-code';
|
||||
}
|
||||
|
||||
public function get_categories() {
|
||||
return ['general'];
|
||||
}
|
||||
|
||||
protected function register_controls() {
|
||||
$this->start_controls_section(
|
||||
'content_section',
|
||||
[
|
||||
'label' => 'Content',
|
||||
'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'title',
|
||||
[
|
||||
'label' => 'Title',
|
||||
'type' => \Elementor\Controls_Manager::TEXT,
|
||||
'default' => 'Title',
|
||||
]
|
||||
);
|
||||
|
||||
$this->end_controls_section();
|
||||
|
||||
// Style controls
|
||||
$this->start_controls_section(
|
||||
'style_section',
|
||||
[
|
||||
'label' => 'Style',
|
||||
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
|
||||
]
|
||||
);
|
||||
|
||||
$this->add_control(
|
||||
'title_color',
|
||||
[
|
||||
'label' => 'Color',
|
||||
'type' => \Elementor\Controls_Manager::COLOR,
|
||||
'selectors' => [
|
||||
'{{WRAPPER}} .title' => 'color: {{VALUE}}',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$this->end_controls_section();
|
||||
}
|
||||
|
||||
protected function render() {
|
||||
$settings = $this->get_settings_for_display();
|
||||
?>
|
||||
<div class="custom-widget">
|
||||
<h2 class="title"><?php echo esc_html($settings['title']); ?></h2>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Registar Widget
|
||||
|
||||
```php
|
||||
// functions.php ou plugin
|
||||
add_action('elementor/widgets/register', function($widgets_manager) {
|
||||
require_once(__DIR__ . '/widgets/custom-widget.php');
|
||||
$widgets_manager->register(new \Custom_Widget());
|
||||
});
|
||||
```
|
||||
|
||||
## Theme Builder
|
||||
|
||||
### Header
|
||||
|
||||
```
|
||||
Site Logo | Navigation Menu | Search | Cart Icon
|
||||
Sticky: Yes | Transparent: Optional
|
||||
```
|
||||
|
||||
### Footer
|
||||
|
||||
```
|
||||
4 Columns: About | Links | Contact | Social
|
||||
Copyright row
|
||||
```
|
||||
|
||||
### Single Post
|
||||
|
||||
```
|
||||
Featured Image
|
||||
Title + Meta (Author, Date, Categories)
|
||||
Content
|
||||
Author Box
|
||||
Related Posts
|
||||
```
|
||||
|
||||
### Archive
|
||||
|
||||
```
|
||||
Title
|
||||
Filters (JetSmartFilters)
|
||||
Post Grid/List (JetEngine)
|
||||
Pagination
|
||||
```
|
||||
|
||||
## Crocoblock Plugins
|
||||
|
||||
| Plugin | Uso Principal |
|
||||
|--------|---------------|
|
||||
| **JetEngine** | CPT, Meta Fields, Dynamic Content, Listings |
|
||||
| **JetElements** | Widgets adicionais (Timeline, Progress Bar) |
|
||||
| **JetSmartFilters** | Filtros AJAX para listings |
|
||||
| **JetWooBuilder** | Templates WooCommerce avançados |
|
||||
| **JetPopup** | Popups com triggers avançados |
|
||||
| **JetTabs** | Tabs, Accordions, Toggle |
|
||||
| **JetFormBuilder** | Forms com lógica condicional |
|
||||
|
||||
## JetEngine - Custom Post Type
|
||||
|
||||
```php
|
||||
// Via código (alternativa ao JetEngine UI)
|
||||
add_action('init', function() {
|
||||
register_post_type('portfolio', [
|
||||
'labels' => [
|
||||
'name' => 'Portfolio',
|
||||
'singular_name' => 'Project'
|
||||
],
|
||||
'public' => true,
|
||||
'has_archive' => true,
|
||||
'supports' => ['title', 'editor', 'thumbnail'],
|
||||
'show_in_rest' => true,
|
||||
]);
|
||||
});
|
||||
|
||||
// Meta boxes via JetEngine UI recomendado
|
||||
```
|
||||
|
||||
## Performance Tips
|
||||
|
||||
### 1. Lazy Load
|
||||
|
||||
```php
|
||||
// Activar lazy load para imagens
|
||||
add_filter('wp_lazy_loading_enabled', '__return_true');
|
||||
```
|
||||
|
||||
### 2. Desactivar Google Fonts (se usar fonts locais)
|
||||
|
||||
```php
|
||||
add_filter('elementor/frontend/print_google_fonts', '__return_false');
|
||||
```
|
||||
|
||||
### 3. Limitar revisões
|
||||
|
||||
```php
|
||||
// wp-config.php
|
||||
define('WP_POST_REVISIONS', 3);
|
||||
```
|
||||
|
||||
### 4. Usar Flexbox Container
|
||||
|
||||
```
|
||||
Preferir: Flexbox Container (moderno)
|
||||
Evitar: Section > Column (legacy, mais pesado)
|
||||
```
|
||||
|
||||
### 5. Minimizar Widgets
|
||||
|
||||
```
|
||||
Regra: Máximo 50 widgets por página
|
||||
Usar: CSS custom em vez de widgets simples
|
||||
```
|
||||
|
||||
## Breakpoints
|
||||
|
||||
```
|
||||
Desktop: > 1024px
|
||||
Tablet: 768-1024px
|
||||
Mobile: < 768px
|
||||
|
||||
Configuração:
|
||||
Elementor > Settings > Advanced > Breakpoints
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Widget não aparece
|
||||
|
||||
```bash
|
||||
# Limpar cache Elementor
|
||||
wp elementor flush-css --allow-root
|
||||
|
||||
# Regenerar ficheiros CSS
|
||||
wp elementor replace_urls --old=http --new=https --allow-root
|
||||
```
|
||||
|
||||
### Erro após update
|
||||
|
||||
```bash
|
||||
# Rollback Elementor
|
||||
Elementor > Tools > Version Control > Rollback
|
||||
```
|
||||
|
||||
### Performance lenta
|
||||
|
||||
```
|
||||
1. Desactivar Google Fonts desnecessárias
|
||||
2. Activar cache CSS minificado
|
||||
3. Usar Flexbox Container
|
||||
4. Lazy load imagens
|
||||
5. Limitar widgets por página
|
||||
```
|
||||
|
||||
## Datasets Dify
|
||||
|
||||
| Dataset | ID | Prioridade |
|
||||
|---------|----|-----------:|
|
||||
| **Elementor** | `9c77d3e2-4d88-4a43-abff-d4e681267cc7` | 1 |
|
||||
| **Crocoblock** | `bdf85c26-1824-4021-92d1-be20501b35ac` | 1 |
|
||||
| **Crocooblock** | `139cdf67-afce-46ec-9ccd-2a06040e5b9d` | 1 |
|
||||
| **Wordpress** | `9da0b2b9-5051-4b99-b9f6-20bf35067092` | 2 |
|
||||
|
||||
---
|
||||
|
||||
**Versão**: 1.0.0 | **Autor**: Descomplicar®
|
||||
247
wordpress/skills/woocommerce/SKILL.md
Normal file
247
wordpress/skills/woocommerce/SKILL.md
Normal file
@@ -0,0 +1,247 @@
|
||||
---
|
||||
name: woocommerce
|
||||
description: >
|
||||
WooCommerce store development and optimization. Customizes checkout, integrates Portuguese payment gateways (Multibanco, MB Way, IfthenPay), develops custom features and optimizes performance.
|
||||
Use when developing WooCommerce stores, customizing checkout, integrating payments, optimizing ecommerce performance, or when user mentions
|
||||
"woocommerce", "checkout", "payment gateway", "multibanco", "mb way", "ifthen pay", "ecommerce", "online store", "shop optimization".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.1.0
|
||||
user_invocable: true
|
||||
tags: [wordpress, woocommerce, ecommerce, checkout, payments, multibanco]
|
||||
desk_task: 1479
|
||||
allowed-tools: Read, Write, Edit, Bash, mcp__ssh-unified__ssh_execute, mcp__dify-kb__dify_kb_retrieve_segments
|
||||
category: dev
|
||||
quality_score: 75
|
||||
updated: "2026-02-04T18:00:00Z"
|
||||
---
|
||||
|
||||
# /woocommerce - WooCommerce Development
|
||||
|
||||
Desenvolvimento e optimização de lojas WooCommerce.
|
||||
|
||||
## Quando Usar
|
||||
|
||||
- Configurar loja WooCommerce
|
||||
- Personalizar checkout
|
||||
- Integrar gateways de pagamento PT
|
||||
- Desenvolver funcionalidades custom
|
||||
- Optimizar performance
|
||||
|
||||
## Hooks WooCommerce Essenciais
|
||||
|
||||
### Actions
|
||||
|
||||
```php
|
||||
// Before/after cart
|
||||
add_action('woocommerce_before_cart', 'show_cart_notice');
|
||||
add_action('woocommerce_after_cart', 'show_shipping_info');
|
||||
|
||||
// Checkout
|
||||
add_action('woocommerce_before_checkout_form', 'show_checkout_notice');
|
||||
add_action('woocommerce_checkout_order_processed', 'after_order', 10, 3);
|
||||
|
||||
// Product
|
||||
add_action('woocommerce_before_single_product', 'show_product_notice');
|
||||
add_action('woocommerce_after_add_to_cart_button', 'add_custom_button');
|
||||
|
||||
// Admin
|
||||
add_action('woocommerce_admin_order_data_after_billing_address', 'show_admin_meta');
|
||||
add_action('woocommerce_process_product_meta', 'save_product_meta');
|
||||
```
|
||||
|
||||
### Filters
|
||||
|
||||
```php
|
||||
// Modificar preço
|
||||
add_filter('woocommerce_cart_item_price', 'custom_price', 10, 2);
|
||||
add_filter('woocommerce_get_price_html', 'custom_price_html', 10, 2);
|
||||
|
||||
// Checkout fields
|
||||
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields');
|
||||
add_filter('woocommerce_billing_fields', 'custom_billing_fields');
|
||||
|
||||
// Cart
|
||||
add_filter('woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 2);
|
||||
add_filter('woocommerce_cart_item_name', 'custom_cart_item_name', 10, 3);
|
||||
|
||||
// Emails
|
||||
add_filter('woocommerce_email_subject_new_order', 'custom_email_subject', 10, 2);
|
||||
```
|
||||
|
||||
## Gateways Portugal
|
||||
|
||||
| Gateway | Plugin | Notas |
|
||||
|---------|--------|-------|
|
||||
| **MB Way** | IfthenPay / Eupago | Pagamento instantâneo |
|
||||
| **Multibanco** | IfthenPay / Eupago | Referências MB |
|
||||
| **Stripe** | Stripe for WooCommerce | Cartões + Apple/Google Pay |
|
||||
| **PayPal** | WooCommerce PayPal | Standard e Express |
|
||||
|
||||
### Configuração IfthenPay
|
||||
|
||||
```php
|
||||
// Webhook para confirmação automática
|
||||
add_action('woocommerce_api_ifthenpay_webhook', 'handle_ifthenpay_callback');
|
||||
|
||||
function handle_ifthenpay_callback() {
|
||||
$order_id = $_GET['order_id'] ?? null;
|
||||
$status = $_GET['status'] ?? null;
|
||||
|
||||
if ($status === 'success') {
|
||||
$order = wc_get_order($order_id);
|
||||
$order->payment_complete();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Customização Checkout
|
||||
|
||||
```php
|
||||
// Adicionar campo NIF
|
||||
add_filter('woocommerce_checkout_fields', function($fields) {
|
||||
$fields['billing']['billing_nif'] = [
|
||||
'label' => 'NIF',
|
||||
'required' => true,
|
||||
'class' => ['form-row-wide'],
|
||||
'validate' => ['validate_nif']
|
||||
];
|
||||
return $fields;
|
||||
});
|
||||
|
||||
// Validar NIF
|
||||
add_action('woocommerce_checkout_process', function() {
|
||||
if (empty($_POST['billing_nif'])) {
|
||||
wc_add_notice('NIF é obrigatório', 'error');
|
||||
}
|
||||
});
|
||||
|
||||
// Guardar NIF
|
||||
add_action('woocommerce_checkout_update_order_meta', function($order_id) {
|
||||
if (!empty($_POST['billing_nif'])) {
|
||||
update_post_meta($order_id, '_billing_nif', sanitize_text_field($_POST['billing_nif']));
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## REST API
|
||||
|
||||
```php
|
||||
// Endpoint custom
|
||||
add_action('rest_api_init', function() {
|
||||
register_rest_route('wc/v3', '/products/featured', [
|
||||
'methods' => 'GET',
|
||||
'callback' => function() {
|
||||
$args = [
|
||||
'status' => 'publish',
|
||||
'featured' => true,
|
||||
'limit' => 10
|
||||
];
|
||||
$products = wc_get_products($args);
|
||||
return rest_ensure_response($products);
|
||||
}
|
||||
]);
|
||||
});
|
||||
```
|
||||
|
||||
## WP-CLI WooCommerce
|
||||
|
||||
```bash
|
||||
# Listar produtos
|
||||
wp wc product list --user=1 --format=table
|
||||
|
||||
# Criar produto
|
||||
wp wc product create --name="Produto Teste" --regular_price=99.99 --user=1
|
||||
|
||||
# Listar pedidos
|
||||
wp wc order list --status=processing --user=1
|
||||
|
||||
# Actualizar stock
|
||||
wp wc product update 123 --stock_quantity=50 --user=1
|
||||
|
||||
# Limpar transients
|
||||
wp transient delete --all
|
||||
```
|
||||
|
||||
## Integrações
|
||||
|
||||
### Moloni (Facturação)
|
||||
|
||||
```php
|
||||
// Auto-criar factura após pedido pago
|
||||
add_action('woocommerce_order_status_completed', 'create_moloni_invoice');
|
||||
|
||||
function create_moloni_invoice($order_id) {
|
||||
$order = wc_get_order($order_id);
|
||||
// Chamar API Moloni via MCP
|
||||
// mcp__moloni__create_invoice(...)
|
||||
}
|
||||
```
|
||||
|
||||
### CTT Tracking
|
||||
|
||||
```php
|
||||
// Adicionar tracking number
|
||||
add_action('woocommerce_order_status_processing', 'add_tracking_number');
|
||||
|
||||
function add_tracking_number($order_id) {
|
||||
$tracking = generate_ctt_tracking($order_id);
|
||||
update_post_meta($order_id, '_tracking_number', $tracking);
|
||||
}
|
||||
```
|
||||
|
||||
## Performance WooCommerce
|
||||
|
||||
```php
|
||||
// Desactivar scripts desnecessários
|
||||
add_action('wp_enqueue_scripts', function() {
|
||||
// Desactivar em páginas que não são WooCommerce
|
||||
if (!is_woocommerce() && !is_cart() && !is_checkout()) {
|
||||
wp_dequeue_style('woocommerce-general');
|
||||
wp_dequeue_style('woocommerce-layout');
|
||||
wp_dequeue_style('woocommerce-smallscreen');
|
||||
wp_dequeue_script('wc-cart-fragments');
|
||||
}
|
||||
}, 100);
|
||||
|
||||
// Optimizar queries
|
||||
add_filter('woocommerce_product_query', function($q) {
|
||||
$q->set('no_found_rows', true); // Se não precisar paginação
|
||||
});
|
||||
```
|
||||
|
||||
## Checklist Nova Loja
|
||||
|
||||
```
|
||||
[ ] WordPress + WooCommerce instalados
|
||||
[ ] Tema compatível configurado
|
||||
[ ] Páginas: Shop, Cart, Checkout, My Account, Terms
|
||||
[ ] Gateways de pagamento activos e testados
|
||||
[ ] Shipping zones Portugal configuradas
|
||||
[ ] Taxas IVA: 23% (Continental), 13% (Madeira), 6% (Açores)
|
||||
[ ] Emails transaccionais personalizados
|
||||
[ ] SSL instalado e forçado
|
||||
[ ] RGPD: Política Privacidade, Cookies
|
||||
[ ] Teste de compra completo (real + teste)
|
||||
```
|
||||
|
||||
## Datasets Dify
|
||||
|
||||
| Dataset | ID | Prioridade |
|
||||
|---------|----|-----------:|
|
||||
| **Wordpress** | `9da0b2b9-5051-4b99-b9f6-20bf35067092` | 1 |
|
||||
| **WooCommerce** | (disponível) | 1 |
|
||||
| **E-commerce** | (disponível) | 2 |
|
||||
|
||||
### Como Consultar
|
||||
|
||||
```javascript
|
||||
// Hooks e customizações WooCommerce
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "9da0b2b9-5051-4b99-b9f6-20bf35067092",
|
||||
query: "woocommerce hooks checkout cart filters"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Versão**: 1.0.0 | **Autor**: Descomplicar®
|
||||
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
|
||||
316
wordpress/skills/wp-performance/SKILL.md
Normal file
316
wordpress/skills/wp-performance/SKILL.md
Normal file
@@ -0,0 +1,316 @@
|
||||
---
|
||||
name: wp-performance
|
||||
description: WordPress performance optimization. Analyzes and improves site speed,
|
||||
caching, database, and assets. Use when user mentions "wordpress performance", "wp
|
||||
speed", "optimize wordpress", "wordpress slow", "site performance".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 75
|
||||
user_invocable: true
|
||||
desk_task: 1489
|
||||
---
|
||||
|
||||
# /wp-performance - Auditoria Performance WordPress
|
||||
|
||||
Checklist sistemático para auditar e optimizar performance de sites WordPress.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/wp-performance https://site.pt
|
||||
/wp-performance site.pt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Execução
|
||||
|
||||
### Passo 1: Lighthouse (Performance Geral)
|
||||
|
||||
```javascript
|
||||
// Auditoria Lighthouse mobile + desktop
|
||||
const [mobile, desktop] = await Promise.all([
|
||||
mcp__lighthouse__get_performance_score({ url, device: "mobile" }),
|
||||
mcp__lighthouse__get_performance_score({ url, device: "desktop" })
|
||||
]);
|
||||
|
||||
const vitals = await mcp__lighthouse__get_core_web_vitals({ url });
|
||||
```
|
||||
|
||||
### Passo 2: Verificações Servidor (SSH)
|
||||
|
||||
```javascript
|
||||
// Se site está no servidor CWP (176.9.3.158)
|
||||
const server_checks = [
|
||||
// GZIP activo?
|
||||
`curl -sI -H 'Accept-Encoding: gzip' ${url} | grep -i 'content-encoding'`,
|
||||
|
||||
// HTTP/2 activo?
|
||||
`curl -sI --http2 ${url} | head -1`,
|
||||
|
||||
// Certificado SSL válido?
|
||||
`echo | openssl s_client -connect ${domain}:443 2>/dev/null | openssl x509 -noout -dates`,
|
||||
|
||||
// PHP version
|
||||
`php -v | head -1`
|
||||
];
|
||||
```
|
||||
|
||||
### Passo 3: Verificações WordPress (WP-CLI via SSH)
|
||||
|
||||
```javascript
|
||||
// Se temos acesso SSH ao site
|
||||
const wp_checks = [
|
||||
// Cache plugin activo?
|
||||
`sudo -u ${user} wp plugin list --status=active | grep -E 'cache|w3|wp-super|litespeed'`,
|
||||
|
||||
// Plugins activos (contar)
|
||||
`sudo -u ${user} wp plugin list --status=active --format=count`,
|
||||
|
||||
// Tema activo
|
||||
`sudo -u ${user} wp theme list --status=active --format=csv`,
|
||||
|
||||
// Tamanho da BD
|
||||
`sudo -u ${user} wp db size --format=csv`,
|
||||
|
||||
// Autoload options (problema comum)
|
||||
`sudo -u ${user} wp db query "SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes'" --skip-column-names`,
|
||||
|
||||
// Revisões de posts (limpeza)
|
||||
`sudo -u ${user} wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type='revision'" --skip-column-names`,
|
||||
|
||||
// Transients expirados
|
||||
`sudo -u ${user} wp transient delete --expired --network 2>/dev/null || echo 'N/A'`
|
||||
];
|
||||
```
|
||||
|
||||
### Passo 4: Análise de Imagens
|
||||
|
||||
```javascript
|
||||
// Verificar imagens não optimizadas
|
||||
const image_checks = [
|
||||
// Imagens grandes (>500KB)
|
||||
`find ${wp_path}/wp-content/uploads -type f \\( -name "*.jpg" -o -name "*.png" \\) -size +500k | wc -l`,
|
||||
|
||||
// WebP disponível?
|
||||
`find ${wp_path}/wp-content/uploads -name "*.webp" | head -5`,
|
||||
|
||||
// Total imagens
|
||||
`find ${wp_path}/wp-content/uploads -type f \\( -name "*.jpg" -o -name "*.png" -o -name "*.webp" \\) | wc -l`
|
||||
];
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output Template
|
||||
|
||||
```markdown
|
||||
# WP Performance Audit - [site.pt]
|
||||
|
||||
**Data:** YYYY-MM-DD
|
||||
**URL:** https://site.pt
|
||||
|
||||
---
|
||||
|
||||
## Resumo Executivo
|
||||
|
||||
| Métrica | Mobile | Desktop | Status |
|
||||
|---------|--------|---------|--------|
|
||||
| Performance | XX | XX | ✅/⚠️/❌ |
|
||||
| LCP | X.Xs | X.Xs | ✅/⚠️/❌ |
|
||||
| CLS | X.XX | X.XX | ✅/⚠️/❌ |
|
||||
| TBT | XXXms | XXXms | ✅/⚠️/❌ |
|
||||
|
||||
---
|
||||
|
||||
## Checklist Servidor
|
||||
|
||||
| Item | Status | Nota |
|
||||
|------|--------|------|
|
||||
| GZIP | ✅/❌ | |
|
||||
| HTTP/2 | ✅/❌ | |
|
||||
| SSL | ✅/❌ | Expira: DD/MM |
|
||||
| PHP Version | X.X | |
|
||||
|
||||
---
|
||||
|
||||
## Checklist WordPress
|
||||
|
||||
| Item | Status | Valor |
|
||||
|------|--------|-------|
|
||||
| Cache Plugin | ✅/❌ | [nome] |
|
||||
| Plugins Activos | ⚠️ | XX (recomendado <20) |
|
||||
| Tamanho BD | ⚠️ | XX MB |
|
||||
| Autoload Size | ⚠️ | XX KB (recomendado <1MB) |
|
||||
| Revisões | ⚠️ | XX (limpar se >100) |
|
||||
|
||||
---
|
||||
|
||||
## Checklist Imagens
|
||||
|
||||
| Item | Valor | Acção |
|
||||
|------|-------|-------|
|
||||
| Imagens >500KB | XX | Optimizar |
|
||||
| WebP activo | ✅/❌ | Converter |
|
||||
| Total imagens | XX | - |
|
||||
|
||||
---
|
||||
|
||||
## Recomendações Prioritárias
|
||||
|
||||
1. **[CRÍTICO]** Descrição...
|
||||
2. **[ALTO]** Descrição...
|
||||
3. **[MÉDIO]** Descrição...
|
||||
|
||||
---
|
||||
|
||||
## Comandos de Correcção
|
||||
|
||||
```bash
|
||||
# Limpar revisões (manter últimas 5)
|
||||
wp post delete $(wp post list --post_type='revision' --format=ids) --force
|
||||
|
||||
# Limpar transients
|
||||
wp transient delete --all
|
||||
|
||||
# Optimizar BD
|
||||
wp db optimize
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Gerado via /wp-performance - YYYY-MM-DD*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Thresholds
|
||||
|
||||
| Métrica | ✅ Bom | ⚠️ Médio | ❌ Mau |
|
||||
|---------|--------|----------|--------|
|
||||
| Performance Score | >70 | 50-70 | <50 |
|
||||
| LCP | <2.5s | 2.5-4s | >4s |
|
||||
| CLS | <0.1 | 0.1-0.25 | >0.25 |
|
||||
| TBT | <200ms | 200-600ms | >600ms |
|
||||
| Plugins | <20 | 20-30 | >30 |
|
||||
| BD Size | <100MB | 100-500MB | >500MB |
|
||||
| Autoload | <1MB | 1-2MB | >2MB |
|
||||
| Revisões | <100 | 100-500 | >500 |
|
||||
|
||||
---
|
||||
|
||||
## Sites WordPress no Servidor
|
||||
|
||||
| Conta | Domínio | Path |
|
||||
|-------|---------|------|
|
||||
| ealmeida | emanuelalmeida.pt | `/home/ealmeida/emanuelalmeida.pt/` |
|
||||
| descomplicar | descomplicar.pt | `/home/descomplicar/public_html/` |
|
||||
| wtc | watercontrol.pt | `/home/wtc/public_html/` |
|
||||
|
||||
---
|
||||
|
||||
## Problemas Comuns
|
||||
|
||||
### Autoload Grande (>1MB)
|
||||
```sql
|
||||
-- Ver maiores autoload options
|
||||
SELECT option_name, LENGTH(option_value) as size
|
||||
FROM wp_options
|
||||
WHERE autoload='yes'
|
||||
ORDER BY size DESC
|
||||
LIMIT 20;
|
||||
```
|
||||
|
||||
### Muitas Revisões
|
||||
```bash
|
||||
# Limitar revisões futuras (wp-config.php)
|
||||
define('WP_POST_REVISIONS', 5);
|
||||
```
|
||||
|
||||
### Sem Cache
|
||||
Plugins recomendados:
|
||||
- LiteSpeed Cache (se servidor LiteSpeed)
|
||||
- WP Super Cache (simples)
|
||||
- W3 Total Cache (avançado)
|
||||
|
||||
### Imagens Não Optimizadas
|
||||
Plugins recomendados:
|
||||
- ShortPixel (com WebP)
|
||||
- Imagify
|
||||
- Smush
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
### v1.0.0 (2026-01-30)
|
||||
- Versão inicial
|
||||
- Checklist: Servidor, WordPress, Imagens
|
||||
- Integração Lighthouse + SSH
|
||||
- Thresholds definidos
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Quando NÃO Usar
|
||||
|
||||
- Para tarefas fora do domínio de especialização desta skill
|
||||
- Quando outra skill mais específica está disponível
|
||||
- Para operações que requerem aprovação manual obrigatória
|
||||
- Quando os requisitos não estão claramente definidos
|
||||
|
||||
|
||||
## Protocolo de Execução
|
||||
|
||||
1. **Análise Inicial**
|
||||
- Verificar requisitos e contexto
|
||||
- Identificar ferramentas necessárias
|
||||
|
||||
2. **Preparação**
|
||||
- Validar acesso a recursos
|
||||
- Preparar ambiente de trabalho
|
||||
|
||||
3. **Execução**
|
||||
- Executar operações de forma incremental
|
||||
- Validar cada passo antes de prosseguir
|
||||
|
||||
4. **Validação**
|
||||
- Verificar resultados obtidos
|
||||
- Confirmar sucesso da operação
|
||||
|
||||
5. **Conclusão**
|
||||
- Documentar alterações realizadas
|
||||
- Reportar status final e próximos passos
|
||||
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Exemplo 1: Caso Básico
|
||||
```
|
||||
User: [requisição simples relacionada com wp-performance]
|
||||
Skill: [execução directa com validação]
|
||||
Output: [resultado conciso e accionável]
|
||||
```
|
||||
|
||||
### Exemplo 2: Caso Complexo
|
||||
```
|
||||
User: [requisição multi-passo ou complexa]
|
||||
Skill:
|
||||
1. Análise dos requisitos
|
||||
2. Planeamento da abordagem
|
||||
3. Execução faseada
|
||||
4. Validação contínua
|
||||
Output: [resultado detalhado com próximos passos]
|
||||
```
|
||||
|
||||
### Exemplo 3: Caso com Dependências
|
||||
```
|
||||
User: [requisição que depende de outros sistemas]
|
||||
Skill:
|
||||
1. Verificar dependências disponíveis
|
||||
2. Coordenar com skills/MCPs necessários
|
||||
3. Executar workflow integrado
|
||||
Output: [resultado completo com referências]
|
||||
```
|
||||
243
wordpress/skills/wp-update/SKILL.md
Normal file
243
wordpress/skills/wp-update/SKILL.md
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
name: wp-update
|
||||
description: WordPress core, plugins, and themes update management. Safely updates
|
||||
WordPress components with backups. Use when user mentions "wordpress update", "wp
|
||||
update", "update plugins", "update themes", "wordpress maintenance".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.1.0
|
||||
quality_score: 75
|
||||
user_invocable: true
|
||||
desk_task: 1553
|
||||
---
|
||||
|
||||
# /wp-update - Actualização WordPress
|
||||
|
||||
Actualização e verificação de todos os sites WordPress no servidor CWP (176.9.3.158).
|
||||
|
||||
---
|
||||
|
||||
## SITES ACTIVOS (16)
|
||||
|
||||
| Conta | Site | Notas |
|
||||
|-------|------|-------|
|
||||
| carstuff | carstuff.pt | |
|
||||
| ealmeida | descomplicar.pt | principal |
|
||||
| ealmeida | emanuelalmeida.pt | |
|
||||
| ealmeida | ecommerce.descomplicar.pt | |
|
||||
| ealmeida | ecommerce-demo.descomplicar.pt | |
|
||||
| ealmeida | starter.descomplicar.pt | |
|
||||
| ealmeida | care.descomplicar.pt | KiviCare |
|
||||
| ealmeida | e-commerce.descomplicar.pt | |
|
||||
| espiral | espiralsenior.pt | booking plugin desactivado |
|
||||
| espiral | dev.espiralsenior.pt | |
|
||||
| familycl | familyclinic.pt | KiviCare |
|
||||
| ignition | ignitionvortex.pt | |
|
||||
| karate | karateclubedegaia.com | |
|
||||
| sintri | sintricare.com.pt | |
|
||||
| solarfv | solarfvengenharia.com | |
|
||||
| wtc | watercontrol.pt | |
|
||||
|
||||
**Domínios expirados (excluídos):** jornadadoheroi.pt, tecoworking.pt, socialboost.pt
|
||||
|
||||
---
|
||||
|
||||
## SCRIPT DE VERIFICAÇÃO
|
||||
|
||||
**Local:** `/media/ealmeida/Dados/Dev/ClaudeDev/Claude-Scripts/wp-update/check-wp-sites.sh`
|
||||
**No servidor:** `/root/scripts/check-wp-sites.sh`
|
||||
|
||||
O script verifica:
|
||||
- Código HTTP (200, 301, 403, 500, etc.)
|
||||
- **Conteúdo da página** por erros WordPress específicos:
|
||||
- "Ocorreu um erro crítico neste site"
|
||||
- "There has been a critical error"
|
||||
- "Fatal error:.*in /home/"
|
||||
- "Error establishing a database connection"
|
||||
|
||||
> **IMPORTANTE:** Códigos HTTP 200 NÃO garantem que o site está OK.
|
||||
> WordPress pode devolver 200 com página de erro crítico.
|
||||
|
||||
---
|
||||
|
||||
## WORKFLOW
|
||||
|
||||
### 1. Verificação Inicial (OBRIGATÓRIO)
|
||||
|
||||
Executar script de verificação no servidor:
|
||||
```bash
|
||||
/root/scripts/check-wp-sites.sh carstuff.pt descomplicar.pt emanuelalmeida.pt ecommerce.descomplicar.pt ecommerce-demo.descomplicar.pt starter.descomplicar.pt care.descomplicar.pt e-commerce.descomplicar.pt espiralsenior.pt dev.espiralsenior.pt familyclinic.pt ignitionvortex.pt karateclubedegaia.com sintricare.com.pt solarfvengenharia.com watercontrol.pt
|
||||
```
|
||||
|
||||
**REGRA CRÍTICA:** Se site reportar ❌ → investigar e corrigir ANTES de actualizar.
|
||||
|
||||
### 2. Actualização por Site
|
||||
|
||||
Para cada site funcional:
|
||||
```bash
|
||||
# Actualizar plugins
|
||||
wp plugin update --all --allow-root --path=/home/USER/PATH
|
||||
|
||||
# Actualizar temas
|
||||
wp theme update --all --allow-root --path=/home/USER/PATH
|
||||
|
||||
# Actualizar core
|
||||
wp core update --allow-root --path=/home/USER/PATH
|
||||
|
||||
# Corrigir permissões (OBRIGATÓRIO)
|
||||
chown -R USER:USER /home/USER/PATH/wp-content/
|
||||
```
|
||||
|
||||
### 3. Verificação Final (OBRIGATÓRIO)
|
||||
|
||||
Re-executar script de verificação para confirmar que todos os sites continuam funcionais.
|
||||
|
||||
---
|
||||
|
||||
## PATHS DOS SITES
|
||||
|
||||
| Site | Path |
|
||||
|------|------|
|
||||
| carstuff.pt | /home/carstuff/public_html |
|
||||
| descomplicar.pt | /home/ealmeida/public_html |
|
||||
| emanuelalmeida.pt | /home/ealmeida/emanuelalmeida.pt |
|
||||
| ecommerce.descomplicar.pt | /home/ealmeida/ecommerce.descomplicar.pt |
|
||||
| ecommerce-demo.descomplicar.pt | /home/ealmeida/ecommerce-demo.descomplicar.pt |
|
||||
| starter.descomplicar.pt | /home/ealmeida/starter.descomplicar.pt |
|
||||
| care.descomplicar.pt | /home/ealmeida/care.descomplicar.pt |
|
||||
| e-commerce.descomplicar.pt | /home/ealmeida/e-commerce.descomplicar.pt |
|
||||
| espiralsenior.pt | /home/espiral/public_html |
|
||||
| dev.espiralsenior.pt | /home/espiral/dev.espiralsenior.pt |
|
||||
| familyclinic.pt | /home/familycl/public_html |
|
||||
| ignitionvortex.pt | /home/ignition/public_html |
|
||||
| karateclubedegaia.com | /home/karate/karateclubedegaia.com |
|
||||
| sintricare.com.pt | /home/sintri/public_html |
|
||||
| solarfvengenharia.com | /home/solarfv/public_html |
|
||||
| watercontrol.pt | /home/wtc/public_html |
|
||||
|
||||
---
|
||||
|
||||
## ERROS COMUNS E SOLUÇÕES
|
||||
|
||||
### Erro: "Class not found" (KiviCare)
|
||||
```bash
|
||||
# Desactivar plugin problemático
|
||||
mv /path/wp-content/plugins/PLUGIN /path/wp-content/plugins/PLUGIN.disabled
|
||||
|
||||
# Reinstalar do care.descomplicar.pt (tem versões actualizadas)
|
||||
cp -r /home/ealmeida/care.descomplicar.pt/wp-content/plugins/PLUGIN /path/wp-content/plugins/
|
||||
chown -R USER:USER /path/wp-content/plugins/PLUGIN
|
||||
```
|
||||
|
||||
### Erro: "Operation not permitted"
|
||||
```bash
|
||||
# Adicionar FS_METHOD ao wp-config.php
|
||||
sed -i "/^define.*WP_DEBUG/a define('FS_METHOD', 'direct');" /path/wp-config.php
|
||||
```
|
||||
|
||||
### Erro: Permissões após update
|
||||
```bash
|
||||
chown -R USER:USER /path/wp-content/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PLUGINS PREMIUM (Licenças)
|
||||
|
||||
Alguns plugins não actualizam automaticamente por falta de licença:
|
||||
- elementor-pro
|
||||
- wpforms (versão paga)
|
||||
- bdthemes-element-pack
|
||||
|
||||
Estes requerem actualização manual via CodeCanyon/download.
|
||||
|
||||
---
|
||||
|
||||
## INTEGRAÇÃO COM /today
|
||||
|
||||
Esta skill é invocada automaticamente às **segundas-feiras** pelo comando `/today`.
|
||||
|
||||
Workflow segunda-feira:
|
||||
1. `/today` detecta que é segunda
|
||||
2. Executa verificação inicial
|
||||
3. Reporta estado dos sites
|
||||
4. Propõe actualizações pendentes
|
||||
|
||||
---
|
||||
|
||||
## CHANGELOG
|
||||
|
||||
### v1.1.0 (2026-02-02)
|
||||
- Script movido para `/media/ealmeida/Dados/Dev/ClaudeDev/Claude-Scripts/wp-update/`
|
||||
- Removidos domínios expirados da lista (jornadadoheroi, tecoworking, socialboost)
|
||||
- Adicionada documentação sobre verificação de conteúdo
|
||||
- README.txt adicionado com tarefa DeskCRM
|
||||
|
||||
### v1.0.0 (2026-02-02)
|
||||
- Criação inicial
|
||||
- Script de verificação robusta
|
||||
- Lista de 16 sites activos
|
||||
- Integração com /today para segundas-feiras
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Quando NÃO Usar
|
||||
|
||||
- Para tarefas fora do domínio de especialização desta skill
|
||||
- Quando outra skill mais específica está disponível
|
||||
- Para operações que requerem aprovação manual obrigatória
|
||||
- Quando os requisitos não estão claramente definidos
|
||||
|
||||
|
||||
## Protocolo de Execução
|
||||
|
||||
1. **Análise Inicial**
|
||||
- Verificar requisitos e contexto
|
||||
- Identificar ferramentas necessárias
|
||||
|
||||
2. **Preparação**
|
||||
- Validar acesso a recursos
|
||||
- Preparar ambiente de trabalho
|
||||
|
||||
3. **Execução**
|
||||
- Executar operações de forma incremental
|
||||
- Validar cada passo antes de prosseguir
|
||||
|
||||
4. **Validação**
|
||||
- Verificar resultados obtidos
|
||||
- Confirmar sucesso da operação
|
||||
|
||||
5. **Conclusão**
|
||||
- Documentar alterações realizadas
|
||||
- Reportar status final e próximos passos
|
||||
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Exemplo 1: Caso Básico
|
||||
```
|
||||
User: [requisição simples relacionada com wp-update]
|
||||
Skill: [execução directa com validação]
|
||||
Output: [resultado conciso e accionável]
|
||||
```
|
||||
|
||||
### Exemplo 2: Caso Complexo
|
||||
```
|
||||
User: [requisição multi-passo ou complexa]
|
||||
Skill:
|
||||
1. Análise dos requisitos
|
||||
2. Planeamento da abordagem
|
||||
3. Execução faseada
|
||||
4. Validação contínua
|
||||
Output: [resultado detalhado com próximos passos]
|
||||
```
|
||||
|
||||
### Exemplo 3: Caso com Dependências
|
||||
```
|
||||
User: [requisição que depende de outros sistemas]
|
||||
Skill:
|
||||
1. Verificar dependências disponíveis
|
||||
2. Coordenar com skills/MCPs necessários
|
||||
3. Executar workflow integrado
|
||||
Output: [resultado completo com referências]
|
||||
```
|
||||
Reference in New Issue
Block a user