— a stage pipeline, 11 specialized agents, 51 skills, and deterministic CLIs so your AI team finds the codebase instead of inventing it.
Overview
— a stage pipeline, 11 specialized agents, 51 skills, and deterministic CLIs so your AI team finds the codebase instead of inventing it. — spec-driven Odoo delivery on OpenCode. Turns a generic AI assistant into a structured Odoo delivery team. An orchestrator routes every stage through a plugin that resolves the right agent, injects at most five skill rules, enforces Policy Gates, and seals evidence — so nothing ships on a guess. Need CodeGraph structural queries? Add -- --with-codegraph. Non-interactive CI? Add -- --yes. The user sees one route selected by work_type; micro/standard/full is entry triage, not another workflow. Small changes and the default feature-inline route use DECIDE → BUILD → VERIFY with inline QA, where feature-inline runs one bounded ASSESS only when the deterministic entry gate selects assess; bugfixes use FIX → BUILD → VERIFY with inline regression QA; complex/high-risk routes use formal PLAN/QA-PLAN.
README
ODF Agent Team
Spec-driven Odoo delivery on OpenCode — a stage pipeline, 11 specialized agents, 51 skills, and deterministic CLIs so your AI team finds the codebase instead of inventing it.
ODF — spec-driven Odoo delivery on OpenCode. Turns a generic AI assistant into a structured Odoo delivery team. An orchestrator routes every stage through a plugin that resolves the right agent, injects at most five skill rules, enforces Policy Gates, and seals evidence — so nothing ships on a guess.
odf-delegation plugin ──► task() ──► specialist agent ──► Odoo worktree
│ │
registry · skills · gates tests · lint · refs
Quickstart
# 1. Install into ~/.config/opencode (release-pinned)
curl -fsSL https://raw.githubusercontent.com/antoniodavid/odf-agent-team/v1.6.2/install.sh | BRANCH=v1.6.2 bash
# 2. Inside OpenCode, from any Odoo worktree:
/odf-init # detect version, modules, test runner
/odf-new my-feature # preflight → DECIDE → PLAN → BUILD → VERIFY
Need CodeGraph structural queries? Add -- --with-codegraph. Non-interactive CI? Add -- --yes.
How it works
init → health/preflight → one resolved route → only its required stages → archive when applicable
| Stage | Roles | When |
|---|---|---|
DECIDE |
PROPOSE + ASSESS |
routes that include DECIDE; can be terminal for standard config |
PLAN |
QA-PLAN + DESIGN |
only when the resolved route or risk requires formal planning |
BUILD |
— | plan is closed |
VERIFY |
— | verification required |
The user sees one route selected by work_type; micro/standard/full is entry triage, not another workflow. Small changes and the default feature-inline route use DECIDE → BUILD → VERIFY with inline QA, where feature-inline runs one bounded ASSESS only when the deterministic entry gate selects assess; bugfixes use FIX → BUILD → VERIFY with inline regression QA; complex/high-risk routes use formal PLAN/QA-PLAN. After the gate and approved Expectations, one bounded Context Manifest is built and forwarded unchanged to ASSESS and BUILD. The shadow prediction is advisory and does not alter execution. Full vocabulary: docs/architecture.md · route matrix: docs/route-contract.md.
Interactive diagram → Phase flow & agent routing · Harness architecture
Commands
| Command | Purpose |
|---|---|
/odf-new |
Start a change on its resolved route; planning scales with risk/scope |
/odf-continue [name] |
Resume from last completed stage |
/odf-status [name] |
Canonical thin-spine status |
/odf-explore |
Research without creating a change |
/odf-fix |
Lightweight bugfix: diagnose → BUILD → VERIFY |
/odf-verify |
Quality gate: tests, lint, spec compliance |
/odf-health |
Installation + project detection check |
/odf-feedback |
Preview and optionally submit explicitly confirmed, privacy-bounded feedback |
23 commands total — full list in AGENTS.md.
Why developers use it
- One round-trip, not fifty. The plugin resolves agent + skills + profile in a single
odf_delegatecall — no grep/read loops to assemble context. - Evidence over vibes. Policy Gate, validation seals, attempt ledgers, and receipts run silently before BUILD/VERIFY.
- Never invent IDs.
odf-toolkit lookup/verify-refsresolve every view XML ID and model against local Odoo source (exit 1 otherwise). - Stops that explain themselves. Every blocked or failed envelope carries a
stop_dispositionwith the kind, whether a human is required, and the only allowed recovery. - OCA-ready. Governance skill enforces PR workflow, commit style, and maturity gates before publication.
What’s inside
| Piece | Count / location |
|---|---|
| Skills | 51 (skills/ — OCA governance/style, Odoo patterns, ODF stage roles) |
| Agents | 11 (agent/ — orchestrator + 10 specialists) |
| Commands | 23 (command/) |
| Plugin tools | 29 injected at runtime (plugins/odf-delegation.ts + odf-plugin/) |
| Deterministic CLIs | odf-project-scan, odf-toolkit (scripts/) |
Documentation
docs/README.md — full index. Start here:
- Intended usage — mental model, entry points, stopping safely, when to use what
- Architecture — thin-spine vocabulary, components, data flow
- Route & stage contract — every route, stage, artifact, and gate
- Context contract — the bounded, reference-only Context Manifest
- Decision evaluation — decision-quality report, local reviews, cadence
- Plugin reference — the 29 tools, modules,
odf_delegatepath - Skill style guide — structure, frontmatter, compact rules, validation
- Archive — completed roadmaps and plans
Honest status
- Mature and tested locally: 1477 unit tests + 331 YAML scenarios + 18 harness checks. Representative Odoo validation and end-to-end telemetry remain ODF 2.0 gates.
- Portable: Linux/macOS/Windows (Git Bash/WSL),
XDG_CONFIG_HOMEresolution, author-path rewriting at install time. - Known limitations:
plugins/odf-delegation.ts(~6k lines) is still a monolith for the delegation/workflow core; cohesive sections already live inodf-plugin/.- The
engramstore needs the Engram MCP (or CLI); OpenSpec-only flows work without it. codegraph/fff/context7are optional and degrade gracefully.- The stage model is strict by design; the escape hatch is audited
odf_workflow_override, not a bypass.
Dependencies
| Dependency | Missing | Impact |
|---|---|---|
| Node.js 18+ | — | pack does not run |
engram (CLI/MCP) |
Engram-only flows block; OpenSpec OK | optional |
codegraph |
context packs → FFF/native | optional |
git / docker |
digests/evidence, test detection off | recommended |
Full matrix: node /scripts/odf-toolkit.js deps
Development
npm test # full suite: unit + YAML + plugin
npm run test:unit # 1477 Vitest
npm run test:yaml # 331 YAML scenarios
npm run test:harness # 18 harness checks
npm run typecheck # tsc --noEmit
npm run validate:skills
ODF_CONFIG_DIR=$PWD node scripts/odf-registry-validate.js
npm run validate:skills enforces the Agent Skills contract (frontmatter, name/directory parity, bounded descriptions, compact rules); see docs/skill-style-guide.md.
Versioning: VERSION + package.json + package-lock.json + odf-registry.json + CHANGELOG.md must stay in sync. Releases: semver tag + gh release create.
Repository layout
agent/ 11 agent instructions (orchestrator + 10 specialists)
command/ 23 slash commands
skills/ 51 skills (OCA + ODF + shared)
odf-plugin/ deterministic modules (workflow, triage, policy, …)
plugins/ odf-delegation.ts — plugin entrypoint, 29 tools
scripts/ CLIs + test runner + registry validator
docs/ architecture, usage, plugin reference, diagrams
install.sh idempotent installer (backup, TUI, --force, --with-codegraph)
odf-registry.json single source of truth
License
MIT
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add antoniodavid/odf-agent-team