SH

shadcn-ui-conventions

Maintains conventions for shadcn/ui components and specific patterns for retro 8-bit styled components.

Install

mkdir -p .claude/skills/shadcn-ui-conventions && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/2362" && unzip -o skill.zip -d .claude/skills/shadcn-ui-conventions && rm skill.zip

Installs to .claude/skills/shadcn-ui-conventions

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

UI component conventions for 8-bit styled components. Use when working with shadcn/ui components or implementing retro-styled UI elements.
138 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Create new UI components
  • Modify existing shadcn/ui components
  • Implement 8-bit retro styling
  • Manage component imports and types

How it works

The skill enforces specific import orders, type definitions, and CSS requirements for 8-bit components while excluding the directory from standard linting.

Inputs & outputs

You give it
React component file
You get back
Formatted UI component following 8-bit conventions

When to use shadcn-ui-conventions

  • Create new UI components
  • Format retro 8-bit components
  • Organize imports in components/ui
  • Implement variants for ui components

About this skill

UI Component Conventions

The components/ui directory uses different conventions from the rest of the project. It's excluded from Biome/Ultracite linting to preserve shadcn/ui patterns.

When to use this skill

  • When creating new UI components
  • When modifying existing shadcn/ui components
  • When implementing 8-bit retro styling
  • When working with component imports and types

Linting

  • Biome excludes this directory: biome.jsonc has "!components/ui" in the includes
  • No Ultracite formatting: Components use their own patterns
  • Run lint manually when needed: npx biome check components/ui/

Import Patterns

Base components (e.g., button.tsx):

import type * as React from "react";

import { Slot } from "@radix-ui/react-slot";
import { type VariantProps, cva } from "class-variance-authority";

import { cn } from "@/lib/utils";

8bit components (e.g., 8bit/button.tsx):

import { type VariantProps, cva } from "class-variance-authority";

import { cn } from "@/lib/utils";

import { Button as ShadcnButton } from "@/components/ui/button";

import "@/components/ui/8bit/styles/retro.css";

Import order:

  1. External libraries (class-variance-authority, @radix-ui)
  2. Internal utils (@/lib/utils)
  3. Base component alias (@/components/ui/component)
  4. Retro stylesheet (@/components/ui/8bit/styles/retro.css)

Type Definitions

Base components: Inline props type with function

function Button({
  className,
  variant,
  ...props
}: React.ComponentProps<"button"> &
  VariantProps<typeof buttonVariants> & {
    asChild?: boolean;
  })

8bit components: Export interface separately

export interface BitButtonProps
  extends React.ButtonHTMLAttributes<HTMLButtonElement>,
    VariantProps<typeof buttonVariants> {
  asChild?: boolean;
  ref?: React.Ref<HTMLButtonElement>;
}

function Button({ children, asChild, ...props }: BitButtonProps)

Ref Handling

Base components: Use React.forwardRef

const DialogOverlay = React.forwardRef<
  React.ComponentRef<typeof DialogPrimitive.Overlay>,
  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
>(({ className, ...props }, ref) => (
  <DialogPrimitive.Overlay ref={ref} {...props} />
));
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;

8bit components: Use ref prop (React 19 pattern)

export interface BitButtonProps
  extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  ref?: React.Ref<HTMLButtonElement>;
}

function Button({ ref, ...props }: BitButtonProps) {
  return <ShadcnButton ref={ref} {...props} />
}

8bit Component Patterns

Retro CSS import: Required for all 8bit components

import "@/components/ui/8bit/styles/retro.css";

Base component alias: Import base component with alias

import { Button as ShadcnButton } from "@/components/ui/button";

Variant overrides: 8bit variants often have minimal styles (borders/colors handled by CSS)

export const buttonVariants = cva("", {
  variants: {
    variant: {
      default: "bg-foreground",
      // ...
    },
  },
});

Reference Files

  • components/ui/button.tsx - Base component example
  • components/ui/8bit/button.tsx - 8bit wrapper example
  • components/ui/dialog.tsx - Complex base component with Radix primitives

When not to use it

  • Standard project directories outside components/ui

Prerequisites

shadcn/ui environment

Limitations

  • Requires manual linting via npx biome check
  • Retro CSS import is mandatory for all 8-bit components

How it compares

It provides a specialized directory-specific convention that overrides standard project-wide linting and formatting rules.

Compared to similar skills

shadcn-ui-conventions side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
shadcn-ui-conventions (this skill)17moNo flagsIntermediate
ui-styling129moReviewBeginner
figma224moNo flagsIntermediate
interaction-design155moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

ui-styling

mrgoonie

Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs. Use when building user interfaces, implementing design systems, creating responsive layouts, adding accessible components (dialogs, dropdowns, forms, tables), customizing themes and colors, implementing dark mode, generating visual designs and posters, or establishing consistent styling patterns across applications.

12132

figma

openai

Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.

2266

interaction-design

wshobson

Design and implement microinteractions, motion design, transitions, and user feedback patterns. Use when adding polish to UI interactions, implementing loading states, or creating delightful user experiences.

1550

web-design-reviewer

github

This skill enables visual inspection of websites running locally or remotely to identify and fix design issues. Triggers on requests like "review website design", "check the UI", "fix the layout", "find design problems". Detects issues with responsive design, accessibility, visual consistency, and layout breakage, then performs fixes at the source code level.

750

visual-design-foundations

wshobson

Apply typography, color theory, spacing systems, and iconography principles to create cohesive visual designs. Use when establishing design tokens, building style guides, or improving visual hierarchy and consistency.

547

design-lab

0xdesign

Conduct design interviews, generate five distinct UI variations in a temporary design lab, collect feedback, and produce implementation plans. Use when the user wants to explore UI design options, redesign existing components, or create new UI with multiple approaches to compare.

735

Search skills

Search the agent skills registry