react-development

Specialized skill for React component development, hooks patterns, state management, context API, performance optimization, and modern React best practices.

509 stars

Best use case

react-development is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Specialized skill for React component development, hooks patterns, state management, context API, performance optimization, and modern React best practices.

Teams using react-development should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/react-development/SKILL.md --create-dirs "https://raw.githubusercontent.com/a5c-ai/babysitter/main/library/specializations/web-development/skills/react-development/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/react-development/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How react-development Compares

Feature / Agentreact-developmentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Specialized skill for React component development, hooks patterns, state management, context API, performance optimization, and modern React best practices.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# React Development Skill

Expert assistance for building React applications with modern patterns, hooks, state management, and performance optimization.

## Capabilities

- Generate React components with TypeScript and proper typing
- Implement custom hooks with composition patterns
- Configure state management (Context API, Redux Toolkit, Zustand)
- Optimize rendering performance with memoization
- Set up component testing with React Testing Library
- Create accessible, reusable component libraries

## Usage

Invoke this skill when you need to:
- Create new React components with best practices
- Implement custom hooks for shared logic
- Set up state management architecture
- Optimize component rendering performance
- Configure React project structure

## Inputs

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| componentName | string | Yes | Name of the component (PascalCase) |
| componentType | string | No | functional, class (default: functional) |
| stateManagement | string | No | context, redux, zustand, jotai, none |
| typescript | boolean | No | Use TypeScript (default: true) |
| testing | boolean | No | Generate tests (default: true) |
| storybook | boolean | No | Generate Storybook stories (default: false) |

### Component Configuration

```json
{
  "componentName": "UserProfile",
  "componentType": "functional",
  "props": [
    { "name": "user", "type": "User", "required": true },
    { "name": "onUpdate", "type": "(user: User) => void", "required": false }
  ],
  "hooks": ["useState", "useEffect", "useCallback"],
  "typescript": true,
  "testing": true
}
```

## Output Structure

```
src/
├── components/
│   └── UserProfile/
│       ├── index.ts                 # Barrel export
│       ├── UserProfile.tsx          # Component implementation
│       ├── UserProfile.types.ts     # Type definitions
│       ├── UserProfile.hooks.ts     # Custom hooks
│       ├── UserProfile.styles.ts    # Styled components or CSS modules
│       ├── UserProfile.test.tsx     # Unit tests
│       └── UserProfile.stories.tsx  # Storybook stories (optional)
├── hooks/
│   ├── index.ts                     # Hook exports
│   ├── useDebounce.ts              # Debounce hook
│   ├── useLocalStorage.ts          # LocalStorage hook
│   └── useFetch.ts                 # Data fetching hook
└── context/
    ├── index.ts                     # Context exports
    └── UserContext.tsx             # User context provider
```

## Generated Code Patterns

### Functional Component Template

```typescript
import { memo, useCallback, useState } from 'react';
import type { UserProfileProps } from './UserProfile.types';
import { useUserData } from './UserProfile.hooks';

export const UserProfile = memo(function UserProfile({
  user,
  onUpdate,
}: UserProfileProps) {
  const [isEditing, setIsEditing] = useState(false);
  const { updateUser, isLoading } = useUserData();

  const handleSave = useCallback(async (data: UserData) => {
    await updateUser(data);
    onUpdate?.(data);
    setIsEditing(false);
  }, [updateUser, onUpdate]);

  return (
    <div className="user-profile" role="region" aria-label="User Profile">
      {/* Component content */}
    </div>
  );
});

UserProfile.displayName = 'UserProfile';
```

### Custom Hook Template

```typescript
import { useState, useEffect, useCallback } from 'react';

interface UseAsyncDataOptions<T> {
  initialData?: T;
  onError?: (error: Error) => void;
}

export function useAsyncData<T>(
  fetchFn: () => Promise<T>,
  deps: unknown[] = [],
  options: UseAsyncDataOptions<T> = {}
) {
  const [data, setData] = useState<T | undefined>(options.initialData);
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState<Error | null>(null);

  const execute = useCallback(async () => {
    setIsLoading(true);
    setError(null);
    try {
      const result = await fetchFn();
      setData(result);
      return result;
    } catch (err) {
      const error = err instanceof Error ? err : new Error(String(err));
      setError(error);
      options.onError?.(error);
    } finally {
      setIsLoading(false);
    }
  }, deps);

  useEffect(() => {
    execute();
  }, [execute]);

  return { data, isLoading, error, refetch: execute };
}
```

### Context Provider Template

```typescript
import {
  createContext,
  useContext,
  useReducer,
  useMemo,
  type ReactNode,
} from 'react';

interface State {
  user: User | null;
  isAuthenticated: boolean;
}

type Action =
  | { type: 'SET_USER'; payload: User }
  | { type: 'LOGOUT' };

const initialState: State = {
  user: null,
  isAuthenticated: false,
};

function reducer(state: State, action: Action): State {
  switch (action.type) {
    case 'SET_USER':
      return { ...state, user: action.payload, isAuthenticated: true };
    case 'LOGOUT':
      return initialState;
    default:
      return state;
  }
}

const UserContext = createContext<{
  state: State;
  dispatch: React.Dispatch<Action>;
} | null>(null);

export function UserProvider({ children }: { children: ReactNode }) {
  const [state, dispatch] = useReducer(reducer, initialState);
  const value = useMemo(() => ({ state, dispatch }), [state]);

  return (
    <UserContext.Provider value={value}>
      {children}
    </UserContext.Provider>
  );
}

export function useUser() {
  const context = useContext(UserContext);
  if (!context) {
    throw new Error('useUser must be used within a UserProvider');
  }
  return context;
}
```

## Performance Optimization Patterns

### Memoization

```typescript
// Memoize expensive computations
const sortedItems = useMemo(() =>
  items.sort((a, b) => a.name.localeCompare(b.name)),
  [items]
);

// Memoize callbacks to prevent child re-renders
const handleClick = useCallback((id: string) => {
  setSelected(id);
}, []);

// Memoize components
const MemoizedChild = memo(ChildComponent);
```

### Code Splitting

```typescript
import { lazy, Suspense } from 'react';

const LazyComponent = lazy(() => import('./HeavyComponent'));

function App() {
  return (
    <Suspense fallback={<LoadingSpinner />}>
      <LazyComponent />
    </Suspense>
  );
}
```

## Dependencies

```json
{
  "dependencies": {
    "react": "^19.0.0",
    "react-dom": "^19.0.0"
  },
  "devDependencies": {
    "@types/react": "^19.0.0",
    "@types/react-dom": "^19.0.0",
    "@testing-library/react": "^16.0.0",
    "@testing-library/jest-dom": "^6.0.0",
    "vitest": "^2.0.0"
  }
}
```

## Workflow

1. **Analyze requirements** - Determine component structure and state needs
2. **Create type definitions** - Define props, state, and context types
3. **Implement component** - Build with hooks and proper patterns
4. **Add custom hooks** - Extract reusable logic
5. **Optimize performance** - Apply memoization where needed
6. **Write tests** - Component and hook unit tests
7. **Add accessibility** - ARIA attributes and keyboard navigation

## Best Practices Applied

- TypeScript strict mode with proper typing
- Functional components with hooks (no class components)
- Custom hooks for shared logic
- Context API for app-wide state
- Memoization for performance
- Proper error boundaries
- Accessibility (a11y) compliance
- Testing with React Testing Library

## References

- React Documentation: https://react.dev/
- React Hooks: https://react.dev/reference/react/hooks
- React Testing Library: https://testing-library.com/docs/react-testing-library/intro/
- web-artifacts-builder: https://github.com/anthropics/skills/tree/main/skills/web-artifacts-builder
- react-mcp: https://github.com/kalivaraprasad-gonapa/react-mcp

## Target Processes

- react-application-development
- component-library-creation
- state-management-setup
- performance-optimization
- frontend-testing

Related Skills

vue-development

509
from a5c-ai/babysitter

Vue 3 development with Composition API, reactivity system, component patterns, TypeScript integration, and best practices.

react-testing-library

509
from a5c-ai/babysitter

React Testing Library patterns, queries, user events, and accessibility testing.

react-server-components

509
from a5c-ai/babysitter

React Server Components patterns including streaming, data fetching, client/server component composition, and performance optimization.

react-query

509
from a5c-ai/babysitter

TanStack Query (React Query) patterns for server state management, caching, mutations, optimistic updates, and infinite queries.

react-hooks

509
from a5c-ai/babysitter

Deep expertise in React hooks patterns including custom hooks, composition, optimization, and testing strategies.

angular-development

509
from a5c-ai/babysitter

Angular development patterns including modules, components, services, dependency injection, signals, and enterprise architecture.

REPL Development

509
from a5c-ai/babysitter

Expert skill for building interactive REPLs with rich editing and evaluation features

Swift/SwiftUI Development

509
from a5c-ai/babysitter

Expert skill for native iOS development with Swift and SwiftUI

React Native Development

509
from a5c-ai/babysitter

Deep integration with React Native ecosystem for cross-platform mobile development

Kotlin/Jetpack Compose Development

509
from a5c-ai/babysitter

Expert skill for native Android development with Kotlin and Jetpack Compose

Flutter/Dart Development

509
from a5c-ai/babysitter

Specialized skill for Flutter app development and Dart programming

unreal-development

509
from a5c-ai/babysitter

Unreal Engine integration skill for C++/Blueprint development, actor lifecycle management, plugin development, and editor automation. Enables LLMs to interact with Unreal Editor through MCP servers for level manipulation, Blueprint generation, and automated workflows.