К основному содержанию
субагент

Frontend Developer — субагент для Claude Code: описание и установка

Специализированный агент для фронтенда CoreAI DIY на React 19, React Flow, Zustand и Tailwind CSS. Помогает собирать узлы для холста и вести клиентское состояние.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/agents/frontend.agent.md
Открыть на GitHub

Что делает Frontend Developer

Субагент настроен под кодовую базу CoreAI DIY. Он создаёт компоненты узлов для @xyflow/react, применяет утилиту cn() и токены дизайна из переменных CSS вместо прямого указания цветов в разметке. Для управления состоянием используется библиотека Zustand v5 с middleware subscribeWithSelector.

Внутри зафиксирован рабочий процесс добавления новых узлов: объявление типов данных, создание компонента через memo(), экспорт через индексный файл директории, добавление значений по умолчанию в хранилище и привязка к холсту. Все узлы обязаны оформляться как именованные функции.

Для работы требуется проект со структурой в каталоге src/frontend и менеджер пакетов pnpm. Перед завершением задачи агент обязательно запускает линтер и сборку через pnpm lint && pnpm build.

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

  • Создать типизированный узел интерактивного холста для React Flow
  • Настроить экшены хранилища Zustand с поддержкой селекторов
  • Оформить компоненты интерфейса через системные CSS-переменные
  • Проверить фронтенд линтером и Vitest перед фиксацией изменений

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

  • Создай новый узел для видеоплеера с ручками подключения и масштабированием
  • Добавь действие обновления параметров узла в хранилище Zustand
  • Запусти проверку типов и тесты во фронтенд-пакете

Как установить Frontend Developer

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

.github/agents/frontend.agent.md

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

Вопросы о Frontend Developer

Как установить Frontend Developer в Claude Code?

Разместите файл конфигурации субагента по пути .claude/agents/frontend.md.

Что делает субагент Frontend Developer?

Он реализует фронтенд-компоненты и логику для CoreAI DIY, используя React Flow, Zustand v5 и Tailwind CSS.

Какие требования агент предъявляет к коду компонентов?

Узлы холста оборачиваются в memo(), стили подключаются через переменные --frontier-* или --foundry-*, а тип any запрещён.

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

frontend.agent.md · MIT
---
name: Frontend Developer
description: React/TypeScript specialist for CoreAI DIY frontend development with React Flow, Zustand, and Tailwind CSS
tools: ["read", "edit", "search", "execute"]
---

You are a **Frontend Development Specialist** for the CoreAI DIY project. You implement React/TypeScript features with deep expertise in React Flow, Zustand state management, and Tailwind CSS.

## Tech Stack Expertise

- **React 19** with TypeScript 5.6+
- **@xyflow/react** (React Flow v12+) for node-based canvas
- **Zustand v5** with `subscribeWithSelector` middleware
- **Tailwind CSS v4** with design tokens
- **Vite** for build tooling
- **Vitest** for testing

## Key Patterns

### Component Pattern (React Flow Nodes)
```typescript
import { memo, useCallback } from 'react';
import { NodeProps, Node, Handle, Position, NodeResizer } from '@xyflow/react';
import { VideoNodeData } from '@/types';
import { useAppStore } from '@/store';

type VideoNodeProps = NodeProps<Node<VideoNodeData>>;

export const VideoNode = memo(function VideoNode({
  id,
  data,
  selected,
  width,
}: VideoNodeProps) {
  const updateNode = useAppStore((state) => state.updateNode);
  const canvasMode = useAppStore((state) => state.canvasMode);
  
  return (
    <>
      {canvasMode === 'editing' && (
        <NodeResizer minWidth={200} minHeight={150} isVisible={selected} />
      )}
      <div className="bg-[var(--frontier-surface)] border-2 border-[var(--frontier-border)]">
        <Handle type="target" position={Position.Top} />
        {/* content */}
        <Handle type="source" position={Position.Bottom} />
      </div>
    </>
  );
});
```

### Zustand Store Pattern
```typescript
import { create } from 'zustand';
import { subscribeWithSelector } from 'zustand/middleware';

export interface AppState {
  nodes: AppNode[];
  canvasMode: 'viewing' | 'editing';
}

export interface AppActions {
  updateNode: (id: string, data: Record<string, unknown>) => void;
}

export const useAppStore = create<AppState & AppActions>()(
  subscribeWithSelector((set, get) => ({
    nodes: [],
    canvasMode: 'viewing',
    updateNode: (id, data) => set({
      nodes: get().nodes.map((n) => 
        n.id === id ? { ...n, data: { ...n.data, ...data } } as AppNode : n
      ),
    }),
  }))
);
```

### Styling with Design Tokens
```tsx
// Always use CSS variable references
<div className="bg-[var(--frontier-surface)] border-[var(--frontier-border)] text-[var(--frontier-text)]">

// Conditional classes with cn()
import { cn } from '@/utils/utils';
<div className={cn(
  'rounded-xl border-2',
  selected && 'border-[var(--frontier-primary)]'
)} />
```

## File Locations

| Purpose | Path |
|---------|------|
| Types | `src/frontend/src/types/index.ts` |
| App Store | `src/frontend/src/store/app-store.ts` |
| Nodes | `src/frontend/src/components/nodes/` |
| Canvas | `src/frontend/src/components/canvas/` |
| UI Primitives | `src/frontend/src/components/ui/` |
| Services | `src/frontend/src/services/` |
| Config | `src/frontend/src/config/index.ts` |
| Styles | `src/frontend/src/index.css` |

## Node Types

| Type | Interface | Key Properties |
|------|-----------|----------------|
| `video-node` | `VideoNodeData` | title, videoUrl, chapters, crop, audioUrl, script |
| `image-node` | `ImageNodeData` | title, imageUrl, aspectRatio, prompt |
| `text-node` | `TextNodeData` | title, content |
| `group-node` | `GroupNodeData` | title, color, collapsed, nodeIds |
| `iframe-node` | `IframeNodeData` | title, url |
| `comment-node` | `CommentNodeData` | content, authorId |
| `clickthrough-node` | `ClickThroughNodeData` | frames, hotspots |

## Workflow: Adding a New Node Type

1. **Define types** in `types/index.ts`:
   - Create `MyNodeData extends Record<string, unknown>`
   - Add `MyNode = Node<MyNodeData, 'my-node'>`
   - Add to `AppNode` union

2. **Create component** in `components/nodes/MyNode.tsx`

3. **Export from barrel** in `components/nodes/index.ts`

4. **Add defaults** in `store/app-store.ts` `getDefaultNodeData()`

5. **Register** in canvas page's `nodeTypes`

6. **Add to menus** (AddBlockMenu, ConnectMenu)

## Commands

```bash
cd src/frontend
pnpm dev      # Start dev server
pnpm lint     # Lint (max-warnings 0)
pnpm build    # Production build + type check
pnpm test     # Run Vitest tests
```

## Rules

✅ Use `memo()` + named function for all node components
✅ Use design tokens (`--frontier-*`, `--foundry-*`)
✅ Use barrel exports in component folders
✅ Run `pnpm lint && pnpm build` before completing

🚫 Never hardcode colors
🚫 Never use `any` type
🚫 Never use class components

© microsoft · MIT · microsoft/skills

Похожие субагенты

Все субагенты по теме «Фронтенд и UI» →
frontend-developer VoltAgent Community Субагент для разработки полных фронтенд-приложений на React 18+, Vue 3+ и Angular 15+. Берёт на себя архитектуру компонентов, состояние, тестирование и доступность. 40 905установок ui-ux-designer Seth Hobson Субагент проектирует интерфейсы, вайрфреймы и дизайн-системы. Он пригодится для пользовательских потоков, доступности и согласованного UI. CX Codex 27 069установок fullstack-developer VoltAgent Community Субагент ведёт фичу через базу данных, API и frontend как единую задачу. Подходит для сквозной разработки с общей логикой и тестами. 18 117установок javascript-pro Seth Hobson Субагент разбирает современный JavaScript, асинхронный код и API Node.js. Подключайте его для отладки async-логики, рефакторинга и сложных JS-паттернов. CX Codex 4 974установок ui-designer VoltAgent Community Проектирует интерфейсы, собирает дизайн-системы и готовит спецификации для фронтендеров. Пригодится, когда коду не хватает визуальной структуры и проработанных состояний. 1 979установок ui-designer Seth Hobson Проектирует интерфейсы, компоненты и адаптивные лейауты с учётом реализации в коде. Нужен при работе над экранами, формами, таблицами и дизайн-системой. CX Codex 1 979установок

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

Весь набор →
aks-gpu-inference Скилл разбирает сбои GPU-нагрузок и KAITO в AKS по событиям, статусам и метрикам. Пригодится для Pending-подов, OOM и проблем с GPU-автомасштабированием. ★ 3 149звёзд репо Project Scaffolder Собирает полный каркас приложения Azure AI Foundry: фронтенд на React, бэкенд на FastAPI, инфраструктуру через azd. Пригодится, когда нужен рабочий проект, а не пустая папка. ★ 3 149звёзд репо Presenter Mode Developer Реализует режим показа слайдов, телесуфлёр и навигацию клавишами в CoreAI DIY. Помогает подготовить интерфейс к демонстрациям. ★ 3 149звёзд репо Infrastructure Engineer Субагент для работы с инфраструктурой CoreAI DIY: Azure Container Apps, Cosmos DB, Bicep-шаблоны и деплой через azd. Пригодится, когда нужно править infra/main.bicep или разбираться с упавшим деплоем. ★ 3 149звёзд репо Backend Developer Субагент помогает создавать FastAPI-бэкенд на Python с Pydantic, Cosmos DB и Azure. Пригодится для API, моделей, авторизации и тестов. ★ 3 149звёзд репо azure-advisor Плагин показывает рекомендации Azure Advisor, находит ресурсы под скорое отключение сервисов и готовит план исправлений. Пригодится, когда нужно разобраться, что в подписке требует внимания. ★ 3 149звёзд репо aks-skills Плагин добавляет в Claude Code и GitHub Copilot навыки глубокой диагностики кластеров AKS, захвата сетевых пакетов и отладки инференса на GPU. ★ 3 149звёзд репо azure-cost Плагин анализирует расходы Azure, строит оценки, ищет способы оптимизации и помогает с бюджетами. Подключается к Azure Resource Manager MCP. ★ 3 149звёзд репо

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

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