odoo-development
139
总安装量
139
周安装量
#1758
全站排名
安装命令
npx skills add https://github.com/mindrally/skills --skill odoo-development
Agent 安装分布
opencode
105
gemini-cli
103
codex
101
github-copilot
97
amp
73
claude-code
72
Skill 文档
Odoo Development
You are an expert in Python, Odoo, and enterprise business application development.
Key Development Principles
Code Quality & Architecture
- Write clear, technical responses with precise Odoo examples in Python, XML, and JSON
- Leverage Odoo’s ORM, API decorators, and XML view inheritance for modularity
- Follow PEP 8 standards and Odoo best practices
- Use descriptive naming aligned with Odoo conventions
Structural Organization
- Separate concerns across models, views, controllers, data, and security
- Create well-documented
__manifest__.pyfiles - Organize modules with clear directory structures
ORM & Python Implementation
- Define models inheriting from
models.Model - Apply API decorators appropriately:
@api.modelfor model-level methods@api.multifor recordset methods@api.dependsfor computed fields@api.onchangefor UI field changes
- Create XML-based UI views (forms, trees, kanban, calendar, graphs)
- Use XML inheritance via
<xpath>and<field>for modifications - Implement controllers with
@http.routefor HTTP endpoints
Error Management & Validation
- Utilize built-in exceptions (
ValidationError,UserError) - Enforce constraints via
@api.constrains - Implement robust validation logic
- Use try-except blocks strategically
- Leverage Odoo’s logging system (
_logger) - Write tests using Odoo’s testing framework
Security & Access Control
- Define ACLs and record rules in XML
- Manage user permissions through security groups
- Prioritize security at all architectural layers
- Implement proper access rights in ir.model.access.csv files
Internationalization & Automation
- Mark translatable strings with
_() - Leverage automated actions and server actions
- Use cron jobs for scheduled tasks
- Use QWeb for dynamic HTML templating
Performance Optimization
- Optimize ORM queries with domain filters and context
- Cache static or rarely-updated data
- Offload intensive tasks to scheduled actions
- Simplify XML structures through inheritance
- Use prefetch_fields and compute methods efficiently
Guiding Conventions
- Apply “Convention Over Configuration”
- Enforce security throughout all layers
- Maintain modular architecture
- Document comprehensively
- Extend via inheritance, never modify core code
Module Structure Best Practices
module_name/
âââ __init__.py
âââ __manifest__.py
âââ models/
â âââ __init__.py
â âââ model_name.py
âââ views/
â âââ model_name_views.xml
âââ security/
â âââ ir.model.access.csv
â âââ security_rules.xml
âââ data/
â âââ data.xml
âââ controllers/
â âââ __init__.py
â âââ main.py
âââ static/
â âââ src/
âââ wizards/
â âââ __init__.py
â âââ wizard_name.py
âââ reports/
âââ report_templates.xml
Model Definition Example
from odoo import models, fields, api
from odoo.exceptions import ValidationError
class CustomModel(models.Model):
_name = 'custom.model'
_description = 'Custom Model'
name = fields.Char(string='Name', required=True)
active = fields.Boolean(default=True)
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
], default='draft')
@api.depends('name')
def _compute_display_name(self):
for record in self:
record.display_name = record.name
@api.constrains('name')
def _check_name(self):
for record in self:
if len(record.name) < 3:
raise ValidationError("Name must be at least 3 characters")
View Definition Example
<record id="custom_model_form" model="ir.ui.view">
<field name="name">custom.model.form</field>
<field name="model">custom.model</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<field name="name"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>