# Odoo Addon Publisher

> Produce sale-ready Odoo addons/modules that follow the Odoo Apps Store vendor guidelines for Odoo 18.0 and 19.0, gated by a validator that runs. Scaffolds a guideline-compliant module (manifest, company/vendor info, OPL-1 licensing, static/description/index.html, icon, cover image and screenshots) and verifies any addon against the rules. Use when the user wants to build, package, publish or submit an Odoo app/module/addon, fix a __manifest__.py, prepare an App Store listing, add a cover image/icon/screenshots, or check Odoo Apps compliance. Triggers: "Odoo module/addon/app", "publish to Odoo Apps", "__manifest__.py", "OPL-1", "Odoo App Store", "Odoo 18 / 19 module".

- Skill: `neuralmedic-de/odoo-addon-publisher` (Agent Skill, multi-file: 16 files)
- Install (CLI): `npx skillmds@latest add neuralmedic-de/odoo-addon-publisher`
- Raw SKILL.md: https://api.skillmd.com/api/skills/neuralmedic-de/odoo-addon-publisher/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- License: MIT
- Author: NeuralMedic-DE (https://skillmd.com/u/neuralmedic-de)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/neuralmedic-de/odoo-addon-publisher

---


# Odoo addon publisher (App Store-ready, verified)

Build an Odoo addon that is ready to **sell on apps.odoo.com**, and prove it
follows the vendor guidelines with a validator that runs — not just advice.

## Core principle

**Compliance is measured, not claimed.** The loop is: scaffold a compliant module
(or point at an existing one) → run the validator → fix the `ERROR`s → re-validate
until the gate is green → then work the manual pre-submission checklist.

**Honest scope (the rule that keeps this correct):** the validator checks the
*automatable* guideline rules (manifest, structure, listing assets, licence/price
coherence). It does **not** guarantee App Store approval — Odoo's manual review
(English quality, screenshots that truly show the product, "not a clone of
Enterprise", accurate claims, support) is the final authority. Never report
"App Store ready" on a green validator alone. → `references/01-publishing-guidelines.md`

## When to use vs. not

- Use for: building/packaging/publishing an Odoo module for 18.0 or 19.0; writing
  or fixing `__manifest__.py`; preparing the App Store listing (icon, cover,
  screenshots, `index.html`, company info); checking Odoo Apps compliance.
- Not for: writing the module's business logic itself (that's normal Odoo dev),
  or non-Odoo packaging.

## Inputs to gather first

1. **Target series** — Odoo **18.0** or **19.0** (sets the `version` prefix + API).
2. **Module** — technical name (snake_case), display name (**≤ 25 chars**),
   summary, category, dependencies.
3. **Commercial** — free (`LGPL-3`) or paid (**`OPL-1`**, `price ≥ 9`, `currency`,
   `support` email). Paid apps may **not** use (A)GPL.
4. **Vendor/company** — author, company, website, support email, optional
   `live_test_url`; tagline, features and screenshots for the listing.

## Workflow

Load each reference when you reach its step.

1. **Know the rules.** Skim the distilled vendor guidelines + the honest-scope
   note. → `references/01-publishing-guidelines.md`
2. **Get the manifest right.** Keys, version strings per series, licence/price.
   → `references/02-manifest-reference.md`
3. **Lay out the module** per Odoo's conventions. → `references/03-module-structure.md`
4. **Build the listing kit** — icon, cover, `*_screenshot`, English `index.html`,
   company info. → `references/04-listing-assets.md`
5. **Scaffold + validate in a loop** until 0 errors. → `references/05-running-the-tooling.md`
   ```bash
   cp scripts/addon.config.example.json addon.config.json   # edit module + vendor + listing
   python3 scripts/scaffold_addon.py --config addon.config.json --out ./addons
   python3 scripts/validate_addon.py --addon ./addons/<tech_name> --odoo-version 18.0 --config addon.config.json
   ```
6. **Finish the manual pre-submission checklist**, then zip & upload. → `references/06-pre-submission-checklist.md`

## What's in this skill

- `scripts/scaffold_addon.py` — generates a self-validating, guideline-compliant module + listing kit (valid placeholder icon 140×140, cover 560×280, screenshot, `index.html` with company info).
- `scripts/validate_addon.py` — the gate: manifest + structure + listing checks against the vendor guidelines; writes `report.json`/`report.md`, exits non-zero on any error.
- `scripts/lib/manifest.py`, `scripts/lib/imaging.py` — safe manifest parsing + stdlib PNG read/write.
- `scripts/templates/` — `__manifest__.py` and `index.html` templates.
- `scripts/addon.config.example.json` — module + vendor/company + listing config.
- `references/01–06` — guidelines, manifest reference, structure, listing assets, running the tooling, and the manual pre-submission checklist.

## Definition of done

- [ ] `validate_addon.py` reports **0 errors** for the target series; warnings reviewed.
- [ ] Manifest: `name` ≤ 25 chars, `version` matches the series, `depends` complete with `base`.
- [ ] Paid ⇒ `OPL-1`, `price ≥ 9`, `currency` EUR/USD, `support` email present.
- [ ] `static/description/icon.png` (PNG) + `index.html` (English, no JS) + cover + a `*_screenshot` image, all present and local.
- [ ] Company/vendor info in the manifest **and** the index.html "About" section.
- [ ] Manual pre-submission checklist (`06`) complete; packaged as the module folder.

## Guardrails — avoid these mistakes

- **Don't claim "App Store ready" from a green validator** — say "0 validator
  errors; manual checklist complete." Odoo's review is final.
- **`name` ≤ 25 chars**, explicit, no adjectives or company name.
- **Paid ⇒ OPL-1.** You may not charge a price under (A)GPL; minimum price is 9.
- **`version` must match the target series** (`18.0.x.y.z` / `19.0.x.y.z`).
- **No JavaScript / `<script>` in `index.html`**, English only, no links to other
  app stores; host all images locally under `static/description`.
- **A missing/non-existent `depends` or a broken manifest can unpublish your whole
  repository** — validate before every upload.
- **Don't clone Enterprise modules**; disclose external services and data collection.

