원클릭으로
odoo
Access Odoo ERP at 100.100.1.2:8069 using OdooRPC Python library
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Access Odoo ERP at 100.100.1.2:8069 using OdooRPC Python library
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Run the self-improvement pipeline to analyze usage, plan, and apply Claude Code configuration improvements
Create, schedule, and manage autonomous AI-agent tasks with systemd timers
Create and manipulate Obsidian Canvas (.canvas) files using the JSON Canvas spec
Create a git commit with proper conventional commit message
Code generation, exploration, and image analysis via Codex CLI
Query Gemini CLI for quick lookups, deep research, and approach comparison
SOC 직업 분류 기준
| name | odoo |
| description | Access Odoo ERP at 100.100.1.2:8069 using OdooRPC Python library |
Use OdooRPC to interact with Odoo at 100.100.1.2:8069.
Use the ODOO_API_KEY environment variable (injected automatically):
import os, odoorpc
odoo = odoorpc.ODOO('100.100.1.2', port=8069)
odoo.login('odoo', 'claude@localhost', os.environ['ODOO_API_KEY'])
Run Python with OdooRPC:
nix run /home/dtgagnon/nix-config/nixos#odoorpc -- -c "CODE"
Example - list databases:
nix run /home/dtgagnon/nix-config/nixos#odoorpc -- -c "import odoorpc; odoo = odoorpc.ODOO('100.100.1.2', port=8069); print(odoo.db.list())"
Example - authenticated query:
nix run /home/dtgagnon/nix-config/nixos#odoorpc -- -c "
import os, odoorpc
odoo = odoorpc.ODOO('100.100.1.2', port=8069)
odoo.login('odoo', 'claude@localhost', os.environ['ODOO_API_KEY'])
print(odoo.env.user.name)
"
Partner = odoo.env['res.partner']
partner = Partner.browse(1)
print(partner.name)
# Search returns IDs
ids = Partner.search([('is_company', '=', True)], limit=10)
# Read returns field values
data = Partner.read(ids, ['name', 'email'])
# Combined search_read
records = Partner.search_read([('is_company', '=', True)], ['name', 'email'], limit=10)
new_id = Partner.create({'name': 'New Partner', 'email': 'new@example.com'})
Partner.write([partner_id], {'name': 'Updated Name'})
# Or via browse
partner.name = 'Updated Name'
Partner.unlink([partner_id])
result = Partner.execute('method_name', arg1, arg2, kwarg=value)
| Model | Purpose |
|---|---|
| res.partner | Contacts/customers |
| res.users | System users |
| sale.order | Sales orders |
| purchase.order | Purchase orders |
| account.move | Invoices/journals |
| product.product | Products |
| stock.picking | Inventory transfers |
| project.task | Tasks |
# Operators: =, !=, >, <, >=, <=, like, ilike, in, not in
[('field', 'operator', value)]
# AND (default)
[('is_company', '=', True), ('country_id.code', '=', 'US')]
# OR
['|', ('name', 'ilike', 'test'), ('email', 'ilike', 'test')]
fields = odoo.env['res.partner'].fields_get()
NEVER assign tasks to Claude Bot (user ID 7, login claude@localhost). All tasks must be assigned to Derek Gagnon (user ID 2, login gagnon.derek@pm.me).
When creating or updating tasks in project.task, always use:
derek_id = 2 # Derek Gagnon
Task.create({'name': 'Task name', 'user_ids': [(6, 0, [derek_id])], ...})
When doing bulk updates that would trigger emails, use context to disable notifications:
context = {
'mail_create_nosubscribe': True,
'mail_notrack': True,
'tracking_disable': True,
'mail_auto_subscribe_no_notify': True,
}
odoo.execute_kw('project.task', 'write', [[task_id], values], {'context': context})