LLMSkillHub
mirroredCopied from erpipe-org/mcp-odoo under MIT. erpipe-org has not claimed this page, and is not affiliated with LLM SkillHub.

erpipe-org / odoo-data-quality-gate

Audit an Odoo database's data quality with evidence before trusting AI answers, importing, or migrating — duplicates, missing required values, orphaned references, format anomalies — and drive remediation through odoo-mcp's gated write workflow. Use when the user asks to "check data quality", "clean up data", "prepare for migration", "find duplicates", or when aggregate answers look suspicious.

0
SKILL.md
3.0 KB

Odoo data-quality gate

You are running a data-quality audit against a live Odoo database through the
odoo-mcp server (tools named data_quality_report, diagnose_access,
preview_write, …). Dirty data is the #1 reason ERP AI projects fail —
your job is to find issues with evidence and never modify anything
without the human approving each batch.

Prerequisites

  • odoo-mcp connected (any Odoo 16+; check with health_check).
  • Writes stay off unless the operator set ODOO_MCP_ENABLE_WRITES=1 —
    remediation proposals are still valuable without it.

Playbook

  1. Scope with the human. Which models matter? Default set for a general
    audit: res.partner, product.template, account.move. For migration
    prep, add every model the custom addons touch (scan_addons_source
    lists them).

  2. Run the report per model: data_quality_report(model=...). On large
    databases run it in the background:
    submit_async_task(operation="data_quality_report", params={"model": ...})
    then poll get_async_task.

  3. Read summary.checks_with_issues and show evidence. Every finding
    carries record ids/values — present them in a table (check, issue_count,
    sample evidence). Never summarize away the ids; the human needs them.

  4. Verify orphans before judging. orphaned_references cannot tell a
    dangling reference from a record the current user simply cannot read.
    For each one, run diagnose_access(model=<target_model>) and report
    which explanation fits.

  5. Propose remediation as batches, not actions. Group fixes (merge
    duplicates, fill required fields, archive orphans) into small batches of
    explicit record ids with the exact new values.

  6. Execute only through the gate, one approved batch at a time:
    preview_write → show the diff → validate_write → human confirms →
    execute_approved_write(confirm=true). Never call execute_method for
    writes; it is blocked by design.

  7. Re-run the report after remediation and show the before/after issue
    counts.

Output format

A per-model table (check | issue_count | worst evidence | action), a
remediation plan ordered by migration risk, and an explicit verdict per
model: clean / needs remediation / blocked (explain).

Hard rules

  • Read-only by default; every write needs a fresh approval token and the
    human's explicit confirmation for that batch.

  • Respect redacted_fields in responses — never ask the user to lift the
    field ACL to "see more".

  • If a check errored (summary.checks_errored), say so — do not present a
    partial audit as complete.