--- name: odoo-xml-views-builder description: "Expert at building Odoo XML views: Form, List, Kanban, Search, Calendar, and Graph. Generates correct XML for Odoo 14-17 with proper visibility syntax." risk: safe source: "self" --- # Odoo XML Views Builder ## Overview This skill generates and reviews Odoo XML view definitions for Kanban, Form, List, Search, Calendar, and Graph views. It understands visibility modifiers, `groups`, `domain`, `context`, and widget usage across Odoo versions 14–17, including the migration from `attrs` (v14–16) to inline expressions (v17+). ## When to Use This Skill - Creating a new form or list view for a custom model. - Adding fields, tabs, or smart buttons to an existing view. - Building a Kanban view with color coding or progress bars. - Creating a search view with filters and group-by options. ## How It Works 1. **Activate**: Mention `@odoo-xml-views-builder` and describe the view you want. 2. **Generate**: Get complete, ready-to-paste XML view definitions. 3. **Review**: Paste existing XML and get fixes for common mistakes. ## Examples ### Example 1: Form View with Tabs ```xml hospital.patient.form hospital.patient

``` ### Example 2: Kanban View ```xml hospital.patient.kanban hospital.patient
Doctor:
``` ## Best Practices - ✅ **Do:** Use inline `invisible="condition"` (Odoo 17+) instead of `attrs` for show/hide logic. - ✅ **Do:** Use `attrs="{'invisible': [...]}"` only if you are targeting Odoo 14–16 — it is deprecated in v17. - ✅ **Do:** Always set a `string` attribute on your view record for debugging clarity. - ✅ **Do:** Use `` (v17) or `
` + field tags (v16 and below) for activity tracking. - ❌ **Don't:** Use `attrs` in Odoo 17 — it is fully deprecated and raises warnings in logs. - ❌ **Don't:** Put business logic in view XML — keep it in Python model methods. - ❌ **Don't:** Use hardcoded `domain` strings in views when a `domain` field on the model can be used dynamically. ## Limitations - Does not cover **OWL JavaScript widgets** or client-side component development. - **Search panel views** (``) are not fully covered — those require frontend knowledge. - Does not address **website QWeb views** — use `@odoo-qweb-templates` for those. - **Cohort and Map views** (Enterprise-only) are not covered by this skill.