ps-css-buildlisted
Install: claude install-skill educlopez/mallard
# PS CSS Build — pipeline para child themes
Montado y probado en `milagros-colombia-b2b-v9.1` (PS 9.1, child de Panda).
Sustituye: `@import` runtime (N requests encadenados) + bumps manuales `?v=N`
+ hacks tipo `_bust={$smarty.now}` (que anulan caché por completo).
## Resultado final
```
themes/{child}/
├── _dev/
│ ├── README.md # doc del sistema (plantilla abajo)
│ └── css/
│ ├── custom.css # entry point: @import de los parciales (SIN ?v=)
│ ├── tokens.css # :root design tokens
│ ├── base.css
│ ├── components.css
│ ├── utilities.css
│ └── pages/*.css
├── scripts/bundle-css.js # fallback cero-deps para el hook
├── assets/css/custom.css # GENERADO — único CSS servido
├── package.json # pnpm + scripts css/watch
├── pnpm-workspace.yaml # supply-chain hardening
├── pnpm-lock.yaml
└── .gitignore # node_modules/
.githooks/pre-commit # raíz del repo
.gitattributes # dist marcado generated
```
PS core auto-registra `assets/css/custom.css` como `theme-custom` — mantener
ese path/nombre exacto = cero cambios PHP, tema padre intacto.
## Paso 1 — Mover fuentes
```bash
cd themes/{child}
mkdir -p _dev/css
git mv assets/css/*.css _dev/css/ # parciales + custom.css
git mv assets/css/pages _dev/css/pages # si existe
```
Limpiar el entry point `_dev/css/custom.css`:
- Quitar todos los `?v=N` de los imports: `sed -i '' -E "s/\.css\?v=[0-9]+'/.css'/g" _dev/css