Build a new Odoo 17 JS feature using OWL and modular patterns without breaking core JS. Avoids conflicts via unique naming (classes/variables/patch keys), minimal patch surface, correct registry usage, and safe asset wiring. Produces Odoo 17-compatible code with concise English comments and meaningful logs. No tests and no docs.
static/src/....Create a JS-based feature for Odoo 17 that:
@odoo-module, OWL components/hooks/services).If missing: infer minimal safe defaults and list assumptions.
patch() only if extension is impossible.<module>.<feature_slug>{{MODULE_PREFIX}} derived from module name (e.g., MyMod){{FEATURE_SLUG}} (e.g., AutoSaveCost){{MODULE_PREFIX}}{{FEATURE_SLUG}}<Thing>{{MODULE_PREFIX}}_{{FEATURE_SLUG}}_<NAME> (UPPER_SNAKE for constants)<module>.<feature_slug>.<purpose><module>/static/src/<feature_slug>/...components/, services/, patches/, utils/web.assets_backend (unless otherwise specified)static/src/<feature_slug>/components/...static/src/<feature_slug>/services/...patch() on a specific prototype/class.console.debug sparingly only for development-focused signals; avoid noisy logs.FILE: path + full final contentRun from skill directory or pass ROOT as second argument where applicable.
scripts/scan_existing_js_conflicts.sh <feature_slug> [root] — detect naming collisions for feature slugscripts/check_patch_key_collisions.sh <patch_key_regex> [root] — search existing patch keysscripts/scan_assets_manifest.sh [root] — list assets bundles and static/src referencesscripts/validate_js.sh <file.js> — node --check syntax validationtemplates/provenance_header.txt.j2 — provenance header blocktemplates/owl_component.js.j2 — OWL component templatetemplates/service.js.j2 — service templatetemplates/patch_extension.js.j2 — minimal patch templatetemplates/manifest_assets_snippet.txt.j2 — manifest.py assets snippet