install
source · Clone the upstream repo
git clone https://github.com/19prince/claude-odoo-builder
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/19prince/claude-odoo-builder "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/odoo-theme-fix" ~/.claude/skills/19prince-claude-odoo-builder-odoo-theme-fix && rm -rf "$T"
manifest:
skills/odoo-theme-fix/SKILL.mdsource content
Skill: odoo-theme-fix
TRIGGER: User shares a screenshot of an Odoo page and asks for visual fixes, theming improvements, or readability changes.
What this skill does
Reviews an Odoo page screenshot against the blueprint dark theme, identifies broken or mismatched elements, writes targeted CSS overrides, and pushes them to
website.custom_code_head via RPC — without touching any page arch.
Instructions
When invoked:
-
Read the screenshot — identify every element that is wrong:
- White or light backgrounds that should be dark (
)#071222 - Dark text on dark backgrounds (contrast failure)
- Default Odoo colors breaking the blueprint palette
- Unstyled form inputs, search bars, cards, pagination, badges
- White or light backgrounds that should be dark (
-
Read
— check the known selector map before writing anything new. Reuse confirmed selectors. Add new ones only when needed.workflows/css_theming.md -
Read the current
:custom_code_headsites = c.search_read("website", [], ["id", "custom_code_head"]) -
Write a targeted
block following these rules:<style>- Use the blueprint palette:
bg,#071222
card bg,#0a1c33
/#3b8eea
/#5da8ff
blues,#7ec8ff
headings,#ffffff
body,rgba(255,255,255,.82)
mutedrgba(255,255,255,.6) - Scope every selector to the page's body class (e.g.
,.o_wblog_index
) to avoid leaking styles globally.o_wblog_post_page - Use
on color and background overrides — Odoo's specificity is high!important - Wrap the block in
and/* == [section name] start == */
CSS comments so it can be cleanly replaced later/* == [section name] end == */ - Strip the previous block for that section before appending the new one (use
withre.sub
)DOTALL
- Use the blueprint palette:
-
Push via RPC:
c.write("website", [site_id], {"custom_code_head": new_head}) -
Confirm what changed and ask for a follow-up screenshot to verify.
Blueprint Palette Reference
| Role | Value |
|---|---|
| Page background | |
| Card / panel background | |
| Elevated surface | |
| Primary blue | |
| Bright blue (links, accents) | |
| Light blue (muted accents) | |
| Heading text | |
| Body text | |
| Muted text | |
| Subtle text | |
| Card border | |
| Divider | |
| Blueprint grid line | |
| Success green | |
| Error red | |
| Warning amber | |
Do Not
- Do not modify
arch orir.ui.view
records — CSS onlywebsite.page - Do not use broad unscoped selectors like
— always scope to a page classh1 { color: white } - Do not push without running a
cleanup of any previous block for that sectionre.sub - Do not add visible text markers in the HTML — markers must be CSS comments inside
tags<style>