Agent Skillsopenai/plugins › react-best-practices

react-best-practices

GitHub

针对TSX文件的React最佳实践审查工具,涵盖组件结构、Hooks使用、状态管理、无障碍、性能优化及TypeScript模式,用于在编辑后执行质量检查。

plugins/vercel/skills/react-best-practices/SKILL.md openai/plugins

Trigger Scenarios

编辑多个TSX组件文件后 需要检查React代码质量时

Install

npx skills add openai/plugins --skill react-best-practices -g -y
More Options

Non-standard path

npx skills add https://github.com/openai/plugins/tree/main/plugins/vercel/skills/react-best-practices -g -y

Use without installing

npx skills use openai/plugins@react-best-practices

指定 Agent (Claude Code)

npx skills add openai/plugins --skill react-best-practices -a claude-code -g -y

安装 repo 全部 skill

npx skills add openai/plugins --all -g -y

预览 repo 内 skill

npx skills add openai/plugins --list

SKILL.md

Frontmatter
{
    "name": "react-best-practices",
    "metadata": {
        "docs": [
            "https:\/\/react.dev\/reference\/react",
            "https:\/\/react.dev\/learn"
        ],
        "priority": 4,
        "bashPatterns": [],
        "pathPatterns": [
            "src\/components\/**\/*.tsx",
            "src\/components\/**\/*.jsx",
            "app\/components\/**\/*.tsx",
            "app\/components\/**\/*.jsx",
            "components\/**\/*.tsx",
            "components\/**\/*.jsx",
            "src\/ui\/**\/*.tsx",
            "lib\/components\/**\/*.tsx"
        ],
        "importPatterns": [
            "react",
            "react-dom"
        ]
    },
    "description": "React best-practices reviewer for TSX files. Triggers after editing multiple TSX components to run a condensed quality checklist covering component structure, hooks usage, accessibility, performance, and TypeScript patterns."
}

React Best-Practices Review

After editing several TSX/JSX files, run through this condensed checklist to catch common issues before they compound.

Component Structure

  • One component per file — colocate helpers only if they are private to that component
  • Named exports over default exports for better refactoring and tree-shaking
  • Props interface defined inline or colocated, not in a separate types.ts unless shared
  • Destructure props in the function signature: function Card({ title, children }: CardProps)
  • Avoid barrel files (index.ts re-exports) in large projects — they hurt tree-shaking

Hooks

  • Rules of Hooks — never call hooks conditionally or inside loops
  • Custom hooks — extract reusable logic into use* functions when two or more components share it
  • Dependency arrays — list every reactive value; lint with react-hooks/exhaustive-deps
  • useCallback / useMemo — use only when passing to memoized children or expensive computations, not by default
  • useEffect cleanup — return a cleanup function for subscriptions, timers, and abort controllers

State Management

  • Colocate state — keep state as close as possible to where it is consumed
  • Derive, don't sync — compute values from existing state instead of adding useEffect to mirror state
  • Avoid prop drilling past 2–3 levels — use context or composition (render props / children)
  • Server state — use React Query, SWR, or Server Components instead of manual fetch-in-effect

Accessibility (a11y)

  • Semantic HTML first — use <button>, <a>, <nav>, <main>, etc. before reaching for <div onClick>
  • alt on every <img> — decorative images get alt=""
  • Keyboard navigation — interactive elements must be focusable and operable via keyboard
  • aria-* attributes — only when native semantics are insufficient; don't redundantly label

Performance

  • React.memo — wrap pure display components that re-render due to parent changes
  • Lazy loading — use React.lazy + Suspense for route-level code splitting
  • List keys — use stable, unique IDs; never use array index as key for reorderable lists
  • Avoid inline object/array literals in JSX props — they create new references every render
  • Image optimization — use next/image or responsive srcSet; avoid unoptimized <img> in Next.js

TypeScript Patterns

  • React.FC is optional — prefer plain function declarations with explicit return types
  • PropsWithChildren — use when the component accepts children but has no other custom props
  • Event handlers — type as React.MouseEvent<HTMLButtonElement>, not any
  • Generics for reusable components — e.g., function List<T>({ items, renderItem }: ListProps<T>)
  • as const for config objects — ensures literal types for discriminated unions and enums

Design System Consistency

  • Prefer shadcn primitives in Vercel-stack apps: Button, Input, Tabs, Dialog, AlertDialog, Sheet, Table, Card before building ad-hoc equivalents.
  • Reject container soup: repeated div rounded-xl border p-6 blocks usually mean stronger composition primitives are missing.
  • Typography consistency: use Geist Sans and Geist Mono consistently; reserve monospace for code, metrics, IDs, and timestamps.

Review Workflow

  1. Scan recent TSX edits for the patterns above
  2. Flag any violations with file path and line reference
  3. Suggest minimal fixes — do not refactor beyond what is needed
  4. If multiple issues exist in one file, batch them into a single edit

Version History

  • 11c74d6 Current 2026-07-19 09:51

Same Skill Collection

.agents/skills/plugin-creator/SKILL.md
plugins/airtable/skills/airtable-cli/SKILL.md
plugins/airtable/skills/airtable-filters/SKILL.md
plugins/airtable/skills/airtable-overview/SKILL.md
plugins/atlassian-rovo/skills/capture-tasks-from-meeting-notes/SKILL.md
plugins/atlassian-rovo/skills/generate-status-report/SKILL.md
plugins/base44/skills/base44-cli/SKILL.md
plugins/base44/skills/base44-sdk/SKILL.md
plugins/base44/skills/base44-troubleshooter/SKILL.md
plugins/boltz-api-cli/skills/boltz-check-status/SKILL.md
plugins/boltz-api-cli/skills/boltz-cli-setup/SKILL.md
plugins/boltz-api-cli/skills/boltz-protein-design/SKILL.md
plugins/boltz-api-cli/skills/boltz-protein-screen/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-adme/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-design/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-screen/SKILL.md
plugins/boltz-api-cli/skills/boltz-structure-and-binding/SKILL.md
plugins/box/skills/box/SKILL.md
plugins/brighthire/skills/brighthire/SKILL.md
plugins/build-ios-apps/skills/ios-app-intents/SKILL.md
plugins/build-ios-apps/skills/ios-debugger-agent/SKILL.md
plugins/build-ios-apps/skills/ios-ettrace-performance/SKILL.md
plugins/build-ios-apps/skills/ios-memgraph-leaks/SKILL.md
plugins/build-ios-apps/skills/ios-simulator-browser/SKILL.md
plugins/build-ios-apps/skills/swiftui-liquid-glass/SKILL.md
plugins/build-ios-apps/skills/swiftui-performance-audit/SKILL.md
plugins/build-ios-apps/skills/swiftui-ui-patterns/SKILL.md
plugins/build-ios-apps/skills/swiftui-view-refactor/SKILL.md
plugins/build-macos-apps/skills/appkit-interop/SKILL.md
plugins/build-macos-apps/skills/build-run-debug/SKILL.md
plugins/build-macos-apps/skills/liquid-glass/SKILL.md
plugins/build-macos-apps/skills/packaging-notarization/SKILL.md
plugins/build-macos-apps/skills/signing-entitlements/SKILL.md
plugins/build-macos-apps/skills/swiftpm-macos/SKILL.md
plugins/build-macos-apps/skills/swiftui-patterns/SKILL.md
plugins/build-macos-apps/skills/telemetry/SKILL.md
plugins/build-macos-apps/skills/test-triage/SKILL.md
plugins/build-macos-apps/skills/view-refactor/SKILL.md
plugins/build-macos-apps/skills/window-management/SKILL.md
plugins/build-web-apps/skills/frontend-app-builder/SKILL.md
plugins/build-web-apps/skills/frontend-testing-debugging/SKILL.md
plugins/build-web-apps/skills/react-best-practices/SKILL.md
plugins/build-web-apps/skills/shadcn-best-practices/SKILL.md
plugins/build-web-apps/skills/supabase-best-practices/SKILL.md
plugins/build-web-data-visualization/skills/accessibility-and-inclusive-visualization/SKILL.md
plugins/build-web-data-visualization/skills/canvas2d-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/d3-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/dashboards-and-real-time-visualization/SKILL.md
plugins/build-web-data-visualization/skills/data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/gantt-chart-visualization/SKILL.md

Metadata

Files
0
Version
11c74d6
Hash
023908bb
Indexed
2026-07-19 09:51

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-05 19:14
浙ICP备14020137号-1 $Гость$