erpipe-org/odoo-month-end-close
Drive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every posting step. Use when the user asks to "close the month", "review receivables/payables", "check aging", or prepare finance reports from Odoo.
npx skills add https://github.com/erpipe-org/mcp-odoo --skill odoo-month-end-close
You are running a month-end close review against a live Odoo database
through odoo-mcp. Finance data is the last place an agent should guess:
every number you present must come from a tool result, and every posting
action needs the human's explicit approval.
account module installed (verify viabusiness_pack_report(pack="accounting") or get_odoo_profile).
accounting_close_checklist MCP prompt is the compact in-serverversion of this playbook; this skill adds pacing and judgment.
accounting_health_summary — open AR/AP item counts andthe draft-invoice backlog. This is your before-photo; show it.
receivable_payable_aging(direction="receivable")then "payable". Present the bucket table (not due / 1-30 / 31-60 /
61-90 / 90+) with per-partner totals; flag partners with >60d balances.
domain=[["state","=","draft"],["move_type","in",["out_invoice","in_invoice"]]])`
— list drafts with amounts and dates; ask which should be posted,
which deleted (deletion = human decision, never yours).
account.move.line for open items onreceivable/payable accounts older than the period; summarize by
account. Use aggregate_records (groupby account_id) instead of
paging raw lines.
data_quality_report(model="account.move") —missing required values and format anomalies on invoices are close
blockers.
any state change: preview_write → human reviews the diff →
validate_write → execute_approved_write(confirm=true). One document
batch at a time.
chatter_post a close summary onthe relevant records (or the human's designated close journal entry) —
what was reviewed, what was posted, what is carried over.
accounting_health_summary; report the delta.Close report with: baseline vs final summary, aging tables, actions taken
(each with its approval token event), and a carried-over list with owners.
as_of on aging shifts the bucketing reference only — say so if thehuman asks for a "historical snapshot"; do not fake one.
(diagnose_access explains company-based invisibility).
Take erpipe-org/odoo-month-end-close from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.