Skip to content
AI & Agents
Skill

/typescript

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

BOOST
From plugin
genkit
6.5k2 skills
Install
$ npx -y skills add genkit-ai/genkit --skill typescript --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/typescript

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

typescript.SKILL.md
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.
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.
Read more
Ships withgenkit

Open-source framework for building agentic apps in JavaScript, Go, Dart, and Python, built and used in production by Google

Get the whole plugin
Stats
6,468
Stars
857
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
9h ago
Last commit
2y ago
Created
3h ago
Added

Repo: firebase/genkit

Other skills on genkit.