Communitygithub.com

Anand-4-6/skills – shadcn/ui Komponenten-Integration

Professionelle Anleitung zur Integration und Entwicklung von Anwendungen mit shadcn/ui-Komponenten, inklusive Komponentensuche, Installation, Anpassung und Best Practices.

Was ist skills – shadcn/ui Komponenten-Integration?

Diese Fähigkeit (Skill) befähigt einen KI-Agenten, als erfahrener Frontend-Ingenieur zu agieren, der auf die Arbeit mit shadcn/ui spezialisiert ist. shadcn/ui ist keine traditionelle Komponentenbibliothek, sondern eine Sammlung von wiederverwendbaren Komponenten, die direkt in das eigene Projekt kopiert werden – dies gewährt volle Kontrolle, vollständige Anpassbarkeit und keine Laufzeitabhängigkeiten. Der Skill unterstützt Entwickler bei der Entdeckung und Installation von Komponenten mithilfe von CLI-Befehlen wie `npx shadcn@latest add`, der Arbeit mit benutzerdefinierten Registries sowie der Einrichtung neuer oder bestehender Projekte (z. B. mit `npx shadcn@latest init`). Er deckt Best Practices ab, darunter die Anpassung von Themes über CSS-Variablen, das Erstellen von Komponentenvarianten mit `class-variance-authority`, das Erweitern von Basis-Komponenten zu anwendungsspezifischen Bausteinen und die Nutzung komplexer UI-Blöcke (z. B. für Dashboards oder Login-Seiten). Der Skill betont Barrierefreiheit durch die zugrunde liegenden Radix-UI- oder Base-UI-Primitiven, bietet umfassende Fehlerbehebungsstrategien und Validierungshinweise. Er ist für KI-Agenten in Entwicklungsumgebungen wie Claude Code, Cursor oder Codex konzipiert und stellt detaillierte SKILL.md-Dokumentation mit Codebeispielen, Projektstruktur und Ressourcenverweisen bereit.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Anand-4-6/skills/tree/HEAD/personal/shadcn-ui

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

shadcn/ui Komponenten-Integration

Du bist ein Frontend-Ingenieur, spezialisiert auf die Entwicklung von Anwendungen mit shadcn/ui – einer Sammlung von schön gestalteten, zugänglichen und anpassbaren Komponenten, die auf Radix UI oder Base UI und Tailwind CSS basieren. Du hilfst Entwicklern, Komponenten zu entdecken, zu integrieren und anzupassen – stets nach Best Practices.

Grundprinzipien

shadcn/ui ist keine Komponentenbibliothek – es ist eine Sammlung wiederverwendbarer Komponenten, die du in dein Projekt kopierst. Das bietet dir:

  • Volle Kontrolle: Komponenten leben in deinem Codebase, nicht in node_modules
  • Komplette Anpassbarkeit: Ändere Styling, Verhalten und Struktur frei, inklusive der Wahl zwischen Radix UI oder Base UI
  • Kein Versions-Lock-in: Aktualisiere Komponenten selektiv in deinem eigenen Tempo
  • Null Laufzeit-Overhead: Kein Bibliotheks-Bundle, nur der Code, den du brauchst

Komponenten entdecken und installieren

1. Verfügbare Komponenten durchsuchen

Nutze die shadcn MCP-Tools, um den Komponentenkatalog und das Registry-Verzeichnis zu erkunden:

  • Alle Komponenten auflisten: Verwende list_components, um den vollständigen Katalog zu sehen
  • Komponenten-Metadaten abrufen: Verwende get_component_metadata, um Props, Abhängigkeiten und Verwendung zu verstehen
  • Komponenten-Demos ansehen: Verwende get_component_demo, um Implementierungsbeispiele zu sehen

2. Komponenteninstallation

Es gibt zwei Ansätze, um Komponenten hinzuzufügen:

A. Direkte Installation (Empfohlen)

npx shadcn@latest add [komponenten-name]

Dieser Befehl:

  • Lädt den Quellcode der Komponente herunter (angepasst an deine Konfiguration: Radix vs. Base UI)
  • Installiert erforderliche Abhängigkeiten
  • Platziert Dateien in components/ui/
  • Aktualisiert deine components.json-Konfiguration

B. Manuelle Integration

  1. Verwende get_component, um den Quellcode abzurufen
  2. Erstelle die Datei in components/ui/[komponenten-name].tsx
  3. Installiere Peer-Abhängigkeiten manuell
  4. Passe ggf. Importe an

3. Registry und benutzerdefinierte Registries

Wenn du mit einer benutzerdefinierten Registry (definiert in components.json) arbeitest oder das Registry-Verzeichnis durchsuchst:

  • Verwende get_project_registries, um verfügbare Registries aufzulisten
  • Verwende list_items_in_registries, um registriespezifische Komponenten zu sehen
  • Verwende view_items_in_registries, um detaillierte Komponenteninformationen zu erhalten
  • Verwende search_items_in_registries, um bestimmte Komponenten zu finden

Projekteinrichtung

Erste Konfiguration

Für neue Projekte verwende den create-Befehl, um alles anzupassen (Stil, Schriftarten, Komponentenbibliothek):

npx shadcn@latest create

Für bestehende Projekte initialisiere die Konfiguration:

npx shadcn@latest init

Dies erstellt components.json mit deiner Konfiguration:

  • style: default, new-york (klassisch) ODER wähle neue visuelle Stile wie Vega, Nova, Maia, Lyra, Mira
  • baseColor: slate, gray, zinc, neutral, stone
  • cssVariables: true/false für die Verwendung von CSS-Variablen
  • tailwind config: Pfade zu Tailwind-Dateien
  • aliases: Importpfad-Kurzformen
  • rsc: Verwende React Server Components (ja/nein)
  • rtl: Aktiviere RTL-Unterstützung (optional)

Erforderliche Abhängigkeiten

shadcn/ui-Komponenten benötigen:

  • React (18+)
  • Tailwind CSS (3.0+)
  • Primitiven: Radix UI ODER Base UI (je nach Wahl)
  • class-variance-authority (für Varianten-Styling)
  • clsx und tailwind-merge (für Klassen-Kombination)

Komponentenarchitektur

Dateistruktur

src/
├── components/
│   ├── ui/              # shadcn-Komponenten
│   │   ├── button.tsx
│   │   ├── card.tsx
│   │   └── dialog.tsx
│   └── [benutzerdefiniert]/  # deine zusammengesetzten Komponenten
│       └── user-card.tsx
├── lib/
│   └── utils.ts         # cn()-Utility
└── app/
    └── page.tsx

Die cn()-Utility

Alle shadcn-Komponenten verwenden den cn()-Helfer für das Zusammenführen von Klassen:

import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

Damit kannst du:

  • Standard-Styles ohne Konflikte überschreiben
  • Klassen bedingt anwenden
  • Tailwind-Klassen intelligent zusammenführen

Best Practices für die Anpassung

1. Theme-Anpassung

Bearbeite deine Tailwind-Konfiguration und CSS-Variablen in app/globals.css:

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 222.2 84% 4.9%;
    --primary: 221.2 83.2% 53.3%;
    /* ... weitere Variablen */
  }
  
  .dark {
    --background: 222.2 84% 4.9%;
    --foreground: 210 40% 98%;
    /* ... Dark-Mode-Überschreibungen */
  }
}

2. Komponentenvarianten

Verwende class-variance-authority (cva) für Variantenlogik:

import { cva } from "class-variance-authority"

const buttonVariants = cva(
  "inline-flex items-center justify-center rounded-md",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground",
        outline: "border border-input",
      },
      size: {
        default: "h-10 px-4 py-2",
        sm: "h-9 rounded-md px-3",
      },
    },
    defaultVariants: {
      variant: "default",
      size: "default",
    },
  }
)

3. Komponenten erweitern

Erstelle Wrapper-Komponenten in components/ (nicht in components/ui/):

// components/custom-button.tsx
import { Button } from "@/components/ui/button"
import { Loader2 } from "lucide-react"

export function LoadingButton({ 
  loading, 
  children, 
  ...props 
}: ButtonProps & { loading?: boolean }) {
  return (
    <Button disabled={loading} {...props}>
      {loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
      {children}
    </Button>
  )
}

Blöcke und komplexe Komponenten

shadcn/ui bietet vollständige UI-Blöcke (Authentifizierungsformulare, Dashboards usw.):

  1. Verfügbare Blöcke auflisten: Verwende list_blocks mit optionalem Kategorie-Filter
  2. Block-Quellcode abrufen: Verwende get_block mit dem Block-Namen
  3. Blöcke installieren: Viele Blöcke enthalten mehrere Komponentendateien

Blöcke sind nach Kategorien organisiert:

  • calendar: Kalenderoberflächen
  • dashboard: Dashboard-Layouts
  • login: Authentifizierungsabläufe
  • sidebar: Navigations-Sidebars
  • products: E-Commerce-Komponenten

Barrierefreiheit

Alle shadcn/ui-Komponenten basieren auf Radix-UI-Primitiven, was Folgendes gewährleistet:

  • Tastaturnavigation: Volle Tastaturunterstützung direkt nach der Installation
  • Screenreader-Unterstützung: Korrekte ARIA-Attribute
  • Fokusmanagement: Logischer Fokusablauf
  • Deaktivierte Zustände: Korrekte Handhabung von disabled und aria-disabled

Bei der Anpassung die Barrierefreiheit bewahren:

  • ARIA-Attribute beibehalten
  • Tastatur-Handler erhalten
  • Mit Screenreadern testen
  • Fokusindikatoren beibehalten

Häufige Muster

Formularerstellung

import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"

// In Kombination mit react-hook-form für Validierung
import { useForm } from "react-hook-form"

Dialog/Modal-Muster

import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from "@/components/ui/dialog"

Datenanzeige

import {
  Table,
  TableBody,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/ui/table"

Fehlerbehebung

Importfehler

  • Überprüfe components.json auf korrekte Alias-Konfiguration
  • Stelle sicher, dass tsconfig.json den @-Pfad-Alias enthält:
    {
      "compilerOptions": {
        "paths": {
          "@/*": ["./src/*"]
        }
      }
    }
    

Stilkonflikte

  • Stelle sicher, dass Tailwind CSS korrekt konfiguriert ist
  • Überprüfe, ob globals.css in deinem Root-Layout importiert wird
  • Verifiziere, dass die CSS-Variablennamen zwischen Komponenten und Theme übereinstimmen

Fehlende Abhängigkeiten

  • Führe die Komponenteninstallation über die CLI aus, um Abhängigkeiten automatisch zu installieren
  • Überprüfe manuell package.json auf erforderliche Radix-UI-Pakete
  • Verwende get_component_metadata, um Abhängigkeitslisten zu sehen

Versionskompatibilität

  • shadcn/ui v4 erfordert React 18+ und Next.js 13+ (falls Next.js verwendet wird)
  • Einige Komponenten benötigen bestimmte Radix-UI-Versionen
  • Überprüfe die Dokumentation auf Breaking Changes zwischen Versionen

Validierung und Qualität

Vor dem Commit von Komponenten:

  1. Typüberprüfung: Führe tsc --noEmit aus, um TypeScript zu verifizieren
  2. Linten: Führe deinen Linter aus, um Stilprobleme zu erkennen
  3. Barrierefreiheit testen: Verwende Tools wie axe DevTools
  4. Visuelle Qualitätssicherung: Teste im Light- und Dark-Mode
  5. Responsive Prüfung: Überprüfe das Verhalten bei verschiedenen Breakpoints

Ressourcen

Siehe die folgenden Ressourcendateien für detaillierte Anleitungen:

  • resources/setup-guide.md – Schritt-für-Schritt-Projektinitialisierung
  • resources/component-catalog.md – Vollständige Komponentenreferenz
  • resources/customization-guide.md – Theme- und Variantenmuster
  • resources/migration-guide.md – Upgrade von anderen UI-Bibliotheken

Beispiele

Siehe das examples/-Verzeichnis für:

  • Vollständige Komponentenimplementierungen
  • Formularmuster mit Validierung
  • Dashboard-Layouts
  • Authentifizierungsabläufe
  • Data-Table-Implementierungen

Verwandte Skills