21st-registrylisted
Install: claude install-skill 21st-dev/registry
# Publish & install components in the 21st team library
Use this skill in **two directions**: publishing a component for the team, and installing one the team already shared.
## Pre-flight (always)
1. Check auth: `API_KEY_21ST` env is set, or the registry CLI has saved credentials. If neither — tell the user to run `npx @21st-dev/registry login` once. Don't try to log them in yourself.
2. The CLI is `@21st-dev/registry`. Don't reinvent — use it.
---
## Publishing a component
### Decide visibility — default to unlisted in a registry
| User says… | Visibility |
|---|---|
| "share with team", "залей нам", "publish internally", default for any unqualified ask | unlisted in the selected/default registry (no visibility flag needed) |
| "share publicly via link / on my profile, but don't list it in the library" | `--unlisted` |
| "publish publicly", "make it public on 21st" | `--public` |
| "restrict to the registry team", "private team draft" | `--private` |
**Never use `--public` without explicit user instruction.** Public components go through admin moderation and appear in the 21st library. `--unlisted` is the safe option when the user wants a shareable URL but doesn't want a library listing.
### Standard publish
The CLI's positional file path triggers auto-detection — name from the default export, slug from the filename, tags from imports, demo auto-found or synthesised. So in 95% of cases this is enough:
```bash
npx @21st-dev/registry ./path/to/Component.tsx \
--t