React/Tailwind component construction patterns for building reusable UI components.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: artifacts-builder description: React/Tailwind component construction patterns for building reusable UI components.
Artifacts Builder
Source: travisvn/awesome-claude-skills
Overview
Patterns for building high-quality React components with Tailwind CSS.
Component Template (React 19 + Actions)
'use client';
import { useActionState, useOptimistic } from 'react';
import { cn } from '@/lib/utils';
// Modern Action-based Button
export function SubmitButton({ action }: { action: (formData: FormData) => Promise<void> }) {
const [error, submitAction, isPending] = useActionState(async (prev: any, formData: FormData) => {
try {
await action(formData);
return null;
} catch (e: any) {
return e.message;
}
}, null);
return (
<form action={submitAction}>
<button
disabled={isPending}
className={cn(
'px-6 py-3 rounded-none border-2 border-black bg-black text-white hover:bg-white hover:text-black transition-all active:scale-95',
isPending && 'animate-pulse cursor-wait'
)}
>
{isPending ? 'Processing...' : 'Submit'}
</button>
{error && <p className="text-red-500 text-sm mt-1">{error}</p>}
</form>
);
}
Card Component
interface CardProps {
title: string;
description?: string;
children?: React.ReactNode;
}
export function Card({ title, description, children }: CardProps) {
return (
<div className="rounded-none border-2 border-black bg-white p-6 hover:shadow-[4px_4px_0_0_#000] transition-shadow">
<h3 className="text-lg font-semibold">{title}</h3>
{description && (
<p className="mt-1 text-sm text-gray-500">{description}</p>
)}
{children && <div className="mt-4">{children}</div>}
</div>
);
}
CN Utility
// lib/utils.ts
import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
Best Practices
- Type everything: Use TypeScript interfaces
- Compose with cn: Merge Tailwind classes properly
- Extend native props: HTMLAttributes for full flexibility
- Default variants: Provide sensible defaults
- Accessible: Include proper ARIA attributes
More by xenitV1
View allAPI design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination. Teaches thinking, not fixed patterns.
Defines different operational modes for AI behavior. Each mode optimizes for specific scenarios like brainstorming, implementation, or debugging.
Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases. Teaches thinking, not fixed SQL.
Mobile-first design thinking and decision-making for iOS and Android apps. Touch interaction, performance patterns, platform conventions. Teaches principles, not fixed values. Use when building React Native, Flutter, or native mobile apps.