Skip to content
Skillpedia
APIs & servers (backend)48k · #3730

odoo-module-developer

Lets your agent create custom modules for Odoo. It teaches how to structure code and use best development practices.

What it does

This assistant helps create and organize custom modules for Odoo, a business management system. It guides you in setting up the file structure, defining data, and following programming best practices.

When to use it

  • ✓When you need to create a new module from scratch in Odoo.
  • ✓When wanting to add new features or fields to an existing module.
  • ✓To fix errors related to a module's structure or configuration.

Example of what to ask your AI

“Create a module named 'inventory_control' with a model for products.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-module-developer/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/odoo-module-developer/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

You describe the module you want to build. The assistant generates the basic folder and file structure, including the main configuration file (__manifest__.py) and an example file for defining data (models).

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill odoo-module-developer

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/odoo-module-developer/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Odoo Module Developer

Overview

This skill transforms your AI into an expert Odoo custom module developer. It guides you through scaffolding new modules, defining models, setting up security, and following Odoo's coding conventions for both Community and Enterprise editions.

When to Use This Skill

  • Starting a new custom Odoo module from scratch.
  • Extending an existing Odoo model (e.g., adding fields to sale.order).
  • Troubleshooting module loading errors or manifest issues.
  • Implementing onchange, compute, and constraint methods correctly.

How It Works

  1. Activate: Mention @odoo-module-developer and describe the module you want to build.
  2. Scaffold: Get the full folder structure with __manifest__.py, __init__.py, models, views, and security files.
  3. Review: Paste existing code and get a review against Odoo best practices.

Examples

Example 1: Scaffold a New Module

Prompt: Create a module called "hospital_management" with a model for patients

Generated structure:

hospital_management/
├── __manifest__.py
├── __init__.py
├── models/
│   ├── __init__.py
│   └── hospital_patient.py
├── views/
│   └── hospital_patient_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── security.xml
└── data/

__manifest__.py:

{
    'name': 'Hospital Management',
    'version': '17.0.1.0.0',
    'category': 'Healthcare',
    'depends': ['base', 'mail'],
    'data': [
        'security/security.xml',
        'security/ir.model.access.csv',
        'views/hospital_patient_views.xml',
    ],
    'installable': True,
    'license': 'LGPL-3',
}

models/hospital_patient.py:

from odoo import models, fields, api

class HospitalPatient(models.Model):
    _name = 'hospital.patient'
    _description = 'Hospital Patient'
    _inherit = ['mail.thread', 'mail.activity.mixin']

    name = fields.Char(string='Patient Name', required=True, tracking=True)
    birth_date = fields.Date(string='Birth Date')
    doctor_id = fields.Many2one('res.users', string='Assigned Doctor')
    state = fields.Selection([
        ('draft', 'New'),
        ('confirmed', 'Confirmed'),
        ('done', 'Done'),
    ], default='draft', tracking=True)

Best Practices

  • ✅ Do: Always prefix your model _name with a namespace (e.g., hospital.patient).
  • ✅ Do: Use _inherit = ['mail.thread'] to add chatter/logging automatically.
  • ✅ Do: Specify version in manifest as {odoo_version}.{major}.{minor}.{patch}.
  • ✅ Do: Set 'author' and 'website' in __manifest__.py so your module is identifiable in the Apps list.
  • ❌ Don't: Modify core Odoo model files directly — always use _inherit.
  • ❌ Don't: Forget to add new models to ir.model.access.csv or users will get access errors.
  • ❌ Don't: Use spaces or uppercase in folder names — Odoo requires snake_case module names.

Limitations

  • Does not cover OWL JavaScript components or frontend widget development — use @odoo-xml-views-builder for view XML.
  • The manifest example targets Odoo 17; verify the exact version and supported module/view syntax. Older Odoo releases also use module manifests; do not infer a nonexistent manifest cutoff.
  • Does not cover multi-company or multi-website configuration; those require additional model fields (company_id, website_id).
  • Does not generate automated test files — use @odoo-automated-tests for that.

The displayed tree is a scaffold, not a complete installable module: supply imports, XML views, named groups, ACLs and record rules before claiming it works. Avoid default broad patient-data access; chatter/tracking can disclose sensitive values, so select fields and followers deliberately. Test installation, multi-record compute/constraints and unauthorized access in a disposable database, never through an unrequested production module upgrade.

FAQ

What is an Odoo module?

A module is a code package that adds functionality to the Odoo system, such as sales, inventory, accounting management, etc.

What is the __manifest__.py file?

It's an essential configuration file for any Odoo module. It contains information like the module's name, version, dependencies, and which data files it uses.

What does 'model inheritance' mean?

It's a technique to extend or modify the functionality of an existing model (data table) in Odoo without altering the original code. You can add new fields, methods, or rules.

Details

Original description by the author

Expert guide for creating custom Odoo modules. Covers __manifest__.py, model inheritance, ORM patterns, and module structure best practices.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#3730
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills