odoo-erp-mcp
AGENTS.md2 starsChanged 5 days agoMITView on GitHub
This repository is an MCP gateway for Odoo. Changes must preserve the typed error contract, authorization policy, secret redaction, mutation lifecycle, and query-protection invariants. - AGENTS.md is the canonical rule set for Codex, opencode, and Claude Code. - CLAUDE.md imports this file for Claude Code. - Canonical skills live in .agents/skills/<name>/SKILL.md; Codex discovers them natively. - opencode and Claude Code use small pointer skills in .opencode/skills/<name>/SKILL.md and .claude/skills/<name>/SKILL.md that redirect to the canonical file. Keep pointer frontmatter in sync with…
- Reads credentials
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,700 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository15 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- atomic-commitSkill
- mcp-tool-extensionSkill
- mutation-lifecycleSkill
- odoo-compatSkill
- releaseSkill
- security-reviewSkill
- web-uiSkill
- atomic-commitSkill
- mcp-tool-extensionSkill
- mutation-lifecycleSkill
- odoo-compatSkill
- releaseSkill
- security-reviewSkill
- web-uiSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
25 rules. About 4 are common, 15 are distinctive, and 6 are very specific to this project.
≈4
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 22
Commit every coherent increment, even a small one.
- Distinctive: line 27
Do not create WIP, empty, test-later, or formatting-only commits.
- Distinctive: line 28
Prefer several small, reviewable commits over one large commit.
- Distinctive: line 31
Every commit must leave the project buildable and the full quality gate green.
- Very specific: line 32
Do not amend, rebase, force-push, or bypass hooks unless the user explicitly asks.
- Distinctive: line 37
Run before every commit:
- Very specific: line 49
Run cargo build --release --all-targets --all-features before release or version-tag commits to match CI.
- Distinctive: line 51
When JavaScript helpers are added, also run:
- Distinctive: line 59
Use Conventional Commits with a concise, informative message:
- Distinctive: line 70
Keep the subject lowercase, imperative, and at most 72 characters.
- Distinctive: line 71
Add a body only when it explains context, impact, or a trade-off that the subject cannot carry.
- Very specific: line 74
Do not add Co-authored-by, Generated-by, AI attribution, or similar trailers.
- Distinctive: line 79
Write clean, efficient, safe Rust.
- Distinctive: line 81
Follow existing modules and naming conventions before introducing new ones.
- Distinctive: line 82
Prefer typed structures and explicit validation over ad-hoc JSON handling.
- Common: line 83
Keep the RPC boundary, policy decisions, and secret handling centralized.
- Very specific: line 84
Use the typed errors in error.rs.
- Common: line 86
Never log, serialize, or return credentials.
- Distinctive: line 88
Do not block the async runtime.
- Distinctive: line 89
Do not add a dependency unless the standard library or an existing dependency cannot do the job cleanly.
- Very specific: line 93
Add focused unit or contract tests for every new behavior and security boundary.
- Distinctive: line 96
Keep the UI accessible and consistent with the existing design system.
- Very specific: line 100
Never commit .env, config.json, credentials, tokens, or generated secrets.
- Common: line 102
Keep authorization defaults deny-by-default.
- Common: line 111
No secrets, credentials, or generated artifacts are staged.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent Workflow
This repository is an MCP gateway for Odoo. Changes must preserve the typed error contract, authorization policy, secret redaction, mutation lifecycle, and query-protection invariants.
Cross-agent entry points
AGENTS.mdis the canonical rule set for Codex, opencode, and Claude Code.CLAUDE.mdimports this file for Claude Code.- Canonical skills live in
.agents/skills/<name>/SKILL.md; Codex discovers them natively. - opencode and Claude Code use small pointer skills in
.opencode/skills/<name>/SKILL.mdand.claude/skills/<name>/SKILL.mdthat redirect to the canonical file. Keep pointer frontmatter in sync with the canonical skill'snameanddescription. - Reusable procedures:
atomic-commit,mcp-tool-extension,mutation-lifecycle,release,security-review,odoo-compat,web-ui.
Atomic commits
- Commit every coherent increment, even a small one. Do not batch unrelated work into a single commit.
- One logical purpose per commit. Do not mix refactoring, features, UI work, or documentation that are not required by that purpose.
- Tests for a behavior belong in the same commit as the behavior.
- Do not create WIP, empty, test-later, or formatting-only commits.
- Prefer several small, reviewable commits over one large commit.
- Stage explicit paths and review the staged diff before committing. Never use a
blind
git add -Aorgit add .. - Every commit must leave the project buildable and the full quality gate green.
- Do not amend, rebase, force-push, or bypass hooks unless the user explicitly
asks. Never use
--no-verifyto hide a failure.
Quality gate
Run before every commit:
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
cargo check --all-targets --all-features
cargo build --all-targets --all-features- Fix failures and rerun the full gate. Do not silence lints with unapproved
#[allow(...)]attributes. - Run
cargo build --release --all-targets --all-featuresbefore release or version-tag commits to match CI. - When JavaScript helpers are added, also run:
node --test src/views/pagination.test.jsCommit messages
Use Conventional Commits with a concise, informative message:
feat(scope): imperative summary
fix(scope): imperative summary
refactor(scope): imperative summary
test(scope): imperative summary
docs(scope): imperative summary
chore(scope): imperative summary- Keep the subject lowercase, imperative, and at most 72 characters.
- Add a body only when it explains context, impact, or a trade-off that the subject cannot carry. Keep it short (normally 1-4 lines) and wrap at 72 characters. Do not restate the diff or list changed files.
- Do not add
Co-authored-by,Generated-by, AI attribution, or similar trailers.
Code standards
- Write clean, efficient, safe Rust. Prefer clarity and explicit behavior over clever shortcuts.
- Follow existing modules and naming conventions before introducing new ones.
- Prefer typed structures and explicit validation over ad-hoc JSON handling.
- Keep the RPC boundary, policy decisions, and secret handling centralized.
- Use the typed errors in
error.rs; avoidunwrapandexpecton fallible paths outside tests. Never swallow errors or leave silent fallbacks. - Never log, serialize, or return credentials.
- Reject malformed input before it reaches Odoo.
- Do not block the async runtime; keep I/O asynchronous and bounded.
- Do not add a dependency unless the standard library or an existing dependency cannot do the job cleanly.
- Preserve backward compatibility for existing
config.jsonfiles or provide a documented migration path. - Add focused unit or contract tests for every new behavior and security
boundary. Use
src/test_support.rsand mocked Odoo responses; tests must not require a live server. - Keep the UI accessible and consistent with the existing design system.
Security
- Never commit
.env,config.json, credentials, tokens, or generated secrets.config.example.jsonis the only configuration file that belongs in git. - Keep authorization defaults deny-by-default. Do not weaken policy checks, secret redaction, or mutation safeguards to make a test pass.
- Review staged changes for accidental secret or debug-output leakage before every commit.
Definition of done
- The change has one purpose and includes its tests and documentation.
- The full quality gate passes.
- No secrets, credentials, or generated artifacts are staged.
- The commit message follows the format above.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

