home / skills / busirocket / agents-skills / busirocket-react-components-and-hooks
This skill enforces a strict React structure with one component per file and one hook per hook file to improve maintainability and reuse.
npx playbooks add skill busirocket/agents-skills --skill busirocket-react-components-and-hooksReview the files below or copy the command above to add this skill to your agents.
---
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/<area>/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/<area>/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
This skill enforces consistent React component and hook structure for TypeScript/React/Next.js projects. It codifies one-component-per-file and one-hook-per-file rules, moves helpers and inline types into dedicated folders, and helps teams decide client vs server components. Use it to make code easier to test, review, and scale.
The skill inspects .tsx component files, hook files under hooks/, and common folders like utils/ and types/. It flags violations: multiple exports in one file, helpers or inline types inside components or hooks, and improper client/server boundaries. It also suggests extracting helpers to utils/, types to types/, and hooks to hooks/<area>/useXxx.ts.
Why one component per file?
One component per file improves clarity, makes imports predictable, simplifies testing, and reduces merge conflicts during team collaboration.
Where should small helper functions go?
Move helpers into utils/ grouped by area and import them. This keeps components and hooks focused and easier to test.
How do I decide client vs server components?
Prefer server components for non-interactive rendering and data fetching. Add 'use client' only at the smallest interactive boundary to avoid client-side cost.