Fresh Package pone orden al inicio de un paquete Laravel
Una plantilla para crear paquetes Laravel con pruebas, workbench, análisis estático y reglas útiles para agentes de IA.
El problema no es crear el paquete, sino mantenerlo
Crear un paquete Laravel desde cero es rápido hasta que hay que probarlo fuera de una aplicación concreta, documentar sus decisiones y evitar que cada cambio rompa una versión soportada. Normalmente acabamos copiando composer.json, flujos de GitHub Actions y configuraciones de análisis estático de otro repositorio. Fresh Package intenta convertir esa repetición en una base que ya trae esas piezas conectadas.
La plantilla parte de una decisión clara: el paquete debe poder desarrollarse y verificarse en su propio repositorio. Incluye PHPUnit, Larastan, Rector, Pint y Paratest como herramientas de desarrollo. También declara compatibilidad con illuminate/support 12 y 13, y ofrece scripts para alternar entre ambas ramas de Laravel durante el desarrollo.
Un workbench que evita proyectos de prueba improvisados
La parte más práctica es el directorio workbench/ apoyado en Orchestra Testbench. Testbench permite cargar una aplicación Laravel dentro del repositorio del paquete, y Workbench añade acciones para previsualizar, interactuar y servir ese paquete durante el desarrollo. No sustituye las pruebas de integración de una aplicación consumidora, pero elimina la necesidad de montar un proyecto anfitrión para cada ajuste pequeño.
Fresh Package deja preparados los scripts de Composer para descubrir el paquete, construir el workbench y levantarlo localmente. Es una diferencia sencilla, pero importante: el camino de comprobar una ruta, una vista o una migración está escrito en el repositorio y no en una nota mental. Para un paquete que publica recursos o expone endpoints, esa cercanía reduce bastante la fricción diaria.
{
"scripts": {
"build": [
"@php vendor/bin/testbench workbench:build --ansi"
],
"serve": [
"Composer\\Config::disableProcessTimeout",
"@build",
"@php vendor/bin/testbench serve --ansi"
],
"test": "vendor/bin/phpunit -c tests/phpunit.xml.dist --testdox --colors=always"
}
}Compatibilidad que se puede ejecutar
El repositorio incluye composer switch:l12 y composer switch:l13. Ambos scripts cambian la restricción de illuminate/support y ejecutan la actualización de Composer, de modo que la compatibilidad no queda limitada a una frase en el README. Después, composer test, composer analyse y las comprobaciones de estilo sirven para validar el resultado en la versión elegida.
También hay configuración para ejecutar las pruebas en paralelo y generar cobertura. Eso no garantiza que un paquete sea compatible con cualquier combinación posible de dependencias, pero sí deja un punto de partida repetible para comprobar lo que el paquete declara soportar. En paquetes públicos, prefiero este enfoque a descubrir incompatibilidades cuando ya ha aparecido un issue.
Calidad integrada, no añadida al final
Fresh Package no se limita a generar clases y un service provider. La plantilla incorpora scripts para análisis estático con PHPStan mediante Larastan, corrección de estilo con Pint y refactorización asistida con Rector. Tenerlos desde el primer commit evita que el repositorio acumule una deuda de formato y tipos que luego nadie quiere afrontar.
La automatización de releases y changelog también forma parte de la propuesta, junto con configuración opcional del repositorio como Dependabot, política de seguridad o plantilla de incidencias. Son elementos que conviene revisar antes de activarlos, pero es útil que estén contemplados desde el inicio. El valor no está en marcar todas las casillas, sino en elegirlas de forma consciente cuando el paquete nace.
Reglas para agentes que viven junto al código
La parte relacionada con IA me parece más interesante cuando se trata como documentación ejecutable del repositorio y no como una promesa de marketing. Fresh Package separa las instrucciones destinadas a mantener la propia plantilla de las reglas que acabarán en el paquete generado. Esa separación evita que un agente mezcle convenciones internas del generador con las decisiones que deben aplicar quienes desarrollen el paquete.
Laravel Boost distingue entre directrices generales y skills específicas que se activan según la tarea. Además, Boost permite que paquetes de terceros distribuyan sus propias skills en resources/boost/skills/, para que las aplicaciones que los instalen puedan incorporar esas instrucciones. La plantilla ofrece esa integración como opción, no como dependencia obligatoria para usar el paquete.
La letra pequeña
No usaría esta plantilla para cualquier librería PHP: está pensada para paquetes Laravel y asume herramientas, convenciones y un ciclo de vida propio de ese ecosistema. Tampoco convierte una estructura modular en una buena arquitectura por sí sola; si el dominio está mal separado, los directorios solo harán el problema más ordenado visualmente. Las skills ayudan a guiar a un agente, pero no sustituyen una revisión humana, unas pruebas relevantes ni el conocimiento de los límites del paquete.
Conviene mirar con atención los scripts que se ejecutan tras composer install y composer update, porque la plantilla lanza su asistente de inicialización mediante esos hooks. En el repositorio de la plantilla, la skill de mantenimiento advierte además de que ejecutar template:init directamente es destructivo y propone usar su entorno sandbox para comprobar cambios. Si vas a adaptar Fresh Package como base interna de varios equipos, probaría primero el flujo de generación y eliminaría todo lo que no encaje con vuestra forma de trabajar.
Fresh Package tiene sentido si repites el mismo trabajo al iniciar paquetes Laravel y quieres que pruebas, workbench, calidad y automatización compartan una base verificable. No es una receta universal ni una garantía de calidad, pero sí un punto de partida mucho más serio que copiar un paquete antiguo y borrar archivos hasta que Composer deje de quejarse. Ahí es donde una plantilla aporta valor real: en hacer visible, ejecutable y revisable lo que normalmente queda repartido entre repositorios.
Fuente: Laravel News
Documentación oficial: Fresh Package · Orchestra Testbench · Laravel Boost