odoo-ai-skills reads ground truth from your running instance, then verifies and gates the change before it ships.
Field names, the method-resolution order, the rendered view arch, record rules. None of it is reliably knowable from training data or a static index, so LLMs fail silently at runtime, not at lint time.
Invent field and model names, or set state = 'confirmed' where Odoo actually uses 'sale'.
Reach for removed APIs: attrs, states, <tree>, name_get.
Call super() at the wrong MRO layer, so the override silently never runs.
Sprinkle sudo() to silence access errors, bypassing ACL and record rules.
Ship stored computes with an incomplete @api.depends, so totals go quietly stale.
Pass review, run for admin on one record, then break on a second company or in a batch.
One local pipeline. The agent reads the live registry before it writes a line, and the change carries proof to the merge.
Dump the model, MRO, security and runtime flow from the live instance.
Build the smallest correct change and prove it with a real test.
Turn the proof into a verdict: approve, needs-human, or block.
A signed evidence artifact and a sticky PR comment anyone can read.
The gate aggregates the evidence into one decision. Warm cache can speed the analysis, but only a cold run is merge-eligible.
Ground truth was read, the changed method ran through the live MRO, and the changed lines are covered. It ships.
Evidence is thin or the change touches a sensitive domain. A covering sign-off is required, never a silent pass.
A claim fails against the instance, or an S3 or S4 finding trips the fail-closed policy. High coverage with a runtime break is a block.
Findings are classified S0 to S4. S3 and S4 can fail the build closed unless a human sign-off downgrades them.
Better models write plausible-wrong code faster, so the leverage moves to feeding the agent instance truth before it writes, and to an artifact everyone downstream can trust.
Small, per-model instance facts to read before an edit. Also a bounded read-only MCP server, redacted, no arbitrary RPC.
One read-only command for the takeover inventory: modules, Studio footprint, security, data volumes, upgrade-risk flags, rendered to HTML.
Content-addressed context, fast in the agent loop. One rule: warm cache never approves a merge.
Nine valid business-record recipes. Emit a TransactionCase skeleton, or run it in a savepoint and roll back.
Classify requirements against the live instance, with effort bands. Decision support for a consultant, not a replacement.
Turn the live surface and risk scenarios into role-based UAT scripts a consultant hands a client.
A stable, public, machine-validatable schema: git binding, per-check severity, cache provenance, sign-offs.
A composite GitHub Action and a sticky PR comment. Opt-in fail-closed on S3 and S4 findings.
A reproducible safety benchmark measuring the unsafe-change escape rate, not task completion.
A real sale.order change, taken through introspect, patch, and test.

Where your Odoo runs decides what the suite can do. It never claims to verify custom code where custom code cannot run.
Shell, SSH and CI are available, so the code path runs end to end: inspect, runtime-verify, and enforce the gate.
GitHub-driven CI and staging branches. Run the gate before or alongside the platform's own build.
No custom code, so nothing to code-verify. End-user guides work over RPC today; the dossier and fit-gap over RPC are on the v0.15 roadmap.
The integration smoke runs every inspection stage and gate against live Odoo 17, 18 and 19 in CI. The eval harness scores detection 1.0 and truth-recall 1.0 on all three: every classic hallucination caught, every real confirmed. Validated end to end on a real 390-module Enterprise instance, including a runtime trace of sale.order.action_confirm that captured the cross-app cascade and rolled back.
# Claude Code: register the marketplace, then install claude plugin marketplace add tuanle96/odoo-ai-skills claude plugin install odoo-ai-skills@odoo-ai # or any skills-compatible agent (Codex, Gemini CLI, Copilot) npx skills add tuanle96/odoo-ai-skills # gather ground truth before writing code odoo-ai --db <DB> all sale.order --methods action_confirm # the consultant one-liner: read-only instance dossier odoo-ai --db <DB> dossier
Odoo 17, 18 or 19. Bring any coding agent, any hosted index, any grep. They propose names; this decides whether the patch is safe on this instance.
Self-hosted and Odoo.sh get the full code gate. Odoo Online is advisory-only.
Local-first and sovereign. Everything runs in your shell. No account, no API key, no per-seat fee. Sensitive instance data never leaves your environment.