mcpField
M
marketplace-build-component

marketplace-build-component

github.com/vercel-labsDesign & UI561 installsUpdated 30w ago
Repository

About marketplace-build-component

marketplace-build-component is a skill for building Sitecore Marketplace app interfaces with the Blok design system. It guides component choices and SDK data states according to extension type and available space.

Key features

  1. 01Use Blok design-system components
  2. 02Install components through shadcn CLI
  3. 03Match UI patterns to extension types
  4. 04Handle SDK loading and error states
  5. 05Account for iframe sizing and themes

Use cases

  1. 01Build a compact custom field
  2. 02Create a dashboard widget
  3. 03Design a Pages context panel
  4. 04Implement a fullscreen Marketplace interface

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/vercel-labs/sitecore-skills --skill marketplace-build-component

After installing, type/marketplace-build-componentin Claude Code to confirm it loaded.

Bundled filesreferences/blok-components.md

Details

From the project README

Build UI with Blok Design System

You are helping the user build UI components for a Sitecore Marketplace app using the Blok design system (Sitecore's shadcn-based component library).

Key Principles

  1. Always use Blok components — they match the Sitecore host UI and support light/dark themes automatically
  2. SDK data integration — use loading states (Skeleton) and error states (Alert) when fetching SDK data
  3. Extension point awareness — different extension types have different UI constraints (see below)
  4. Responsive — components render inside iframes of varying sizes

Installing Components

Blok components are installed via the shadcn CLI:

# Install the Blok theme (required first)
npx shadcn@latest add https://marketplace-sdk.sitecorecloud.io/r/blok-theme.json

# Install individual components
npx shadcn@latest add https://marketplace-sdk.sitecorecloud.io/r/<component-name>.json

See blok-components.md for the full component catalog with install commands.

UI Patterns by Extension Type

Compact Field (custom-field)
  • Very limited space (~300px wide, variable height)
  • Use: Input, Select, Badge, small inline components
  • Avoid: Tables, large layouts, modals
Dashboard Widget
  • Medium space (~400x300px default, resizable)
  • Use: Cards, Charts, Stats, compact Tables
  • Good for: Summary data, quick actions
Pages Context Panel
  • Side panel (~350px wide, full height)
  • Use: Vertical layouts, Lists, Accordion, Tabs
  • Good for: Contextual info about current page, actions
Fullscreen
  • Full viewport within the Sitecore shell
  • Use: Any components, complex layouts, Tables, Forms
  • Good for: Full CRUD interfaces, dashboards, settings
Standalone
  • Independent page, not in Sitecore shell
  • Use: Any components, full creative freedom
  • Good for: Public-facing pages, OAuth callbacks

SDK Data Integration Pattern

"use client";

import { useEffect, useState } from "react";
import { useMarketplaceClient, useAppContext } from "@/components/providers/marketplace";
import { Skeleton } from "@/components/ui/skeleton";
import { Alert, AlertDescription } from "@/components/ui/alert";

export function MyComponent() {
  const { client } = useMarketplaceClient();
  const appContext = useAppContext();
  const [error, setError] = useState<string | null>(null);

  const loading = !appContext;

  if (loading) return <Skeleton className="h-32 w-full" />;
  if (error) return <Alert variant="destructive"><AlertDescription>{error}</AlertDescription></Alert>;

  return <div>{/* Render data */}</div>;
}

Reference Files

Comments

Markdown supported