Skill: Check WordPress
QA integral de sitios WordPress de Proportione. Orquesta el framework
@wp-qa/shared existente con Playwright MCP para navegacion y verificacion visual.
Target: $ARGUMENTS (URL del sitio, nombre del cliente, o "todos" para batch)
Configuration
This skill references external paths. Set these environment variables or replace inline:
$WP_QA_DIR— WordPress shared QA framework (e.g./path/to/Wordpress/_comun/qa)$QA_PROPORTIONE_DIR— Root of the QA_Proportione repo (e.g./path/to/QA_Proportione)
Sitios WordPress de Proportione
| Sitio | URL | Cliente |
|---|---|---|
| proportione.com | https://proportione.com | Proportione |
| porqueviven.org | https://porqueviven.org | Porque Viven |
| institutoteologia.org | https://institutoteologia.org | IITD |
| dev.institutoteologia.org | https://dev.institutoteologia.org | IITD (dev) |
| win2winevents.com | https://win2winevents.com | Win2Win |
| dev.win2winevents.com | https://dev.win2winevents.com | Win2Win (dev) |
| ta-cle.com | https://ta-cle.com | Tacle |
Flujo
PASO 1 — Determinar alcance
- Que sitio(s) revisar? Si no se especifica, preguntar.
- Revision completa o un aspecto concreto? (a11y, SEO, links, security, performance)
- Si el usuario dice "todos", ejecutar en batch.
PASO 2 — Navegacion con Playwright MCP
Usa Playwright MCP para abrir el sitio y navegar las paginas principales:
- Homepage
- Paginas principales del menu (About, Servicios, Contacto, etc.)
- Al menos 1 entrada de blog si existe
- Pagina 404 (navegar a
/url-que-no-existe)
En cada pagina, recopilar:
- Errores de consola JavaScript
- Recursos que fallan (404, 500)
- Tiempo de carga percibido
PASO 3 — Accesibilidad (axe-core)
El framework @wp-qa/shared ya tiene accessibility.js con axe-core.
Si es posible, ejecutar programaticamente:
cd $WP_QA_DIR
node -e "const qa = require('.'); /* usar funciones de accessibility */"
Complementar con verificacion manual via Playwright MCP:
- Todas las imagenes tienen alt text?
- Los enlaces tienen texto descriptivo (no "click aqui")?
- Los formularios tienen labels asociados?
- El contraste de colores es suficiente?
- Se puede navegar con teclado? (Tab order)
- Hay heading hierarchy correcta? (h1 -> h2 -> h3, sin saltos)
PASO 4 — SEO
El framework tiene seo-validator.js. Verificar:
- Cada pagina tiene title unico y descriptivo (<60 chars)?
- Meta description existe y es unica (<160 chars)?
- Hay un solo h1 por pagina?
- Las URLs son limpias (no
?p=123)? - Existe sitemap.xml? Navegar a
/sitemap.xml - Existe robots.txt? Navegar a
/robots.txt - Canonical URLs correctas?
- Open Graph tags para redes sociales?
PASO 5 — Enlaces e imagenes
Usando link-checker.js e image-checker.js:
- Hay enlaces rotos (404)?
- Hay enlaces a HTTP en sitio HTTPS (mixed content)?
- Las imagenes cargan correctamente?
- Las imagenes estan optimizadas? (no >500KB sin lazy load)
- Se usa lazy loading para imagenes below-the-fold?
PASO 6 — Seguridad WordPress
Verificar via SSH si hay acceso, o via web:
# Si hay acceso SSH (SiteGround, etc.)
wp plugin list --ssh=[host]
wp core version --ssh=[host]
wp theme list --ssh=[host]
Checklist de seguridad:
- WordPress core actualizado?
- Todos los plugins actualizados?
- Temas no usados eliminados?
- Login URL cambiada? (WP Ghost Pro)
- XML-RPC desactivado?
- REST API restringida para usuarios no autenticados?
- Security Ninja Pro activo?
- Backup automatico configurado?
- SSL valido y no expirado?
PASO 7 — Rendimiento
Usando performance.js y Lighthouse si esta disponible:
# Si lighthouse esta instalado
lighthouse [URL] --output json --output-path /tmp/lighthouse-[sitio].json \
--chrome-flags="--headless --no-sandbox"
- LCP (Largest Contentful Paint) < 2.5s
- INP (Interaction to Next Paint) < 200ms
- CLS (Cumulative Layout Shift) < 0.1
- Hay render-blocking CSS/JS?
- Se usa cache de navegador?
- Se sirven imagenes en WebP/AVIF?
PASO 8 — Estado de Elementor
La mayoria de sitios usan Elementor Pro:
- Elementor Pro actualizado? (comprobar version)
- Template conditions correctas? (header/footer en todas las paginas)
- No hay widgets huerfanos o secciones vacias?
- Global fonts/colors configurados (no inline)?
PASO 9 — Generar informe
## WordPress Health Check — [sitio] — [fecha]
### Resumen
[Semaforo: VERDE/AMARILLO/ROJO]
[1-2 frases con estado general]
### Puntuaciones
| Categoria | Estado | Detalles |
|-----------|--------|----------|
| Accesibilidad | OK/WARN/FAIL | [resumen] |
| SEO | OK/WARN/FAIL | [resumen] |
| Enlaces | OK/WARN/FAIL | [n] rotos de [total] |
| Imagenes | OK/WARN/FAIL | [n] sin alt, [n] sin optimizar |
| Seguridad | OK/WARN/FAIL | [resumen] |
| Rendimiento | OK/WARN/FAIL | LCP=[x]s, CLS=[x] |
| Plugins | OK/WARN/FAIL | [n] desactualizados |
### Acciones requeridas (priorizadas)
1. [CRITICAL] [accion]
2. [HIGH] [accion]
3. [MEDIUM] [accion]
### Lighthouse scores (si disponible)
- Performance: [x]/100
- Accessibility: [x]/100
- Best Practices: [x]/100
- SEO: [x]/100
Modo batch
Si el usuario pide revisar todos los sitios:
- Ejecutar PASO 2-8 para cada sitio
- Generar un informe consolidado con tabla comparativa
- Guardar en
$QA_PROPORTIONE_DIR/reports/{fecha}/wordpress/
## WordPress Fleet Health — [fecha]
| Sitio | A11y | SEO | Links | Security | Perf | Overall |
|-------|------|-----|-------|----------|------|---------|
| proportione.com | OK | WARN | OK | OK | WARN | AMARILLO |
| porqueviven.org | OK | OK | FAIL | OK | OK | AMARILLO |
| ... | | | | | | |
Notas
- No modificar codigo del sitio sin aprobacion del usuario.
- Si un plugin tiene un CVE conocido, reportar como CRITICAL.
- Para sitios de desarrollo (dev.*), ser mas tolerante con SEO y rendimiento.
- El framework
@wp-qa/sharedse ejecuta con Node.js y requiere Playwright instalado.