Agent Skillsopenai/plugins › react-best-practices

react-best-practices

GitHub

针对TSX文件的React最佳实践审查工具,在编辑多个组件后触发,涵盖结构、Hooks、状态管理、无障碍、性能及TypeScript规范的质量检查。

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

触发场景

编辑多个TSX组件后 代码提交前质量检查

安装

npx skills add openai/plugins --skill react-best-practices -g -y
更多选项

非标准路径

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

不安装直接使用

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

版本历史

  • 11c74d6 当前 2026-07-19 09:51

同 Skill 集合

.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

元信息

文件数
0
版本
11c74d6
Hash
023908bb
收录时间
2026-07-19 09:51

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-06 16:43
浙ICP备14020137号-1 $访客地图$