UI component and styling guidelines using Shadcn UI, Radix UI, and Tailwind
Install with the open skills CLI (global, non-interactive — available in every Claude Code session):
npx skills add elie222/inbox-zero --skill "ui-components" -g -a claude-code -yOr manually — copy the SKILL.md below into:
~/.claude/skills/ui-components/SKILL.md---
name: ui-components
description: UI component and styling guidelines using Shadcn UI, Radix UI, and Tailwind
---
# UI Components and Styling
## UI Framework
- Use Shadcn UI and Tailwind for components and styling
- Implement responsive design with Tailwind CSS using a mobile-first approach
- Use `next/image` package for images
## Install new Shadcn components
```sh
pnpm dlx shadcn@latest add COMPONENT
```
Example:
```sh
pnpm dlx shadcn@latest add progress
```
## Data Fetching with SWR
For API get requests to server use the `swr` package:
```typescript
const searchParams = useSearchParams();
const page = searchParams.get("page") || "1";
const { data, isLoading, error } = useSWR<PlanHistoryResponse>(
`/api/user/planned/history?page=${page}`
);
```
## Loading Components
Use the `LoadingContent` component to handle loading states:
```tsx
<Card>
<LoadingContent loading={isLoading} error={error}>
{data && <MyComponent data={data} />}
</LoadingContent>
</Card>
```
## Form Components
### Text Inputs
```tsx
<Input
type="email"
name="email"
label="Email"
registerProps={register("email", { required: true })}
error={errors.email}
/>
```
### Text Area
```tsx
<Input
type="text"
autosizeTextarea
rows={3}
name="message"
placeholder="Paste in email content"
registerProps={register("message", { required: true })}
error={errors.message}
/>
```
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Roleplay the most difficult, tech-resistant user for your product. Browse the app as that persona, find every UX pain point, then filter complaints through a pragmatism layer to separate real problems from noise. Creates actionable tickets from genuine issues only.
ASCII video: convert video/audio to colored ASCII MP4/GIF.