odoo-module-developer について
Odoo Module Developerは、Odooのカスタムモジュールを作成・拡張する開発者向けのスキルです。モジュールのひな形、モデルとセキュリティ設定、コーディング規約、既存コードのレビューを案内し、対象外の領域も示します。
主な機能
- 01モジュールのディレクトリ構成作成
- 02モデル定義と既存モデルの拡張
- 03セキュリティファイルとアクセス規則の設定
- 04Odooのコーディング規約への準拠
- 05モジュールコードとマニフェストのレビュー
活用シーン
- 01カスタムOdooモジュールの作成
- 02既存モデルへのフィールド追加
- 03読み込みやマニフェストの問題調査
- 04onchange、compute、constraintメソッドの実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill odoo-module-developerインストール後、Claude Code で/odoo-module-developerを入力して読み込まれたか確認します。
詳細
Odoo モジュール開発者
概要
このスキルを使うと、AI を Odoo のカスタムモジュール開発に精通したエキスパートにできます。新しいモジュールのひな形作成、モデルの定義、セキュリティの設定、Community 版と Enterprise 版の両方に対応した Odoo のコーディング規約に沿った開発を支援します。
このスキルを使う場面
- Odoo のカスタムモジュールをゼロから作成するとき。
- 既存の Odoo モデルを拡張するとき(例:
sale.orderにフィールドを追加する)。 - モジュールの読み込みエラーやマニフェストの問題をトラブルシューティングするとき。
onchange、compute、constraintメソッドを正しく実装するとき。
仕組み
- 有効化:
@odoo-module-developerを指定し、作成したいモジュールについて説明します。 - ひな形の作成:
__manifest__.py、__init__.py、モデル、ビュー、セキュリティファイルを含む完全なフォルダー構成を取得します。 - レビュー:既存のコードを貼り付けると、Odoo のベストプラクティスに照らしたレビューを受けられます。
例
例 1:新しいモジュールのひな形を作成する
プロンプト: Create a module called "hospital_management" with a model for patients
生成される構成:
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/security.xml',
'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'を設定し、Apps リストでモジュールを識別できるようにします。 - ❌ 非推奨: Odoo のコアモデルファイルを直接変更せず、必ず
_inheritを使います。 - ❌ 非推奨: 新しいモデルを
ir.model.access.csvに追加し忘れると、ユーザーにアクセスエラーが発生します。 - ❌ 非推奨: フォルダー名にスペースや大文字を使わないでください。Odoo ではモジュール名に snake_case が必要です。
制限事項
- OWL JavaScript コンポーネントやフロントエンドウィジェットの開発には対応していません。ビュー XML には
@odoo-xml-views-builderを使ってください。 - マニフェストの例は Odoo 17 を対象としています。正確なバージョンと、サポートされているモジュール/ビューの構文を確認してください。古い Odoo リリースでもモジュールマニフェストは使用されています。存在しないマニフェストの廃止時期を推測しないでください。
- マルチカンパニーやマルチウェブサイトの設定には対応していません。これらには追加のモデルフィールド(
company_id、website_id)が必要です。 - 自動テストファイルは生成しません。テストファイルの作成には
@odoo-automated-testsを使ってください。
表示されるツリーはひな形であり、インストール可能な完全なモジュールではありません。動作すると主張する前に、インポート、XML ビュー、名前付きグループ、ACL、レコードルールを用意してください。患者データに対する広範なアクセスをデフォルトで許可しないでください。チャター/トラッキングによって機密情報が漏れる可能性があるため、フィールドやフォロワーは慎重に選択してください。インストール、複数レコードに対する compute/constraint、未承認のアクセスを、使い捨てのデータベースでテストしてください。依頼されていない本番環境のモジュールアップグレードを通じてテストしてはいけません。