name: jalco-shadcn-registry description: Build and maintain the jalco ui shadcn-compatible registry. Use when creating or reviewing registry items, editing registry.json, choosing registry item types, configuring namespaced registries, planning authentication, adding docs metadata, or ensuring MCP/open-in-v0 compatibility.
jal-co/ui shadcn Registry Skill
Use this skill when working on jalco ui registry infrastructure, registry items, or registry-related docs.
Required reading before changes
Before implementing registry work, the agent MUST read:
.pi/skills/components-build/SKILL.md— the engineering standard every registry item must meetAGENTS.mdregistry.jsonpackage.json.pi/skills/vercel-react-best-practices/SKILL.md.pi/skills/vercel-composition-patterns/SKILL.md.pi/skills/tailwind-design-system/SKILL.md
When needed, the agent SHOULD also inspect:
components.jsonpublic/rregistry/components/open-in-v0-button.tsxapp/page.tsx
What this skill covers
- creating new registry items
- choosing the correct registry item type
- updating
registry.json - validating
files,target,dependencies, andregistryDependencies - organizing items under
registry/[style]/... - planning namespaced registries
- preparing for MCP compatibility
- planning Open in v0 compatibility
- documenting installation and usage
- evaluating item types:
registry:component,registry:block,registry:ui,registry:lib,registry:hook,registry:style,registry:theme,registry:base, orregistry:item
Core rules from shadcn registry docs
Registry basics
- The registry MUST expose a root
registry.jsonpayload. registry.jsonMUST validate againsthttps://ui.shadcn.com/schema/registry.json.- Registry items MUST conform to
https://ui.shadcn.com/schema/registry-item.json. - The
shadcn buildcommand generates item payloads underpublic/rby default. - The registry index SHOULD maintain useful titles and descriptions.
File organization
- Source files SHOULD be placed under
registry/[style]/[item-name]/.... - For grouped items, internal folders like
components/,hooks/, andlib/SHOULD be used. - Imports inside registry source MUST use the
@/registry/...path when referencing registry-local files. - File structure MUST be intentional and installable.
Choosing item types
The agent MUST use the smallest correct type:
registry:componentfor simple componentsregistry:uifor reusable UI primitives and single-file primitivesregistry:blockfor multi-file installable blocks and richer examplesregistry:hookfor hooksregistry:libfor utilities and non-component coderegistry:pagefor route/page filesregistry:filefor miscellaneous targeted filesregistry:themefor theme tokensregistry:stylefor stylesregistry:basefor full design-system base configurationregistry:itemfor universal or framework-agnostic items
files and targets
- Every file entry MUST include
pathandtype. targetis REQUIRED forregistry:pageandregistry:file.- Explicit targets SHOULD be used for universal items.
- Target paths MUST be clear, intentional, and safe.
Dependencies
dependenciesMUST be used for npm packages.devDependenciesMUST only be used for development-only packages.registryDependenciesMUST be used for shadcn items, namespaced items, or remote registry item URLs.- Dependencies MUST be complete and accurate.
- Dependency sets SHOULD be minimal.
Metadata quality
titleanddescriptionMUST have useful values.- Meaningful
categoriesandmetaSHOULD be provided when they improve discoverability. docsSHOULD be used to show extra installation/setup guidance when needed.- Descriptions SHOULD help both humans and MCP/AI systems understand the item quickly.
Namespaces
Namespace support SHOULD be planned early.
Namespace rules
- Namespace names MUST start with
@. - Format MUST be
@namespace/resource-name. - Namespace config belongs in
components.jsonunderregistries. {name}in registry URLs MUST be supported.{style}SHOULD be supported when serving style-specific variants.
Suggested jalco ui approach
Start simple, then expand.
Good initial public namespace options:
@jalcofor primary public items@jalco-blocksfor blocks if separation becomes useful@jalco-experimentalfor unstable items later
Default recommendation:
- keep the source registry simple first
- design item naming and docs so a namespace strategy can be layered on cleanly later
Authentication
For private registries or future premium/internal variants:
- MUST use HTTPS
- SHOULD use environment-variable-backed credentials
- SHOULD support Bearer token or API key auth for CLI consumers
- MAY use query parameter auth when needed for Open in v0 compatibility
- MUST NOT commit tokens or real credentials
Open in v0 limitation
Open in v0 does not support:
- namespaced registries
- cssVars
- css
- envVars
- advanced header-based authentication
If Open in v0 support is required, prefer a public item URL or query-parameter-based auth.
MCP compatibility
The shadcn MCP server works with shadcn-compatible registries without special custom server work.
To stay MCP-friendly:
registry.jsonMUST be valid and discoverable- Item names MUST be consistent and kebab-case
- Descriptions SHOULD be informative
- Dependencies MUST be declared accurately
registryDependenciesMUST preserve clear relationships- A registry index item MUST be available at the expected root registry endpoint
Open-source registry index
If jalco ui is submitted to the shadcn open-source registry index later:
- the registry MUST be publicly accessible
- the registry SHOULD be flat at the public endpoint
- item payloads MUST be root-addressable
- MUST NOT rely on embedded
contentin the public registry index listing - the final hosted shape MUST be validated against shadcn requirements before submission
jal-co/ui standards for registry work
Every registry item MUST conform to the components-build engineering standard and be:
- installable
- readable
- accessible
- polished
- documentation-ready
- consistent with jalco ui naming and design standards
SHOULD prefer:
- strong preview value
- practical examples
- accurate install guidance
- minimal surprises for consumers
MUST NOT include:
- vague descriptions
- bloated dependency lists
- unclear file targets
- overly clever item structures
- inconsistent item types
- undocumented environment variable requirements
Recommended workflow
- Create a feature branch:
feat/<item-name>. - Read
AGENTS.mdand relevant local skills. - Inspect similar registry items already in the repo.
- Choose the correct item type.
- Create files under the correct
registry/[style]/...location. - Update
registry.jsonwith accurate metadata. - Verify dependencies and registry dependencies.
- Create a catalog card preview at
components/docs/previews/<registry-name>.tsxwith key variants. - Add the sidebar nav entry in
lib/docs.tswithbadge: "New"andbadgeAddedset to today's ISO date. - Run
pnpm previews:generateto update the catalog import map. - Generate screenshots via
/dev/screenshots— save dark and light PNGs topublic/previews/. - Run
pnpm registry:build. - Run
pnpm buildto verify full compilation. - Test the local endpoint in
public/ror via the dev server. - Confirm docs/install copy is accurate.
- Open a PR using the component template (
.github/PULL_REQUEST_TEMPLATE/component.md). - If relevant, verify MCP and Open in v0 implications.
Useful commands
pnpm install
pnpm dev
pnpm registry:build
pnpm dlx shadcn@latest view http://localhost:3000/r/<item-name>.json
pnpm dlx shadcn@latest add http://localhost:3000/r/<item-name>.json
When reviewing registry work
Check for:
- valid item type selection
- correct
filesandtargetusage - complete dependency declarations
- good descriptions and categories
- installability
- consistent registry paths
- realistic docs guidance
- namespace/auth/MCP/open-in-v0 implications when relevant