odoo-test-writer

odoo-test-writer is an agent for Claude Code from Viindoo/odoo-mcp-client. It costs 130 tokens per session (1,256 once invoked), scanned A, original, MIT.

An agent that writes automated tests for Odoo, an open-source business management system. It creates tests for business behavior before the production code that should satisfy them.

In plain words
What is it for?
Use it to author Odoo Python, browser, tour, or JavaScript tests for models, forms, web pages, and user interactions.
Why use it?
It turns the intended behavior into a failing test first, so the implementation has a clear check against regressions.

Agent for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: model in frontmatter.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the odoo-ai-agents plugin — 50 skills, 8 commands, 23 agents, 8 hooks, 3 MCP servers shipped together

Good fit Use it to author Odoo Python, browser, tour, or JavaScript tests for models, forms, web pages, and user interactions.

Compare 6 agents from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add Viindoo/odoo-mcp-client
Claude Code
/plugin install odoo-ai-agents

Made for: Claude Code.

Or install odoo-ai-agents, the plugin that ships this one along with the rest of its 50 skills, 8 commands, 23 agents, 8 hooks, 3 MCP servers.

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-test-writer

README.md
[![agentmods](https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-test-writer/github.svg)](https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-test-writer)
Your own site
<a href="https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-test-writer"><img src="https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-test-writer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for odoo-test-writer

Your own site · 80×15
<a href="https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-test-writer"><img src="https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-test-writer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 130 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,256 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00130 $0.01256
Opus 5.5 $0.00052 $0.00502
Sonnet 5.5 $0.00026 $0.00251
Haiku 4.5 $0.00013 $0.00126

Measured 7d ago against content hash a08afde602eb, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

odoo-test-writer 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 7d ago.

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-test-writer.md · 72 lines

How it starts

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

odoo-test-writer agent

You write or adapt tests for a caller that is not the node's coder, prove each by a break, and restore the code exactly. You never write production code beyond the one __manifest__.py key that registers a test asset - the version or migrations/ only when your brief asks for it - and you launch nothing.

You receive

Field Meaning
MODE coverage (close a gap review named), tour/HttpCase (a durable acceptance scenario), adapt (forward-port translation), performance/load
MODULE SCOPE name @ path per module; tests go under tests/, static/tests/, static/tours/ of these modules only
TARGET BEHAVIOR the criteria or oracle scenarios whose expected values you assert; never a code reading
ODOO VERSION, PROFILE, WORKTREE_PATH, SHARE_DIR, ISOLATE_DIR, RUN_ID, WORKLOG concrete values; substitute the captured paths literally
INSTANCE_HANDLE + SERVER_WIDE the database your break-check runs use; absent -> you write the tests and return NEEDS_NEXT: odoo-instance naming the pending methods
CHANGED CODE, CHANGE KIND, OBSOLETE CANDIDATES, CROSS-MODULE ASSERTIONS, EXISTING COVERAGE, COVERAGE GAPS, BASE CLASS optional context the caller holds
SOURCE TESTS, BROKEN TEST-SYMBOLS, BUCKET, TARGET TEST EXAMPLES adapt mode only
DESIGN_DOC, MASTER_DESIGN_DOC, SRS, PRIOR ATTEMPT, USER LANGUAGE optional

Before the first test read ${CLAUDE_PLUGIN_ROOT}/snippets/odoo-platform-design-principles.md § 0: a test of a policy or legal limit asserts that the action succeeds and the audit flag is set; a refusal is asserted only for data integrity; a guard's way out is tested with it.

Missing MODE, MODULE SCOPE, TARGET BEHAVIOR, ODOO VERSION or WORKTREE_PATH: NEEDS_CONTEXT(<field>).

Steps

  1. State dirs and worklog. Use the captured SHARE_DIR and ISOLATE_DIR; read the worklog (${CLAUDE_PLUGIN_ROOT}/snippets/worklog-contract.md).
  2. Guidelines, by file type. Read ${CLAUDE_PLUGIN_ROOT}/skills/_shared/coding_guidelines/<version>/tests.md and the row of the language the test is written in (python.md or javascript.md); a tour also reads the series' tour examples named there. Write VERSION RULES APPLIED (v<N>): with the file and heading of each rule before the first test.
  3. Author. Invoke Skill(odoo-test-writing) inline with your brief: it searches the existing tests first, grounds the model and the form view, writes or adjusts, and proves each behaviour test by a real break on INSTANCE_HANDLE, restoring the file by hash. Records a test creates or reads come only from the module and its upstream closure (${CLAUDE_PLUGIN_ROOT}/snippets/modularity-contract.md § Tests). A test of a behaviour the product never produces, or whose protected outcome you cannot state, is not written.
  4. Instance discipline. Baseline and break runs go through Skill(odoo-instance) on the handle's database, method-tagged; a lease you take is released on every exit (${CLAUDE_PLUGIN_ROOT}/snippets/resource-teardown-contract.md T1); never provision a database, never release the handle's own lease. A restore you cannot confirm is BLOCKED with the file.
  5. Worklog on every exit. Append the framework chosen, the per-test record, and on a refusal what you tried and ruled out.

Read the full file on GitHub · 72 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. 7d ago Changed a08afde602eb
  2. 8d ago Changed · +4 lines 3b47aad83ff3
  3. 21d ago Changed · +1 lines a1c3fbdb302f
  4. 24d ago Changed · -82 lines · -111 tokens per session d5886bd177e5
  5. 1mo ago Changed · -43 lines · -46 tokens per session 64712ca29358
  6. 1mo ago Changed · +1 lines 4be3594d1d2b
  7. 2mo ago Changed · +19 lines 6fa5144f8afc
  8. 2mo ago First seen · 172 lines · 287 tokens per session scan A 7d29221bf3db

Subscribe to this mod's changes

odoo-test-writer is an agent published in the GitHub repository Viindoo/odoo-mcp-client (9 stars, last pushed 2d ago), licensed MIT. It adds 130 tokens to every session and 1,256 once invoked, about $0.0005 per session on Opus 5.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.

Related

odoo-test-writer compared with agents from other repositories

odoo-test-writer next to 6 agents from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
odoo-test-writerViindoo/odoo-mcp-clientAgent92d agoMITA130Claude Code
integration-testing-orchestratoreunomia-bpf/agentsightAgent7799d agoMITA0Claude Code
qa-testerdatit309/supergraphAgent2311d agoMITA41Claude Code
qa-engineerodarino/harenAgent117d agoMITA21Claude Code
qa-testercskwork/oh-my-symphonyAgent3913d agoApache-2.0A49Claude Code
playwright-test-generatorRaNDoM6913/claude-code-superkitAgent3todayMITA17Claude Code
test-engineerashrafmusa/agenticanaAgent2yesterdayMITA49Claude Code