Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问许可证需确认审计通过

typescript-react-standardsTypeScript React standards 前端

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

279

周安装

12

GitHub Stars

公开资料未说明

下载量

98
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:typescript-react-standards(TypeScript React standards 前端)
来源仓库:https://github.com/avantmedialtd/skills
仓库路径:skills/typescript-react-standards
安装命令:
npx skills add https://github.com/avantmedialtd/skills --skill typescript-react-standards
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/avantmedialtd/skills --skill typescript-react-standards

简介

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。

  • 它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。
  • 使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。
  • 安装命令:npx skills add https://github.com/avantmedialtd/skills --skill typescript-react-standards
  • 适用于 Codex、Claude、Cursor、Gemini CLI 等宿主环境

SKILL.md

TypeScript & React Standards

Opinionated standards for building TypeScript and React applications. These are the patterns we use at Avant Media across client projects and internal products. They prioritize readability, maintainability, and developer experience over cleverness.

TypeScript Conventions

Strict mode, always

Every project uses strict: true in tsconfig.json. No exceptions. This catches entire categories of bugs at compile time. If the types are hard to write, the code is probably too complex.

{
    "compilerOptions": {
        "strict": true,
        "noUncheckedIndexedAccess": true,
        "exactOptionalPropertyTypes": true,
        "noImplicitReturns": true,
        "noFallthroughCasesInSwitch": true
    }
}

Interfaces over types for object shapes

Use interface for anything that describes an object shape. Use type for unions, intersections, mapped types, and utility types. The distinction matters because interfaces are extensible and produce better error messages.

// Object shapes → interface
interface User {
    id: string;
    email: string;
    role: UserRole;
}

// Unions, utilities → type
type UserRole = 'admin' | 'editor' | 'viewer';
type PartialUser = Partial<User>;

Name things for what they are, not what they do

// Good
interface CreateUserRequest { ... }
interface UserListResponse { ... }

// Bad
interface IUserData { ... }      // Hungarian notation
interface UserPayload { ... }    // vague

No I prefix on interfaces. No T prefix on types. No E prefix on enums. These are Java/C# conventions that add noise without information.

Enums: use as const objects instead

TypeScript enums have well-documented quirks (numeric enums reverse-map, const enum has build tool issues). Use as const objects — they're type-safe, tree-shakeable, and have no runtime surprises.

// Prefer this
const UserRole = {
    Admin: 'admin',
    Editor: 'editor',
    Viewer: 'viewer',
} as const;

type UserRole = (typeof UserRole)[keyof typeof UserRole];

// Over this
enum UserRole {
    Admin = 'admin',
    Editor = 'editor',
    Viewer = 'viewer',
}

Explicit return types on exported functions

Internal helpers can rely on inference. Anything exported gets an explicit return type. This catches accidental API changes and makes the contract clear.

// Exported → explicit return type
export function formatCurrency(amount: number, currency: string): string {
    return new Intl.NumberFormat('en-GB', { style: 'currency', currency }).format(amount);
}

// Internal → inference is fine
const double = (n: number) => n * 2;

Avoid any — use unknown and narrow

any disables the type system. unknown forces you to narrow before use. If you genuinely don't know the type, use unknown and add a type guard.

function processInput(input: unknown): string {
    if (typeof input === 'string') return input;
    if (typeof input === 'number') return String(input);
    throw new Error(`Unexpected input type: ${typeof input}`);
}

If you're wrapping a third-party library with bad types, isolate the any in a thin adapter layer and type the boundary.

Barrel exports: use sparingly

index.ts re-exports are fine for public API surfaces (a component library, a shared package). Don't use them inside application code — they create circular dependency traps and make tree-shaking harder.

// Fine: package public API
src/components/index.ts → re-exports Button, Input, Modal

// Avoid: deep application barrel files
src/features/auth/index.ts → re-exports everything in auth

React Conventions

Functional components only

No class components. No React.FC (it implicitly includes children in older versions and adds no value). Just typed props and a function.

interface ButtonProps {
  label: string;
  variant?: 'primary' | 'secondary';
  onClick: () => void;
}

export function Button({ label, variant = 'primary', onClick }: ButtonProps) {
  return (
    <button className={`btn btn-${variant}`} onClick={onClick}>
      {label}
    </button>
  );
}

Component file structure

One component per file. The file name matches the component name exactly (PascalCase). Co-locate the component's types, hooks, and styles.

Button/
├── Button.tsx          # Component
├── Button.test.tsx     # Tests
├── Button.module.css   # Styles (if CSS modules)
├── useButton.ts        # Component-specific hook (if needed)
└── index.ts            # Re-export (optional)

Hooks

Custom hooks extract reusable logic. Name them use<Thing>. They must call at least one React hook internally — otherwise it's just a function, not a hook.

// This is a hook — it uses React state
function useToggle(initial = false) {
    const [value, setValue] = useState(initial);
    const toggle = useCallback(() => setValue((v) => !v), []);
    return [value, toggle] as const;
}

// This is NOT a hook — just call it formatDate()
function useDateFormat(date: Date) {
    return date.toLocaleDateString('en-GB');
}

State management hierarchy

Use the simplest tool that works:

  1. Local state (useState) — component-scoped, default choice
  2. Lifted state — shared between siblings, lift to parent
  3. Context — app-wide settings (theme, auth, locale), rarely-changing data
  4. External store (Zustand, TanStack Query) — complex client state or server cache

Don't reach for global state managers for problems that useState and prop drilling solve cleanly. "Prop drilling" is only a problem at 4+ levels — and even then, composition (passing components as children) often fixes it better than context.

Data fetching

Use TanStack Query (React Query) for server state. It handles caching, deduplication, background refetching, and error/loading states. Don't reinvent this with useEffect + useState.

function useUsers() {
    return useQuery({
        queryKey: ['users'],
        queryFn: () => api.get<User[]>('/users'),
        staleTime: 5 * 60 * 1000, // 5 minutes
    });
}

For mutations, use useMutation with optimistic updates where the UX demands it.

Error boundaries

Wrap major UI sections in error boundaries. A broken sidebar shouldn't crash the whole page. Use react-error-boundary — it's maintained, well-typed, and supports reset.

Avoid premature abstraction

Don't create a <GenericTable> component before you have three concrete tables. Don't write a useForm hook before you have three forms. Let the pattern emerge from real usage, then extract.

The rule of three: duplicate first, abstract second.

Project Structure

For application projects (not libraries), organize by feature, not by type:

src/
├── app/                 # Route definitions, layouts
├── features/            # Feature modules
│   ├── auth/
│   │   ├── components/
│   │   ├── hooks/
│   │   ├── api/
│   │   └── types.ts
│   └── dashboard/
│       ├── components/
│       ├── hooks/
│       ├── api/
│       └── types.ts
├── shared/              # Cross-cutting concerns
│   ├── components/      # Generic UI components
│   ├── hooks/           # Generic hooks
│   ├── utils/           # Pure utility functions
│   └── types/           # Shared type definitions
├── lib/                 # Third-party adapters, API client setup
└── config/              # Environment, feature flags

The features/ directory is the heart of the application. Each feature is self-contained. If deleting a feature folder breaks imports outside that folder, you have a coupling problem.

Testing

See references/testing-standards.md for the full testing approach. The short version:

  • Unit tests: Pure functions, hooks, utilities. Use Vitest.
  • Component tests: Render, interact, assert on output. Use Testing Library.
  • Integration tests: API routes, database queries. Test real integrations, not mocks.
  • E2E tests: Critical user journeys only. Use Playwright.

Test behavior, not implementation. If refactoring the internals breaks your tests but not the user experience, your tests are wrong.

Code Review Checklist

When reviewing TypeScript/React code, check for:

  • Strict TypeScript with no any escapes
  • Interfaces for object shapes, types for unions
  • Explicit return types on exports
  • No React.FC, no class components
  • State at the right level (local first, escalate as needed)
  • Error boundaries around major sections
  • Feature-based file organization
  • Tests that verify behavior, not implementation

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.45%
按下载量换算37

Claude

30.37%
按下载量换算30

Cursor

18.65%
按下载量换算18

Gemini CLI

9.97%
按下载量换算10

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills