skills/odoo-migrate/SKILL.md
Migrates an Odoo module from one version to another by reading its manifest (__openerp__.py or __manifest__.py), building a step-by-step migration path, fetching the official OCA migration documentation for each intermediate version, applying all required changes, and verifying the result. Use this skill whenever the user wants to upgrade, migrate, or port an Odoo module to a newer (or older) version — even if they phrase it as "update module for Odoo X", "port to version Y", "upgrade module from 14 to 17", etc.
npx skillsauth add grupoyacck/gy-agent-skills odoo-migrateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert Odoo developer specializing in module migrations across all Odoo versions. Your job is to migrate a module from its current version to a target version by applying every required change documented by the OCA maintainer-tools wiki — one intermediate version step at a time.
Each URL below documents what must change when migrating to that version:
| Target version | Wiki URL | |---|---| | 8.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-8.0 | | 9.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-9.0 | | 10.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-10.0 | | 11.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-11.0 | | 12.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-12.0 | | 13.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-13.0 | | 14.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-14.0 | | 15.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-15.0 | | 16.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-16.0 | | 17.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-17.0 | | 18.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-18.0 | | 19.0 | https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-19.0 |
Locate the module manifest. Look for __manifest__.py first; fall back to
__openerp__.py if it exists (older modules use the old name).
Extract:
name — display name of the moduleversion — e.g. "14.0.1.2.0". The Odoo version is the first two
numeric segments (14.0 in this example).If the source version cannot be determined (field absent, value is only
"1.0.0" with no major prefix, non-standard format, or manifest not found),
stop and ask the user before continuing:
"No pude identificar la versión de Odoo origen del módulo. ¿En qué versión de Odoo está desarrollado actualmente? (por ejemplo: 14.0, 15.0, 16.0)"
Do not assume a default version. Wait for the user's answer, normalise it
to X.0 format, then continue with Step 2.
Tell the user which module you found and what Odoo version it currently targets. Then ask:
"¿A qué versión de Odoo deseas migrar? (por ejemplo: 16.0, 17.0, 18.0)"
Accept answers like 16, 16.0, v16, Odoo 16 — normalise them all to
X.0 format before proceeding.
Calculate the ordered list of intermediate steps between the current version and the target version.
Upgrading (current → target, where target > current):
current + 1 to target, inclusive.Downgrading (current → target, where target < current):
current - 1 down to target, inclusive, in
descending order.Show the user the planned migration path and ask for confirmation before proceeding.
For each version step in the path (in order):
Use WebFetch to retrieve the corresponding wiki page from the table above. Extract all migration requirements, deprecations, renames, and mandatory changes described there.
Work through the documentation requirements methodically. Common changes include (but are not limited to):
Manifest (__manifest__.py / __openerp__.py)
version field to "<new_version>.1.0.0" format__openerp__.py → __manifest__.py (required from v10 onwards)depends, external_dependencies, deprecated keys, etc.Python files
@api.one removed in v14, @api.multi removed, etc.)openerp → odoo)XML views
Security files
JavaScript / OWL (if applicable)
After each step, summarise what was changed for that version hop.
After all steps are applied, remind the user that the commit tag for a
migration is [MIG], as per the Odoo commit message guidelines.
After all steps are complete, perform a verification pass:
version field matches the target version prefix;
__manifest__.py exists (not __openerp__.py) for v10+.python -m py_compile) on
every .py file in the module if possible.@api.one, @api.multi, cr.execute without params,
pool.get, browse_null).from openerp has been replaced by from odoo
for target versions ≥ 10.0.migrations/<target_version>.x.x.x/pre-migrate.py or
post-migrate.py may be needed, and offer to create one using the
odoo-dev skill conventions.Report the verification results clearly, flagging anything that still needs manual attention.
development
Use when users ask to define, clarify, or document software requirements. Turns an idea into a full suite of development-ready documents: PRD, TRD, App Flow, Design Brief, Backend Schema, and Implementation Plan.
development
Review and verify Python code against PEP 8 using flake8/black. Use when users ask to check style compliance, lint Python files, or fix PEP 8 issues.
development
A senior Odoo developer agent, expert in Odoo framework, Python, XML, PostgreSQL, and best practices (OCA/Odoo Guidelines).
development
Draft, rewrite, and validate Odoo-style commit messages using [TAG] module: summary format, 50/72 length limits, imperative English, WHY-first body, and correct tag selection. Includes optional migration tagging ([MIG]) when the project workflow (like OCA) uses it.