jpskill.com
🛠️ 開発・MCP コミュニティ 🔴 エンジニア向け 👤 エンジニア・AI開発者

🛠️ Odoo Module Developer

odoo-module-developer

Odooのカスタムモジュール開発を、manifestファイルからモデル継承、ORMパターン、構造のベストプラクティスまで専門的にガイドするSkill。

⏱ RAG構築 1週間 → 1日

📺 まず動画で見る(YouTube)

▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗

※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。

📜 元の英語説明(参考)

Expert guide for creating custom Odoo modules. Covers __manifest__.py, model inheritance, ORM patterns, and module structure best practices.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Odooのカスタムモジュール開発を、manifestファイルからモデル継承、ORMパターン、構造のベストプラクティスまで専門的にガイドするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o odoo-module-developer.zip https://jpskill.com/download/3240.zip && unzip -o odoo-module-developer.zip && rm odoo-module-developer.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/3240.zip -OutFile "$d\odoo-module-developer.zip"; Expand-Archive "$d\odoo-module-developer.zip" -DestinationPath $d -Force; ri "$d\odoo-module-developer.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して odoo-module-developer.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → odoo-module-developer フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

💬 こう話しかけるだけ — サンプルプロンプト

  • Odoo Module Developer を使って、最小構成のサンプルコードを示して
  • Odoo Module Developer の主な使い方と注意点を教えて
  • Odoo Module Developer を既存プロジェクトに組み込む方法を教えて

これをClaude Code に貼るだけで、このSkillが自動発動します。

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] odoo-module-developer

Odooモジュール開発者

概要

このスキルは、AIをOdooカスタムモジュールのエキスパート開発者に変身させます。新しいモジュールの足場作り、モデルの定義、セキュリティの設定、Odooのコーディング規約(Community版とEnterprise版の両方)への準拠についてガイドします。

このスキルを使用するタイミング

  • 新しいカスタムOdooモジュールをゼロから開始する場合。
  • 既存のOdooモデルを拡張する場合(例: sale.orderにフィールドを追加する場合)。
  • モジュールの読み込みエラーやマニフェストの問題をトラブルシューティングする場合。
  • onchangecomputeconstraintメソッドを正しく実装する場合。

仕組み

  1. アクティベート: @odoo-module-developerに言及し、構築したいモジュールを説明してください。
  2. 足場作り: __manifest__.py__init__.py、モデル、ビュー、セキュリティファイルを含む完全なフォルダ構造を取得します。
  3. レビュー: 既存のコードを貼り付け、Odooのベストプラクティスに照らしてレビューを受けます。

例1: 新しいモジュールの足場作り

プロンプト: 患者用のモデルを持つ "hospital_management" というモジュールを作成してください

生成される構造:

hospital_management/
├── __manifest__.py
├── __init__.py
├── models/
│   ├── __init__.py
│   └── hospital_patient.py
├── views/
│   └── hospital_patient_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── security.xml
└── data/

__manifest__.py:

{
    'name': 'Hospital Management',
    'version': '17.0.1.0.0',
    'category': 'Healthcare',
    'depends': ['base', 'mail'],
    'data': [
        'security/ir.model.access.csv',
        'views/hospital_patient_views.xml',
    ],
    'installable': True,
    'license': 'LGPL-3',
}

models/hospital_patient.py:

from odoo import models, fields, api

class HospitalPatient(models.Model):
    _name = 'hospital.patient'
    _description = 'Hospital Patient'
    _inherit = ['mail.thread', 'mail.activity.mixin']

    name = fields.Char(string='Patient Name', required=True, tracking=True)
    birth_date = fields.Date(string='Birth Date')
    doctor_id = fields.Many2one('res.users', string='Assigned Doctor')
    state = fields.Selection([
        ('draft', 'New'),
        ('confirmed', 'Confirmed'),
        ('done', 'Done'),
    ], default='draft', tracking=True)

ベストプラクティス

  • すべきこと: モデルの _name には常に名前空間をプレフィックスとして付けてください(例: hospital.patient)。
  • すべきこと: チャッター/ロギングを自動的に追加するには、_inherit = ['mail.thread'] を使用してください。
  • すべきこと: マニフェストの version{odoo_version}.{major}.{minor}.{patch} の形式で指定してください。
  • すべきこと: アプリリストでモジュールを識別できるように、__manifest__.py'author''website' を設定してください。
  • すべきでないこと: コアのOdooモデルファイルを直接変更しないでください — 常に _inherit を使用してください。
  • すべきでないこと: 新しいモデルを ir.model.access.csv に追加し忘れないでください。そうしないと、ユーザーはアクセスエラーを受け取ります。
  • すべきでないこと: フォルダ名にスペースや大文字を使用しないでください — Odooはスネークケースのモジュール名を要求します。

制限事項

  • OWL JavaScriptコンポーネントやフロントエンドウィジェットの開発は対象外です — ビューXMLには @odoo-xml-views-builder を使用してください。
  • Odoo 13以前はモジュール構造が異なります(__manifest__.py の自動読み込みなし) — このスキルはv14以降を対象としています。
  • 複数会社複数ウェブサイトの設定は対象外です。これらには追加のモデルフィールド(company_idwebsite_id)が必要です。
  • 自動テストファイルは生成しません — そのためには @odoo-automated-tests を使用してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Odoo Module Developer

Overview

This skill transforms your AI into an expert Odoo custom module developer. It guides you through scaffolding new modules, defining models, setting up security, and following Odoo's coding conventions for both Community and Enterprise editions.

When to Use This Skill

  • Starting a new custom Odoo module from scratch.
  • Extending an existing Odoo model (e.g., adding fields to sale.order).
  • Troubleshooting module loading errors or manifest issues.
  • Implementing onchange, compute, and constraint methods correctly.

How It Works

  1. Activate: Mention @odoo-module-developer and describe the module you want to build.
  2. Scaffold: Get the full folder structure with __manifest__.py, __init__.py, models, views, and security files.
  3. Review: Paste existing code and get a review against Odoo best practices.

Examples

Example 1: Scaffold a New Module

Prompt: Create a module called "hospital_management" with a model for patients

Generated structure:

hospital_management/
├── __manifest__.py
├── __init__.py
├── models/
│   ├── __init__.py
│   └── hospital_patient.py
├── views/
│   └── hospital_patient_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── security.xml
└── data/

__manifest__.py:

{
    'name': 'Hospital Management',
    'version': '17.0.1.0.0',
    'category': 'Healthcare',
    'depends': ['base', 'mail'],
    'data': [
        'security/ir.model.access.csv',
        'views/hospital_patient_views.xml',
    ],
    'installable': True,
    'license': 'LGPL-3',
}

models/hospital_patient.py:

from odoo import models, fields, api

class HospitalPatient(models.Model):
    _name = 'hospital.patient'
    _description = 'Hospital Patient'
    _inherit = ['mail.thread', 'mail.activity.mixin']

    name = fields.Char(string='Patient Name', required=True, tracking=True)
    birth_date = fields.Date(string='Birth Date')
    doctor_id = fields.Many2one('res.users', string='Assigned Doctor')
    state = fields.Selection([
        ('draft', 'New'),
        ('confirmed', 'Confirmed'),
        ('done', 'Done'),
    ], default='draft', tracking=True)

Best Practices

  • Do: Always prefix your model _name with a namespace (e.g., hospital.patient).
  • Do: Use _inherit = ['mail.thread'] to add chatter/logging automatically.
  • Do: Specify version in manifest as {odoo_version}.{major}.{minor}.{patch}.
  • Do: Set 'author' and 'website' in __manifest__.py so your module is identifiable in the Apps list.
  • Don't: Modify core Odoo model files directly — always use _inherit.
  • Don't: Forget to add new models to ir.model.access.csv or users will get access errors.
  • Don't: Use spaces or uppercase in folder names — Odoo requires snake_case module names.

Limitations

  • Does not cover OWL JavaScript components or frontend widget development — use @odoo-xml-views-builder for view XML.
  • Odoo 13 and below have a different module structure (no __manifest__.py auto-loading) — this skill targets v14+.
  • Does not cover multi-company or multi-website configuration; those require additional model fields (company_id, website_id).
  • Does not generate automated test files — use @odoo-automated-tests for that.