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.
/plugin marketplace add Viindoo/odoo-mcp-client/plugin install odoo-ai-agentsWrote 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.
[](https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-test-writing)<a href="https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-test-writing"><img src="https://agentmods.dev/badge/skills/viindoo/odoo-mcp-client/odoo-test-writing/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.
<a href="https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-test-writing"><img src="https://agentmods.dev/badge/skills/viindoo/odoo-mcp-client/odoo-test-writing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00021 | $0.03842 |
| Opus 5.5 | $0.00008 | $0.01537 |
| Sonnet 5.5 | $0.00004 | $0.00768 |
| Haiku 4.5 | $0.00002 | $0.00384 |
Grade A, and why
odoo-test-writing 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.
How it starts
The opening of the file, as written. The whole thing — 216 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Role
Write automated Odoo tests for every supported series. Every test asserts a business contract,
never a snapshot of the current implementation, and the contract obeys
${CLAUDE_PLUGIN_ROOT}/snippets/odoo-platform-design-principles.md § 0: a policy limit is
asserted to flag and allow, a refusal only for data integrity, a guard together with its way out.
Out of Scope
- Static review of existing tests ->
odoo-code-review - Writing the production code under test ->
odoo-coding; a break alters production code only until you restore it - Debugging a test that fails at runtime ->
odoo-debug; upgrade-safety audit ->odoo-deprecation-audit - Running the module suite or a tour/HttpCase suite ->
odoo-instanceviaNEEDS_NEXT; this skill runs only its own baseline and break runs. A full load/stress harness ->odoo-perf-audit.
When to use
odoo-coder invokes this skill INLINE for its own node - before the code when an acceptance
criterion carries a comparable expected value, after the code for a behaviour discovered while
coding (proven by the break in step 5). The odoo-test-writer agent invokes it for every other
caller.
change- new or adjusted tests for the behavior the REQUEST changed.coverage- backfill behavior tests for existing code (odoo-code-reviewgate).adapt- translate source tests to the target series after the adapt code exists (§ Adapt mode).performance/load- a query-count guard (assertQueryCount/assertQueries) or a bounded time over a seeded volume: a behavior contract, never a benchmark.tour/HttpCase- a JS tour driven byHttpCase.start_tour(...), tagged post-install, for flows needing a real browser; never for pure model logic (TransactionCase / Form) or a mocked JS unit (Hoot).
MCP tools
Pick the right tool first. Odoo Semantic (the odoo-semantic-mcp server) is the INDEXED Odoo source-code knowledge graph: a pre-built graph + vector index of Odoo source across every indexed Odoo version (legacy through latest) and repos/editions, with inheritance, override, and cross-module impact already resolved. It gives AUTHORITATIVE STRUCTURAL facts about how Odoo source IS DEFINED, with no local checkout needed. Unique signature: indexed, cross-version, inheritance-resolved, whole-graph, checkout-free. It is a STATIC index with NO runtime/live data.
This is your PRIMARY, context-efficient source for Odoo source/structure questions - the Odoo codebase is huge and reading it directly burns context, so prefer Odoo Semantic first. Order of precedence: (1) Odoo Semantic available -> use it; (2) available but it lacks the specific detail -> THEN read the source (Read/Grep your checkout) to fill that gap; (3) unavailable -> read the source. Reading code is the FALLBACK, never the first move when Odoo Semantic can answer.
Do NOT use Odoo Semantic for:
- LIVE DATA / runtime - actual record values, search/read/write real records, executing a method, this instance's installed modules -> use a live Odoo MCP server (one exposing read_record/search_records/execute_method), NOT Odoo Semantic.
Look-live-but-static tools (return indexed source, never runtime data):
model_inspect,module_inspect,entity_lookup,validate_domain,validate_depends,validate_relation,describe_module,check_module_exists,resolve_orm_chain. These tool names look like they query a live instance but return indexed source data only. If you need live records, Odoo Semantic is the wrong server.
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 7d ago Changed · -31 lines f507b41a244c
- 8d ago Changed · +3 lines a1053c06fb18
- 9d ago Changed · +1 lines 1909ead533e5
- 17d ago Changed · -4 tokens per session 38a8c26d3bba
- 19d ago Changed · +2 lines e01b28b746c4
- 20d ago Changed · -6 lines 9f892003c836
- 21d ago Changed · +7 lines 7e2d1468ea44
- 24d ago Changed · +4 lines 92f795664616
- 1mo ago Changed dea8b2186417
- 1mo ago First seen · 236 lines · 25 tokens per session scan A 0a88305e7426
odoo-test-writing is a skill published in the GitHub repository Viindoo/odoo-mcp-client (9 stars, last pushed 2d ago), licensed MIT. It adds 21 tokens to every session and 3,842 once invoked, about $0.0001 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-09-03.
odoo-test-writing compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| odoo-test-writingViindoo/odoo-mcp-client | Skill | 9 | 2d ago | MIT | A | 21 | Claude Code |
| test-masterJeffallan/claude-skills | Skill | 12k | 10d ago | MIT | A | 104 | Claude Code |
| migrate-xunit-to-xunit-v3dotnet/skills | Skill | 5.9k | today | MIT | A | 149 | Claude Code |
| go-testingGentleman-Programming/gentle-ai | Skill | 8.7k | today | MIT | A | 26 | Claude Code, Codex |
| principle-test-behavior-not-implementationmichael-denyer/pstack-claude | Skill | 4.2k | today | MIT | A | 50 | Claude Code |
| dart-testdartsim/dart | Skill | 1.2k | today | BSD-2-Clause | A | 18 | Claude Code, Codex |
| test-generatorrshankras/claude-code-apple-skills | Skill | 879 | yesterday | MIT | A | 33 | Claude Code |