Creating a module
From describing the need to a tested module: connecting the connector, describing, letting Claude write, deploying to a sandbox and fixing.
7 min readUpdated October 1, 2026
This guide starts from a need expressed in plain language and stops at a module genuinely running on a test Odoo instance.
Connecting the connector
Aidoo Modules has its own MCP connector, distinct from the one that reaches your Odoo data. Prerequisite: an active Odoo connection in Aidoo AI, from which Aidoo infers your modules' edition and version.
Add the connector in Claude
Same as for Aidoo AI: Settings → Connectors → Add custom connector, with the Modules connector URL. Authentication runs through OAuth, no key to copy.
Authorize the workspace
You are redirected to Aidoo, you pick the workspace, you authorize. The connector then receives a key from the module-specific family, with no access whatsoever to your Odoo data.

Each project shows its status, its technical name, the Odoo edition and version it targets, and its file count. At the top sits the environment's shared sandbox: a single trial Odoo where every enabled module lives together. The Sandbox page of the Modules menu sums up the state of each environment's sandbox (Production, Staging) and the modules installed in it.
Describing the need
This is the step that determines the quality of the result. Three things to spell out.
What it does, from the user's point of view. Not "add a many2one field", but "every order must be attached to a site, and we must be able to filter orders by site".
Where it shows up. In which view, at which point on the screen, with which columns in the list. Without that, the field will exist without being visible where you expect it.
The business rules. Mandatory or not, default value, who may change it, what happens when the record changes state.
Create a "Site management" module. It adds a Site model with a code, a name, a customer and a planned end date. Sales orders and invoices can be attached to a site; the field is visible in the list view and filterable. Add a tracking screen showing, per site, the total ordered and the total invoiced.
What Claude does
It reads your Odoo structure
The models involved, their real fields, their relations. That is why the generated module fits your existing customisations instead of starting from a stock Odoo. To see the stock starting point, browse for instance the res.partner page of our explorer.
It creates the skeleton
Manifest, directory tree, base files. The Odoo edition and version are inferred from your connection, you have nothing to specify.
It writes the files
Python models, XML views, access rights, demo data. Every file is checked against the syntax rules of your Odoo version, and a warning gets fixed before deployment. You see each file as it goes and can ask for a correction at any point.
It deploys to a sandbox
An ephemeral Odoo instance is provisioned, your module is installed on it, and you receive a login URL.
Following the deployment
Installation takes a few minutes. Claude reads the logs and tells you where the provisioning stands, then whether the installation succeeded. On a Python or XML error, it reads the trace and fixes it on its own.
Testing for real
This is the step not to rush
A module that installs without error is not a module that does what you want. Open the sandbox, create records, follow your real flow end to end.

A module page has three tabs: Overview (test sandbox, going live, media), Code (Odoo versions, files and editor) and Odoo Store (publishing listing).
Everything starts from the Test sandbox card, on the Overview tab. "Open sandbox" signs you into the trial Odoo automatically, with no credentials to type. "Logs" follows the installation live, and "Update this module" reinstalls this module alone, leaving the environment's other modules untouched.
The Code tab shows the file tree and its content: the manifest, the models, the views, the access rights. That is what Claude wrote, readable and editable by hand.
What to check:
- the field appears where you need it, not only in the form
- filters and grouping work in the list view
- business rules fire at the right moment
- nothing is broken in the neighbouring standard screens
- access rights match your user profiles
When something is off, describe it plainly:
The site field does not appear in the invoice list view, and I would like to be able to group by site from the Group by menu.
Claude fixes and redeploys. Every change returns the project to draft: a fresh test is required before any production deployment.
Screenshots and video
Once the sandbox is ready, the Media card (beta) on the Overview tab produces screenshots and a video of the module's screens: "Generate", pick photos, video or both, and optionally say what to show. Allow about a minute. Claude can also start them:
Take screenshots of the per-site tracking, with the ordered and invoiced totals.
The screenshots join the module's gallery and can illustrate its Odoo Apps Store listing.
Porting the module to another Odoo version
On the Code tab, "Another version" copies the code of the version on screen to another Odoo version (16.0 to 19.0) and adjusts the version number in the manifest. Nothing is ported automatically: Aidoo flags the files whose syntax does not suit the target version, and Claude does the porting.
Port the Site management module to Odoo 18.
Each version has its own tab. Editing a variant does not return the base version to draft. The test sandbox installs the module's base version.
The module icon
An Odoo module has an icon in the Apps menu. You can ask for one, chosen from a library of business icons with a background colour, or change it by clicking the icon at the top of the module page. It is shared by all versions of the module.
Put an orange construction-site icon on the module.
What it costs
Each install or update of a module in the sandbox costs 25 credits, drawn from the pool shared with agents. Writing files, reading the schema and taking screenshots cost nothing beyond the conversation itself.
In practice, a simple module takes two to four deployments to get right: budget around a hundred credits.
One sandbox at a time during the trial
The free trial allows a single concurrent sandbox and three module projects, with no production deployment. The Standard plan raises that to three sandboxes and unlimited projects.
Next step
- GitHub and going live: versioning the module and installing it on your real Odoo