Borrowing it
Nothing to install: this file belongs to chama-x/GroundRules. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/chama-x/GroundRules/master/.agents/archive/v3/skill_odoo-discipline/skills/odoo-test-writer/SKILL.mdgit clone --depth 1 https://github.com/chama-x/GroundRulesWrote 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/chama-x/groundrules/odoo-test-writer)<a href="https://agentmods.dev/skills/chama-x/groundrules/odoo-test-writer"><img src="https://agentmods.dev/badge/skills/chama-x/groundrules/odoo-test-writer.svg" alt="Measured on agentmods" 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.00066 | $0.00817 |
| Opus 5 | $0.00033 | $0.00409 |
| Sonnet 5 | $0.00013 | $0.00163 |
| Haiku 4.5 | $0.00007 | $0.00082 |
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 6d 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 — 71 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Odoo Test Writer
Use this skill to add practical tests for Odoo custom modules. Prefer tests at the Odoo behavior seam: ORM flows, constraints, computes, access rules, controllers, reports, forms, workflows, and integration boundaries.
First Move
Before writing tests:
- Identify the addon/module and target Odoo version.
- Inspect
__manifest__.py,models/,views/,security/,controllers/,report/,static/src/, existingtests/, and relevant docs. - If
$ODOO_SOURCEis set, inspect local test helpers and framework behavior instead of guessing.
Choose The Test Type
- Use
TransactionCasefor most model/business-logic tests. Each test runs in a savepoint and rolls back. - Use
AccountTestInvoicingCommonfor accounting tests needing companies, products, partners, taxes, journals, or invoices. - Use
Formhelper when testing default values, onchanges, form validations, One2many/Many2many form behavior, or user-like form flows. - Use
HttpCasefor browser, tour, website, portal, controller, or full UI flows. - Use
SingleTransactionCaseonly for read-only suites or expensive setup where cross-test state is acceptable. - Use
unittest.mock.patch/MagicMockfor external APIs, payment gateways, OAuth, webhooks, file system, time, or slow services. Do not mock Odoo internals unless there is no better seam.
Required Structure
your_module/
├── __init__.py # Do not import tests here
├── __manifest__.py
├── tests/
│ ├── __init__.py # Import test modules here
│ ├── common.py # Optional shared fixtures/helpers
│ └── test_*.py # Test files
Every new test_*.py must be imported from tests/__init__.py, or the Odoo test runner will not discover it.
Writing Workflow
- Map the behavior to prove and the smallest Odoo seam that proves it.
- Add or update
tests/common.pyonly for reusable fixtures/helpers. - Create fresh mutable records inside each test unless immutable setup belongs in
setUpClass. - Use Arrange, Act, Assert sections in test method body.
- Test happy path, validation/error path, and relevant side effects.
- For access/security changes, test realistic users/groups/companies with
with_user(). - For external integrations, patch the boundary where it is used, then assert both state changes and mock calls.
- For performance-sensitive code, add
assertQueryCountwhen supported by the target version/test base. - Update
tests/__init__.pyand manifest dependencies only when evidence requires it.
What ships with it
2 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.
- 6d ago First seen · 71 lines · 66 tokens per session scan A 82d5f0979e14
odoo-test-writer is a skill published in the GitHub repository chama-x/GroundRules (5 stars, last pushed 23d ago), licensed MIT. It adds 66 tokens to every session and 817 once invoked, about $0.0003 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.
Other skills, from other repositories
agent-tester
Agent skill for tester - invoke with $agent-tester.
swarmauri-add-community-standalone
Add a second-class standalone Swarmauri package under pkgs/community. Use when Codex needs community package scaffolding, workspace membership, pyproject metadata, README branding, entry points, second-class citizenship rows, exports, tests, and validation.
jest-patterns
Jest and Vitest testing patterns including describe/it blocks, expect matchers, mocking, and async test strategies for JavaScript and TypeScript.
mocking-strategies
Mock, patch, fake, and stub patterns for isolating dependencies in Python and JavaScript test suites.
pytest-patterns
Pytest best practices including fixtures, parametrize, markers, and assertion patterns for Python test suites.
java-conventions
Use when a ticket adds or changes Java code and it must follow the repo's Java conventions — modern Java (records, sealed types, pattern matching, switch expressions), Optional discipline, immutability, Spring Boot constructor injection, and JUnit 5 + Mockito tests. Invoke for "add this in Java", "fix the Java build"…