launch-shadcn-registry
About launch-shadcn-registry
launch-shadcn-registry is a skill for preparing directory submissions and launch posts for custom shadcn/ui registries. It validates a registry profile, runs preflight checks, and generates submission materials and platform-specific social drafts.
Key features
- 01Validate registry profile fields
- 02Run preflight checks
- 03Generate directory entries and PR copy
- 04Draft platform-specific social posts
- 05Track submissions and follow-up tasks
Use cases
- 01Prepare directory submissions for a custom registry
- 02Check registry JSON and component URLs
- 03Assemble PR materials for multiple directories
- 04Draft launch posts for Reddit, X, or Dev.to
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ shadcn-labs/ skills --skill launch-shadcn-registryAfter installing, type/launch-shadcn-registryin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
SKILL.zh-CN.mdevals/evals.jsonreferences/awesome-ai-devtools.mdawesome-birobirobiro.mdawesome-bytefer.mdfree-for-dev.mdpreflight.mdregistry-directory.mdshadcn-ui-official.mdshadcntemplates.mdreferences/social/devto.mdhackernews.mdreddit.mdx.mdscripts/validate-registry.shtemplates/registry-profile.example.jsonregistry-profile.schema.jsonDetails
From the project README中文版: SKILL.zh-CN.md
Launch a shadcn registry
Prepare directory submissions for a custom shadcn/ui registry, then write posts that fit each platform.
Before you start
Confirm whether the user wants the full launch or only selected targets. Default to the full workflow unless they narrow the scope.
Collect or infer a registry profile. Ask for missing required fields before generating submissions. Use templates/registry-profile.example.json as the shape and validate it against templates/registry-profile.schema.json.
Required profile fields:
| Field | Purpose |
|---|---|
scope | Registry scope such as @ogimagecn |
name | Display name |
homepage | Public project or documentation URL |
registryBaseUrl | Base URL for JSON files with no trailing slash |
componentUrlPattern | URL pattern with a {name} placeholder, such as https://example.com/r/{name}.json |
description | One directory sentence of no more than 160 characters |
descriptionLong | Two or three sentences for awesome lists and social posts |
githubUrl | Source repo |
githubUsername | For avatar URLs and filenames |
distribution | open-source or premium |
categories | Tags for shadcntemplates and awesome lists |
installExample | Full install command such as npx shadcn@latest add @scope/component-name |
logo | Optional inline SVG string; recommended for the official directory |
registryIndexPath | Optional registry index path relative to registryBaseUrl; defaults to /registry.json |
sampleComponents | Optional component slugs to validate during preflight, such as ["og-image"] |
features | Optional points for shadcntemplates and social posts |
mcpUrl | Optional MCP endpoint on the registry domain, such as https://example.com/mcp; required for awesome-ai-devtools |
freeTier | Optional free-tier sentence with concrete limits; required for free-for-dev |
pricingUrl | Optional public pricing page URL; required for free-for-dev |
Workflow
Copy this checklist and track progress:
Launch Progress:
- [ ] Phase 1: Preflight validation
- [ ] Phase 2: Generate directory artifacts
- [ ] Phase 3: Open GitHub pull requests after user approval
- [ ] Phase 4: Draft social posts
- [ ] Phase 5: Post-launch follow-up
Phase 1: preflight
Read references/preflight.md and run validation before generating any PRs.
bash scripts/validate-registry.sh <registryBaseUrl> [sample-component-name]
Fix all blockers before continuing. Common failures:
registry.jsonnot public or wrong path- Component JSON 404
- Duplicate
@scopein official directory descriptiontoo long or marketing-heavy for official listing
Fetch the official directory to check duplicates:
curl -fsSL https://raw.githubusercontent.com/shadcn-ui/ui/main/apps/v4/registry/directory.json | grep -i "<scope>"
Phase 2: generate artifacts
Generate the requested submission files from the registry profile. Read only the references for those targets.
| Target | Reference | Output |
|---|---|---|
| Official shadcn-ui/ui | references/shadcn-ui-official.md | JSON entry + PR body |
| registry.directory | references/registry-directory.md | JSON entry + PR body |
| shadcntemplates | references/shadcntemplates.md | content/{author}-{name}.md |
| birobirobiro awesome | references/awesome-birobirobiro.md | README table row |
| bytefer awesome | references/awesome-bytefer.md | README table row |
| free-for-dev | references/free-for-dev.md | README bullet, gated on a hosted SaaS free tier |
| awesome-ai-devtools | references/awesome-ai-devtools.md | README bullet, MCP server only with domain-derived mcpUrl |
Present artifacts grouped by repo. Include:
- Exact file path to create or edit
- Full content to add rather than a partial diff
- Suggested PR title and body
PR title convention
Use feat(registry): add <scope> for official shadcn-ui/ui. This matches PR #10896. Use docs: add <name> to <section> for awesome lists and feat: add <name> registry for registry.directory.
Phase 3: open GitHub pull requests
Use gh for GitHub operations. Ask before creating each pull request unless the user already asked to open all of them.
Standard fork-and-PR flow per repo:
# Example: official shadcn-ui/ui
gh repo fork shadcn-ui/ui --clone=false
git clone https://github.com/<user>/ui.git /tmp/ui-registry-pr
cd /tmp/ui-registry-pr
git remote add upstream https://github.com/shadcn-ui/ui.git
git fetch upstream && git checkout -b feat/<scope>-directory upstream/main
# append the entry to apps/v4/registry/directory.json
git add apps/v4/registry/directory.json
git commit -m "feat(registry): add <scope>"
git push -u origin HEAD
gh pr create --repo shadcn-ui/ui --title "feat(registry): add <scope>" --body "$(cat <<'EOF'
## Summary
Adds <scope> to the community registry directory.
- Registry URL: `<componentUrlPattern>`
- Homepage: <homepage>
- Description: <description>
## Test plan
- [ ] `curl <registryBaseUrl>/registry.json` returns valid JSON
- [ ] `npx shadcn@latest add <installExample>` installs successfully
EOF
)"
Open pull requests in this order unless the user chooses otherwise:
- Official
shadcn-ui/ui, the most visible listing and the one most likely to need maintainer review rbadillap/registry.directoryshadcnblocks/shadcntemplatesbirobirobiro/awesome-shadcn-uiandbytefer/awesome-shadcn-ui, which can run in paralleljamesmurdza/awesome-ai-devtools, only when the registry ships a verified MCP server on its own domainripienaar/free-for-dev, only when the registry domain offers a SaaS free tier; slowest review, submit last
Track pull request URLs in the launch checklist. Do not describe the registry as published until it is live and at least one directory submission is open or merged.
Phase 4: draft social posts
Read the platform references and produce ready-to-paste drafts. The user posts them manually.
| Platform | Reference |
|---|---|
| Reddit r/shadcn | references/social/reddit.md |
| X | references/social/x.md |
| Dev.to | references/social/devto.md |
| Hacker News | references/social/hackernews.md |
Tailor each draft from the registry profile. Include the install command, homepage, and GitHub link. Avoid hype; lead with the concrete problem the registry solves.
Draft social posts after preflight passes. Suggest publishing them after the official directory pull request merges. At minimum, wait until registry.json is live.
Phase 5: follow up
After PRs are open or merged:
- Share the repository, pull request URL, and status for every submission
- Remind the user to respond to review comments within 48 hours
- After the official merge, update social drafts to mention that the registry is now listed in the shadcn registry directory
- If a pull request is rejected, read the maintainer feedback and revise the description or registry format before resubmitting
Rules
Guardrails not already implied by the phases above:
- Append the official
directory.jsonentry to the end of the array. - Use one registry profile for every submission. Do not invent conflicting descriptions without user approval.
- For premium registries on shadcntemplates, explain that the first listing is free and additional listings cost $100. Do not promise approval.
- Skip
awesome-ai-devtoolswhen the registry has no MCP server, and skipfree-for-devwhen it has no SaaS free tier. Say why instead of drafting. - Derive awesome-ai-devtools links from the registry domain (
profile.mcpUrl, default{homepage}/mcp) and verify the endpoint before drafting.
Additional resources
- Registry profile schema: templates/registry-profile.schema.json
- Example profile: templates/registry-profile.example.json
- Validation script: scripts/validate-registry.sh