mcpField
S
senior-frontend

senior-frontend

github.com/composio-community开发2.0k1.7k 次安装14 周前更新
代码仓库

关于 senior-frontend

senior-frontend 是面向 React 和 Next.js 应用开发与优化的技能,涵盖项目脚手架、组件生成、包体积分析和前端模式。

主要功能

  1. 01生成 Next.js 和 React 项目脚手架
  2. 02配置 TypeScript 与 Tailwind CSS
  3. 03生成组件、测试和 Storybook 内容
  4. 04分析包体积优化机会
  5. 05提供 React 与 Next.js 实践模式
  6. 06提供无障碍开发指导

适用场景

  1. 01启动 React 或 Next.js 项目
  2. 02生成带测试的组件和 Hook
  3. 03查找可缩减包体积的依赖
  4. 04检查前端代码的无障碍性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/composio-community/awesome-claude-plugins --skill senior-frontend

安装后在 Claude Code 中输入/senior-frontend确认已加载。

详细介绍

高级前端

面向 React/Next.js 应用的前端开发模式、性能优化和自动化工具。

项目脚手架

生成采用 TypeScript、Tailwind CSS 和最佳实践配置的 Next.js 或 React 新项目。

脚手架选项
选项描述
--template nextjs使用 App Router 和 Server Components 的 Next.js 14+
--template react使用 TypeScript 的 React + Vite
--features auth添加 NextAuth.js 身份验证
--features api添加 React Query + API 客户端
--features forms添加 React Hook Form + Zod 验证
--features testing添加 Vitest + Testing Library
生成的结构(Next.js)
my-app/
├── app/
│   ├── layout.tsx        # Root layout with fonts
│   ├── page.tsx          # Home page
│   ├── globals.css       # Tailwind + CSS variables
│   └── api/health/route.ts
├── components/
│   ├── ui/               # Button, Input, Card
│   └── layout/           # Header, Footer, Sidebar
├── hooks/                # useDebounce, useLocalStorage
├── lib/                  # utils (cn), constants
├── types/                # TypeScript interfaces
├── tailwind.config.ts
├── next.config.js
└── package.json

组件生成

生成包含 TypeScript、测试和 Storybook 故事的 React 组件。

生成器选项
选项描述
--type client带有 'use client' 的客户端组件(默认)
--type server异步服务端组件
--type hook自定义 React Hook
--with-test包含测试文件
--with-story包含 Storybook 故事

包体积分析

分析 package.json 和项目结构,寻找包体积优化机会。

可替换的大型依赖项
包大小替代方案
moment290KBdate-fns(12KB)或 dayjs(2KB)
lodash71KB支持 tree-shaking 的 lodash-es
axios14KB原生 fetch 或 ky(3KB)
jquery87KB原生 DOM API
@mui/material大shadcn/ui 或 Radix UI

React 模式

复合组件
const Tabs = ({ children }) => {
  const [active, setActive] = useState(0);
  return (
    <TabsContext.Provider value={{ active, setActive }}>
      {children}
    </TabsContext.Provider>
  );
};

Tabs.List = TabList;
Tabs.Panel = TabPanel;
自定义 Hook
function useDebounce<T>(value: T, delay = 500): T {
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const timer = setTimeout(() => setDebouncedValue(value), delay);
    return () => clearTimeout(timer);
  }, [value, delay]);

  return debouncedValue;
}

Next.js 优化

服务端组件与客户端组件

默认使用服务端组件。仅在需要以下功能时添加 'use client':

  • 事件处理器(onClick、onChange)
  • 状态(useState、useReducer)
  • 副作用(useEffect)
  • 浏览器 API
图像优化
import Image from 'next/image';

// Above the fold - load immediately
<Image
  src="/hero.jpg"
  alt="Hero"
  width={1200}
  height={600}
  priority
/>

// Responsive image with fill
<div className="relative aspect-video">
  <Image
    src="/product.jpg"
    alt="Product"
    fill
    sizes="(max-width: 768px) 100vw, 50vw"
    className="object-cover"
  />
</div>

无障碍检查清单

  1. 语义化 HTML:使用恰当的元素(<button>、<nav>、<main>)
  2. 键盘导航:所有交互元素都可聚焦
  3. ARIA 标签:为图标和复杂控件提供标签
  4. 色彩对比度:普通文本至少为 4.5:1
  5. 焦点指示器:焦点状态清晰可见
// Accessible button
<button
  type="button"
  aria-label="Close dialog"
  onClick={onClose}
  className="focus-visible:ring-2 focus-visible:ring-blue-500"
>
  <XIcon aria-hidden="true" />
</button>

快速参考

Tailwind CSS 工具类
import { cn } from '@/lib/utils';

<button className={cn(
  'px-4 py-2 rounded',
  variant === 'primary' && 'bg-blue-500 text-white',
  disabled && 'opacity-50 cursor-not-allowed'
)} />
TypeScript 模式
// Props with children
interface CardProps {
  className?: string;
  children: React.ReactNode;
}

// Generic component
interface ListProps<T> {
  items: T[];
  renderItem: (item: T) => React.ReactNode;
}

function List<T>({ items, renderItem }: ListProps<T>) {
  return <ul>{items.map(renderItem)}</ul>;
}

评论

支持 Markdown