Files
acai-scaffold/docs/deploy-and-sync.md
Dmielgo f2021361ec Add production rules discovered during real projects
- Correct hooks-and-api.md: file hooks vs module hooks param injection,
  FK naming not always _num, CmsApi.hook Promise pattern
- Add 9 new rules to hooks-and-api.md: reserved `tipo` var, ghost modules,
  cms_uploads schema, name vs title by menuType, menuOrder, localCache
  gotcha, slug generation, uploads from hooks, CocoEmail
- Add 5 rules to modular-system.md: minified/ dir, Docker workflow,
  debug tools (?compiletwig/?pruebas), general sections deploy, controlador
- Add 2 rules to css-js-conventions.md: Vue inline conflict, Vue mount delay
- Add testing section to quick-reference.md
- Create docs/deploy-and-sync.md for production deploy and sync rules
- Promote 3 critical rules to CLAUDE.md (rules 11-13)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:17:00 +00:00

1.9 KiB

Deploy & Sync

Reglas para desplegar módulos y secciones generales a producción via MCP, y para sincronizar con el servidor.


Protocolo para save_module

  1. save_module con html, js, cssLOS 3 SIEMPRE. Si omites uno, se borra de prod (queda 0 bytes).
  2. Ejecutar check_module → fuerza recompilación de index-twig.tpl
  3. Visitar ?compiletwig en una página que use el módulo
  4. Verificar que renderiza

NUNCA pasar html a módulos con builder vars configurados

Módulos con sample data en el builder (banners, carouseles, módulos con imágenes/colores configurados desde el admin) se ROMPEN al recompilar el HTML. El save_module puede perder/corromper la configuración visual.

Para estos módulos:

  • Solo pasar js y/o css, nunca html
  • Si se rompe: recover_git con list_git_log para revertir
  • Editar el HTML desde el panel admin de Acai, no por MCP

Forzar regeneración de minified

Si subes solo js, el minified/script-{hash}.js NO se regenera automáticamente.

Solución:

  1. Leer el HTML actual de prod con get_module (sections: ["html"])
  2. Añadir un espacio al final
  3. save_module con los 3 (html+espacio, js, css)

IMPORTANTE: Usar SIEMPRE el HTML de prod (get_module), NUNCA el local.


General Sections (custom-*)

Se despliegan con save_general_section, no save_module:

  • El módulo se llama custom-{nombre_tabla} (ej: custom-productos)
  • Se sube con table: "productos", content, javascript, css

Sync y Versionado

Sync from server puede borrar módulos locales

El "Sync from server" puede eliminar módulos que existen en local pero no en el servidor. Si borra custom-header o custom-footer, TODAS las páginas crashean.

Regla: Hacer commit ANTES de cualquier sync.

Sync solo sube archivos modificados

Para forzar un sync de un archivo sin cambios reales, añadir un espacio al final.