unopim-catalog-model
Installation
SKILL.md
UnoPim Catalog Model
The catalog is not EAV. Every product is one row in products with a single JSON values column; attributes, families and groups only describe how that JSON is shaped, validated, rendered, filtered and indexed. A generic-Laravel instinct (a new column, a new table, an attribute_values relation, a PHP enum of types) is wrong at every layer here. Read the exemplar before you write.
REQUIRED BACKGROUND: unopim-standards for idiom, security, scale, localization and comments. unopim-exec to resolve commands. unopim-verify before calling anything done. Package scaffolding, provider wiring and ACL files: unopim-plugin-development. Import/export of catalog data: unopim-data-transfer. Product grid columns: unopim-datagrid.
Reference files
| File | Read when |
|---|---|
| values.md | Reading or writing products.values, scoping by channel/locale/currency, JSON paths, uniqueness, variant read-time inheritance |
| attribute-types.md | Adding an attribute type, or deciding you do not need one; every layer a type touches |
| product-types-variants.md | product_types config, AbstractType, configurable / variant_group trees, variant structures, the two variant commands, associations |
| events.md | Hooking a catalog write — which event fires on which path, payload shapes, import and bulk-edit paths that do not fire them |