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/