Skip to main content

typescript

TypeScript coding conventions, best practices, and patterns for writing clean, maintainable code.

Source facts

Repository
genkit-ai/genkit
Last source activity
June 24, 2026 at 16:31
Detected SKILL.md language
English
Stars
6,457
Forks
853

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
typescript
description
TypeScript coding conventions, best practices, and patterns for writing clean, maintainable code.
# TypeScript Coding Conventions ## General Principles - Use **TypeScript strict mode** (`"strict": true` in tsconfig.json). - Prefer `const` over `let`; never use `var`. - Use explicit return types on exported functions. - Prefer interfaces over type aliases for object shapes. - Use `unknown` instead of `any` where possible. ## Naming Conventions - **Variables & functions**: `camelCase` - **Classes & interfaces**: `PascalCase` - **Constants**: `UPPER_SNAKE_CASE` for true constants, `camelCase` for derived values - **Files**: `kebab-case.ts` - **Type parameters**: Single uppercase letter (`T`, `K`, `V`) or descriptive (`TResult`) ## File Structure ``` src/ index.ts # Entry point, exports types.ts # Shared type definitions utils/ # Utility functions services/ # Business logic middleware/ # Express/framework middleware ``` ## Error Handling - Use typed errors (extend `Error` class). - Always handle promise rejections. - Prefer `try/catch` with specific error types over generic catches. ```typescript class AppError extends Error { constructor( message: string, public readonly code: string, public readonly statusCode: number = 500 ) { super(message); this.name = 'AppError'; } } ``` ## Async Patterns - Use `async/await` over raw promises. - Use `Promise.all()` for concurrent independent operations. - Avoid mixing callbacks and promises. ## Imports - Use named imports: `import { thing } from './module'` - Group imports: external packages first, then internal modules. - Use `.js` extensions in import paths for ESM compatibility. ## Code Style - Maximum line length: 100 characters. - Use template literals for string interpolation. - Prefer `Array.map/filter/reduce` over `for` loops for transformations. - Use optional chaining (`?.`) and nullish coalescing (`??`). - Destructure objects and arrays when accessing multiple properties. ## Testing - Co-locate test files: `thing.ts` → `thing.test.ts` - Use descriptive test names: `it('should return empty array when no items match')` - Test edge cases: empty inputs, null values, error conditions.
View on GitHub