Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add llama-farm/llamafarm --skill "react-skills"
Install specific skill from multi-skill repository
# Description
React 18 patterns for LlamaFarm Designer. Covers components, hooks, TanStack Query, and testing.
# SKILL.md
name: react-skills
description: React 18 patterns for LlamaFarm Designer. Covers components, hooks, TanStack Query, and testing.
allowed-tools: Read, Grep, Glob
user-invocable: false
React Skills for LlamaFarm Designer
Best practices and patterns for React 18 development in the Designer subsystem.
Tech Stack
- React 18.2 with StrictMode
- TypeScript 5.2+ for type safety
- TanStack Query v5 for server state management
- React Router v7 for client-side routing
- TailwindCSS with
tailwind-mergeandclsxfor styling - Radix UI primitives for accessible components
- Vite for build tooling
- Vitest + React Testing Library for testing
Directory Structure
designer/src/
api/ # API service functions
components/ # React components (feature-organized)
contexts/ # React context providers
hooks/ # Custom hooks
lib/ # Utility functions (cn, etc.)
types/ # TypeScript type definitions
utils/ # Helper functions
test/ # Test utilities and mocks
Core Patterns
Component Composition
- Use composition over inheritance
- Prefer small, focused components
- Use
forwardReffor components that wrap DOM elements - Apply
displayNameto forwardRef components for DevTools
State Management
- Local UI state:
useState,useReducer - Server state: TanStack Query (
useQuery,useMutation) - Shared UI state: React Context with custom hooks
- Form state: Controlled components with validation
Hooks
- Follow Rules of Hooks (top-level, consistent order)
- Create custom hooks for reusable logic
- Use query key factories for TanStack Query
- Memoize expensive computations with
useMemo - Stabilize callbacks with
useCallback
Styling
- Use
cn()fromlib/utilsto merge Tailwind classes - Use
cva(class-variance-authority) for component variants - Follow dark mode conventions with
dark:prefix
Related Guides
- components.md - Component patterns
- hooks.md - Hook patterns and rules
- state.md - State management patterns
- performance.md - Performance optimization
- security.md - Security best practices
Quick Reference
// Utility for merging Tailwind classes
import { cn } from '@/lib/utils'
cn('base-class', condition && 'conditional-class', className)
// Query key factory pattern
export const projectKeys = {
all: ['projects'] as const,
lists: () => [...projectKeys.all, 'list'] as const,
list: (ns: string) => [...projectKeys.lists(), ns] as const,
}
// Context with validation hook
const MyContext = createContext<MyContextType | undefined>(undefined)
export function useMyContext() {
const ctx = useContext(MyContext)
if (!ctx) throw new Error('useMyContext must be within MyProvider')
return ctx
}
Testing
import { renderWithProviders } from '@/test/utils'
import { screen } from '@testing-library/react'
test('renders component', () => {
renderWithProviders(<MyComponent />)
expect(screen.getByText('Hello')).toBeInTheDocument()
})
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.