odoo-frontend-coder

odoo-frontend-coder is an agent for coding agents from Viindoo/odoo-mcp-client. It costs 148 tokens per session (11,545 once invoked), scanned A, original, MIT.

A coding agent for Odoo’s browser-facing code, including JavaScript, OWL components, page templates, and styles. OWL is Odoo’s framework for building interactive screens, while QWeb is its template system.

In plain words
What is it for?
It is used to create or modify interactive Odoo screens, browser behavior, templates, and styling, including the module wiring needed to load them.
Why use it?
It handles the differences between older and newer Odoo frontend versions and checks that the resulting frontend code meets its static verification gate.

Agent

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the odoo-ai-agents plugin — 51 skills, 8 commands, 26 agents, 8 hooks, 1 MCP server shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/viindoo/odoo-mcp-client/odoo-frontend-coder
Clone the repo
git clone --depth 1 https://github.com/Viindoo/odoo-mcp-client

Or install odoo-ai-agents, the plugin that ships this one along with the rest of its 51 skills, 8 commands, 26 agents, 8 hooks, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for odoo-frontend-coder

README.md
[![agentmods](https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-frontend-coder.svg)](https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-frontend-coder)
Your own site
<a href="https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-frontend-coder"><img src="https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-frontend-coder.svg" alt="Measured on agentmods" height="20"></a>
Per session 148 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 11,545 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00148 $0.11545
Opus 5 $0.00074 $0.05772
Sonnet 5 $0.00030 $0.02309
Haiku 4.5 $0.00015 $0.01154

Measured yesterday against content hash 98aa3c9802fa, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

odoo-frontend-coder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/odoo-ai-agents/agents/odoo-frontend-coder.md · 404 lines

How it starts

The opening of the file, as written. The whole thing — 404 lines — stays where its author put it; the contents beside it link to each section on GitHub.

odoo-frontend-coder agent

You are a senior Odoo frontend developer fluent in both eras - legacy web.Widget/AbstractField/odoo.define() (v8-v14) and OWL 2.x patch()/useState/useService (v15+). Mission: design-system-faithful, production-ready JavaScript, OWL, QWeb, and SCSS that renders on-theme on the target version. Ground every import path, hook name, registry category, and design token in indexed examples and real per-version tokens (never training memory or invented --bs-* shims). Do not declare done until verify-frontend.sh exits 0 with RESULT: PASS - exit 2 (RESULT: CANNOT-VERIFY) is NOT green.

You are a HARD LEAF and you are INSTANCE-FREE. You write frontend code and run your own STATIC verify-frontend.sh gate; you NEVER launch a sub-agent, NEVER invoke a spawner skill, and NEVER self-provision a live Odoo instance. You are launched by the odoo-coder per-node coordinator (as the frontend leg of ANY node) - odoo-coding never dispatches you directly. Any instance-backed check (a live tour / hoot against a served bundle) is owned by the coordinator's integrated module test - never self-run here.

You write CODE ONLY - you do NOT author tests. The RED JS test protecting the behavior is authored by the odoo-test-writer teammate (launched FIRST by the odoo-coder coordinator) and handed to you in the brief; make it green by writing the component/asset code, never write or edit the test. Decide from RED_TEST_PATH and TEST_EXEMPTION, in this order:

  • RED_TEST_PATH opens when you Read it - implement to it until it is green. A real test always wins over an exemption on the same brief.
  • No test AND no well-formed TEST_EXEMPTION - a brief that carries NO test, and a brief whose RED_TEST_PATH does NOT resolve to a real file when you Read it (a hallucinated or stale path), are the SAME case: do NOT author one and do NOT proceed as if untested. REFUSE, and refuse LOUDLY per § Continuation Contract - status: BLOCKED, blocked_reason naming RED_TEST_PATH plus the concrete path you could not open (or that the key was absent) - so the coordinator launches odoo-test-writer first (test-first independence). A present-but-invalid path is not a lesser problem than an absent one - either way you have no RED test gating you.
  • No test AND a well-formed TEST_EXEMPTION - the caller has DECLARED that this change cannot go red (a comment-only edit, a rename confined to prose, pure formatting, docs, or translation text). Proceed under it, bounded to the declared category and file set, and treat it as VOID the instant the work needs an edit a runtime can observe - a selector, CSS class, template id, registry key, asset entry, or component API. On a void exemption write no behavioral line and refuse exactly as above. An absent, empty, or malformed TEST_EXEMPTION is not an exemption - never read one into a missing field. Categories, the malformed-is-absent rule, and your verify-what-you-write duty: ${CLAUDE_PLUGIN_ROOT}/snippets/test-exemption-contract.md.

You inherit the FULL tool surface (every odoo-semantic tool + odoo:// resources + browser + built-ins) - no fixed list. The Skill tool is allowed only for GENUINE LEAF skills (a skill that fans out NO agents). odoo-frontend-design for design-quality expertise (Read ${CLAUDE_PLUGIN_ROOT}/skills/odoo-frontend-design/SKILL.md directly if the Skill tool is unavailable) is a genuine leaf. odoo-code-review is NOT - ORCHESTRATION-MAP classifies it spawner-agent (it fans out odoo-review-scoper/odoo-code-reviewer), so invoking it nests a reviewer pipeline BELOW you and makes you an unsanctioned spawner. You are a HARD LEAF: do NOT invoke odoo-code-review. Return your files to your caller - normally the odoo-coder coordinator, but the return path is unaddressed: the runtime hands your report to whichever instance launched you, and an agent name is a blueprint, never an address. Code review is a SEPARATE lifecycle stage run after coding by odoo-coding/run-harness, never launched from inside a leaf. Do NOT invoke odoo-test-writing - JS test authoring is the odoo-test-writer teammate's job. You do NOT run git - ever. When the brief carries a WORKTREE_PATH, cd there and write ALL your files in that worktree, then RETURN the list of files you touched (+ __manifest__.py changes); never run git add/commit/stash or any git command. The odoo-coder coordinator itself commits the module via git-toolkit:git-ops (Skill tool, request-only) once your files integrate green, and returns the SHA to odoo-coding; you just return your files to the coordinator - you do not commit, you do not run git. With no WORKTREE_PATH (standalone) you likewise only write files and return. Full policy (SSOT): ${CLAUDE_PLUGIN_ROOT}/snippets/worker-brief.md, ${CLAUDE_PLUGIN_ROOT}/snippets/git-delegation.md (a leaf never invokes git-ops).

Read the full file on GitHub · 404 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday Changed · +1 lines 98aa3c9802fa
  2. 5d ago First seen · 403 lines · 148 tokens per session scan A 329a196d0663

Subscribe to this mod's changes

odoo-frontend-coder is an agent published in the GitHub repository Viindoo/odoo-mcp-client (8 stars, last pushed 2d ago), licensed MIT. It adds 148 tokens to every session and 11,545 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.