AI agents and skills for Odoo development on OpenCode — spec-driven pipeline, deterministic CLIs, and precision gates.
ODF (Odoo Development Framework) orchestrates Odoo module development through a phase pipeline delegated to specialized agents, backed by deterministic CLI logic (environment scan, ID lookup, test evidence) so agents find the codebase instead of inventing it.
- Mature and tested: 619 Vitest tests + 150 YAML scenarios + an end-to-end harness smoke suite (
npm run test:harness). Every release is verified end to end. - Portable: installs into any OpenCode environment (Linux/macOS/Windows via Git Bash/WSL), with
XDG_CONFIG_HOMEresolution and author-path rewriting at install time. - Known limitations:
- The plugin entrypoint (
plugins/odf-delegation.ts, ~6k lines) is still a monolith for the delegation/workflow core; the self-contained sections already live in modules (odf-plugin/odf-delegation-{shared,metrics,health,policy,loopguard}.ts). - The
engramstore requires the Engram MCP (or the CLI for state); without it, OpenSpec flows work and Engram-only flows block early with a clear message. codegraph/fff/context7are optional: they degrade to native/FFF search with warnings (see the matrix below).- The phase model is strict by design; the escape hatch is
odf_workflow_override(audited skip/re-enter/re-plan), not a bypass.
- The plugin entrypoint (
# Release-pinned (recommended)
curl -fsSL https://raw.githubusercontent.com/antoniodavid/odf-agent-team/v1.2.1/install.sh | BRANCH=v1.2.1 bash
# Or with flags: --yes (non-interactive) --force --with-codegraph --configure-mcp
# Interactive TUI (mode, components, profile, MCP)
./install.sh --tui
# From a local checkout
./install.sh --yes --forceUseful env vars: ODF_DIR / ODF_CONFIG_DIR / XDG_CONFIG_HOME (target), ODF_SOURCE_DIR (local source), ODF_SKIP_NPM=1, ODF_SKIP_SELFTEST=1, BRANCH=<tag> (pinned installs).
| Dependency | Missing | Impact |
|---|---|---|
| Node.js 18+ | — | The pack does not run |
engram (CLI) |
OpenSpec OK; Engram-only blocks with engram-cli-unavailable |
Optional |
engram (MCP) |
Engram-store workflows block early (install the MCP or use openspec) |
Optional |
codegraph |
Context packs disabled → FFF/native | Optional |
fff / context7 |
Falls back to native search / local sources | Optional |
git / docker |
Digests/evidence or test-command detection disabled | Recommended |
Full matrix: node <pack>/scripts/odf-toolkit.js deps
init → preflight → DECIDE → optional PLAN → BUILD → VERIFY → archived
execution_mode:interactive·batch·auto(autopilot: chained phases, mandatory gates intact).- Legacy phases are adapters:
DECIDE=PROPOSE+ASSESS,PLAN=QA-PLAN+DESIGN,BUILD=IMPLEMENT,VERIFYstays independent. - Audited override:
odf_workflow_override— skip (DECIDE/PLAN only), re-enter (invalidates later stages), re-plan (with human-approved Expectations revisionsrevision/supersedes/replan_from). Every call is appended to.odf/override-{change}.jsonl. - Preflight:
artifact_store(openspec/engram/hybrid),delivery_strategy,review_budget_lines,validation_mode(automated/manual-acceptance),odoo_version, TDD, chain strategy.
| CLI | Subcommands |
|---|---|
odf-project-scan |
Full Doodba environment scan (addons.yaml sources, compose, linting, git, CodeGraph, dependency matrix) + verified persistence, checksum cache, --diff, --deep, exit codes |
odf-toolkit |
context (CodeGraph explore) · state · result · resolve · evidence · metrics · manual-evidence · redundancy · deps · lookup · verify-refs |
# Find a view XML ID / model / field in the local source (file:line)
odf-toolkit lookup --source <odoo-src-root> [--repos <src-dir>] --id <xmlid> | --model <model>
# VERIFY: every ref=/model= in the module must resolve (exit 1 otherwise)
odf-toolkit verify-refs --repo <module-dir> --source <odoo-src-root> [--repos <src-dir>]Design and implementation must verify every view ID, model, and _inherit against the local source; an unresolved ID is an open decision, never a guess.
- 32 skills (OCA governance/style, Odoo patterns, ODF phases, shared conventions), 13 specialized agents (backend, frontend, QA, functional, DBA, APIs, migrations, stock-lot, proposer, etc.),
/odf-*commands. - Plugin (
plugins/odf-delegation.ts+ 5 modules inodf-plugin/): delegation viatask(), policy gate, evidence seal, receipts, override, bind, loop guard. - Idempotent installer with backup, TUI,
--configure-mcp, dependency probe. - Tests:
npm test(Vitest + YAML scenarios),npm run test:harness(end-to-end smoke),node scripts/odf-registry-validate.js.
npm test # 619 vitest + 150 scenarios
npm run test:harness # end-to-end harness smoke
npm run typecheck # tsc --noEmit
node scripts/odf-registry-validate.js # registry pathsVersioning: VERSION + odf-registry.json + CHANGELOG.md must stay in sync. Releases: semver tag + gh release create.
agent/— agent instructions.skills/— skills (OCA + ODF + shared).command/— slash commands.odf-plugin/— deterministic modules (workflow, status, triage, expectations, candidate-manifest, delegation-*).scripts/— CLIs and tests.plugins/odf-delegation.ts— plugin entrypoint.docs/— architecture, design/expectations contracts.