بنقرة واحدة
ui-dev
Build UI components with dark theme, shadcn/ui, animations, and responsive design
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build UI components with dark theme, shadcn/ui, animations, and responsive design
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Add email verification, password reset, and account management emails to Better Auth using Resend.
TypeScript authentication framework (framework-agnostic). Features: email/password, OAuth (Google, GitHub, Discord), 2FA (TOTP, SMS), passkeys/WebAuthn, session management, RBAC, rate limiting, database adapters. Actions: implement, configure, secure authentication systems. Keywords: Better Auth, authentication, authorization, OAuth, email/password, 2FA, MFA, TOTP, passkeys, WebAuthn, session management, RBAC, rate limiting, database adapter, TypeScript auth, social login, Google auth, GitHub auth, Discord auth, email verification, password reset. Use when: implementing TypeScript auth, adding OAuth providers, setting up 2FA/MFA, managing sessions, configuring RBAC, building secure auth systems.
Build websites and web applications using Telefonica's Mistica design system React components. Use this skill when writing React UI code with @telefonica/mistica, creating pages, layouts, forms, or any user interface that should follow Telefonica's design guidelines. Triggers on tasks involving Mistica components, Telefonica branding, or when the user mentions Mistica.
Provides shadcn/ui component library expertise for React applications with shadcn/cli v4, preset system, RTL support, unified radix-ui, and OKLCH theming. Use when implementing UI components, design systems, CLI workflows, or registry authoring with shadcn/ui.
React 19 performance optimization guidelines for concurrent rendering, Server Components, actions, hooks, and memoization (formerly react-19). This skill should be used when writing React 19 components, using concurrent features, or optimizing re-renders. This skill does NOT cover Next.js-specific features like App Router, next.config.js, or Next.js caching (use nextjs-16-app-router skill). For client-side form validation with React Hook Form, use react-hook-form skill.
Implement, review, debug, and refactor TanStack Start React Server Components in React 19 apps. Use when tasks mention @tanstack/react-start/rsc, renderServerComponent, createCompositeComponent, CompositeComponent, renderToReadableStream, createFromReadableStream, createFromFetch, Composite Components, React Flight streams, loader or query owned RSC caching, router.invalidate, structuralSharing: false, selective SSR, stale names like renderRsc or .validator, or migration from Next App Router RSC patterns. Do not use for generic SSR or non-TanStack RSC frameworks except brief comparison.
| name | ui-dev |
| description | Build UI components with dark theme, shadcn/ui, animations, and responsive design |
HARD LIMIT: 300 lines per file maximum. NO EXCEPTIONS.
Before writing any component:
See code-structure skill for detailed decomposition patterns.
docs/issues/ui/README.md for known pitfalls1. ALWAYS check if shadcn/ui has the component first:
mcp__context7__resolve-library-id({ libraryName: "shadcn-ui" })
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/shadcn-ui/ui",
topic: "button",
mode: "code"
})
2. If shadcn has it: use their component, don't build custom
3. If shadcn doesn't have it: build custom following their patterns
Load this skill when:
Need a new component?
├─ Is it a form element? → Check shadcn/ui first
├─ Is it a layout? → Use CSS Grid/Flexbox with responsive breakpoints
├─ Is it interactive? → Add hover states + transitions
└─ Is it loading data? → Add skeleton + loading state
Need to style something?
├─ Color → Use theme variables (--primary, --muted, etc.)
├─ Spacing → Use Tailwind scale (p-4, gap-6, etc.)
├─ Animation → Use predefined keyframes or transition-all
└─ Responsive → Mobile-first: base → md: → lg:
cd frontend && npx shadcn@latest add <name>components/<category>/<name>.tsxcd frontend && npx shadcn@latest add button card dialog input select tabs toast
Common components: button, card, dialog, dropdown-menu, input, label, select, skeleton, table, tabs, toast, tooltip
All colors use HSL CSS variables defined in frontend/app/globals.css:
| Variable | Usage | Example Class |
|---|---|---|
--background | Page background | bg-background |
--foreground | Primary text | text-foreground |
--card | Card backgrounds | bg-card |
--primary | Primary actions | bg-primary text-primary-foreground |
--secondary | Secondary elements | bg-secondary |
--muted | Muted text/backgrounds | text-muted-foreground bg-muted |
--accent | Hover states | hover:bg-accent |
--destructive | Error/danger | bg-destructive text-destructive-foreground |
--border | Borders | border-border |
| Breakpoint | Min Width | Usage |
|---|---|---|
| (default) | 0px | Mobile phones |
sm: | 640px | Large phones |
md: | 768px | Tablets |
lg: | 1024px | Laptops |
xl: | 1280px | Desktops |
2xl: | 1536px | Large screens |
// NEVER hardcode colors
<div className="bg-gray-900 text-white">
// Use theme variables
<div className="bg-background text-foreground">
// NEVER skip loading states
{data && <Component data={data} />}
// Handle all states
{loading ? <Skeleton /> : error ? <Error /> : <Component data={data} />}
// NEVER forget mobile
<div className="flex gap-8"> // Too much gap on mobile
// Responsive spacing
<div className="flex gap-4 md:gap-8">
components/intent/
├── swap-form.tsx # Swap intent form (< 200 lines)
├── limit-form.tsx # Limit order form (< 200 lines)
├── token-selector.tsx # Token selection dropdown (< 150 lines)
├── amount-input.tsx # Amount input with max button (< 100 lines)
├── price-input.tsx # Price input for limits (< 100 lines)
└── intent-status.tsx # Status display (< 100 lines)
components/shared/
├── connect-button.tsx # Wallet connect (Privy)
├── loading-spinner.tsx # Loading indicator
├── transaction-toast.tsx # Transaction status toast
└── error-display.tsx # Error message display
// BEFORE: Logic in component (BAD)
function SwapForm() {
const [inputToken, setInputToken] = useState(null)
const [outputToken, setOutputToken] = useState(null)
const [amount, setAmount] = useState('')
const [loading, setLoading] = useState(false)
useEffect(() => {
// 50 lines of quote fetching logic
}, [deps])
return (/* 200 lines of JSX */)
}
// AFTER: Logic in hook (GOOD)
// hooks/use-swap.ts
export function useSwap() {
const [inputToken, setInputToken] = useState(null)
const [outputToken, setOutputToken] = useState(null)
// ... logic
return { inputToken, outputToken, quote, submitSwap }
}
// Component is now simpler
function SwapForm() {
const { inputToken, outputToken, quote, submitSwap } = useSwap()
return (/* Clean JSX */)
}
| Task | Solution |
|---|---|
| Add component | cd frontend && npx shadcn@latest add <name> |
| Custom color | Add to globals.css + tailwind.config.ts |
| Icon | import { IconName } from 'lucide-react' |
| Icon sizes | h-4 w-4 (sm), h-5 w-5 (md), h-6 w-6 (lg) |
| Hover effect | transition-all duration-300 hover:... |
| Focus ring | focus:ring-2 focus:ring-primary focus:ring-offset-2 |