Skills ckm:ui-styling
🎨

ckm:ui-styling

Low Risk ⚙️ External commands⚡ Contains scripts📁 Filesystem access

UI Styling Toolkit - shadcn/ui, Tailwind CSS & Canvas Design

Eliminate UI development friction by combining shadcn/ui's accessible component library with Tailwind CSS utility-first styling and canvas-based visual design systems. This skill provides comprehensive reference documentation for 40+ shadcn/ui components, theming and dark mode patterns, accessibility guidelines, responsive design utilities, and Python automation scripts for component installation and Tailwind config generation.

Supports: Claude Codex Code(CC)
🥉 75 Bronze
1

Download the skill ZIP

2

Upload in Claude

Go to Settings → Capabilities → Skills → Upload skill

3

Toggle on and start using

Test it

Using "ckm:ui-styling". Install shadcn/ui button, card, and dialog components and show me a card-based settings panel

Expected outcome:

```bash
npx shadcn@latest add button card dialog
```

```tsx
import { Button } from "@/components/ui/button"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog"

export function SettingsPanel() {
return (
<div className="container mx-auto p-6 space-y-6">
<Card>
<CardHeader>
<CardTitle>Profile Settings</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-sm text-muted-foreground">
Manage your account settings and preferences
</p>
<Dialog>
<DialogTrigger asChild>
<Button variant="outline">Edit Profile</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Edit Profile</DialogTitle>
</DialogHeader>
<div className="space-y-4 py-4">
<p className="text-sm text-muted-foreground">
Profile editing form content here
</p>
<Button className="w-full">Save Changes</Button>
</div>
</DialogContent>
</Dialog>
</CardContent>
</Card>
</div>
)
}
```

Using "ckm:ui-styling". Create a dark mode compatible responsive header with navigation using shadcn/ui

Expected outcome:

```tsx
import { Button } from "@/components/ui/button"
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuLink,
} from "@/components/ui/navigation-menu"
import { Moon, Sun } from "lucide-react"
import { useTheme } from "next-themes"

export function Header() {
const { theme, setTheme } = useTheme()

return (
<header className="sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
<div className="container flex h-16 items-center justify-between">
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuLink className="font-bold text-xl">
Logo
</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
<Button
variant="ghost"
size="icon"
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
>
<Sun className="h-5 w-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
<Moon className="absolute h-5 w-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
</Button>
</div>
</header>
)
}
```

Security Audit

Low Risk
v1 • 5/26/2026

This skill is safe to publish. It provides UI component documentation and styling guidance. The only executable code is two Python utility scripts: shadcn_add.py (installs shadcn/ui components via npx subprocess) and tailwind_config_gen.py (generates Tailwind CSS config files). The subprocess.run() calls in shadcn_add.py use hardcoded command arguments (npx shadcn@latest add) with dry-run support, making them low-risk. All 770 static analysis findings were reviewed - the vast majority are false positives from font license files (SIL OFL text with URLs), SQLite coverage database binary data, and documentation markdown files containing code examples. No obfuscation, network callbacks, credential access, or dangerous code injection patterns were found.

44
Files scanned
7,414
Lines analyzed
5
findings
1
Total audits
Low Risk Issues (2)
External command execution via subprocess.run
shadcn_add.py uses subprocess.run() to execute npx for installing shadcn/ui components. The commands are hardcoded to 'npx shadcn@latest add [components]' which is expected behavior for a component installer. A dry-run mode prevents actual execution. Risk is low because: (1) the command base is hardcoded, (2) it only adds shadcn/ui components, (3) dry-run flag is available, and (4) the skill is only invoked by AI assistants where the user has already consented to tool execution.
Script filesystem write operations
tailwind_config_gen.py writes configuration files to disk and reads from the filesystem. shadcn_add.py reads components.json config and writes component files via npx. These are intentional, documented features for legitimate project configuration.
Audited by: claude

Quality Score

68
Architecture
100
Maintainability
87
Content
39
Community
86
Security
74
Spec Compliance

What You Can Build

Building Admin Dashboards

Quickly scaffold admin interfaces with data tables, navigation menus, forms with validation, and responsive card layouts using shadcn/ui components and Tailwind utility classes.

Implementing Design Systems

Establish consistent design tokens across a project by generating Tailwind config with custom colors, fonts, spacing, and breakpoints, then applying them across shadcn/ui themed components.

Creating Accessible Forms

Build production-ready forms with full accessibility support using shadcn/ui form components, react-hook-form for validation, and ARIA-compliant patterns for keyboard navigation and screen readers.

Rapid UI Prototyping

Quickly prototype UI concepts by installing shadcn/ui components on demand, applying responsive Tailwind layouts, and iterating on visual design using utility classes without writing custom CSS.

Visual Brand Materials

Generate canvas-based visual compositions, posters, and brand materials using the canvas design system patterns, with access to curated font pairings and design philosophy guidance.

Try These Prompts

Install and Use shadcn/ui Components
Install the following shadcn/ui components for my project: [button, card, dialog, form, table]. Then show me a complete usage example combining them into a [dashboard page / settings panel / data view] with proper layout and dark mode support.
Generate Custom Tailwind Config
Generate a tailwind.config.ts for my [Next.js / Vite / Astro] project with: custom color palette [primary: blue, accent: purple], font family [Inter for sans, JetBrains Mono for mono], custom spacing [18: 4.5rem, 22: 5.5rem], and additional breakpoint [3xl: 1920px]. Include recommended plugins.
Build Responsive Layout with Dark Mode
Create a responsive [dashboard / landing page / settings panel] layout using shadcn/ui components with: mobile-first responsive grid, dark mode toggle, accessible navigation with keyboard support, and proper semantic HTML structure.
Accessible Form Implementation
Build an accessible [sign-up / contact / checkout] form using shadcn/ui form components with: field validation using zod, error state handling, loading states on submit, ARIA labels for screen readers, keyboard tab order, and focus management.
Canvas Visual Composition
Create a canvas-based visual [poster / brand graphic / illustration] using the design system philosophy with: sophisticated color palette, typography hierarchy, spatial composition, and museum-quality visual impact. Use minimal text.

Best Practices

  • Compose complex UIs from simple, composable shadcn/ui primitives rather than building monolithic components
  • Use Tailwind utility classes directly in JSX; only extract reusable components when the same pattern appears 3+ times
  • Adopt mobile-first responsive design: start with base mobile styles, then layer responsive variants (sm:, md:, lg:)
  • Leverage Radix UI's built-in accessibility features; always add visible focus indicators and use semantic HTML
  • Maintain consistent design tokens: use the spacing scale, color palette, and typography system defined in tailwind.config
  • Apply dark: variants to all themed elements consistently to prevent half-themed dark mode
  • Benefit from Tailwind's automatic CSS purging by avoiding dynamic class name construction
  • Use full TypeScript type safety with shadcn/ui components for better developer experience and catch errors early
  • Let visual composition guide attention; use spacing, color, and typography hierarchy intentionally
  • Treat UI as a craft where every detail matters - from micro-interactions to color contrast ratios

Avoid

  • Dynamically constructing Tailwind class names with string concatenation (e.g., `bg-${color}-500`) which prevents purging; use full class names or the safelist config option instead
  • Overriding shadcn/ui component source files directly instead of using the CSS variable theming system or variant slots
  • Nesting Tailwind @apply directives in component extraction in ways that create specificity conflicts
  • Building custom modal/dialog implementations when shadcn/ui Dialog or Drawer components already provide accessible, tested overlays
  • Applying dark mode by duplicating entire component trees; use the dark: variant prefix on individual utility classes
  • Including both .js and .ts tailwind config files in the project (only one should be active)
  • Running shadcn/ui component installation without first initializing with `npx shadcn@latest init` - the components.json config is required
  • Using canvas API for layout and structure instead of its intended purpose: visual design compositions and graphics
  • Ignoring focus-visible styles for keyboard users when implementing custom click handlers on non-button elements

Frequently Asked Questions

Do I need to install anything before using this skill?
Yes. This skill provides reference documentation and automation scripts, but the actual shadcn/ui components need to be installed in your project. You need: Node.js (for npx), a React/Next.js/Vite project, and you should run `npx shadcn@latest init` first to set up the configuration. The Python automation scripts require Python 3.x but no external dependencies.
Does this skill work with frameworks other than React?
shadcn/ui is primarily built for React-based frameworks (Next.js, Vite, Remix, Astro). The Tailwind CSS references and canvas design system are framework-agnostic. The configuration generator supports React, Vue, Svelte, and Next.js frameworks for content paths.
Can the automation scripts be used in production CI/CD?
The scripts include a --dry-run flag that shows what would be executed without making changes. The component installer (shadcn_add.py) runs npx which fetches from npm. You may want to pin the shadcn version or use offline mirrors in production CI environments.
What are the included canvas fonts and can I use them on my website?
The canvas-fonts/ directory contains TTF font files and their SIL Open Font License (OFL) text files. These fonts are licensed under the SIL OFL, which allows free use, modification, and redistribution. They are intended for canvas-based visual design compositions within this skill.
Is this skill safe to use with sensitive projects?
Yes. The skill has been security-audited and rated low risk. The only external commands executed are `npx shadcn@latest add` (component installation) which uses a hardcoded command. All Python scripts have dry-run modes. No environment variables, network callbacks, or credential access is performed. No obfuscated code was found.

Developer Details

File structure

📁 canvas-fonts/

📄 ArsenalSC-OFL.txt

📄 ArsenalSC-Regular.ttf

📄 BigShoulders-Bold.ttf

📄 BigShoulders-OFL.txt

📄 BigShoulders-Regular.ttf

📄 Boldonse-OFL.txt

📄 Boldonse-Regular.ttf

📄 BricolageGrotesque-Bold.ttf

📄 BricolageGrotesque-OFL.txt

📄 BricolageGrotesque-Regular.ttf

📄 CrimsonPro-Bold.ttf

📄 CrimsonPro-Italic.ttf

📄 CrimsonPro-OFL.txt

📄 CrimsonPro-Regular.ttf

📄 DMMono-OFL.txt

📄 DMMono-Regular.ttf

📄 EricaOne-OFL.txt

📄 EricaOne-Regular.ttf

📄 GeistMono-Bold.ttf

📄 GeistMono-OFL.txt

📄 GeistMono-Regular.ttf

📄 Gloock-OFL.txt

📄 Gloock-Regular.ttf

📄 IBMPlexMono-Bold.ttf

📄 IBMPlexMono-OFL.txt

📄 IBMPlexMono-Regular.ttf

📄 IBMPlexSerif-Bold.ttf

📄 IBMPlexSerif-BoldItalic.ttf

📄 IBMPlexSerif-Italic.ttf

📄 IBMPlexSerif-Regular.ttf

📄 InstrumentSans-Bold.ttf

📄 InstrumentSans-BoldItalic.ttf

📄 InstrumentSans-Italic.ttf

📄 InstrumentSans-OFL.txt

📄 InstrumentSans-Regular.ttf

📄 InstrumentSerif-Italic.ttf

📄 InstrumentSerif-Regular.ttf

📄 Italiana-OFL.txt

📄 Italiana-Regular.ttf

📄 JetBrainsMono-Bold.ttf

📄 JetBrainsMono-OFL.txt

📄 JetBrainsMono-Regular.ttf

📄 Jura-Light.ttf

📄 Jura-Medium.ttf

📄 Jura-OFL.txt

📄 LibreBaskerville-OFL.txt

📄 LibreBaskerville-Regular.ttf

📄 Lora-Bold.ttf

📄 Lora-BoldItalic.ttf

📄 Lora-Italic.ttf

📄 Lora-OFL.txt

📄 Lora-Regular.ttf

📄 NationalPark-Bold.ttf

📄 NationalPark-OFL.txt

📄 NationalPark-Regular.ttf

📄 NothingYouCouldDo-OFL.txt

📄 NothingYouCouldDo-Regular.ttf

📄 Outfit-Bold.ttf

📄 Outfit-OFL.txt

📄 Outfit-Regular.ttf

📄 PixelifySans-Medium.ttf

📄 PixelifySans-OFL.txt

📄 PoiretOne-OFL.txt

📄 PoiretOne-Regular.ttf

📄 RedHatMono-Bold.ttf

📄 RedHatMono-OFL.txt

📄 RedHatMono-Regular.ttf

📄 Silkscreen-OFL.txt

📄 Silkscreen-Regular.ttf

📄 SmoochSans-Medium.ttf

📄 SmoochSans-OFL.txt

📄 Tektur-Medium.ttf

📄 Tektur-OFL.txt

📄 Tektur-Regular.ttf

📄 WorkSans-Bold.ttf

📄 WorkSans-BoldItalic.ttf

📄 WorkSans-Italic.ttf

📄 WorkSans-OFL.txt

📄 WorkSans-Regular.ttf

📄 YoungSerif-OFL.txt

📄 YoungSerif-Regular.ttf

📁 references/

📄 canvas-design-system.md

📄 shadcn-accessibility.md

📄 shadcn-components.md

📄 shadcn-theming.md

📄 tailwind-customization.md

📄 tailwind-responsive.md

📄 tailwind-utilities.md

📁 scripts/

📁 tests/

📄 coverage-ui.json

📄 requirements.txt

📄 test_shadcn_add.py

📄 test_tailwind_config_gen.py

📄 requirements.txt

📄 shadcn_add.py

📄 tailwind_config_gen.py

📄 LICENSE.txt

📄 SKILL.md