odoo-debuglisted
Install: claude install-skill tuanle96/odoo-ai-skills
# Odoo debugging
Most Odoo errors are about the **composed runtime**, not a typo: a field/method/view that exists only after the addon graph loads, an override that ran (or didn't) at the wrong MRO layer, a record rule, or a stale cache. The top traceback frame is often not the cause. **Decode the error class first, then read ground truth** before editing — delegate discovery to the **`odoo-introspect`** skill (`odoo-ai all <model>`).
**Version floor: Odoo 17/18, through Odoo 19 (current LTS).** `--dev` sub-flags and `--log-handler` names target 17/18+; `breakpoint()` needs Python 3.7+. Older → `skills/odoo-introspect/references/version-matrix.md`.
## Symptom → first tool
| Symptom | First tool |
|---------|-----------|
| `KeyError: 'x'` / "Field x does not exist" | `model_brief` field inventory — is it real, which addon, did the dep load? |
| `AccessError` / "not allowed to" | `odoo-security` → dump ACL + record rules (admin-works ⇒ record rule) |
| `MissingError` / record does not exist | delete/rollback ordering, or company record rule hiding it; `trace_flow` |
| Wrong / stale computed value | `model_brief` `depends` — incomplete `@api.depends` (see `odoo-perf`) |
| "My override never runs" | `model_brief` MRO + `trace_flow` — real call order, not assumed |
| Big flow does the wrong thing | `trace_flow` — actual cross-addon call sequence |
| **A value is wrong at runtime — what *was* it?** | `state_capture` — break at the `model.method` and dump args/locals/`self` |
|