← ClaudeAtlas

odoo-devlisted

Customizing or extending Odoo server-side — adding/modifying fields, overriding model methods (create/write/compute/onchange/constrains/unlink), extending core addons, choosing the right inheritance mode, or deciding where an override should land in the MRO. Use whenever working on an Odoo codebase, even if the user doesn't say "skill" — any time you would otherwise GUESS at Odoo's field inventory, ORM API, method resolution order, super() chain, or which hook to extend. Read ground truth first (via the odoo-introspect skill), then make the smallest safe patch and prove it with the odoo-testing gate. Targets Odoo 17/18/19.
tuanle96/odoo-ai-skills · ★ 4 · AI & Automation · score 62
Install: claude install-skill tuanle96/odoo-ai-skills
# Odoo development Odoo composes each model at runtime from the installed addon dependency graph. The field list, the method resolution order (MRO), the `super()` chain, the view layout, the security rules, and the automations that fire on write — none are reliably knowable from memory or source-grep. They exist only in **this** running instance. Guessing is the root cause of "half-working" customizations that break elsewhere. **The rule: read ground truth from the running registry first, then customize.** Discovery is a solved problem — delegate it to the **`odoo-introspect`** skill. This skill is the *customize-safely* loop layered on top of it. **Version floor: Odoo 17/18, through Odoo 19 (current LTS).** On v16 or older, some ORM/method names differ — and v17.2 → 19 renamed several you'll otherwise emit from memory: `group_operator`→`aggregator` (17.2); `check_access_rights`/`check_access_rule`→`check_access`/`has_access` (18/19); public methods are RPC-callable unless marked `@api.private` (18.2); `record._cr`/`._context`/`._uid`→`record.env.cr`/`.context`/`.uid` (19); `from odoo.osv import expression`→the `odoo.Domain` API (18.1→19); constraints/indexes can be model attributes (18.1). Check `skills/odoo-introspect/references/version-matrix.md` before relying on a signature below. ## Three different "orders" — do not conflate them 1. **Module load order** — from `depends` in `__manifest__.py`. Decides what exists when the registry builds, and **which MRO layer your