mcpField
O
odev

odev

github.com/odoo-psDevelopment544 installsUpdated 7w ago
Repository

About odev

An instruction skill for developers using the `odev` Odoo Development CLI during upgrade work. It documents command usage and safety rules for database operations, tests, deployments, and module version updates.

Key features

  1. 01`odev` command usage rules
  2. 02Database creation and cleanup guidance
  3. 03Targeted test execution
  4. 04Run and deploy verification
  5. 05Module manifest versioning

Use cases

  1. 01Creating Odoo databases for upgrades
  2. 02Running focused tests on a module
  3. 03Verifying changes with `odev run` or `odev deploy`

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/odoo-ps/ps-ai-skills --skill odev

After installing, type/odevin Claude Code to confirm it loaded.

Details

From the project README

ODEV Commands Skill

This skill provides instructions on how to use odev (Odoo Development CLI) during upgrade tasks.

🛑 MANDATORY RULES (ODEV CLI USAGE)

  1. VERSIONING: You MUST specify the Odoo version explicitly using the -V <version> flag when creating a database (odev create). For other commands like odev run, odev shell, or odev test, the -V flag is optional if the database already exists, as odev will automatically infer the version from the database. However, if you are targeting a specific version that differs from the database or if the database does not exist, specifying -V is required.

    • Example: odev run -V 19.0 ...
  2. ARGUMENT ORDER: odev specific flags (LIKE -V, -f, -c, -w, --venv) MUST come BEFORE the database name.

  3. DATABASE CREATION/OVERWRITE: You MUST ALWAYS use the -f (force) flag when creating a database that might already exist to bypass confirmation prompts. "Overwriting" an existing database via odev create REQUIRES -f.

    • Example: odev create -f -V 18.0 new_db -i base
  4. LOG LEVEL: Use --log-level=warn to keep logs concise and save tokens. Note that odev consumes this flag to set BOTH its own log level and the Odoo server log level.

  5. GLOB QUOTING: When using --glob, you MUST ALWAYS wrap the pattern in double quotes to prevent the shell from expanding it before it reaches odev.

    • Incorrect: odev upgrade-code --glob my_module/**/*
    • MANDATORY: You MUST always include --stop-after-init when using odev run or odev deploy for verification. Failure to do so will cause the shell to hang.
  6. ADDONS PATHS: odev automatically manages Odoo and Enterprise addons paths based on the specified version (-V). You should NEVER manually specify standard Odoo paths (like odoo/addons or enterprise). odev handles this internally. Additionally, odev automatically includes the repository path of the targeted database. If you are working in a custom folder, odev will often include it if it's detected as an addons path. Trust odev for the plumbing to avoid version mismatches.

Core Commands

  • odev run <database> [options]:

    • Starts the Odoo server.
    • Useful for manual verification and testing.
    • DATABASE EXISTENCE: The database MUST exist. If it does not, an error will be thrown.
    • VERSIONING: If -V <version> is omitted, odev takes the version from the database.
    • MANDATORY: Always specify --stop-after-init when running in a script or for automated verification.
    • Best Practice: Always specify --http-port <free_port> to avoid conflicts.
    • Example: odev run db -i mod --http-port 8069 --log-level=warn --stop-after-init
  • odev create -V <version> <database> [options]:

    • Creates a new database and installs modules.
    • MANDATORY: You MUST always specify the Odoo version with -V <version> when creating a new database.
    • MANDATORY: Use -f to force creation if the DB already exists.
    • Use -T to create a template database (e.g., odev create -f -T -V 17.0 my_template -i sale).
    • Use -t <template> to clone from a template (e.g., odev create -f -t my_template -V 17.0 new_db).
  • odev test <database> -i <modules> [options]:

    • SURGICAL VERIFICATION: You are ENCOURAGED to use this command to verify individual fixes, but ONLY with specific tags to keep it fast.
    • MANDATORY: You MUST use -t <tag> or --tags <tag> to run ONLY the relevant failing test.
    • Example: odev test my_db -i my_module -t .test_some_method
    • Avoid Full Suites: DO NOT run odev test without specific tags. Full module tests take too long and consume too many tokens. The host framework will run the full suite automatically after your session.
  • odev venv <database> -c "<command>":

    • Runs a command inside the virtual environment associated with the database.
    • Package Installation: If a python package is missing, use: odev venv <database> -c "pip install <package>".
  • odev shell <database> [options]:

    • Starts an interactive Odoo shell for the specified database.
    • Use --script "<python_code>" to execute code and exit immediately.
    • Example: odev shell my_db --script "print(self.env.user.name)"
  • odev deploy <module_path> [options]:

    • Hot-deploys a module to a running Odoo instance.
    • Example: odev deploy /custom/my_module
  • odev kill -H <database> [options]:

    • Kills the running Odoo process associated with a database.
    • Use -H (hard) to send a SIGKILL if the process is stuck.
    • Example: odev kill my_db
  • odev delete -f <database> [options]:

    • Deletes an existing database and its associated resources (filestore, config).
    • MANDATORY: Use -f (force) to bypass confirmation prompts.
    • Prerequisite: If the database is currently running, you MUST kill it first using odev kill <database>.
    • Example: odev delete -f my_db
  • odev upgrade-code <database> --from <ver> --to <ver>:

    • Automatically migrates source code for common renames (e.g., <tree> to <list> in Odoo 18.0+).
    • MANDATORY: You MUST specify the target database name, not a directory path.

Best Practices

  • Speed up iteration: Use template databases (-T and -t) to avoid reinstalling standard Odoo modules repeatedly.
  • Strict Versioning: Pass the -V flag when creating a database. For other commands, only use it if you need to target a specific version that differs from the database default.
  • Prompt Bypassing: Always use -f in scripts or automated tasks to ensure no interactive prompts block execution.

📦 MODULE MANIFEST STANDARDS

  1. VERSIONING: When upgrading a module to a new Odoo version, you MUST reset the version in __manifest__.py to ODOO_VERSION.1.0.0 (e.g., 19.0.1.0.0).
    • NEVER preserve minor versions or patch increments from the source Odoo version (e.g., do not turn 16.3.1.2.3 into 19.3.1.2.3).
    • The format MUST be: <odoo_major>.0.1.0.0 for the first upgrade commit.

Comments

Markdown supported