mcpField
O
odoo-module-developer

odoo-module-developer

github.com/sickn33开发48.7k64 次安装今天更新
代码仓库

关于 odoo-module-developer

Odoo Module Developer 是面向 Odoo 开发者的技能,用于创建或扩展自定义模块。它指导模块脚手架、模型与安全设置、编码规范和现有代码审查,并说明其适用范围之外的事项。

主要功能

  1. 01生成模块目录结构
  2. 02定义模型并扩展现有模型
  3. 03设置安全文件和访问规则
  4. 04遵循 Odoo 编码规范
  5. 05审查模块代码与清单

适用场景

  1. 01创建自定义 Odoo 模块
  2. 02为现有模型添加字段
  3. 03排查加载或清单问题
  4. 04实现 onchange、compute 或 constraint 方法

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill odoo-module-developer

安装后在 Claude Code 中输入/odoo-module-developer确认已加载。

详细介绍

Odoo 模块开发者

概述

此技能可将你的 AI 打造成 Odoo 自定义模块开发专家。它会指导你搭建新模块框架、定义模型、设置安全机制,并遵循 Odoo 社区版和企业版的编码规范。

适用场景

  • 从头开始开发新的 Odoo 自定义模块。
  • 扩展现有 Odoo 模型(例如,为 sale.order 添加字段)。
  • 排查模块加载错误或清单问题。
  • 正确实现 onchange、compute 和 constraint 方法。

工作原理

  1. 启用:提及 @odoo-module-developer,并描述你想构建的模块。
  2. 搭建框架:获取完整的文件夹结构,其中包括 __manifest__.py、__init__.py、模型、视图和安全文件。
  3. 审查:粘贴现有代码,获取针对 Odoo 最佳实践的审查结果。

示例

示例 1:搭建新模块框架

提示词: Create a module called "hospital_management" with a model for patients

生成的结构:

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)

最佳实践

  • ✅ 应该: 始终为模型的 _name 添加命名空间前缀(例如,hospital.patient)。
  • ✅ 应该: 使用 _inherit = ['mail.thread'] 自动添加讨论区/日志记录功能。
  • ✅ 应该: 按 {odoo_version}.{major}.{minor}.{patch} 格式在清单中指定 version。
  • ✅ 应该: 在 __manifest__.py 中设置 'author' 和 'website',以便在应用列表中识别你的模块。
  • ❌ 不要: 直接修改 Odoo 核心模型文件——始终使用 _inherit。
  • ❌ 不要: 忘记将新模型添加到 ir.model.access.csv,否则用户会遇到访问错误。
  • ❌ 不要: 在文件夹名称中使用空格或大写字母——Odoo 要求模块名称采用 snake_case 格式。

限制

  • 不涵盖 OWL JavaScript 组件或前端微件开发——视图 XML 请使用 @odoo-xml-views-builder。
  • 清单示例适用于 Odoo 17;请确认具体版本及受支持的模块/视图语法。较旧的 Odoo 版本也使用模块清单;不要推断出一个并不存在的清单截止版本。
  • 不涵盖多公司或多网站配置;这些配置需要额外的模型字段(company_id、website_id)。
  • 不会生成自动化测试文件——请使用 @odoo-automated-tests。

所展示的目录树只是框架,并非完整的可安装模块:在声称模块可用之前,需补充导入语句、XML 视图、命名组、ACL 和记录规则。避免默认授予对患者数据的广泛访问权限;讨论区/跟踪功能可能泄露敏感值,因此应谨慎选择字段和关注者。在一次性数据库中测试安装、多记录计算/约束以及未经授权的访问;切勿通过未经请求的生产模块升级进行测试。

评论

支持 Markdown