WP Plugin Zip: zips de WordPress que se instalan a la primera
Una skill para Claude Code y Claude Desktop. Claude empaqueta tu plugin o tu tema con un script que comprueba lo mismo que WordPress, se niega a escribir un zip roto y te enseña el nombre y la versión antes de que lo subas. Y si ya tienes un zip que falla, te dice por qué.
- Funciona en
- Claude Code y Claude Desktop (pestaña Code y chats)
- Para
- Plugins y temas de WordPress
- Requisitos
- Python 3. PHP opcional, para revisar la sintaxis con php -l
- Privacidad
- Sin red: solo lee tus archivos y escribe el zip
- Licencia
- MIT, gratis
- Versión
- 1.0.0
Por qué falla un zip que parece bueno
Compress-Archivede PowerShell puede escribir los nombres con\. En un servidor Linux, WordPress crea un archivo plano en lugar de la carpeta y dice «El archivo del plugin no existe».- Un BOM antes de
<?phprompe la activación con «headers already sent». - El archivo principal queda una carpeta más abajo, o su cabecera pasa de los primeros 8 KB, que es todo lo que lee WordPress.
- El «Download ZIP» de GitHub crea la carpeta
mi-plugin-main, y las actualizaciones dejan de coincidir con el plugin instalado. - La descarga de un marketplace trae un zip dentro de otro zip: «No se ha podido descomprimir el paquete. No se encontraron plugins.»
Cómo instalarla
En Claude Code, como plugin
Escribe estos dos comandos en Claude Code:
/plugin marketplace add agenciaRSE/wp-plugin-zip
/plugin install wp-plugin-zip@wp-plugin-zipEn Claude Code, a mano
Copia la carpeta skills/wp-plugin-zip del repositorio en ~/.claude/skills/.
En Claude Desktop
Descarga wp-plugin-zip.zip de la última versión en GitHub.
Súbelo en Ajustes → Capacidades → Skills.
Úsala
Pídele a Claude «empaqueta el plugin», «haz el zip de la versión» o «¿por qué este zip dice que el archivo del plugin no existe?».
O usa el script sin Claude
Necesitas Python 3. build crea el zip y check revisa uno que ya tengas:
python wp_zip.py build mi-plugin --lint
python wp_zip.py check mi-plugin.zipQué hace
- Crea el zip correcto: una sola carpeta con el nombre del slug, separadores
/y entradas de carpeta explícitas. - Lo comprueba antes de escribirlo: cabecera
Plugin Name:(ostyle.cssconTheme Name:) en los primeros 8 KB, sin BOM y sin UTF-16. Con--lint, pasaphp -lpor cada archivo PHP. - Deja fuera la basura:
.git,node_modules,.DS_Store,Thumbs.db,desktop.ini, otros zips, mapas de código y registros. - Saltos de línea LF aunque trabajes en Windows, para que dos paquetes del mismo código salgan iguales.
- Revisa cualquier zip, tuyo, de un cliente o de un marketplace, y explica cada problema con su solución.
- Te enseña el nombre, la versión y el autor de lo que vas a subir, para que no entregues un zip antiguo.
Privacidad y seguridad
wp_zip.pyusa solo la librería estándar de Python: no se conecta a la red ni instala nada.- Lee la carpeta del plugin y escribe el zip donde le digas. No cambia tus archivos: la conversión a LF se hace solo dentro del zip.
- El código es abierto: puedes leer el script antes de usarlo.
Creada y mantenida por AGENCIA RSE, un estudio de WordPress y software a medida de A Coruña. La usamos en cada versión de nuestros plugins. Ver todas nuestras skills de Claude
Preguntas frecuentes
¿Por qué WordPress dice «El archivo del plugin no existe»?
Casi siempre porque el zip se hizo con Compress-Archive de PowerShell, que puede escribir los nombres con «\». En el servidor, WordPress crea un archivo plano en lugar de la carpeta del plugin. La otra causa habitual es que el archivo principal esté una carpeta más abajo de lo debido.
¿Qué significa «No se ha podido descomprimir el paquete. No se encontraron plugins»?
Que WordPress no encuentra un archivo PHP con la cabecera «Plugin Name:» justo dentro de la carpeta del plugin. Pasa mucho con las descargas de marketplaces, que traen el plugin en un zip dentro de otro zip con la documentación.
¿Por qué falla la activación con «headers already sent»?
Suele ser un BOM, unos bytes invisibles que algunos editores guardan antes de «<?php». La skill lo detecta y no escribe el zip hasta que guardes el archivo como UTF-8 sin BOM.
¿Sirve para temas?
Sí. Si no hay un plugin, busca un style.css con la cabecera «Theme Name:» en la carpeta raíz.
¿Necesito PHP instalado?
No. Solo Python 3. Si tienes PHP, la opción --lint revisa además la sintaxis de cada archivo.
¿Es gratis?
Sí. Es código abierto con licencia MIT.
¿Necesitas una skill de Claude a medida?
Creamos skills de Claude por encargo con los procesos, plantillas y scripts de tu equipo, para Claude Code, Claude Desktop y claude.ai.
Primera consulta sin coste. Analizamos lo que nos cuentas y te damos una respuesta en 48 h laborables.