home / skills / busirocket / agents-skills / busirocket-typescript-standards
This skill enforces TypeScript/React standards for maintainable code, guiding one export per file, typed shapes, and Next.js special-file practices.
npx playbooks add skill busirocket/agents-skills --skill busirocket-typescript-standardsReview the files below or copy the command above to add this skill to your agents.
---
name: busirocket-typescript-standards
description:
TypeScript standards for maintainable codebases. Use when creating or
refactoring TS/TSX to enforce one-thing-per-file, type conventions, and
Next.js special-file export exceptions.
metadata:
author: cristiandeluxe
version: "1.0.0"
---
# TypeScript + React Standards
Strict, reusable standards for TypeScript/React projects.
## When to Use
Use this skill when:
- Writing or refactoring `.ts` / `.tsx`
- Moving inline types into `types/`
- Enforcing consistent type naming and result shapes
- Working in Next.js where special files allow extra exports
## Non-Negotiables (MUST)
- **One exported symbol per file** for your own modules.
- **No inline `interface`/`type`** in components/hooks/utils/services/route
handlers.
- Put shared shapes under `types/<area>/...` (**one type per file**).
- Avoid barrel files (`index.ts`) that hide dependencies.
- After meaningful changes: run the project's standard checks (e.g.
`yarn check:all`).
## Next.js Special-file Exceptions
- `app/**/page.tsx`, `app/**/layout.tsx`: allow `default export` +
`metadata/generateMetadata/viewport` (etc.).
- `app/api/**/route.ts`: allow multiple HTTP method exports and route config
exports.
## Rules
### TypeScript Standards
- `ts-language-style` - Language & style (interface vs type, const vs let,
English-only)
- `ts-one-thing-per-file` - One thing per file (STRICT)
- `ts-nextjs-exceptions` - Next.js special-file exceptions
- `ts-types-strict` - Types (STRICT) - no inline types
- `ts-helpers-strict` - Helpers (STRICT) - no helpers in components/hooks
- `ts-nextjs-hygiene` - Next.js TS hygiene (docs-aligned)
- `ts-validation` - Validation (run checks after changes)
### Types Conventions
- `types-one-type-per-file` - One type per file (STRICT)
- `types-naming-patterns` - Naming patterns (Params, Result, Error, Props)
- `types-result-shape` - Result shape for boundaries that can fail
- `types-where-allowed` - Where types are allowed
## Related Skills
- `busirocket-core-conventions` - General file structure (one-thing-per-file,
boundaries)
- `busirocket-react` - Component and hook structure
- `busirocket-refactor-workflow` - Refactoring workflow for TypeScript/React
## How to Use
Read individual rule files for detailed explanations and code examples:
```
rules/ts-one-thing-per-file.md
rules/ts-types-strict.md
rules/types-one-type-per-file.md
```
Each rule file contains:
- Brief explanation of why it matters
- Code examples (correct and incorrect patterns)
- Additional context and best practices
This skill defines strict TypeScript and React standards to keep codebases maintainable, predictable, and easy to review. It enforces one-export-per-file, strict type placement, naming conventions, and Next.js special-file exceptions. Use it as a checklist and automated rule set when creating or refactoring .ts/.tsx sources.
The skill inspects source layout and type usage rules, flags inline types, multiple exported symbols, and helper placement that violate conventions. It documents targeted rule files for each policy (one-thing-per-file, type placement, Next.js exceptions) and recommends running project checks after changes. Rules include explicit exceptions for Next.js special files and guidance for shared types under a types/ directory.
What counts as a "special file" in Next.js?
Special files include app/**/page.tsx, app/**/layout.tsx and app/api/**/route.ts; these are allowed controlled extra exports like default export, metadata helpers, or HTTP method handlers.
Can I keep small helper functions next to a component?
Helpers that are purely presentational and tiny can live near a component, but business logic helpers should be extracted into their own modules to follow the one-thing-per-file rule.