mcpField
D
designer-skills

designer-skills

github.com/llama-farmDevelopment83645 installsUpdated 21w ago
Repository

About designer-skills

designer-skills provides framework-specific patterns and review checklists for LlamaFarm's browser-based Designer subsystem. It is intended for developers working with its React, TanStack Query, TailwindCSS, and Radix UI code.

Key features

  1. 01TanStack Query patterns
  2. 02TailwindCSS styling guidance
  3. 03Radix UI accessibility patterns
  4. 04Frontend performance checklists
  5. 05Component and testing conventions

Use cases

  1. 01Implementing Designer UI components
  2. 02Reviewing query and mutation code
  3. 03Applying accessible Radix UI patterns
  4. 04Checking frontend performance and tests

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/llama-farm/llamafarm --skill designer-skills

After installing, type/designer-skillsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

performance.md
radix.md
tailwind.md
tanstack-query.md

Details

From the project README

Designer Skills for LlamaFarm

Framework-specific patterns and checklists for the Designer subsystem (React 18 + TanStack Query + TailwindCSS + Radix UI).

Overview

The Designer is a browser-based project workbench for building AI applications. It provides config editing, chat testing, dataset management, RAG configuration, and model selection.

Tech Stack

TechnologyVersionPurpose
React18.2UI framework with StrictMode
TypeScript5.2+Type safety
TanStack Queryv5Server state management
TailwindCSS3.3Utility-first CSS
Radix UI1.xAccessible component primitives
Vite6.xBuild tooling and dev server
React Routerv7Client-side routing
Vitest1.xTesting framework
axios1.xHTTP client
framer-motion12.xAnimations

Directory Structure

designer/src/
  api/          # API service modules (axios-based)
  assets/       # Static assets and icons
  components/   # Feature-organized React components
    ui/         # Radix-based primitive components
  contexts/     # React Context providers
  hooks/        # Custom hooks (TanStack Query wrappers)
  lib/          # Utilities (cn, etc.)
  types/        # TypeScript type definitions
  utils/        # Helper functions
  test/         # Test utilities, factories, mocks

Prerequisites: Shared Skills

Before applying Designer-specific patterns, ensure compliance with:

Framework-Specific Guides

GuideDescription
tanstack-query.mdQuery/Mutation patterns, caching, invalidation
tailwind.mdTailwindCSS patterns, theming, responsive design
radix.mdRadix UI component patterns, accessibility
performance.mdFrontend optimizations, bundle size, lazy loading

Key Patterns

API Client Configuration
// Centralized client with interceptors
export const apiClient = axios.create({
  baseURL: API_BASE_URL,
  headers: { 'Content-Type': 'application/json' },
  timeout: 60000,
})

// Error handling interceptor
apiClient.interceptors.response.use(
  response => response,
  (error: AxiosError) => {
    if (error.response?.status === 422) {
      throw new ValidationError('Validation error', error.response.data)
    }
    throw new NetworkError('Request failed', error)
  }
)
Query Client Configuration
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,
      gcTime: 5 * 60_000,
      retry: 2,
      retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30_000),
      refetchOnWindowFocus: false,
    },
    mutations: { retry: 1 },
  },
})
Class Merging Utility
// lib/utils.ts - Always use cn() for Tailwind classes
import { clsx, type ClassValue } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}
Theme Provider Pattern
const ThemeContext = createContext<ThemeContextType | undefined>(undefined)

export function useTheme() {
  const context = useContext(ThemeContext)
  if (!context) throw new Error('useTheme must be used within ThemeProvider')
  return context
}

// Apply via Tailwind dark mode class strategy
useEffect(() => {
  document.documentElement.classList.toggle('dark', theme === 'dark')
}, [theme])

Component Conventions

Feature Components
  • Located in components/{Feature}/ directories
  • One component per file, named after the component
  • Co-located with feature-specific types and utilities
UI Primitives
  • Located in components/ui/
  • Wrap Radix UI primitives with Tailwind styling
  • Use forwardRef for ref forwarding
  • Set displayName for DevTools
Icons
  • Located in assets/icons/
  • Functional components accepting SVG props
  • Use lucide-react for standard icons

Testing

// Use MSW for API mocking
import { server } from '@/test/mocks/server'
import { renderWithProviders } from '@/test/utils'

beforeAll(() => server.listen())
afterEach(() => server.resetHandlers())
afterAll(() => server.close())

test('renders with query data', async () => {
  renderWithProviders(<MyComponent />)
  await screen.findByText('Expected text')
})

Checklist Summary

CategoryCriticalHighMediumLow
TanStack Query3432
TailwindCSS2342
Radix UI3321
Performance2432

Comments

Markdown supported