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.
~/odoo/
├── memory.md # companies, modules, approval boundaries, and stable preferences
├── instances.md # instance URLs, environments, versions, and auth lanes
├── modules.md # custom modules, renamed fields, and local conventions
└── incidents.md # failed imports, access issues, broken automations, and recoveries
Quick Reference
Use the smallest matching file instead of mentally loading the whole ERP every time.
| Topic | File |
|---|---|
| Setup guide | setup.md |
| 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
- 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.mdfor Odoo Online, Odoo.sh, or self-hosted constraintsoperations.mdfor day-to-day business flowsexamples.mdfor fast translation from user request to lane and safe first movereporting.mdfor KPIs and reconciliationsafety.mdfor risky writes, corrections, and approvalsintegrations.mdfor API, import/export, and automation designtriage.mdfor access, module, and workflow failures
- 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.templatewhen the workflow actually needs variants onproduct.product - 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 |
|---|---|---|
https://<odoo-host>/web | browser session data chosen by the user | interactive review and manual operations |
https://<odoo-host>/xmlrpc/2/common | 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
~/odoo/ - 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 motioninventory— stock-focused operating guidance when warehouse flows become the main problemaccounting— accounting-first workflows for journals, reconciliation, close, and financial controlspowerpoint— executive summaries and deck outputs from Odoo reporting workword— polished SOPs, proposals, and customer-facing documents built from Odoo context
Feedback
- If useful:
clawhub star odoo - Stay updated:
clawhub sync