dist/cursor/magento2-commerce/skills/magento-catalog/SKILL.md
Work with Magento 2 catalog — product types, categories, attributes, indexing, and search integration. Use when building catalog features, customizing product types, or working with the catalog architecture.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins magento-catalogInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch live docs:
site:developer.adobe.com commerce php development components catalog for catalog developmentsite:developer.adobe.com commerce php development components indexing for indexer guidehttps://developer.adobe.com/commerce/php/development/components/indexing/ for indexing architecture| Type | Description | Key Characteristics | |------|-------------|-------------------| | Simple | Single physical item | Unique SKU, own stock, no variations | | Configurable | Parent with variant children | Children are simple products, vary by attributes (size, color) | | Grouped | Collection of products | Simple/virtual children, purchased independently | | Bundle | Customer-assembled set | Options with selectable items, dynamic/fixed pricing | | Virtual | Non-physical (services) | No shipping, no weight | | Downloadable | Digital products | Files/links, optional samples |
The most complex type — a parent product with simple product children:
catalog_product_super_attribute, catalog_product_super_linkPossible to create custom types by:
Magento\Catalog\Model\Product\Type\AbstractTypeetc/product_types.xmlname, description, image, meta_title, meta_descriptionis_active, include_in_menu, display_modeurl_key, url_pathEAV queries are expensive. Indexers pre-compute denormalized data for fast reads.
catalog_product_price — pre-computed product pricescatalogsearch_fulltext — search engine index (OpenSearch/Elasticsearch)catalog_product_attribute — filterable attributes for layered navigationcataloginventory_stock — stock statuscatalogrule_product — catalog price rulescatalog_category_product — category-product associations| Mode | Behavior | Use Case | |------|----------|----------| | Update on Save | Reindexes immediately on data change | Small catalogs, development | | Update by Schedule | Cron-based, uses changelog tables | Production (recommended) |
Changelog tables (*_cl) track changes via database triggers. Cron compares versions in mview_state to determine what needs reindexing. Efficient — only processes changed entities.
bin/magento indexer:reindex # Reindex all
bin/magento indexer:reindex catalogsearch_fulltext # Reindex specific
bin/magento indexer:status # Show status
bin/magento indexer:set-mode schedule # Set all to schedule mode
ProductRepositoryInterface) for programmatic product accessFetch the catalog and indexing docs for exact indexer configuration, product type XML schema, and search integration patterns before implementing.
development
Build with Spree's headless Next.js storefront — the official `spree/storefront` repo (Next.js 16 App Router with Server Actions and Turbopack, React 19 Server Components, Tailwind CSS 4, TypeScript 5, `@spree/sdk`, Sentry), server-only auth (httpOnly JWT cookies + publishable key), MeiliSearch faceted catalog, one-page checkout with Apple/Google Pay/Klarna/Affirm/SEPA, multi-region market routing, GA4 + JSON-LD SEO, and Vercel/Docker deployment. Use when forking or customizing the storefront, or evaluating headless adoption.
tools
Build Spree extensions as Rails engines — gem scaffolding, `bin/rails g spree:extension`, mounting routes/migrations/assets, the modern `prepend` decorator pattern (`*_decorator.rb` with `self.prepended(base)`), generators (`spree:model_decorator`, `spree:controller_decorator`), the four customization surfaces in preference order (Events > Webhooks > Dependencies > Decorators), Spree::Dependencies for swapping service objects, gem release/versioning, and the deprecated Deface engine. Use when building a reusable Spree extension or adding non-trivial customization to an app.
development
Build with Spree's event bus and Webhooks 2.0 — `Spree::Events` publication, `Spree::Subscriber` DSL with `subscribes_to` and `on`, wildcard matching, lifecycle events (`{model}.created/.updated/.deleted` via `publishes_lifecycle_events`), the canonical event catalog (order.*, payment.*, shipment.*, product.*), Webhooks 2.0 endpoints, HMAC-SHA256 signing (`X-Spree-Webhook-Signature`), exponential-backoff retries, and Sidekiq job orchestration. Use when wiring event-driven business logic, building webhook consumers, or replacing ActiveSupport callback chains.
tools
Cross-cutting Spree development patterns — the customization preference hierarchy (Events > Webhooks > Dependencies > Decorators), `Spree::Dependencies` service-object swapping, the `_decorator.rb` + `prepend` + `self.prepended` idiom, idempotent subscribers and webhook receivers, multi-store scoping discipline, prefixed IDs, calculator polymorphism (shipping/promotion/tax share the base), service-object composition with `dry-monads` or simple results, why to avoid `class_eval` reopening and Deface, and Spree-on-Rails idioms (Hotwire/Turbo Stimulus, ActiveStorage, Action Cable, Sidekiq). Use when designing the architecture of a Spree extension or solving cross-cutting concerns.