Cookbook

HTML → Registry Ingestion

Convert raw HTML sections into installable @vandoko registry components via the 5-phase pipeline

Take a raw HTML section and convert it to a @vandoko registry component installable via npx shadcn add. The 5-phase pipeline handles extraction, Tailwind mapping, TSX conversion, validation, and all 7 registry artifacts automatically.

Prerequisites

vandoko-registry repo

Access to Vandoko-Agency/vandoko-registry (NOT mautomo/vandoko-registry)

Node.js + pnpm

Node.js and pnpm installed in your environment

shadcn CLI

Verify with: npx shadcn@latest --version

Input HTML file

Raw HTML file ready to convert (inline styles expected)

Command

Load the html-to-registry skill, then provide input:

Prompt
Convert this HTML to a registry component:
[paste HTML or provide file path]

Input Example

5-Phase Pipeline

Phase 1: Extract and Inventory

The skill parses the input and identifies discrete sections:

  • Input type: raw HTML file (no ZIP)
  • Sections identified: 1 hero section
  • Component name derived: hero-industrial

Phase 2: Analyze and Map

Every inline style is mapped to a Tailwind utility class or oklch design token:

HTML ElementMaps To
background: #0D1117bg-background (oklch token)
color: #00EEFFtext-primary (oklch token)
color: #FAFAFAtext-foreground (oklch token)
color: #8B95A3text-muted-foreground (oklch token)
border: 1px solid #2A2A2Eborder-border (oklch token)
font-size: 56px; font-weight: 700text-5xl font-bold
border-radius: 8pxrounded-lg
display: grid; grid-template-columns: 1fr 1frgrid grid-cols-1 lg:grid-cols-2
<a> with solid background<Button> from shadcn
<a> with border<Button variant="outline">
<img><Image> from next/image

Phase 3: Convert to TSX

The skill generates a fully typed React component with a Props interface, cn() utility, and shadcn primitives:

Phase 4: Validate (10 checks)

The skill runs 10 automated checks before proceeding to artifact generation:

#CheckResult
1No boolean propsPASS
2Exported Props interfacePASS — HeroIndustrialProps exported
3No forwardRefPASS
4No top-level hooksPASS
5Under 200 linesPASS (~50 lines)
6className propPASS
7No hardcoded hexPASS — all oklch tokens via Tailwind
8No relative importsPASS — @/ alias only
9No same-layer importsPASS
10Props-driven contentPASS — all text via props

Phase 5: Generate Registry Output (7 artifacts)

All 7 artifacts are created in sequence:

ArtifactFilePurpose
5a. Source TSXregistry/new-york/blocks/hero-industrial/hero-industrial.tsxComponent code
5b. Registry manifestregistry.json (append entry)CLI install metadata
5c. Preview wrappercomponents/docs/preview-wrappers-vandoko.tsx (add function)Docs preview
5d. Component registrycomponents/docs/component-registry.tsx (add to vandokoMap)Dynamic import
5e. MDX docscontent/docs/components/hero-industrial.mdxDocumentation page
5f. Sidebar navcontent/docs/components/meta.json (add entry)Navigation
5g. Build + deploypnpm registry:build && pnpm build && git push vandoko mainPublication

Phase 6: Verify (post-deploy)

After the Vercel deploy completes, confirm each endpoint:

CheckCommandExpected
Registry JSONcurl https://registry.vandoko.com/r/hero-industrial.jsonValid JSON with $schema
Docs pagecurl https://registry.vandoko.com/docs/components/hero-industrialHTTP 200
GallerySearch "hero-industrial" on registry.vandoko.com/galleryComponent visible
Install testnpx shadcn@latest add @vandoko/hero-industrial --dry-runResolves files and deps
SidebarVisit docs pageAppears under Vandoko section

How to Install

Once published, any project can install the component with:

Terminal
npx shadcn@latest add @vandoko/hero-industrial

This downloads the TSX, resolves dependencies (Button, Image), and places the component in the project's component directory.

Troubleshooting

SymptomLikely CauseFix
pnpm registry:build failsMissing registryDependenciesEnsure all shadcn primitives (button, card, etc.) are listed in the manifest entry
--dry-run cannot resolveRegistry JSON not deployedVerify pnpm build succeeded and git push vandoko main triggered Vercel deploy
Component shows no previewPreview wrapper not addedCheck preview-wrappers-vandoko.tsx has the function AND component-registry.tsx has the dynamic import
Colors wrong in previewHardcoded hex valuesAudit for hex strings; replace with oklch tokens per the Token Map

On this page