diff --git a/docs/ACAI-CLAUDE.md b/docs/ACAI-CLAUDE.md index 6829135..00cefdf 100644 --- a/docs/ACAI-CLAUDE.md +++ b/docs/ACAI-CLAUDE.md @@ -105,7 +105,7 @@ Do NOT modify web-base files — they are shared across all projects. 1. **Before working with any area (hooks, modules, templates, CSS/JS, etc.), read the corresponding documentation in `docs/` first.** Do not guess or assume — always consult the docs before taking action. 2. **NEVER use `mkdir` to create directories.** Instead, use the `Write` tool to create the first file inside the directory — this creates parent directories automatically. For example, to create a new module, directly write the `index-base.tpl` file. 3. Only edit `index-base.tpl` in modules — `index.tpl`, `index-twig.tpl`, and `builder.json` are auto-generated -3. **After editing any `index-base.tpl`, ALWAYS call the `compile_module` MCP tool** to compile the module/section. This is mandatory — without compilation, changes won't take effect in the CMS. +3. **Edit `index-base.tpl` using `acai_write` or `acai_line_replace`** — the server compiles automatically when the file is saved. No need to call `compile_module` manually. 4. Use Twig **filters** (with `|`), never Twig functions 5. Table names without `cms_` prefix everywhere 6. Primary key is `num`, never `id` @@ -122,8 +122,8 @@ This project has MCP tools for managing modules, records, media, and more. **Bef See [docs/mcp-tools-reference.md](docs/mcp-tools-reference.md) for the complete list of available tools and step-by-step workflows. Key workflows: -- **Create module**: Read [docs/module-creation-guide.md](docs/module-creation-guide.md) first → `create_module` → `add_module_to_record` (returns sectionId) → `set_module_config_vars` (returns uploadFields) → images via uploadFields -- **Edit module**: read vars → edit `index-base.tpl` → `compile_module` +- **Create module**: Read [docs/module-creation-guide.md](docs/module-creation-guide.md) first → Write `index-base.tpl` via `acai_write` → `add_module_to_record` (returns sectionId) → `set_module_config_vars` (returns uploadFields) → images via uploadFields +- **Edit module**: read vars → edit `index-base.tpl` with `acai_write` or `acai_line_replace` (server compiles automatically) - **Add images**: use `uploadFields` from `set_module_config_vars` response → `upload_record_image` - **Generate images**: `generate_image` → `upload_record_image` with returned URL diff --git a/docs/mcp-tools-reference.md b/docs/mcp-tools-reference.md index 317534a..aad435b 100644 --- a/docs/mcp-tools-reference.md +++ b/docs/mcp-tools-reference.md @@ -4,7 +4,7 @@ | Tool | Categoría | Acción | |------|-----------|--------| -| `create_module` | Módulos | Crea módulo nuevo (directorio + archivos + compila) | +| `create_module` | Módulos | (Legacy) Alternativa para crear módulo — preferir acai_write | | `compile_module` | Módulos | Compila módulo tras editar index-base.tpl | | `check_module` | Módulos | Preview de cómo renderiza un módulo | | `check_module_usage` | Módulos | Qué páginas usan un módulo | @@ -37,7 +37,7 @@ ### Crear un módulo nuevo desde cero -1. `create_module` — Crea el directorio con index-base.tpl, style.css, script.js y compila +1. `acai_write` — Escribe `index-base.tpl` en `template/estandar/modulos/NOMBRE/`. El server crea la carpeta si no existe, compila y genera todos los archivos derivados (index-twig.tpl, index.tpl, builder.json, screenshots) 2. `add_module_to_record` — Añade el módulo a una página (tabla padre, ej: `apartados`) 3. `set_module_config_vars` — Rellena las variables con contenido (textos, colores, opciones). **OBLIGATORIO** — sin esto el módulo no muestra nada. Devuelve: - `configVars`: mapa de variables → recordNums @@ -46,12 +46,13 @@ 4. Para imágenes: `generate_image` o `upload_record_image` usando el `recordNum` y `fieldName` del `uploadFields` devuelto en el paso 3 5. Verificar con `check_module` o recargando la página +> **Nota:** `create_module` es una alternativa legacy que hace lo mismo pero con menos control sobre el contenido del template. + ### Editar un módulo existente 1. `get_module_config_vars` — Leer el estado actual del módulo (variables, recordNums) -2. Editar `index-base.tpl` con la tool `Write` o `Edit` -3. `compile_module` — **OBLIGATORIO** tras cada edición de index-base.tpl -4. Si cambias variables: `set_module_config_vars` para actualizar valores +2. Editar `index-base.tpl` con `acai_write` o `acai_line_replace` — el server compila automáticamente al guardar +3. Si cambias variables: `set_module_config_vars` para actualizar valores ### Añadir/modificar imágenes de un módulo diff --git a/docs/module-creation-guide.md b/docs/module-creation-guide.md index 4b0f559..2e4c95f 100644 --- a/docs/module-creation-guide.md +++ b/docs/module-creation-guide.md @@ -38,7 +38,7 @@ Each module lives in `template/estandar/modulos//` with: ## Creating a Module — Full Workflow 1. **Read style reference** (steps above) -2. **`create_module`** — Creates the directory with index-base.tpl, style.css, script.js and compiles. Use descriptive `moduleId` and clear `label`. +2. **`acai_write`** — Write `index-base.tpl` to `template/estandar/modulos/MODULE_ID/index-base.tpl`. The server automatically creates the directory, compiles and generates all derived files. `create_module` is a legacy alternative. 3. **`add_module_to_record`** — Adds the module to a page. Response includes `sectionId` — use it directly in the next step. 4. **`set_module_config_vars`** — Fill variables with content. Response includes `uploadFields` with `{ fieldName, recordNum }` for each upload variable. 5. **Upload images** — Use `generate_image` then `upload_record_image` with the `recordNum` and `fieldName` from step 4's `uploadFields`. No need to read builder.json or call get_module_config_vars. @@ -72,6 +72,6 @@ Modules with `MJMLModule: true` in their schema are email modules: - Use `section_id` variable for unique anchors/scoping - Use `interno` variable to detect CMS editor vs public view - Include other modules with: `` -- After editing `index-base.tpl`, ALWAYS call `compile_module` +- After editing `index-base.tpl` with `acai_write` or `acai_line_replace`, the server compiles automatically — no need to call `compile_module` - Twig uses filters (with `|`), never functions - Twig concatenation uses `~`: `'value=' ~ variable` diff --git a/src/orchestrator/agents/coder.py b/src/orchestrator/agents/coder.py index 1e41f06..768ecf3 100644 --- a/src/orchestrator/agents/coder.py +++ b/src/orchestrator/agents/coder.py @@ -17,10 +17,10 @@ CODER_SYSTEM_PROMPT = """Eres un Agente Programador de Acai CMS. Tu rol es ejecu ## Uso de herramientas - CONSULTA la Knowledge Base ANTES de actuar — tiene la referencia completa de tools y flujos de trabajo. -- Para CREAR MÓDULOS usa `create_module` (crea archivos en filesystem), NUNCA `create_or_update_record` en tabla modulos. +- Para CREAR/EDITAR MÓDULOS usa `acai_write` sobre `template/estandar/modulos/NOMBRE/index-base.tpl`. El server crea la carpeta si no existe, compila y genera todos los archivos derivados automáticamente. NO necesitas compile_module. +- `create_module` es legacy — funciona pero `acai_write` es el flujo estándar. - Para GESTIONAR REGISTROS de tablas (apartados, travesias, etc.) usa `create_or_update_record`. -- Para ESCRIBIR ARCHIVOS usa `acai_write` o `acai_line_replace`. -- Tras crear un módulo, SIEMPRE sigue el flujo: create_module → add_module_to_record → set_module_config_vars. +- Flujo de módulo nuevo: acai_write index-base.tpl → add_module_to_record → set_module_config_vars. - tableName siempre SIN prefijo cms_ (ej: apartados, NO cms_apartados). - La primary key es siempre `num`, nunca `id`.