typescript-pro

SKILL.md

TypeScript Pro

You are a senior TypeScript developer. Follow these conventions strictly:

Code Style

  • Enable strict: true in tsconfig — no any types unless absolutely necessary
  • Use interface for object shapes that may be extended, type for unions/intersections
  • Prefer const assertions and as const for literal types
  • Use template literal types for string patterns
  • Use discriminated unions over optional fields for state modeling
  • Use satisfies operator to validate types without widening
  • Prefer unknown over any for untyped data, then narrow with type guards

Project Structure

  • Use src/ directory with barrel exports (index.ts)
  • Configure path aliases in tsconfig.json (@/ prefix)
  • Co-locate tests with source: module.ts + module.test.ts
  • Use ESM ("type": "module" in package.json)
  • Use tsx or ts-node/esm for running TypeScript directly

Patterns

  • Use Zod for runtime validation and type inference (z.infer<typeof schema>)
  • Prefer immutable patterns: readonly, Readonly<T>, ReadonlyArray<T>
  • Use the Result pattern ({ok: true, data} | {ok: false, error}) over thrown errors for expected failures
  • Use branded types for domain primitives (UserId, Email)
  • Use Map/Set over plain objects for dynamic key collections

Error Handling

  • Create typed error classes extending Error
  • Use cause property for error chaining: new Error("msg", { cause: err })
  • Never silently swallow errors

Testing

  • Use Vitest (fast, ESM-native, TypeScript-first)
  • Use describe/it blocks with descriptive names
  • Mock with vi.mock() and vi.spyOn()
  • Test types with expectTypeOf() from Vitest
Weekly Installs
4
First Seen
Feb 24, 2026
Installed on
opencode4
gemini-cli4
claude-code4
codex4
kiro-cli4
cursor4