Odoo backend
Use when working on Odoo 19 server-side code or backend tests: Python models, ORM recordsets, fields/decorators, domains, SQL/cache, `__manifest__.py`, XML/CSV data, ACLs/rules, `sudo`, controllers, `@route`, `ir.cron`, JSON-2/XML-RPC, QWeb reports, `TransactionCase`, `HttpCase`, `Form`, tours, `start_tour`, or `--test-tags`. Not for web-client JS, Owl internals, Hoot, frontend assets, views, or widgets.From its SKILL.md
npx -y skills add basaltbytes/skills --skill odoo-backendAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.1 KB, as published. Nobody here has run it
The skill is based on Odoo 19.0 backend and external API documentation, generated at 2026-04-22.
Odoo 19 Backend
Use this for Odoo-specific server behavior agents often get wrong. It skips generic Python, ORM, and XML material. Load only the narrowest reference that matches the task.
Quick Route
| If the task is about... | Read |
|---|---|
__manifest__.py, XML/CSV loading, record/function tags, noupdate | core-module-structure-and-data |
recordsets, _inherit, _inherits, reserved fields, constraint/index attrs | core-orm-models-recordsets |
computed/related fields, @api.depends, @api.onchange, @api.constrains, @api.model_create_multi, @api.private | core-fields-and-decorators |
domains, search_fetch, _read_group, raw SQL, SQL(...), flushing, cache invalidation, modified(...) | core-domains-sql-and-cache |
ACL CSVs, record rules, sudo, field groups=, RPC exposure, SQL injection, safe_eval, escaping HTML | core-security-acl-and-rules |
action dicts, ir.actions.server, ir.cron, _commit_progress | features-actions-and-cron |
Python controllers, @route, request env, controller inheritance | features-controllers-and-http |
external integrations, bearer-key JSON-2, /json/2, legacy XML-RPC / JSON-RPC execute_kw | features-external-api-and-rpc |
QWeb PDF/HTML reports, paper formats, custom _get_report_values, report assets/fonts | features-qweb-reports |
mail.thread, aliases, activities, common backend mixins | features-common-mixins |
TransactionCase, HttpCase, Form, --test-tags, tours, query-count assertions | testing-backend-and-tours |
| profiling, batching, prefetch, query budgets, indexes | performance-profiling-and-batching |
| final review pass, Odoo 19 deltas, common regressions | best-practices-odoo-19-backend |
Backend Defaults
- Model methods may receive empty or multi-record
self; enforce singleton semantics explicitly. - Public model methods are RPC-reachable. Keep security in Python, ACLs, and rules, not only in views.
- Prefer ORM. If SQL is necessary, flush before reads/writes and invalidate cache after writes.
- Batch by default:
_read_group, batchcreate, recordset-aware loops, and query-count checks catch most regressions. - Keep real invariants on models, not only in
onchange, cron wrappers, or controllers. - Before shipping, read best-practices-odoo-19-backend.
Cross-Skill Guidance
- Use the odoo router when the request is broad, ambiguous, or spans multiple Odoo domains.
- Use the odoo-frontend skill when the task is primarily web-client JavaScript, views, widgets, arch XML, or frontend assets.
- Use the odoo-javascript-testing skill when the task is Hoot, web test helpers, mock-server work, or frontend JS testing internals.