--- name: busirocket-react-components-and-hooks description: React component and hook structure rules. Use when writing or refactoring React components, extracting hooks, deciding client vs server components, and enforcing one-component/one-hook per file with no helpers or inline types. metadata: author: cristiandeluxe version: "1.0.0" --- # React Components and Hooks Reusable patterns for scalable React codebases. ## When to Use Use this skill when: - Writing or refactoring `.tsx` components - Extracting hooks into `hooks//useXxx.ts` - Removing helpers from components/hooks into `utils/` - Removing inline types into `types/` ## Non-Negotiables (MUST) - Exactly **one exported component per `.tsx` file**. - Exactly **one exported hook per hook file** (`hooks//useXxx.ts`). - **No helper functions inside** components or hooks; extract helpers to `utils/`. - **No inline types** inside components or hooks; import from `types/`. - Prefer server-side rendering boundaries wisely (avoid `'use client'` for large subtrees). ## Rules ### Component Patterns - `react-one-component-per-file` - One component per file (STRICT) - `react-client-vs-server` - Client vs Server Components (App Router) - `react-folder-namespacing` - Folder namespacing for complex components - `react-performance` - Performance optimization (memo, useCallback) - `react-accessibility` - Accessibility best practices ### Hooks Best Practices - `react-one-hook-per-file` - One hook per file (STRICT) - `react-no-helpers-in-hooks` - No helpers inside hooks (STRICT) - `react-no-types-in-hooks` - No types inside hooks (STRICT) - `react-stable-api` - Stable API for hooks - `react-side-effects` - Side effects in hooks ## How to Use Read individual rule files for detailed explanations and code examples: ``` rules/react-one-component-per-file.md rules/react-one-hook-per-file.md rules/react-client-vs-server.md ``` Each rule file contains: - Brief explanation of why it matters - Code examples (correct and incorrect patterns) - Additional context and best practices