From shopify-commerce
Build Shopify admin UIs with Polaris: layout/forms/feedback components, design tokens, guidelines, accessibility. Covers React legacy and Web Components migration.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin shopify-commerceThis skill is limited to using the following tools:
**Fetch live docs**:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides MCP server integration in Claude Code plugins via .mcp.json or plugin.json configs for stdio, SSE, HTTP types, enabling external services as tools.
Fetch live docs:
https://polaris.shopify.com/ for Polaris component documentation and examplessite:shopify.dev polaris app design guidelines for design guidelinessite:shopify.dev polaris web components migration for migration statussite:polaris.shopify.com components for current component APIs and propssite:polaris.shopify.com tokens for current design token valuesShopify's design system for building admin app UIs:
IMPORTANT: Polaris React is in maintenance mode. Shopify is transitioning to Polaris Web Components. Check current migration status before choosing components.
Page — top-level page container with title and actionsLayout — two-column annotated layoutCard — content container with sectionsBox — flexible container with spacing/colorInlineStack — horizontal layoutBlockStack — vertical layoutDivider — visual separatorGrid — CSS grid layoutButton — primary, secondary, destructive actionsButtonGroup — group related actionsActionList — dropdown menu of actionsPopover — dropdown containerNavigation — sidebar navigationTabs — tabbed contentPagination — page navigationTextField — text inputSelect — dropdown selectCheckbox — boolean inputRadioButton — single selectionChoiceList — radio/checkbox groupsDatePicker — date selectionDropZone — file uploadForm — form containerFormLayout — form field arrangementBanner — info, success, warning, critical messagesToast — temporary notificationsBadge — status indicatorsSpinner — loading stateSkeletonPage / SkeletonBodyText — loading placeholdersProgressBar — progress indicatorIndexTable — resource list with bulk actions (primary list component)DataTable — simple tabular dataResourceList — list of resources (legacy, prefer IndexTable)ResourceItem — individual resource entryDescriptionList — key-value pairsEmptyState — no-content placeholderThumbnail — small imageModal — dialog overlaySheet — side panel (deprecated in React, check Web Components)Fetch live docs for current component APIs and props — components are updated frequently. Always check
https://polaris.shopify.com/componentsbefore using any component.
// Pattern: standard Polaris page layout
// Fetch live docs for current Page, Card, and BlockStack props
<Page title="Products" primaryAction={{ content: "Add product", onAction: handleAdd }}>
<Layout>
<Layout.Section>
<Card>
<BlockStack gap="300">
<Text variant="headingMd">Product List</Text>
{/* IndexTable or content here */}
</BlockStack>
</Card>
</Layout.Section>
<Layout.Section variant="oneThird">
<Card>
<Text variant="headingMd">Filters</Text>
</Card>
</Layout.Section>
</Layout>
</Page>
// Pattern: form with validation
// Fetch live docs for current TextField, Select, and Form props
<Form onSubmit={handleSubmit}>
<FormLayout>
<TextField label="Product name" value={name} onChange={setName} autoComplete="off" />
<Select label="Status" options={statusOptions} value={status} onChange={setStatus} />
<Button submit variant="primary">Save</Button>
</FormLayout>
</Form>
// Pattern: Banner for persistent messages, Toast for transient
<Banner title="Order shipped" tone="success" onDismiss={handleDismiss}>
<p>Tracking number: {trackingNumber}</p>
</Banner>
// Toast via App Bridge (not Polaris component in embedded apps)
shopify.toast.show("Product saved");
Consistent design values used across all Polaris components:
| Category | Token Pattern | Examples |
|---|---|---|
| Colors | --p-color-bg-*, --p-color-text-* | --p-color-bg-surface, --p-color-text-critical |
| Spacing | --p-space-* | --p-space-100 (4px) through --p-space-1200 (48px) |
| Typography | --p-font-size-*, --p-font-weight-* | --p-font-size-300, --p-font-weight-bold |
| Border | --p-border-radius-* | --p-border-radius-200 |
| Shadow | --p-shadow-* | --p-shadow-100, --p-shadow-200 |
Fetch live docs for current token values and names — token naming conventions change across Polaris versions. Check
https://polaris.shopify.com/tokens.
Shopify's drag-and-drop library:
Fetch live docs: Web-search
site:github.com shopify draggablefor current API and examples.
Polaris components are built with accessibility:
Fetch live docs: Web-search
site:polaris.shopify.com accessibilityfor current accessibility guidelines and component-specific a11y notes.
IndexTable for resource lists (not DataTable for CRUD interfaces)Banner for persistent messages, Toast (via App Bridge) for transient confirmationsSkeletonPage, SkeletonBodyText) for loading statesPage → Layout → Card → content hierarchyBlockStack and InlineStack for layout (not CSS flex/grid directly)Fetch the Polaris documentation for exact component APIs, design tokens, prop types, and Web Components migration status before implementing.