dist/cursor/bigcommerce-commerce/skills/bc-catalog/SKILL.md
Work with BigCommerce catalog — products, variants, options, modifiers, categories, brands, metafields, images, and bulk operations. Use when managing product data programmatically or building catalog integrations.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins bc-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:
https://developer.bigcommerce.com/docs/rest-catalog for Catalog API referencesite:developer.bigcommerce.com catalog products variants options for product data modelbigcommerce product options vs modifiers for variant architectureProduct
├── Options (define variant axes — e.g., Color, Size)
│ └── Option Values (Red, Blue, Small, Large)
├── Variants (specific combinations — Red/Small, Blue/Large)
│ ├── SKU, Price, Weight, Image
│ └── Inventory per variant
├── Modifiers (non-variant options — e.g., Engraving Text)
│ └── Modifier Values
├── Images (gallery images)
├── Videos
├── Custom Fields (key-value pairs shown on product page)
├── Metafields (hidden structured data for integrations)
└── Reviews
Core fields:
name, type, sku, descriptionprice, sale_price, retail_price, cost_priceweight, width, height, depthis_visible, availability, conditioncategories — array of category IDsbrand_id — associated brandProduct types: physical, digital
| Feature | Options | Modifiers |
|---------|---------|-----------|
| Creates variants | Yes | No |
| Affects SKU | Yes | No |
| Affects inventory | Yes | No |
| Example | Color, Size | Gift wrapping, Engraving text |
| API path | /products/{id}/options | /products/{id}/modifiers |
Each unique combination of option values creates a variant:
sku, price, weight, image_urlinventory_level and inventory_warning_levelid and array of option_valuesCategories are tree-structured:
parent_id — 0 for top-level, otherwise parent category IDsort_order — display orderis_visible — visibility on storefrontProducts belong to one or more categories:
categories array on productSimple flat taxonomy:
name, page_title, meta_keywords, meta_descriptionimage_url — brand logobrand_idKey-value data storage for products, categories, brands, customers, and orders:
app_id + namespace + key = uniqueapp_only, read, write, read_and_sf_accessPOST /v3/catalog/products/{id}/metafieldskey, value, namespace, permission_set, descriptionread_and_sf_access permission to expose in GraphQL Storefront APIPOST /v3/catalog/products/{id}/images — upload or reference by URLimage_url or image_file, is_thumbnail, sort_order, descriptionEach variant can have its own image via image_url field on the variant.
Visible key-value pairs displayed on the product page:
name — field labelvalue — field value/v3/catalog/products/{id}/custom-fieldsPOST /v3/catalog/products
[
{ "name": "Product 1", "type": "physical", "price": 29.99, ... },
{ "name": "Product 2", "type": "physical", "price": 39.99, ... }
]
PUT /v3/catalog/products
[
{ "id": 123, "price": 34.99 },
{ "id": 456, "price": 44.99 }
]
DELETE /v3/catalog/products?id:in=123,456,789
id:in=1,2,3 — by IDsname:like=Widget — name searchsku=ABC-123 — exact SKU matchcategories:in=10,20 — by categorybrand_id=5 — by brandprice:min=10&price:max=100 — price rangeavailability=available — availability filteris_visible=true — visibility filterinclude=images,variants,custom_fields — include sub-resources?page=1&limit=50 — default 50, max 250 per page.
include=images,variants to fetch sub-resources in one requeststore/product/updated, store/product/inventory/updated) for real-time syncpermission_set on metafields based on who needs accessFetch the BigCommerce Catalog API reference for exact endpoint paths, request schemas, and filter options 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.