Odoo
Odoo operating workflow for live ERP systems. Use this when the agent must inspect, report on, reconcile, import, configure, or safely change data in Odoo Online, Odoo.sh, or self-hosted environments.
When to Use
Use when the task clearly belongs to Odoo: CRM, quotations, sales orders, invoices, stock moves, purchase orders, manufacturing, projects, subscriptions, or accounting. Best fit when the user needs help across modules, environments, and hosting surfaces instead of only one narrow report or one raw API call.
Use this skill to turn vague business asks into safe, module-aware actions: identify the right records, choose the right interface, preview impact, and only then write or automate.
Architecture
Memory lives in ~/odoo/. If ~/odoo/ does not exist, run setup.md. See memory-template.md for structure.
CODEBLOCK0
Quick Reference
Use the smallest matching file instead of mentally loading the whole ERP every time.
| Topic | File |
|---|
| Setup guide | INLINECODE4 |
| Memory template |
memory-template.md |
| Hosting surface map |
surfaces.md |
| Operating lanes by module |
operations.md |
| Real request translations |
examples.md |
| Safe writes and approval ladder |
safety.md |
| Reporting and KPI scoping |
reporting.md |
| API, imports, and automation choices |
integrations.md |
| Common Odoo models and objects |
models.md |
| Broken flow and access triage |
triage.md |
Requirements
- - No credentials are required to install this skill.
- Runtime access depends on the Odoo instance, credentials, and tools the user already has.
- Detect the hosting surface early: Odoo Online, Odoo.sh, or self-hosted changes what is possible and what is safe.
- Prefer read-only review first, then the smallest write path that matches the job.
- Treat custom modules, record rules, fiscal locks, and warehouse operations as part of the system design, not annoying exceptions.
- Require explicit user confirmation before destructive writes, mass updates, imports that overwrite data, or changes to posted accounting and completed stock records.
Core Rules
1. Identify the Lane Before Touching Records
- - Classify the task first: report, operational write, configuration, import, reconciliation, integration, or upgrade triage.
- The lane and hosting surface change the safe interface, the validation steps, and who needs to confirm.
- If the lane is unclear, stay in discovery mode until the intent is explicit.
2. Resolve Module, Model, and Business Object Precisely
- - Name the module and underlying model before proposing fields, filters, or automations.
- Similar nouns hide different records: lead vs opportunity, quotation vs sales order, product template vs product variant, invoice vs journal entry.
- If custom modules or renamed fields may exist, verify them before pretending the default schema applies.
3. Preview Before Any Write
- - Preview with domains, sample rows, counts, target fields, and side effects before a write or import.
- For bulk work, explain the selection logic, duplicate risk, and rollback path first.
- Never move from natural-language intent straight to
create, write, unlink, or import.
4. Respect Finality in Accounting, Inventory, and Procurement
- - Posted journal entries, tax locks, stock valuation, landed costs, receipts, and vendor bills have downstream consequences.
- Prefer reversal, cancellation, compensating entry, or corrective follow-up over direct edits to finalized business documents.
- If the user asks for a shortcut that breaks auditability, say so plainly and propose the compliant path.
5. Choose the Lowest-Risk Interface
- - Use the Odoo UI for one-off review and simple operational flows.
- Use CSV import for structured bulk changes with reviewable input.
- Use XML-RPC or JSON-RPC only when automation, repeatability, or cross-system orchestration justifies it.
- Do not recommend direct database writes unless the user is doing controlled backend repair and fully understands the blast radius.
6. Scope Business Context Before Giving Numbers
- - Confirm company, timezone, currency, warehouses, fiscal period, and status filters before reporting.
- Odoo metrics are easy to misstate because draft, canceled, backordered, and multi-company data often coexist.
- If a dashboard answer depends on accounting policy or custom states, surface that dependency instead of hiding it.
Quick Start
- 1. Detect the lane: reporting, operational change, import, config, or integration.
- Identify the Odoo surface: hosting model, modules involved, environment, version if known, and any customizations.
- Open the matching file:
-
surfaces.md for Odoo Online, Odoo.sh, or self-hosted constraints
-
operations.md for day-to-day business flows
-
examples.md for fast translation from user request to lane and safe first move
-
reporting.md for KPIs and reconciliation
-
safety.md for risky writes, corrections, and approvals
-
integrations.md for API, import/export, and automation design
-
triage.md for access, module, and workflow failures
- 4. Explain the impact before suggesting an operation that changes records or business state.
Default Moves
Use these defaults when the request is underspecified or when multiple Odoo paths are possible. They are not shortcuts; they are the safest first move for each common situation.
| Situation | First move | Why |
|---|
| Vague business request | Translate it into module, model, state, and output format | Prevents acting on the wrong object |
| Unknown hosting model |
Classify as Odoo Online, Odoo.sh, or self-hosted before suggesting tools | UI, shell, logs, and API access differ sharply |
| Bulk update | Preview affected records, duplicates, required keys, and rollback plan | Imports and mass writes are easy to misapply |
| Reporting request | Lock company, period, timezone, status filters, and measures | Odoo numbers drift fast without scope |
| Automation request | Decide between server action, scheduled action, import, or external API | The cheapest automation is often already inside Odoo |
| Access error | Check groups, record rules, company scope, and environment first | Most "broken" actions are permissions or context |
| Broken inventory/accounting flow | Preserve traceability, then fix upstream document or post reversal | Direct edits often make audits worse |
Common Traps
- - Treating every request as CRUD when the real task is business process correction
- Mixing draft and posted documents in the same report without saying so
- Writing against
product.template when the workflow actually needs variants on INLINECODE25 - Importing records without stable external IDs, natural keys, or duplicate handling
- Editing completed stock or posted accounting moves directly instead of using corrective flows
- Mixing advice for Odoo Online, Odoo.sh, and self-hosted as if all three exposed the same tools
- Assuming standard Odoo fields when the instance has custom modules, studio fields, or renamed states
- Recommending database surgery before exhausting safer UI, import, or API paths
External Endpoints
| Endpoint | Data Sent | Purpose |
|---|
| INLINECODE26 | browser session data chosen by the user | interactive review and manual operations |
| INLINECODE27 |
database name, username, password | authenticate and resolve user id |
|
https://<odoo-host>/xmlrpc/2/object | model names, domains, field names, record payloads | read and write records via XML-RPC |
|
https://<odoo-host>/jsonrpc | JSON-RPC payloads for auth or model calls | scripted integrations when JSON-RPC is available |
| user-chosen export target | report data explicitly requested by the user | deliver CSV, Excel, PDF, or downstream sync |
No other external endpoints should be used unless the user asks for a specific connected system.
Security & Privacy
Data that stays local:
- - environment notes in INLINECODE30
- known modules, company rules, and approval boundaries the user wants remembered
- reusable operating decisions such as preferred import format or reporting defaults
Data that may touch external systems:
- - only the Odoo instance and export targets already involved in the user's task
This skill does NOT:
- - bypass approvals for destructive writes or sensitive financial corrections
- store passwords, tokens, session cookies, or raw export payloads in memory
- assume a production write path when a safer review path exists
- make undeclared network requests by itself
Related Skills
Install with
clawhub install <slug> if user confirms:
- -
crm — customer pipeline workflows when the work is mainly around leads, deals, and sales motion - INLINECODE33 — stock-focused operating guidance when warehouse flows become the main problem
- INLINECODE34 — accounting-first workflows for journals, reconciliation, close, and financial controls
- INLINECODE35 — executive summaries and deck outputs from Odoo reporting work
- INLINECODE36 — polished SOPs, proposals, and customer-facing documents built from Odoo context
Feedback
- - If useful: INLINECODE37
- Stay updated: INLINECODE38
Odoo
用于实时ERP系统的Odoo操作工作流。当代理需要检查、报告、对账、导入、配置或安全更改Odoo Online、Odoo.sh或自托管环境中的数据时,使用此技能。
何时使用
当任务明确属于Odoo时使用:CRM、报价单、销售订单、发票、库存移动、采购订单、制造、项目、订阅或会计。当用户需要跨模块、环境和托管平台的帮助,而不仅仅是单一狭窄的报告或原始API调用时,最适合使用。
使用此技能将模糊的业务需求转化为安全、模块感知的操作:识别正确的记录,选择正确的接口,预览影响,然后才进行写入或自动化。
架构
内存存储在~/odoo/中。如果~/odoo/不存在,请运行setup.md。有关结构,请参阅memory-template.md。
text
~/odoo/
├── memory.md # 公司、模块、审批边界和稳定偏好
├── instances.md # 实例URL、环境、版本和认证通道
├── modules.md # 自定义模块、重命名字段和本地约定
└── incidents.md # 失败的导入、访问问题、损坏的自动化和恢复
快速参考
使用最小的匹配文件,而不是每次都在脑海中加载整个ERP。
memory-template.md |
| 托管平台映射 | surfaces.md |
| 按模块划分的操作通道 | operations.md |
| 真实请求翻译 | examples.md |
| 安全写入和审批阶梯 | safety.md |
| 报告和KPI范围界定 | reporting.md |
| API、导入和自动化选择 | integrations.md |
| 常见Odoo模型和对象 | models.md |
| 故障流程和访问分类 | triage.md |
要求
- - 安装此技能无需凭据。
- 运行时访问取决于用户已有的Odoo实例、凭据和工具。
- 尽早检测托管平台:Odoo Online、Odoo.sh或自托管决定了哪些操作可行且安全。
- 首选只读审查,然后选择与任务匹配的最小写入路径。
- 将自定义模块、记录规则、财务锁定和仓库操作视为系统设计的一部分,而不是烦人的例外。
- 在破坏性写入、批量更新、覆盖数据的导入或更改已过账会计和已完成库存记录之前,要求用户明确确认。
核心规则
1. 在接触记录前识别通道
- - 首先对任务进行分类:报告、操作写入、配置、导入、对账、集成或升级分类。
- 通道和托管平台会改变安全接口、验证步骤以及需要谁确认。
- 如果通道不明确,请保持在发现模式,直到意图明确。
2. 精确解析模块、模型和业务对象
- - 在提出字段、筛选器或自动化之前,先命名模块和底层模型。
- 相似的名词隐藏着不同的记录:潜在客户vs商机、报价单vs销售订单、产品模板vs产品变体、发票vs日记账分录。
- 如果可能存在自定义模块或重命名字段,请在假定默认模式适用之前进行验证。
3. 任何写入前先预览
- - 在写入或导入之前,使用域、示例行、计数、目标字段和副作用进行预览。
- 对于批量工作,首先解释选择逻辑、重复风险和回滚路径。
- 切勿直接从自然语言意图跳转到create、write、unlink或导入。
4. 尊重会计、库存和采购的最终性
- - 已过账的日记账分录、税务锁定、库存估值、到岸成本、收货和供应商账单具有下游影响。
- 首选冲销、取消、补偿分录或纠正性后续操作,而不是直接编辑已完成的业务单据。
- 如果用户要求走捷径破坏可审计性,请明确说明并提出合规路径。
5. 选择风险最低的接口
- - 对于一次性审查和简单操作流程,使用Odoo UI。
- 对于具有可审查输入的结构化批量更改,使用CSV导入。
- 仅当自动化、可重复性或跨系统编排证明其合理性时,才使用XML-RPC或JSON-RPC。
- 除非用户正在进行受控的后端修复并完全了解影响范围,否则不建议直接进行数据库写入。
6. 在给出数字前界定业务上下文
- - 在报告之前,确认公司、时区、货币、仓库、会计期间和状态筛选器。
- Odoo指标很容易被误报,因为草稿、已取消、延期交货和多公司数据经常共存。
- 如果仪表板答案取决于会计政策或自定义状态,请公开该依赖性而不是隐藏它。
快速入门
- 1. 检测通道:报告、操作变更、导入、配置或集成。
- 识别Odoo平台:托管模型、涉及的模块、环境、版本(如果已知)以及任何自定义。
- 打开匹配的文件:
- surfaces.md用于Odoo Online、Odoo.sh或自托管约束
- operations.md用于日常业务流
- examples.md用于从用户请求快速翻译到通道和安全第一步
- reporting.md用于KPI和对账
- safety.md用于风险写入、更正和审批
- integrations.md用于API、导入/导出和自动化设计
- triage.md用于访问、模块和工作流故障
- 4. 在建议更改记录或业务状态的操作之前,解释影响。
默认操作
当请求未明确指定或存在多个Odoo路径时,使用这些默认值。它们不是捷径;它们是每种常见情况下最安全的第一步。
| 情况 | 第一步 | 原因 |
|---|
| 模糊的业务请求 | 将其翻译为模块、模型、状态和输出格式 | 防止对错误对象进行操作 |
| 未知的托管模型 |
在建议工具之前,分类为Odoo Online、Odoo.sh或自托管 | UI、Shell、日志和API访问差异很大 |
| 批量更新 | 预览受影响的记录、重复项、所需键和回滚计划 | 导入和批量写入很容易误用 |
| 报告请求 | 锁定公司、期间、时区、状态筛选器和度量 | 没有范围界定,Odoo数字会快速漂移 |
| 自动化请求 | 在服务器动作、计划动作、导入或外部API之间做出决定 | 最便宜的自动化通常已经在Odoo内部 |
| 访问错误 | 首先检查组、记录规则、公司范围和环境 | 大多数损坏的操作都是权限或上下文问题 |
| 损坏的库存/会计流程 | 保留可追溯性,然后修复上游单据或发布冲销 | 直接编辑通常会使审计更糟 |
常见陷阱
- - 将每个请求视为CRUD,而实际任务是业务流程纠正
- 在同一个报告中混合草稿和已过账单据而不说明
- 针对product.template写入,而工作流实际上需要product.product上的变体
- 在没有稳定外部ID、自然键或重复处理的情况下导入记录
- 直接编辑已完成的库存或已过账的会计移动,而不是使用纠正流程
- 混合针对Odoo Online、Odoo.sh和自托管的建议,仿佛三者都暴露了相同的工具
- 当实例具有自定义模块、工作室字段或重命名状态时,假设为标准Odoo字段
- 在穷尽更安全的UI、导入或API路径之前,建议进行数据库手术
外部端点
| 端点 | 发送的数据 | 目的 |
|---|
| https://<odoo-host>/web | 用户选择的浏览器会话数据 | 交互式审查和手动操作 |
| https://<odoo-host>/xmlrpc/2/common |
数据库名称、用户名、密码 | 认证并解析用户ID |
| https://
/xmlrpc/2/object | 模型名称、域、字段名称、记录负载 | 通过XML-RPC读写记录 |
| https:///jsonrpc | 用于认证或模型调用的JSON-RPC负载 | 当JSON-RPC可用时的脚本化集成 |
| 用户选择的导出目标 | 用户明确请求的报告数据 | 交付CSV、Excel、PDF或下游同步 |
除非用户要求特定的连接系统,否则不应使用其他外部端点。
安全与隐私
本地存储的数据:
- - ~/odoo/中的环境笔记
- 用户希望记住的已知模块、公司规则和审批边界
- 可重用的操作决策,如首选导入格式或报告默认值
可能接触外部系统的数据:
此技能不会:
- - 绕过破坏性写入或敏感财务更正的审批
- 在内存中存储密码、令牌、会话cookie或原始导出负载
- 在存在更安全的审查路径时假设生产写入