К основному содержанию
скилл CX Codex

react-component-generator — скилл для Claude Code: генерация

Скилл для генерации React-компонентов на TypeScript: пропсы, хуки, доступность. Пригодится при создании новых UI-элементов и рефакторинге.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add OneWave-AI/claude-skills --skill react-component-generator -a claude-code
Открыть на GitHub

Что делает react-component-generator

Скилл задаёт агенту порядок работы при создании React-компонента: определить, клиентский он или серверный, описать интерфейс пропсов на TypeScript, реализовать по практикам и добавить атрибуты доступности. Внутри — готовые шаблоны под три случая: клиентский компонент, серверный компонент и форма на React Hook Form с валидацией через zod.

Шаблон клиентского компонента показывает кнопку с вариантами оформления, размерами и состоянием загрузки. Серверный — список пользователей с запросом к базе и параметром limit. Форма разбирает схему zod, связывает ошибки с полями через aria-invalid и aria-describedby. Есть чек-лист по доступности: семантические теги, aria-label для кнопок без текста, роли, навигация с клавиатуры, aria-busy для загрузки.

Установка идёт через npx skills add с флагом под конкретную платформу, файл скилла ложится в папку вроде ~/.claude/skills/react-component-generator/SKILL.md. Шаблоны опираются на react-hook-form, @hookform/resolvers и zod — если этих пакетов в проекте нет, примеры формы придётся адаптировать. Это повод проверить зависимости до того, как агент начнёт вставлять код.

Какие задачи решает

  • сгенерировать кнопку с вариантами оформления и состоянием загрузки
  • написать серверный компонент со списком из базы
  • собрать форму логина с валидацией полей
  • связать ошибки формы с полями через aria-атрибуты
  • пройти чек-лист доступности при рефакторинге компонента

Примеры запросов агенту

  • Создай клиентский компонент Button с вариантами primary, secondary и ghost
  • Напиши серверный компонент UserList с параметром limit
  • Сделай форму логина на React Hook Form с валидацией через zod

Как установить react-component-generator

1Через Skills CLI (Vercel)

npx skills add OneWave-AI/claude-skills --skill react-component-generator -a claude-code

2Вручную: положить файлы

~/.claude/skills/react-component-generator/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/react-component-generator/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора58

prospect-research-compiler Скилл собирает профиль потенциального клиента из новостей, соцсетей, сайта компании и финансовых данных. Пригодится перед первым письмом или звонком. CX Codex +1 322установок pipeline-health-analyzer Разбирает выгрузку по сделкам, находит зависшие и рискованные, считает вероятность закрытия и подсказывает, что делать дальше. CX Codex +1 319установок git-pr-reviewer Скилл разбирает диф ветки и проходит по изменённым файлам: логика, безопасность, производительность, тесты. Пригодится перед мержем, когда не хочется читать диф глазами. CX Codex +1 320установок webinar-content-repurposer Превращает запись вебинара в серию постов, сниппеты для соцсетей, письма и одностраничники для отдела продаж. Пригодится, когда вебинар уже прошёл, а материалы для каналов ещё не готовы. CX Codex +1 319установок utm-parameter-generator Скилл собирает UTM-метки по единому шаблону и подсказывает, как назвать кампанию, чтобы вся команда писала одинаково. CX Codex +1 316установок deal-review-framework Скилл ведёт разбор сделки по MEDDIC и BANT: считает риск, требует доказательства на каждой стадии и подсвечивает красные флаги. CX Codex +1 317установок champion-identifier Разбирает профили LinkedIn в целевой компании и подсказывает, кто внутри будет продвигать ваш продукт. Полезно перед холодным аутричем в крупный аккаунт. CX Codex +1 312установок intent-signal-aggregator Скилл собирает сигналы о готовности клиента покупать — вакансии, раунды инвестиций, смену руководителей — и расставляет аккаунты по приоритету. CX Codex +1 310установок

Похожие

react-component-architecture aj-geddes Скилл задаёт агенту правила проектирования React-компонентов: функциональные компоненты, хуки, композиция и TypeScript. Пригодится, когда растёт библиотека переиспользуемых компонентов. CX Codex +1 674установок react-hook-form-zod ovachiever Скилл учит агента собирать формы на React Hook Form с валидацией через Zod. Одна схема работает и на клиенте, и на сервере. CX Codex +1 722установок react-container-presentation-component официальный github Скилл создаёт React-компонент по паттерну Container/Presentation и раскладывает файлы по соглашениям TypeScript, Storybook и SCSS. 65установок react-composition-2026 patterns.dev Скилл учит агента заменять булевы пропсы и жёсткие API компонентов на композицию: compound-компоненты, явные варианты, children вместо render props. CX Codex +1 1 100установок component-spec Owl-Listener Скилл описывает один компонент дизайн-системы: анатомию, варианты, состояния, доступность и правила использования. Пригодится, когда библиотека растёт и пора зафиксировать API. CX Codex +1 2 100установок web-component-design Seth Hobson Скилл помогает проектировать компоненты для React, Vue и Svelte. Подойдёт для библиотек UI, дизайн-систем и рефакторинга старых компонентов. CX Codex 13 167установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о react-component-generator

Как установить react-component-generator в Claude?

Выполните npx skills add OneWave-AI/claude-skills --skill react-component-generator -a claude-code. Файл скилла появится по пути ~/.claude/skills/react-component-generator/SKILL.md.

Что делает react-component-generator?

Помогает агенту писать React-компоненты на TypeScript: определяет тип компонента, описывает пропсы, добавляет хуки и атрибуты доступности. Внутри есть шаблоны для клиентских и серверных компонентов и для форм.

Что нужно для работы скилла?

Шаблон формы использует react-hook-form, @hookform/resolvers и zod. Если этих пакетов в проекте нет, примеры придётся переписать под свои зависимости.

Исходный текст

SKILL.md · MIT
---
name: react-component-generator
description: Generate React components with TypeScript, proper props, hooks, and accessibility. Use when creating new React components, UI elements, or refactoring existing components.
---

# React Component Generator

## Instructions

When creating React components:

1. **Determine component type**: Client or Server component
2. **Define props interface** with TypeScript
3. **Implement with best practices**
4. **Add accessibility attributes**

## Templates

### Client Component

```tsx
'use client';

import { useState, useCallback } from 'react';
import { cn } from '@/lib/utils';

interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary' | 'ghost';
  size?: 'sm' | 'md' | 'lg';
  isLoading?: boolean;
  children: React.ReactNode;
}

export function Button({
  variant = 'primary',
  size = 'md',
  isLoading = false,
  children,
  className,
  disabled,
  ...props
}: ButtonProps) {
  const baseStyles = 'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2';

  const variants = {
    primary: 'bg-blue-600 text-white hover:bg-blue-700',
    secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
    ghost: 'hover:bg-gray-100',
  };

  const sizes = {
    sm: 'h-8 px-3 text-sm',
    md: 'h-10 px-4',
    lg: 'h-12 px-6 text-lg',
  };

  return (
    <button
      className={cn(baseStyles, variants[variant], sizes[size], className)}
      disabled={disabled || isLoading}
      aria-busy={isLoading}
      {...props}
    >
      {isLoading ? <span className="animate-spin mr-2">⏳</span> : null}
      {children}
    </button>
  );
}
```

### Server Component

```tsx
import { db } from '@/lib/db';

interface UserListProps {
  limit?: number;
}

export async function UserList({ limit = 10 }: UserListProps) {
  const users = await db.user.findMany({ take: limit });

  if (users.length === 0) {
    return <p className="text-gray-500">No users found.</p>;
  }

  return (
    <ul role="list" className="divide-y">
      {users.map((user) => (
        <li key={user.id} className="py-4">
          <span>{user.name}</span>
        </li>
      ))}
    </ul>
  );
}
```

### Form Component with React Hook Form

```tsx
'use client';

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

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

type FormData = z.infer<typeof schema>;

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

  return (
    <form onSubmit={handleSubmit(onSubmit)} noValidate>
      <div>
        <label htmlFor="email">Email</label>
        <input
          id="email"
          type="email"
          aria-invalid={!!errors.email}
          aria-describedby={errors.email ? 'email-error' : undefined}
          {...register('email')}
        />
        {errors.email && (
          <p id="email-error" role="alert">{errors.email.message}</p>
        )}
      </div>
      <button type="submit" disabled={isSubmitting}>
        {isSubmitting ? 'Loading...' : 'Submit'}
      </button>
    </form>
  );
}
```

## Accessibility Checklist

- [ ] Use semantic HTML elements
- [ ] Add `aria-label` for icon-only buttons
- [ ] Include `role` attributes where needed
- [ ] Ensure keyboard navigation works
- [ ] Add `aria-invalid` and `aria-describedby` for form errors
- [ ] Use `aria-busy` for loading states

© OneWave-AI · MIT · OneWave-AI/claude-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой