agentsclimarketplace

UI

Skill UtkarshDubeyGIT/agent-skills/UI

Repository of curated and relevant agent skills to enhance Agentic DevelopmentFrom the repository description

Install
npx -y skills add UtkarshDubeyGIT/agent-skills --skill UI

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.5 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Shadcn UI Skill

Build clean, spacious, readable UIs using shadcn/ui components. The goal is functional and good-looking, not award-winning.

Core Philosophy

  • Spacious over cramped — padding is cheap, frustration is expensive.
  • Readable over clever — text must be legible at a glance.
  • Consistent over creative — use shadcn components as-is, don't reinvent them.
  • Functional over flashy — no animation unless it serves the user.

Spacing Rules

Apply these spacing defaults across all generated UI code:

Container padding:   p-6 minimum (p-8 on desktop)
Section gaps:        gap-4 to gap-6 between major sections
Card inner padding:  p-4 to p-6
Between form fields: space-y-4
Between buttons:     gap-2 to gap-3
Max content width:   max-w-4xl or max-w-5xl, centered with mx-auto

Anti-Mistakes

❌ Don't✅ Do instead
className="p-1" on cardsclassName="p-4" minimum
Raw <div> for buttons<Button variant="ghost">
text-xs for body texttext-sm minimum for body
Inline style={{ color: '#999' }}className="text-muted-foreground"
text-gray-400 on bg-gray-100text-foreground on bg-muted
No labels on inputsAlways pair <Label> with <Input>
Stacking cards with mt-2Use space-y-4 or gap-4 on parent
Absolute positioning for layoutUse flexbox/grid
Custom colors for statusUse <Badge> variants
Stretched images without ratioWrap in <AspectRatio>
Zero-gap layoutsAlways keep min gap-4 between sections

One-Shot execution flow

Follow this exact one-shot sequence every time:

  1. Probe project — check for components.json (shadcn/ui config). If missing: run npx shadcn@latest init -d, wait for completion.
  2. Detect router / target directory
    • If app/ directory exists → use app/ (Next.js App Router).
    • Else if src/pages/ or pages/ exists → use that (Next.js Pages Router).
    • Else if src/ exists → use src/components/.
    • Else ask the user for target directory or default to components/.
  3. Generate code — write the React / TSX file(s), using shadcn/ui imports. Use the built-in Common Components mapping below.
  4. Extract imports — identify every shadcn component imported in the file.
  5. Install components — run npx shadcn@latest add <list> where <list> is the space-separated component names extracted (e.g., button card input dialog). Wait for completion.
  6. Write file to disk — save the generated file(s) to the detected path.

Common Components mapping

Use these for the 90 % of UI requests. For anything else, read REFERENCE.md.

Conceptshadcn Component
ButtonButton from @/components/ui/button
Card / panelCard, CardHeader, CardTitle, CardContent, CardDescription, CardFooter
Text inputInput from @/components/ui/input
TextareaTextarea from @/components/ui/textarea
Checkbox / switchCheckbox or Switch
Select dropdownSelect, SelectTrigger, SelectValue, SelectContent, SelectItem
Date pickerCalendar + Popover (see REFERENCE.md for pair)
Table / listTable, TableHeader, TableRow, TableHead, TableBody, TableCell
TabsTabs, TabsList, TabsTrigger, TabsContent
Modal / dialogDialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle
Left sidebar navSidebar or App Shell pattern (see REFERENCE.md)
Top navMenubar or NavigationMenu
Badge / tagBadge from @/components/ui/badge
Loading skeletonSkeleton from @/components/ui/skeleton
Combobox / autocompleteCommand + Popover (see REFERENCE.md)
Toast notificationSonner or Toast
Rate / progressProgress, Slider
Alert / bannerAlert, AlertTitle, AlertDescription
OTP inputInputOTP
AvatarAvatar, AvatarFallback, AvatarImage
BreadcrumbBreadcrumb, BreadcrumbItem, etc.

Typography & Color Tokens

Use shadcn CSS variables. Never hardcode hex colors.

Backgrounds:   bg-background, bg-card, bg-muted
Text:          text-foreground (primary), text-muted-foreground (secondary)
Borders:       border (default), border-input (form fields)
Accents:       bg-primary text-primary-foreground
Destructive:   bg-destructive text-destructive-foreground

Never put gray text on a gray background; if contrast feels low, use text-foreground.

Standard Page Templates

Dashboard

div className="flex h-screen">
  {/* Sidebar */}
  <aside className="w-60 border-r p-4 space-y-2">
    <h2 className="text-lg font-semibold px-2 mb-4">App Name</h2>
    <Button variant="ghost" className="w-full justify-start">Nav Item</Button>
  </aside>
  {/* Main */}
  <main className="flex-1 overflow-auto p-6 space-y-6">
    <h1 className="text-2xl font-semibold">Page Title</h1>
    <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
      <Card><CardHeader><CardTitle className="text-sm font-medium text-muted-foreground">Stat</CardTitle></CardHeader>
      <CardContent><p className="text-3xl font-bold">42</p></CardContent></Card>
    </div>
    <Card>
      <CardHeader><CardTitle>Section</CardTitle></CardHeader>
      <CardContent>...</CardContent>
    </Card>
  </main>
</div>

Form

<div className="container mx-auto max-w-2xl p-8">
  <h1 className="text-2xl font-semibold mb-6">Form Title</h1>
  <Card>
    <CardContent className="pt-6 space-y-4">
      <div className="space-y-2">
        <Label htmlFor="name">Field Label</Label>
        <Input id="name" placeholder="Placeholder text" />
      </div>
      <div className="flex justify-end gap-3 pt-2">
        <Button variant="outline">Cancel</Button>
        <Button>Submit</Button>
      </div>
    </CardContent>
  </Card>
</div>

List / Table

<div className="container mx-auto p-6 space-y-4">
  <div className="flex items-center justify-between">
    <h1 className="text-2xl font-semibold">Items</h1>
    <Button><Plus className="h-4 w-4 mr-2" /> Add New</Button>
  </div>
  <Card>
    <Table>
      <TableHeader>
        <TableRow><TableHead>Column</TableHead></TableRow>
      </TableHeader>
      <TableBody>
        <TableRow><TableCell>Value</TableCell></TableRow>
      </TableBody>
    </Table>
  </Card>
</div>

Responsive Basics

Mobile-first, expand upward:

grid-cols-1 → md:grid-cols-2 → lg:grid-cols-3
p-4 → md:p-6 → lg:p-8
text-xl → md:text-2xl
hidden → md:block (for sidebar on mobile)

MCP fallback

If the agent has access to shadcn MCP tools (shadcn_search, shadcn_install), prefer them for searching niche components and installing. Otherwise fall back to the CLI commands described in the execution flow above.

Read REFERENCE.md when

  • You need the exact prop API for a specific component.
  • You're unsure how to compose complex components (e.g., combobox, date picker, data table with sorting).
  • You need to handle component state (controlled vs uncontrolled).

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.