Sandbox
@19prince/claude-odoo-builder

Claude Code workflows for Odoo website building

This repo turns Claude Code into a project-specific Odoo website builder. It gives Claude a working set of skills, workflows, and Python scripts so it can plan pages, validate HTML, push content, style pages with CSS, and manage mailings or surveys through Odoo's API.

47 stars20 forksPythonUpdated 2mo ago
Who it's for

Builders who use Claude Code to create and update Odoo websites.

What it delivers

You can move from page idea to validated Odoo content and deploy it with fewer manual steps.

What it does

Project scaffolding skill

`new-odoo-project` creates a full project with tools, workflows, `.env`, and `CLAUDE.md`.

Theme fix skill

`odoo-theme-fix` reviews a screenshot, writes targeted CSS overrides, and pushes them through RPC.

Odoo API tools

Python scripts fetch, list, validate, update, and publish pages and mailings through a shared `odoo_client.py`.

Survey builder

`create_survey.py` builds Odoo surveys from YAML, dry-runs the payload, and deploys them to Odoo.

Workflow guides

Markdown SOPs cover page design, theming, snippets, mailings, and staging-to-production migration.

How to get it

  1. 1Clone this repo
    git clone https://github.com/19prince/claude-odoo-builder.git
  2. 2Copy the skills into your Claude Code skills directory
    cp -r claude-odoo-builder/skills/* ~/.claude/skills/
  3. 3Install Python dependencies
    pip install requests python-dotenv pyyaml
  4. 4Open Claude Code in your terminal and type
    /new-odoo-project
  5. 5Open the .env file in your project and fill in ODOO_PASSWORD=
    nano ~/projects/my-website/.env

README

Claude Odoo Builder

Turn Claude Code into an Odoo website builder. One command scaffolds a complete project with tools, workflows, and configuration for designing, building, and deploying pages on your Odoo website.

Disclaimer

By downloading and deploying these files, you take full responsibility. Neither 19 Prince nor Darren are responsible for productivity gains, productivity losses, injury due to falling down rabbit holes, lost sleep, or the annoying conversations you'll feel the need to have about Claude Code.

Seriously, I tried to provide you with some useful tools. I genuinely hope you like them. That said, read the files and be safe out there. You are taking full responsibility for any and all outcomes.


What's Included

Skills

SkillTriggerWhat it does
new-odoo-project/new-odoo-projectScaffolds a full Odoo website builder project — tools, workflows, .env, and CLAUDE.md
odoo-theme-fixShare a screenshot + ask for fixesReviews a page screenshot, writes targeted CSS overrides, and pushes them via RPC

Tools (Python scripts)

ToolPurpose
odoo_client.pyShared Odoo JSON-RPC client used by all other tools
get_page.pyFetch any page's HTML with automatic backup
list_pages.pyList all website pages with publish status
push_page.pyCreate or update pages with QWeb wrapping
validate_html.pyPre-push HTML validator for Odoo compatibility
scaffold_snippet.pyGenerate a full Odoo module skeleton (models, views, security, data, i18n, static)
create_survey.pyBuild and deploy Odoo surveys from a YAML definition — questions, answer options, access mode
migrate_to_production.pyMigrate staging changes to production with backup and rollback
list_mailings.pyList email mailings and mailing lists
get_mailing.pyFetch a mailing's body_arch HTML with backup
push_mailing.pyCreate or update draft mailings (never sends)

Workflows (Markdown SOPs)

WorkflowPurpose
design_page.mdStep-by-step guide for designing new pages
design_system.mdBootstrap/Odoo reference with 13 paste-ready section templates
push_to_odoo.mdHow to push content to Odoo safely
css_theming.mdCSS injection via custom_code_head
create_snippet.mdHow to build and deploy custom snippet modules
module_structure.mdStandard Odoo module directory layout — what each folder is for and when to use it
design_survey.mdHow to plan, write, and deploy an Odoo survey from a YAML definition
manage_pages.mdPage operations reference (list, fetch, update, delete)
create_mailing.mdFormat markdown content into an Odoo email mailing
migrate_staging_to_prod.mdFull migration guide with dry-run and rollback

Prerequisites

  • Claude Code installed
  • Python 3.8+
  • An Odoo instance with admin access (URL, database name, login email)

Installation

  1. Clone this repo:
git clone https://github.com/19prince/claude-odoo-builder.git
  1. Copy the skills into your Claude Code skills directory:
cp -r claude-odoo-builder/skills/* ~/.claude/skills/
  1. Install Python dependencies:
pip install requests python-dotenv pyyaml

Quick Start

Open Claude Code in your terminal and type:

/new-odoo-project

Claude will ask you for:

  1. Project directory — where the project should live
  2. Client/project name — a short name for your project
  3. Odoo URL — your Odoo instance URL
  4. Database name — your Odoo database name
  5. Login email — the email you use to log into Odoo
  6. Staging or production? — whether you have a separate staging server

Claude creates the project structure and a .env file with your credentials template. You fill in the password yourself — Claude never sees it.


After Setup

Add your password

Open the .env file in your project and fill in ODOO_PASSWORD=:

nano ~/projects/my-website/.env

Verify the connection

Claude automatically tests the connection. If it works, you'll see all your website pages listed with their publish status.

Check the website editor

Log into your Odoo backend, open the website editor, and verify:

  • Snippet block thumbnails load without warning icons
  • You can drag blocks onto the page
  • Text and image toolbars appear when clicking elements

If blocks show orange warning icons, the page arch is missing <div id="wrap" class="oe_structure"> inside the layout call. This is handled automatically by push_page.py — if you see it on an existing page, re-push the arch through the tool.


What You Can Do

Design and build pages

Tell Claude what page you want. It plans the layout, writes Odoo-compatible HTML using paste-ready templates, validates it, and pushes it to your website.

Style with CSS

Claude injects custom CSS through Odoo's custom_code_head — no theme module needed. Describe what you want changed and it writes scoped CSS.

Manage pages

List all pages, fetch HTML for editing, publish or unpublish, create new pages from scratch.

Fix visual issues from screenshots

Share a screenshot and Claude identifies broken elements, writes targeted CSS fixes, and pushes them — all without touching page content.

Create email mailings

Bring your newsletter content as structured markdown. Claude fetches an existing mailing as a template, formats the content into Odoo's email HTML, and pushes it as a draft — ready for you to review and send from Odoo.

Build and deploy surveys

Describe your survey — webinar feedback, NPS, customer research, lead-gen quiz. Claude writes a YAML definition with your questions and answer options, dry-runs it to confirm the payload, then deploys it to Odoo and returns the public share URL. Works with radio buttons, checkboxes, free text, scale ratings, date inputs, and more. Requires the Odoo Surveys app to be installed.

Build a module

Claude scaffolds a complete, installable Odoo module following the standard directory structure — models/, views/, security/, data/, i18n/, and static/. Whether you're building a reusable website snippet or a full business module, the skeleton is production-ready from the first file. Claude follows module_structure.md to know what goes where.

Migrate staging to production

Build on staging, then migrate to production with automatic backup and one-command rollback.


Project Structure

After setup, your project folder looks like this:

my-website/
  .env            # Your Odoo credentials (never shared)
  CLAUDE.md       # Instructions Claude reads every session
  .tmp/           # Temporary working files
  tools/          # Python scripts that talk to Odoo
  workflows/      # Step-by-step guides Claude follows

Tips

  • Always dry-run before migrating — the migration tool has a --dry-run flag
  • Surveys have a dry-run toocreate_survey.py --dry-run prints the full payload before touching Odoo
  • Claude reads workflows automatically — ask it to design a page and it reads design_page.md first
  • Everything is backed up — before any destructive operation, tools save a backup to .tmp/
  • Passwords stay local — only in your .env file, which is never committed

License

MIT — see LICENSE.

Files in the repo

Repository payload7 top-level entries
  • skills
  • tools
  • workflows
  • .gitignore
  • CLAUDE.md
  • LICENSE
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More harnesses

affaan-m/
ECC
affaan-m/ECCHarnesses

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

258k
ruvnet/rufloHarnesses

🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated

72k

Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.

11k