Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计通过

odooodoo 搜索

Agent Skill

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

总安装

240

周安装

10

GitHub Stars

公开资料未说明

下载量

80
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/krishamaze/skills --skill odoo

简介

odoo 用于查找、检索和筛选相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中快速定位候选结果。
  • 使用时需要结合来源仓库、安装命令和原始 README 继续核验具体用法。
  • 安装前建议确认权限范围、维护状态,以及是否会触发联网或文件读写。
  • 涉及命令执行时,应在提示词中明确确认步骤和失败处理方式。

SKILL.md

Odoo 19.0 Development Skill

Source-verified knowledge of Odoo 19.0 internals — ORM, module structure, core models, field types, decorators, and critical breaking changes from earlier versions. No opinions about business logic. Pure platform facts.


Version

Current stable: 19.0 (default branch on odoo/odoo GitHub as of 2026) Branch naming: 19.0, 18.0, 17.0 — each is a separate long-lived branch. Community edition: odoo/odoo. Enterprise: odoo/enterprise (private).


Module Structure

Official structure from docs.odoo.com/19.0/contributing/development/coding_guidelines:

my_module/
├── __init__.py
├── __manifest__.py
├── models/
│   ├── __init__.py
│   └── my_model.py
├── views/
│   └── my_model_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── my_module_security.xml
├── data/
│   └── my_module_data.xml
├── controllers/
│   ├── __init__.py
│   └── my_controller.py
├── report/
│   └── my_report.xml
└── static/
    └── src/

__manifest__.py

{
    'name': 'My Module',
    'version': '19.0.1.0.0',   # format: <odoo_version>.<major>.<minor>.<patch>.<fix>
    'summary': 'One-line description',
    'description': """Long description""",
    'author': 'Author Name',
    'website': 'https://example.com',
    'category': 'Accounting/Accounting',
    'depends': ['base', 'account'],
    'data': [
        'security/ir.model.access.csv',
        'views/my_views.xml',
    ],
    'demo': ['demo/demo_data.xml'],
    'installable': True,
    'application': False,
    'license': 'LGPL-3',
}

Required: name, depends. Everything else is optional but recommended. version must start with the Odoo major version (19.0.).


ORM — Imports (19.0)

# Standard
from odoo import models, fields, api, Command, _
from odoo.fields import Domain
from odoo.exceptions import UserError, ValidationError, AccessError
from odoo.tools import float_compare, float_is_zero, float_round
from odoo.tools.translate import _

# Registry (CHANGED in 19.0)
from odoo.modules.registry import Registry   # NOT: from odoo import registry

Model Definition

from odoo import models, fields, api

class MyModel(models.Model):
    _name = 'my.model'
    _description = 'My Model'
    _order = 'name asc'
    _rec_name = 'name'

    name = fields.Char(string='Name', required=True)
    active = fields.Boolean(default=True)

Model types:

  • models.Model — persistent, stored in PostgreSQL
  • models.TransientModel — temporary, auto-cleaned (wizards)
  • models.AbstractModel — mixin, no table

To extend an existing model:

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

Field Types

Read references/fields.md for full parameter reference. Quick types:

FieldPython typeNotes
Charstrmax_length optional
Textstrmulti-line
Htmlstrsanitized HTML
Integerint
Floatfloatdigits=(precision, scale)
Monetaryfloatrequires currency_field
Booleanbool
Datedatestored as DATE in PG
Datetimedatetimestored as TIMESTAMP in PG, always UTC
Selectionstrselection=[('key','Label')]
Many2oneintFK to other model
One2manyrecordsetinverse_name required
Many2manyrecordsetrelation table auto-created
Binarybytesattachment=True for large files

ORM Methods

# Create
record = self.env['my.model'].create({'name': 'Test'})

# Read
record.name
records = self.env['my.model'].browse([1, 2, 3])

# Search
records = self.env['my.model'].search([('name', '=', 'Test')], limit=10, order='name asc')
count = self.env['my.model'].search_count([('active', '=', True)])

# Write
record.write({'name': 'Updated'})

# Unlink
record.unlink()

# sudo
self.env['my.model'].sudo().search([])

# with_company
self.env['my.model'].with_company(company_id).create({})

Decorators

@api.depends('field1', 'field2')          # computed field trigger
def _compute_something(self):
    for record in self:
        record.result = record.field1 + record.field2

@api.onchange('field1')                   # UI-only, not stored
def _onchange_field1(self):
    self.field2 = self.field1 * 2

@api.constrains('field1', 'field2')      # validation, raises ValidationError
def _check_something(self):
    for record in self:
        if record.field1 < 0:
            raise ValidationError("Field1 must be positive")

@api.model                                # class-level method (no self record)
def create(self, vals):
    return super().create(vals)

@api.model_create_multi                   # batch create (preferred over @api.model for create)
def create(self, vals_list):
    return super().create(vals_list)

@api.private                              # NEW in 19.0 — marks method as not RPC-accessible
def _internal_method(self):
    pass

Commands (One2many / Many2many)

from odoo import Command

# Create and link new record
Command.create({'name': 'New'})

# Link existing record (Many2many)
Command.link(record.id)

# Unlink (Many2many — remove from relation only)
Command.unlink(record.id)

# Delete record
Command.delete(record.id)

# Replace all records
Command.set([id1, id2, id3])

# Clear all
Command.clear()

# Update existing
Command.update(record.id, {'name': 'Updated'})

Domain Syntax

# Standard domain
[('field', 'operator', value)]

# Operators: =, !=, <, >, <=, >=, in, not in, like, ilike, not like, not ilike, =like, =ilike, any, not any

# Logical operators
['&', ('a', '=', 1), ('b', '=', 2)]   # AND (default)
['|', ('a', '=', 1), ('b', '=', 2)]   # OR
['!', ('a', '=', 1)]                   # NOT

# New in 17+: Domain class
from odoo.fields import Domain
d = Domain('field', '=', value)
combined = d & Domain('other', '!=', False)

Critical Breaking Changes by Version

Read references/breaking-changes.md for full list. Critical ones:

Broken in 17.0

  • name_get() deprecated → override _compute_display_name instead
  • read_group() deprecated → use _read_group() (internal) or formatted_read_group() (public)
  • group_operator field attr deprecated → use aggregator
  • Translations now stored as JSONB, not in database table

Broken in 18.0

  • group_operator produces deprecation warning — must use aggregator

Broken in 19.0

  • read_group removed from public API
  • name_get() removeddisplay_name is the only way
  • odoo.osv deprecated
  • record._cr, record._context, record._uid deprecated (use self.env.cr, self.env.context, self.env.uid)
  • HTTP routes: type='json' → must be type='jsonrpc'
  • res.partner.title model removed
  • from odoo import registryfrom odoo.modules.registry import Registry
  • UoM: use relative_uom_id for direct unit relationships
  • res.groups.privilege replaces ir.module.category for group categories
  • Demo data not loaded by default — must be explicitly requested
  • ORM code moved to odoo/orm/ subpackage (internal restructure)

Reference Files

Load on demand:

FileLoad when
references/fields.mdNeed full field parameter reference
references/accounting.mdWorking with account.move, account.payment, account.journal
references/breaking-changes.mdUpgrading or porting modules between versions
references/security.mdAccess rights, record rules, ir.model.access.csv

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

38.09%
按下载量换算30

Claude

30.15%
按下载量换算24

Cursor

17.88%
按下载量换算14

Gemini CLI

10.18%
按下载量换算8

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

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

来源信息

继续浏览同类 Skills