Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计异常

odoo-oca-developerodoo oca 开发商

Agent Skill

odoo-oca-developer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,941

周安装

161

GitHub Stars

3

下载量

1,262
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:odoo-oca-developer(odoo oca 开发商)
来源仓库:https://github.com/miquelalzanillas/odoo-oca-convention-skill
仓库路径:skills/odoo-oca-developer
安装命令:
npx skills add https://github.com/miquelalzanillas/odoo-oca-convention-skill --skill odoo-oca-developer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/miquelalzanillas/odoo-oca-convention-skill --skill odoo-oca-developer

简介

odoo-oca-developer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。

  • 适用于 Odoo OCA 开发商相关信息的检索,可结合来源仓库和原始 README 核验具体用法。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装,需确认权限范围和维护状态。
  • 安装前建议检查是否会触发联网、命令执行或文件读写,确保符合实际使用需求。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Odoo OCA Developer

Expert assistant for Odoo module development following OCA conventions and best practices.

Core Capabilities

1. Module Creation

Create new Odoo modules from OCA template with proper structure and conventions.

Quick Start:

python scripts/init_oca_module.py my_module_name --path /path/to/addons --version 17.0

What this provides:

  • Complete OCA-compliant directory structure
  • Pre-configured __manifest__.py with required keys
  • README structure following OCA guidelines
  • Proper __init__.py imports
  • Example model, view, and security files

Module naming conventions:

  • Use singular form: sale_order_import (not sale_orders_import)
  • For base modules: prefix with base_ (e.g., base_location_nuts)
  • For localization: prefix with l10n_CC_ (e.g., l10n_es_pos)
  • For extensions: prefix with parent module (e.g., mail_forward)
  • For combinations: Odoo module first (e.g., crm_partner_firstname)

2. Module Structure

Follow OCA conventions strictly. Reference oca_conventions.md for detailed guidelines.

Essential structure:

module_name/
├── __init__.py
├── __manifest__.py
├── models/
│   ├── __init__.py
│   └── <model_name>.py
├── views/
│   └── <model_name>_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── <model_name>_security.xml
├── data/
│   └── <model_name>_data.xml
├── readme/
│   ├── DESCRIPTION.rst
│   ├── USAGE.rst
│   └── CONTRIBUTORS.rst
└── tests/
    ├── __init__.py
    └── test_<feature>.py

Key principles:

  • One file per model: models/sale_order.py
  • Views match model names: views/sale_order_views.xml
  • Demo data has _demo suffix: demo/sale_order_demo.xml
  • Migrations in versioned folders: migrations/17.0.1.0.0/

3. OCA Conventions Compliance

**manifest.py essentials:**

{
    'name': 'Module Name',
    'version': '17.0.1.0.0',  # {odoo}.x.y.z format
    'category': 'Sales',
    'license': 'AGPL-3',  # or LGPL-3
    'author': 'Your Company, Odoo Community Association (OCA)',
    'website': 'https://github.com/OCA/<repository>',
    'depends': ['base', 'sale'],
    'data': [
        'security/ir.model.access.csv',
        'views/model_name_views.xml',
    ],
    'installable': True,
}

Python code structure:

from odoo import api, fields, models, _
from odoo.exceptions import UserError

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    # Fields
    custom_field = fields.Char(string="Custom Field")

    # Compute methods
    @api.depends('order_line')
    def _compute_total(self):
        for order in self:
            order.total = sum(order.order_line.mapped('price_total'))

    # Business methods
    def action_custom(self):
        self.ensure_one()
        # Implementation

XML naming conventions:

  • Views: <model_name>_view_<type> (e.g., sale_order_view_form)
  • Actions: <model_name>_action (e.g., sale_order_action)
  • Menus: <model_name>_menu
  • Groups: <model_name>_group_<name>
  • Demo: suffix with _demo

4. Module Migration with OpenUpgrade

Migrate modules between Odoo versions following OpenUpgrade patterns. See openupgrade_migration.md for complete guide.

Migration structure:

module_name/
└── migrations/
    └── 17.0.1.0.0/
        ├── pre-migration.py
        ├── post-migration.py
        └── noupdate_changes.xml

Pre-migration example:

from openupgradelib import openupgrade

@openupgrade.migrate()
def migrate(env, version):
    # Rename fields before module loads
    openupgrade.rename_fields(env, [
        ('sale.order', 'sale_order', 'old_field', 'new_field'),
    ])

    # Rename models
    openupgrade.rename_models(env.cr, [
        ('old.model', 'new.model'),
    ])

Post-migration example:

from openupgradelib import openupgrade

@openupgrade.migrate()
def migrate(env, version):
    # Map old values to new
    openupgrade.map_values(
        env.cr,
        openupgrade.get_legacy_name('state'),
        'state',
        [('draft', 'pending'), ('confirm', 'confirmed')],
        table='sale_order',
    )

    # Recompute fields
    env['sale.order'].search([])._compute_total()

Common migration tasks:

  • Rename fields: openupgrade.rename_fields()
  • Rename models: openupgrade.rename_models()
  • Rename tables: openupgrade.rename_tables()
  • Map values: openupgrade.map_values()
  • Delete obsolete data: openupgrade.delete_records_safely_by_xml_id()

5. Module Extension

Extend core Odoo modules following OCA patterns.

Inherit existing model:

from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    custom_field = fields.Char(string="Custom Info")

Extend existing view:

<record id="res_partner_view_form" model="ir.ui.view">
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='email']" position="after">
            <field name="custom_field"/>
        </xpath>
    </field>
</record>

Module dependencies:

  • Always declare dependencies in __manifest__.py
  • Use depends key for Odoo core/OCA modules
  • Use external_dependencies for Python packages
  • Document installation requirements in README

6. Validation and Quality

Validate module structure:

python scripts/validate_module.py /path/to/module

What is checked:

  • Required files presence (__init__.py, __manifest__.py)
  • Manifest completeness (required keys)
  • OCA author attribution
  • License compliance (AGPL-3 or LGPL-3)
  • Version format (x.y.z.w.v)
  • File naming conventions
  • Directory structure

Code quality tools:

# Install pre-commit for OCA checks
pip install pre-commit
pre-commit install

# Run checks
pre-commit run --all-files

# Run specific checks
flake8 module_name/
pylint --load-plugins=pylint_odoo module_name/

Workflow Decision Tree

"I need to create a new Odoo module" → Use scripts/init_oca_module.py to generate OCA-compliant structure → Edit __manifest__.py with module details → Create models in models/ directory → Create views in views/ directory → Add security rules in security/ → Update readme/ documentation → Run validation: scripts/validate_module.py

"I need to migrate a module to a new Odoo version" → Check OpenUpgrade for breaking changes → Create migration folder: migrations/<new_version>/ → Write pre-migration script for schema changes → Write post-migration script for data transformation → Test on copy of production database → Reference openupgrade_migration.md

"I need to extend a core Odoo module" → Create new module with core module in depends → Use _inherit to extend models → Use inherit_id to extend views → Follow OCA naming: <core_module>_<feature> → Keep changes minimal and focused

"I'm not sure if my module follows OCA conventions" → Run scripts/validate_module.py → Check oca_conventions.md → Review manifest.py for required keys → Verify file naming and structure → Ensure OCA author attribution

Resources

scripts/

  • init_oca_module.py: Create new Odoo module with OCA-compliant structure
  • validate_module.py: Validate module against OCA conventions

references/

  • oca_conventions.md: Complete OCA coding standards and module structure guidelines
  • openupgrade_migration.md: OpenUpgrade migration patterns and best practices

assets/

  • module_template/: Official OCA module template with complete directory structure

Best Practices

Module Development

  • Start with OCA template: scripts/init_oca_module.py
  • Follow naming conventions strictly
  • One file per model
  • Keep models, views, and data separate
  • Use meaningful xmlids following OCA patterns
  • Include comprehensive tests
  • Document in readme/ folder

Code Quality

  • Follow PEP8 for Python code
  • Use 4-space indentation in XML
  • No SQL injection vulnerabilities
  • Never bypass ORM without justification
  • Never commit transactions manually
  • Use _logger.debug() for import errors
  • Handle external dependencies properly

Git Commits

Format: [TAG] module_name: short summary

Common tags:

  • [ADD] - New feature/module
  • [FIX] - Bug fix
  • [REF] - Refactoring
  • [IMP] - Improvement
  • [MIG] - Migration
  • [REM] - Removal

Migration Strategy

  1. Study OpenUpgrade analysis for target version
  2. Check for breaking changes in core modules
  3. Test on database copy first
  4. Write pre-migration for schema changes
  5. Write post-migration for data transformation
  6. Document breaking changes in README
  7. Update version following semantic versioning

Common Patterns

Pattern: Add computed field with dependencies

total = fields.Float(compute='_compute_total', store=True)

@api.depends('line_ids.amount')
def _compute_total(self):
    for record in self:
        record.total = sum(record.line_ids.mapped('amount'))

Pattern: Extend view safely

<xpath expr="//field[@name='partner_id']" position="after">
    <field name="custom_field"/>
</xpath>

Pattern: Add security group

<record id="group_custom" model="res.groups">
    <field name="name">Custom Access</field>
    <field name="category_id" ref="base.module_category_sales"/>
</record>

Pattern: Migration with value mapping

openupgrade.map_values(
    env.cr,
    openupgrade.get_legacy_name('old_field'),
    'new_field',
    [('old_value', 'new_value')],
    table='model_table',
)

Troubleshooting

Module not appearing in Apps

  • Check 'installable': True in manifest.py
  • Verify init.py imports
  • Run: odoo-bin -u module_name -d database

Import errors

  • Add try-except for external dependencies
  • Document installation in readme/INSTALL.rst
  • Add to requirements.txt for Python packages

Migration fails

  • Check pre-migration runs before module load
  • Verify table/column names with \d table in psql
  • Use openupgrade.logged_query() for debugging
  • Test on copy database first

Tests failing

  • Use tagged('post_install', '-at_install')
  • Test with minimal user permissions using @users()
  • Avoid dynamic dates, use freezegun
  • Mock external services

Quick Reference

Create module:

python scripts/init_oca_module.py my_module --version 17.0

Validate module:

python scripts/validate_module.py path/to/module

Check conventions: See oca_conventions.md

Migration guide: See openupgrade_migration.md

Module template: Copy from assets/module_template/

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.14%
按下载量换算443

Claude

31.87%
按下载量换算402

Cursor

19.26%
按下载量换算243

Gemini CLI

9.15%
按下载量换算115

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills