From 625b9582b356401c6ac86dd4215dcebda8f08d25 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 20 Feb 2026 20:29:43 +0100 Subject: [PATCH 1/3] =?UTF-8?q?[DOC]=20A=C3=B1adir=20secci=C3=B3n=20AI=20A?= =?UTF-8?q?gent=20Skills=20&=20Prompt=20Guidance=20al=20inicio=20de=20copi?= =?UTF-8?q?lot-instructions.md=20para=20centralizar=20mejores=20pr=C3=A1ct?= =?UTF-8?q?icas=20y=20skills=20detallados.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/copilot-instructions.md | 44 ++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index a62dd49..ad05bc1 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,3 +1,43 @@ +# AI Agent Skills & Prompt Guidance + +Para máxima productividad y calidad, los agentes AI deben seguir estas pautas y consultar los archivos de skills detallados: + +## 1. Skills por Lenguaje/Stack + +- **Python/Odoo ORM**: `.github/skills/python.md` +- **XML/Odoo Views**: `.github/skills/xml.md` +- **HTML/CSS/QWeb**: `.github/skills/html_css.md` +- **JavaScript/Odoo Web**: `.github/skills/javascript.md` + +## 2. Ejecución de tests + +Siempre usa: + +```bash +docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name +``` + +> NOTA: Usa `docker-compose run` (no `exec`) para evitar efectos de caché. + +## 3. Patrones y convenciones clave + +- Sigue OCA guidelines y skills. +- No pongas lógica en QWeb, solo acceso a datos preparados en el controller. +- Usa `main_seller_id` en vez de `default_supplier_id` en product_main_seller. +- Para bulk updates, prefiere `search().write()` sobre loops. + +## 4. Errores comunes a evitar + +- No uses `_()` en definiciones de campos, solo en métodos ejecutables. +- No pongas lógica de negocio en JavaScript, solo en Python. +- No uses estilos inline en QWeb salvo casos justificados. + +## 5. Documentación y referencias + +- Consulta este archivo para patrones globales. +- Consulta los archivos de skills para detalles por lenguaje. +- Para troubleshooting de templates, revisa `docs/QWEB_BEST_PRACTICES.md` y `docs/FINAL_SOLUTION_SUMMARY.md`. + # GitHub Copilot Instructions - Kidekoop Addons Custom ## Project Overview @@ -157,7 +197,9 @@ docker-compose exec odoo odoo -d odoo -u addon_name --stop-after-init docker-compose logs -f odoo # Ejecutar tests -docker-compose exec odoo odoo -d odoo --test-enable --stop-after-init -u addon_name +docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name + +# NOTA: Usa `docker-compose run` (no `exec`) para lanzar un contenedor limpio y evitar efectos de caché. Cambia `addon_name` por el módulo a testear. # Acceder a shell de Odoo docker-compose exec odoo bash From 02a47586359066b1334aec54d50bced692429c7f Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 20 Feb 2026 20:34:49 +0100 Subject: [PATCH 2/3] =?UTF-8?q?[DOC]=20A=C3=B1adir=20archivos=20de=20skill?= =?UTF-8?q?s=20detallados=20(python,=20xml,=20html=5Fcss,=20javascript)=20?= =?UTF-8?q?y=20actualizar=20README.md=20con=20instrucciones=20de=20tests?= =?UTF-8?q?=20actualizadas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/skills/html_css.md | 17 +++++++++++++++++ .github/skills/javascript.md | 18 ++++++++++++++++++ .github/skills/python.md | 29 +++++++++++++++++++++++++++++ .github/skills/xml.md | 18 ++++++++++++++++++ README.md | 4 +++- 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 .github/skills/html_css.md create mode 100644 .github/skills/javascript.md create mode 100644 .github/skills/python.md create mode 100644 .github/skills/xml.md diff --git a/.github/skills/html_css.md b/.github/skills/html_css.md new file mode 100644 index 0000000..dc75195 --- /dev/null +++ b/.github/skills/html_css.md @@ -0,0 +1,17 @@ +# Skill: HTML & CSS (Odoo/QWeb) + +## Estilo y convenciones +- Usa HTML5 válido en QWeb y vistas web. +- No uses lógica condicional en QWeb, solo acceso a atributos. +- Prepara todos los datos en el controller Python. +- CSS: usa clases BEM o utilitarias, nunca estilos inline. +- Indentación: 4 espacios. + +## Patrones clave +- Templates en `views/*.xml` o `static/src/xml/`. +- Para estilos, usa `static/src/css/` y carga en manifest si es necesario. +- Para responsive, usa clases utilitarias o Bootstrap si está disponible. + +## Errores comunes +- No pongas lógica en QWeb, solo acceso a datos. +- No uses estilos inline salvo casos muy justificados. diff --git a/.github/skills/javascript.md b/.github/skills/javascript.md new file mode 100644 index 0000000..d3223ff --- /dev/null +++ b/.github/skills/javascript.md @@ -0,0 +1,18 @@ +# Skill: JavaScript (Odoo Web/Frontend) + +## Estilo y convenciones +- Usa ES6+ (let/const, arrow functions, etc). +- Sigue el patrón Odoo: módulos AMD (`odoo.define`). +- Linting con ESLint (`.eslintrc.js` en raíz). +- No mezcles lógica de negocio en JS, solo UI y eventos. +- Usa comentarios para explicar hacks o workarounds. + +## Patrones clave +- Scripts en `static/src/js/`. +- Registra tours de UI con `web_tour.tour`. +- Usa eventos delegados para elementos dinámicos (lazy loading, infinite scroll). +- Para AJAX, usa los helpers de Odoo (`ajax.jsonRpc`). + +## Errores comunes +- No pongas lógica de negocio en JS, solo en Python. +- Reatacha listeners tras manipular el DOM dinámicamente. diff --git a/.github/skills/python.md b/.github/skills/python.md new file mode 100644 index 0000000..95fe6ae --- /dev/null +++ b/.github/skills/python.md @@ -0,0 +1,29 @@ +# Skill: Python (Odoo ORM) + +## Estilo y convenciones +- Sigue las OCA guidelines estrictamente. +- Usa `black` para formateo automático (ver `pyproject.toml`). +- Ordena imports con `isort` (perfil black). +- Linting obligatorio con `flake8` y `pylint-odoo`. +- Usa docstrings en clases y métodos públicos. +- Comentarios inline solo para lógica compleja. + +## Patrones clave +- Modelos: hereda de `models.Model` o `models.TransientModel`. +- Campos de negocio siempre en `product.product` (no en `product.template`). +- Usa `@api.depends` para campos computados. +- Notificaciones: usa `ir.actions.client` con `display_notification`. +- Logging: `_logger.info()` para trazabilidad de precios y descuentos. +- Bulk updates: prefiere `search().write()` sobre loops. + +## Testing +- Tests en `tests/` de cada addon. +- Hereda de `odoo.tests.common.TransactionCase`. +- Ejecuta tests con: + ```bash + docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name + ``` + +## Errores comunes +- No uses `_()` en definiciones de campos (solo en métodos ejecutables). +- Usa `related` fields en templates para lógica de variantes. diff --git a/.github/skills/xml.md b/.github/skills/xml.md new file mode 100644 index 0000000..50fc15c --- /dev/null +++ b/.github/skills/xml.md @@ -0,0 +1,18 @@ +# Skill: XML (Odoo Views) + +## Estilo y convenciones +- Indentación: 4 espacios (no tabs). +- Usa `position` explícito en XPaths (`before`, `after`, `inside`, `replace`, `attributes`). +- Referencia grupos con `module.xml_id`. +- Usa `sequence` para ordenar campos en vistas. +- No pongas lógica condicional en QWeb, solo acceso a atributos. + +## Patrones clave +- Define vistas en `views/*.xml`. +- IDs: usa el patrón `modulo.nombre_descriptivo`. +- Traduce strings en XML, nunca en Python para campos. +- Para QWeb, prepara todos los datos en el controller. + +## Errores comunes +- XPath not found: revisa la herencia y los XML IDs. +- No uses lógica compleja en QWeb (ver QWEB_BEST_PRACTICES.md). diff --git a/README.md b/README.md index dd547b3..d064ba6 100644 --- a/README.md +++ b/README.md @@ -112,8 +112,10 @@ pre-commit run --all-files ### Tests ```bash + # Ejecutar tests de un addon -docker-compose exec odoo odoo -d odoo --test-enable --stop-after-init -u addon_name +docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u addon_name +# NOTA: Usa `docker-compose run` (no `exec`) para lanzar un contenedor limpio y evitar efectos de caché. Cambia `addon_name` por el módulo a testear. # Tests específicos con Python unittest docker-compose exec odoo python -m pytest addons/addon_name/tests/ From a1431d3521923f303daf87fe3f5f50c23e2395c4 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 20 Feb 2026 20:44:58 +0100 Subject: [PATCH 3/3] =?UTF-8?q?website=5Fsale=5Faplicoop:=20a=C3=B1adir=20?= =?UTF-8?q?settings,=20incluir=20data/groups.xml=20en=20manifest=20y=20lim?= =?UTF-8?q?piar=20vistas=20duplicadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website_sale_aplicoop/models/res_config_settings.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/website_sale_aplicoop/models/res_config_settings.py b/website_sale_aplicoop/models/res_config_settings.py index b8dcfa3..f4a56f0 100644 --- a/website_sale_aplicoop/models/res_config_settings.py +++ b/website_sale_aplicoop/models/res_config_settings.py @@ -1,9 +1,8 @@ -# Copyright 2026 Criptomart -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) - from odoo import fields from odoo import models +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings"