shadcn
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces.
Skill by ersanyamarya
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ersanyamarya-shadcn
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
shadcn- Description
- Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset".
- License
- MIT
- Allowed tools
- Bash(npx, shadcn@latest, *),, Bash(pnpm, dlx, shadcn@latest, *),, Bash(bunx, --bun, shadcn@latest, *)
- Instructions
- 281 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (15)
- SKILL.md
- openai.yml · agents/
- shadcn-small.png · assets/
- shadcn.png · assets/
- cli.md
- customization.md
- evals.json · evals/
- mcp.md
- registry.md
- base-vs-radix.md · rules/
- chat.md · rules/
- composition.md · rules/
- forms.md · rules/
- icons.md · rules/
- styling.md · rules/
SKILL.md (first lines)
# shadcn/ui
A framework for building ui, components and design systems. Components are added as source code to the user's project via the CLI.
> **IMPORTANT:** Run all CLI commands using the project's package runner: `npx shadcn@latest`, `pnpm dlx shadcn@latest`, or `bunx --bun shadcn@latest` — based on the project's `packageManager`. Examples below use `npx shadcn@latest` but substitute the correct runner for the project.
## Monorepo layout
In a monorepo, `shadcn` only recognizes workspaces that have a `components.json`. Running a `shadcn` command from the repo root then fails with `monorepo_root` and lists the detected targets, so **always pass `-c <package-dir>`** (or `cd` into that directory first).
- Find the package that owns `components.json` (usually a shared `ui-libs/*` or `packages/ui` package). That package holds every `ui`, `lib` and `utils` component.
- Consuming apps do not have their own `components.json` and never run `shadcn init`/`add`. Add or update components only in the owning package; apps pick them up through its exports.
- If the owning package uses shadcn's default `@/*` import alias, TypeScript `paths` only helps the type-checker. Every app that bundles that package's unbundled source (for example with Vite) needs a matching `resolve.alias` pointing `@` at the package's `src`. Copy the alias block from an existing consuming app into any new one.
- The repo's CLAUDE.md names the owning package and its alias rules; follow it over these defaults.
## Current Project Context
```json
!`npx shadcn@latest info --json`
```
The JSON above contains the project config and installed components. In a monorepo the command lists targets instead; rerun it with `-c <package-dir>`. Use `npx shadcn@latest docs <component>` to get documentation and example URLs for any component.
## Principles
1. **Use existing components first.** Use `npx shadcn@latest search` to check registries before writing custom UI. Check community registries too.
2. **Compose, don't reinvent.** Settings page = Tabs + Card + form controls. Dashboard = Sidebar + Card + Chart + Table.
3. **Use built-in variants before custom styles.** `variant="outline"`, `size="sm"`, etc.
4. **Use semantic colors.** `bg-primary`, `text-muted-foreground` — never raw values like `bg-blue-500`.
## Critical Rules
These rules are **always enforced**. Each links to a file with Incorrect/Correct code pairs.
### Styling & Tailwind → [styling.md](./rules/styling.md)
- **`className` for layout, not styling.** Never override component colors or typography.
- **No `space-x-*` or `space-y-*`.** Use `flex` with `gap-*`. For vertical stacks, `flex flex-col gap-*`.
- **Use `size-*` when width and height are equal.** `size-10` not `w-10 h-10`.
- **Use `truncate` shorthand.** Not `overflow-hidden text-ellipsis whitespace-nowrap`.
- **No manual `dark:` color overrides.** Use semantic tokens (`bg-background`, `text-muted-foreground`).
- **Use `cn()` for conditional classes.** Don't write manual template literal ternaries.
- **No manual `z-index` on overlay components.** Dialog, Sheet, Popover, etc. handle their own stacking.
### Forms & Inputs → [forms.md](./rules/forms.md)
- **Forms use `FieldGroup` + `Field`.** Never use raw `div` with `space-y-*` or `grid gap-*` for form layout.
- **`InputGroup` uses `InputGroupInput`/`InputGroupTextarea`.** Never raw `Input`/`Textarea` inside `InputGroup`.
- **Buttons inside inputs use `InputGroup` + `InputGroupAddon`.**
- **Option sets (2–7 choices) use `ToggleGroup`.** Don't loop `Button` with manual active state.
- **`FieldSet` + `FieldLegend` for grouping related checkboxes/radios.** Don't use a `div` with a heading.
- **Field validation uses `data-invalid` + `aria-invalid`.** `data-invalid` on `Field`, `aria-invalid` on the control. For disabled: `data-disabled` on `Field`, `disabled` on the control.
### Component Structure → [composition.md](./rules/composition.md)
- **Items always inside their Group.** `SelectItem` → `SelectGroup`. `DropdownMenuItem` → `DropdownMenuGroup`. `CommandItem` → `CommandGroup`.
- **Use `asChild` (radix) or `render` (base) for custom triggers.** Check `base` field from `npx shadcn@latest info`. → [base-vs-radix.md](./rules/base-vs-radix.md)
- **Dialog, Sheet, and Drawer always need a Title.** `DialogTitle`, `SheetTitle`, `DrawerTitle` required for accessibility. Use `className="sr-only"` if visually hidden.
- **Use full Card composition.** `CardHeader`/`CardTitle`/`CardDescription`/`CardContent`/`CardFooter`. Don't dump everything in `CardContent`.
- **Button has no `isPending`/`isLoading`.** Compose with `Spinner` + `data-icon` + `disabled`.
- **`TabsTrigger` must be inside `TabsList`.** Never render triggers directly in `Tabs`.
- **`Avatar` always needs `AvatarFallback`.** For when the image fails to load.
### Use Components, Not Custom Markup → [composition.md](./rules/composition.md)
- **Use existing components before custom markup.** Check if a component exists before writing a styled `div`.
- **Callouts use `Alert`.** Don't build custom styled divs.
- **Empty states use `Empty`.** Don't build custom empty state markup.
- **Toast follows the project base.** Use `toast` from the `toast` component for
Base UI projects. Use `toast()` from `sonner` for Radix and React Aria
projects.
- **Use `Separator`** instead of `<hr>` or `<div className="border-t">`.
- **Use `Skeleton`** for loading placeholders. No custom `animate-pulse` divs.
- **Use `Badge`** instead of custom styled spans.
### Icons → [icons.md](./rules/icons.md)
- **Icons in `Button` use `data-icon`.** `data-icon="inline-start"` or `data-icon="inline-end"` on the icon.
- **No sizing classes on icons inside components.** Components handle icon sizing via CSS. No `size-4` or `w-4 h-4`.
- **Pass icons as objects, not string keys.** `icon={CheckIcon}`, not a string lookup.
### Chat & Messaging → [chat.md](./rules/chat.md)
- **Chat UI composes the chat primitives.** Conversations use `MessageScroller`, rows use `Message`, surfaces use `Bubble`. Never hand-rolled bubble `div`s or a raw scroll container.
- **`MessageScroller` owns scroll behavior.** Streaming follow, anchoring, and jump-to-latest (`MessageScrollerButton`) are built in. Don't write a `useStickToBottom`/`ResizeObserver` hook.
- **Attachments use `Attachment`; system notes and dividers use `Marker`.** Not `Item` cards or `Separator` + a label.
### CLI
- **Never decode preset codes or build preset URLs manually.** Use `npx shadcn@latest preset decode <code>`, `preset url <code>`, or `preset open <code>`. For project-aware preset detection, use `npx shadcn@latest preset resolve`.
- **Apply preset codes directly with the CLI.** Use `npx shadcn@latest apply <code>` for existing projects, or `npx shadcn@latest init --preset <code>` when initializing.
## Key Patterns
These are the most common patterns that differentiate correct shadcn/ui code. For edge cases, see the linked rule files above.
```tsx
// Form layout: FieldGroup + Field, not div + Label.
<FieldGroup>
<Field>
<FieldLabel htmlFor="email">Email</FieldLabel>
<Input id="email" />
</Field>
</FieldGroup>
// Validation: data-invalid on Field, aria-invalid on the control.
<Field data-invalid>
<FieldLabel>Email</FieldLabel>
<Input aria-invalid />
<FieldDescription>Invalid email.</FieldDescription>
</Field>
// Icons in buttons: data-icon, no sizing classes.
<Button>
<SearchIcon data-icon="inline-start" />
Search
</Button>
// Spacing: gap-*, not space-y-*.From ersanyamarya/agentry-labs, MIT.
More from ersanyamarya/agentry-labs
- 0.570score
skill-architect
ersanyamarya
Create, improve, or review Claude Code skills so they are portable, token-efficient, and spec-compliant, with scripts doing the exact work and the model doing…
SkillAFreshness: AClaude Code +9 - 0.570score
image-artifact-setup
ersanyamarya
Set up a reproducible image generator in a project (Open Graph and social cards, link previews, project or product tiles, README banners, store screenshots)…
SkillAFreshness: AClaude Code +9 - 0.570score
lighthouse-audit
ersanyamarya
Run Google Lighthouse against a URL (mobile and desktop), trace the performance, accessibility, SEO, and best-practices findings to the project's actual…
SkillAFreshness: AClaude Code +9 - 0.570score
run-fallow
ersanyamarya
Run the `fallow` CLI on any JavaScript/TypeScript project to find dead code, unused dependencies, duplication, complexity hotspots, and security candidates…
SkillAFreshness: AClaude Code +9 - 0.570score
flutter-logging-strategy
ersanyamarya
Establish, audit, and enforce a consistent logging strategy in any Flutter/Dart project using package:logging — installs the dependency if missing, builds a…
SkillAFreshness: AClaude Code +9 - 0.570score
flutter-store-assets
ersanyamarya
Operates the gentlemans-stack image tool (tools/image-gen-tools) for a Flutter app.
SkillAFreshness: AClaude Code +9 - 0.570score
humanize-and-unslop
ersanyamarya
Edit drafts into plain, specific, human-sounding writing by removing AI tells (banned vocabulary, em dashes, curly quotes, puffery, chatbot phrases, formulaic…
SkillAFreshness: AClaude Code +9 - 0.566score
flutter-bundle-google-fonts
ersanyamarya
Replaces the google_fonts package in a Flutter app with fonts bundled in the app, using the gentlemans-stack scripts/flutter/bundle-fonts.mjs to scan usages…
SkillAFreshness: AClaude Code +9 - 0.566score
flutter-brand-icons
ersanyamarya
Generate every app icon and native splash asset for a Flutter project from one single-color logo SVG, with colors taken from the project's brand doc, design…
SkillAFreshness: AClaude Code +9 - 0.565score
mongoose-schema-docs
ersanyamarya
Generate documentation and an entity-relationship diagram from a codebase's Mongoose schemas.
SkillAFreshness: AClaude Code +9 - 0.565score
sync-docs-from-diff
ersanyamarya
Update repo documentation from a git diff.
SkillAFreshness: AClaude Code +9 - 0.565score
script-writer
ersanyamarya
Generate a new shell script in scripts/ following the repo's script conventions (help header, utils.sh sourcing, signal trap, argument parsing).
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ersanyamarya/agentry-labs
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.598score
shadcn
trancethehuman
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces.
SkillAFreshness: A★ 2Claude Code +9 - 0.315score
shadcn
gowebknot
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces.
SkillBFreshness: BClaude Code +9 - 0.306score
shadcn
Solizardking
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces.
SkillBFreshness: BClaude Code +9 - 0.279score
shadcn
Solizardking
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces.
SkillCFreshness: CClaude Code +9
More from ersanyamarya
- 0.570score
lighthouse-audit
ersanyamarya
Run Google Lighthouse against a URL (mobile and desktop), trace the performance, accessibility, SEO, and best-practices findings to the project's actual…
SkillAFreshness: AClaude Code +9 - 0.570score
run-fallow
ersanyamarya
Run the `fallow` CLI on any JavaScript/TypeScript project to find dead code, unused dependencies, duplication, complexity hotspots, and security candidates…
SkillAFreshness: AClaude Code +9 - 0.570score
flutter-logging-strategy
ersanyamarya
Establish, audit, and enforce a consistent logging strategy in any Flutter/Dart project using package:logging — installs the dependency if missing, builds a…
SkillAFreshness: AClaude Code +9 - 0.570score
flutter-store-assets
ersanyamarya
Operates the gentlemans-stack image tool (tools/image-gen-tools) for a Flutter app.
SkillAFreshness: AClaude Code +9 - 0.570score
humanize-and-unslop
ersanyamarya
Edit drafts into plain, specific, human-sounding writing by removing AI tells (banned vocabulary, em dashes, curly quotes, puffery, chatbot phrases, formulaic…
SkillAFreshness: AClaude Code +9 - 0.570score
skill-architect
ersanyamarya
Create, improve, or review Claude Code skills so they are portable, token-efficient, and spec-compliant, with scripts doing the exact work and the model doing…
SkillAFreshness: AClaude Code +9
Cite this page
shadcn skill. Agent Mart. https://agentmart.dev/skills/ersanyamarya-shadcn (last updated 2026-10-24)