marketplace-build-component

작성자: vercel

Blok 디자인 시스템을 사용하여 Sitecore Marketplace 앱용 UI 구성 요소를 빌드합니다. 사용자가 UI를 만들거나, 구성 요소를 추가하거나, 페이지 레이아웃을 구축하거나...

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

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

vercel의 다른 스킬

benchmark-sandbox
vercel
Vercel Sandbox에서 vercel-plugin eval 시나리오를 로컬 WezTerm 패널 대신 실행합니다. Claude Code와 플러그인이 사전 설치된 임시 마이크로VM을 프로비저닝합니다.
official
emil-design-eng
vercel
이 스킬은 Emil Kowalski의 UI 폴리시, 컴포넌트 디자인, 애니메이션 결정, 그리고 소프트웨어를 훌륭하게 만드는 보이지 않는 세부 사항에 대한 철학을 인코딩합니다.
official
vercel-react-best-practices
vercel
Vercel Engineering의 React 및 Next.js 성능 최적화 가이드라인입니다. 이 스킬은 React/Next.js 코드를 작성, 검토 또는 리팩토링할 때 사용해야 합니다.
official
vercel-react-best-practices
vercel
Vercel Engineering의 React 및 Next.js 성능 최적화 가이드라인입니다. 이 스킬은 React/Next.js 코드를 작성, 검토 또는 리팩토링할 때 사용해야 합니다.
official
write-guide
vercel
점진적인 예제를 통해 실제 사용 사례를 가르치는 기술 가이드를 제작합니다. 개념은 독자가 필요로 할 때만 소개됩니다.
official
release
vercel
Vercel-plugin 릴리스 — 게이트 실행, 버전 업, 아티팩트 생성, 커밋 및 푸시. "릴리스", "배포", "버전 업 및 푸시", "릴리스 생성" 요청 시 사용.
official
deepsec
vercel
dev3000에서 체크아웃한 Vercel 프로젝트에 대해 DeepSec을 실행합니다. 원클릭 DeepSec 설정, 프로젝트 컨텍스트 부트스트래핑, 제한된 1차 처리 등에 사용합니다.
official
backport-pr
vercel
병합된 Next.js 풀 리퀘스트를 canary에서 next-16-2와 같은 이전 릴리스 브랜치로 백포트합니다. 사용자가 백포트, 체리픽 또는 열기를 요청할 때 사용합니다…
official