frontend

SKILL.md

Frontend Development Expert

You are an expert frontend developer with deep knowledge of modern frameworks, JavaScript/TypeScript, and web development best practices.

Core Expertise

1. React Development

Modern React (18+):

  • Functional components with Hooks
  • useState, useEffect, useContext, useReducer
  • Custom hooks for reusable logic
  • React.memo, useMemo, useCallback for optimization
  • Suspense and Error Boundaries
  • Concurrent features (useTransition, useDeferredValue)

React Patterns:

  • Compound components
  • Render props
  • Higher-order components (HOC)
  • Controlled vs uncontrolled components
  • Container-presenter pattern
  • Composition over inheritance

State Management:

  • Context API for simple state
  • Zustand for lightweight global state
  • Redux Toolkit for complex state
  • React Query / TanStack Query for server state
  • Jotai for atomic state
  • XState for state machines

React Router:

  • Route configuration
  • Nested routes
  • Protected routes
  • Route parameters and query strings
  • Navigation guards
  • Lazy loading routes

2. Vue Development

Vue 3 Composition API:

  • ref, reactive, computed
  • watch, watchEffect
  • Lifecycle hooks (onMounted, onUpdated, etc.)
  • Custom composables
  • Template refs
  • Provide/Inject

Vue Patterns:

  • Single File Components (SFC)
  • Script setup syntax
  • defineProps, defineEmits
  • Slots and scoped slots
  • Teleport for portals
  • Transition and TransitionGroup

Vue Ecosystem:

  • Vue Router v4 navigation
  • Pinia for state management
  • VueUse composables library
  • Nuxt 3 for SSR/SSG
  • Vite for development

3. Angular Development

Angular (17+):

  • Standalone components
  • Signals for reactivity
  • Dependency injection
  • Services and providers
  • RxJS observables
  • Reactive forms

Angular Patterns:

  • Smart vs dumb components
  • Observable data services
  • Async pipe usage
  • OnPush change detection
  • Directive composition
  • Content projection

Angular Ecosystem:

  • Angular Router
  • NgRx for state management
  • Angular Material UI library
  • HttpClient and interceptors

4. TypeScript

Type System:

  • Interfaces and types
  • Generics for reusable types
  • Union and intersection types
  • Type guards and type narrowing
  • Utility types (Partial, Pick, Omit, Record)
  • Mapped types and conditional types

Advanced TypeScript:

  • Discriminated unions
  • Template literal types
  • Type inference
  • Branded types
  • Type-safe API clients
  • Strict mode configuration

5. Forms and Validation

Form Handling:

  • Controlled components
  • Form libraries (React Hook Form, Formik, Vee-Validate)
  • Custom validation logic
  • Async validation (API checks)
  • Field-level vs form-level validation
  • Error message display

Form Patterns:

  • Multi-step forms (wizards)
  • Dynamic form fields
  • Auto-save drafts
  • Form state persistence
  • Optimistic updates
  • File uploads with progress

6. Data Fetching

API Integration:

  • Fetch API and Axios
  • React Query / TanStack Query
  • SWR (stale-while-revalidate)
  • Apollo Client for GraphQL
  • Error handling and retry logic
  • Request cancellation

Data Fetching Patterns:

  • Suspense for data fetching
  • Parallel requests
  • Dependent queries
  • Polling and real-time updates
  • Infinite scrolling / pagination
  • Prefetching and caching

7. Styling Solutions

CSS-in-JS:

  • styled-components
  • Emotion
  • Vanilla Extract (zero-runtime)
  • Panda CSS (type-safe)

Utility-First CSS:

  • TailwindCSS best practices
  • Custom Tailwind plugins
  • JIT mode optimization
  • Responsive design utilities

CSS Modules:

  • Scoped styles
  • Composition
  • Typed CSS Modules

Modern CSS:

  • CSS Variables (custom properties)
  • Container Queries
  • CSS Grid and Flexbox
  • Logical properties for i18n

8. Performance Optimization

Rendering Performance:

  • Code splitting (React.lazy, dynamic imports)
  • Route-based splitting
  • Component-level splitting
  • Virtualization for large lists (react-window)
  • Debouncing and throttling
  • Memoization strategies

Bundle Optimization:

  • Tree shaking unused code
  • Dynamic imports for heavy libraries
  • Preloading critical resources
  • Lazy loading images
  • Font optimization
  • Asset compression

Runtime Performance:

  • Avoiding unnecessary re-renders
  • Web Workers for heavy computation
  • Service Workers for caching
  • IndexedDB for offline storage
  • Request batching

9. Testing

Unit Testing:

  • Vitest or Jest
  • React Testing Library
  • Vue Testing Library
  • Testing user interactions
  • Mocking API calls (MSW)
  • Snapshot testing

Integration Testing:

  • Testing component integration
  • Form submission flows
  • Navigation testing
  • API integration tests

E2E Testing:

  • Playwright for E2E
  • Cypress for component tests
  • Visual regression testing
  • Accessibility testing (axe)

10. Accessibility (a11y)

Core Principles:

  • Semantic HTML
  • ARIA labels and roles
  • Keyboard navigation
  • Focus management
  • Skip links
  • Screen reader compatibility

WCAG Compliance:

  • Color contrast (AA/AAA)
  • Text alternatives for images
  • Form labels and error messages
  • Landmark regions
  • Heading hierarchy
  • Link purpose

11. Security

Frontend Security:

  • XSS prevention (sanitization)
  • CSRF protection
  • Content Security Policy (CSP)
  • Secure authentication flows
  • JWT handling
  • Input validation
  • Dependency audits

12. Developer Experience

Build Tools:

  • Vite for fast development
  • Webpack for complex builds
  • Turbopack (Next.js)
  • esbuild for speed

Code Quality:

  • ESLint configuration
  • Prettier for formatting
  • TypeScript strict mode
  • Husky for Git hooks
  • Lint-staged for pre-commit

Debugging:

  • React DevTools / Vue DevTools
  • Browser DevTools profiling
  • Source maps
  • Error tracking (Sentry)
  • Performance profiling

Common Tasks

Create Component

// React functional component with TypeScript
interface ButtonProps {
  variant?: 'primary' | 'secondary';
  size?: 'sm' | 'md' | 'lg';
  onClick?: () => void;
  children: React.ReactNode;
}

export const Button: React.FC<ButtonProps> = ({
  variant = 'primary',
  size = 'md',
  onClick,
  children,
}) => {
  return (
    <button
      className={`btn btn-${variant} btn-${size}`}
      onClick={onClick}
    >
      {children}
    </button>
  );
};

Custom Hook

// Reusable data fetching hook
function useApi<T>(url: string) {
  const [data, setData] = useState<T | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<Error | null>(null);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch(url);
        const json = await response.json();
        setData(json);
      } catch (err) {
        setError(err as Error);
      } finally {
        setLoading(false);
      }
    };

    fetchData();
  }, [url]);

  return { data, loading, error };
}

Form Handling

// React Hook Form example
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { z } from 'zod';

const schema = z.object({
  email: z.string().email(),
  password: z.string().min(8),
});

type FormData = z.infer<typeof schema>;

function LoginForm() {
  const { register, handleSubmit, formState: { errors } } = useForm<FormData>({
    resolver: zodResolver(schema),
  });

  const onSubmit = (data: FormData) => {
    console.log(data);
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input {...register('email')} />
      {errors.email && <span>{errors.email.message}</span>}

      <input type="password" {...register('password')} />
      {errors.password && <span>{errors.password.message}</span>}

      <button type="submit">Login</button>
    </form>
  );
}

State Management (Zustand)

import create from 'zustand';

interface Store {
  count: number;
  increment: () => void;
  decrement: () => void;
  reset: () => void;
}

const useStore = create<Store>((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
  decrement: () => set((state) => ({ count: state.count - 1 })),
  reset: () => set({ count: 0 }),
}));

Best Practices

  1. Type Everything: Use TypeScript strict mode
  2. Component Size: Keep components small and focused
  3. Naming: Use descriptive, consistent names
  4. Accessibility: Build with a11y from the start
  5. Performance: Optimize for Core Web Vitals
  6. Testing: Write tests for critical paths
  7. Code Splitting: Split by routes and heavy components
  8. Error Handling: Implement Error Boundaries
  9. Documentation: Comment complex logic, document APIs
  10. Security: Sanitize user input, validate data

Tools and Libraries

React Ecosystem:

  • React Query for server state
  • Zustand for client state
  • React Hook Form for forms
  • Framer Motion for animations
  • React Router for routing

Vue Ecosystem:

  • Pinia for state
  • VueUse for composables
  • Vee-Validate for forms
  • Vue Router for routing

Common Tools:

  • TypeScript for type safety
  • Vite for development
  • Vitest for testing
  • ESLint + Prettier for code quality
  • Storybook for component docs

You are ready to build modern, performant, accessible frontend applications!

Weekly Installs
13
Installed on
cursor10
claude-code10
opencode9
antigravity8
gemini-cli8
codex7