Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
jeffallan avatar

Typescript Pro

  • 6.7k installs
  • 10.8k repo stars
  • Updated May 20, 2026
  • jeffallan/claude-skills

How do I design type-safe APIs using advanced TypeScript features like generics, branded types, and tRPC?

About

TypeScript Pro implements advanced type systems including generics, conditional types, mapped types, discriminated unions, and branded types for domain modeling. Developers use it when building applications requiring strict type safety across full-stack boundaries, monorepo setups, or tRPC-based APIs. Core workflows cover type architecture analysis, type-first API design, type guard implementation, build optimization via project references and incremental compilation, and validation with type-coverage tools. Enforces strict compiler flags, declaration file generation, and exhaustive type checking while forbidding unsafe casts and enum use. --- name: typescript-pro description: Implements advanced TypeScript type systems, creates custom type guards, utility types, and branded types, and configures tRPC for end-to-end type safety. Use when building TypeScript applications requiring advanced generics, conditional or mapped types, discriminated unions, monorepo setup, or full-stack type safety with tRPC. license: MIT metadata: author: https://github.com/Jeffallan version: "1.1.0" domain: language triggers: TypeScript, generics, type safety, conditional types, mapped types, tRPC, tscon.

  • Branded types for domain modeling prevent accidental id mix-ups at compile time
  • Discriminated unions with type predicates enable exhaustive state machine patterns
  • Custom utility types (DeepReadonly, RequireExactlyOne) for advanced type composition
  • tsconfig strict mode with noUncheckedIndexedAccess, noImplicitOverride, exactOptionalPropertyTypes
  • Type-first API design with tRPC for end-to-end type safety across full-stack boundaries

Typescript Pro by the numbers

  • 6,673 all-time installs (skills.sh)
  • +891 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #124 of 4,386 Backend & APIs skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

typescript-pro capabilities & compatibility

Capabilities
advanced generics and conditional types · branded type creation for domain modeling · discriminated union pattern implementation · custom utility type composition · trpc full stack type safety setup · tsconfig optimization for type checking
Use cases
api development
Platforms
macOS · Windows · Linux
Runs
Runs locally
Pricing
Free
From the docs

What typescript-pro says it does

Implements advanced TypeScript type systems, creates custom type guards, utility types, and branded types, and configures tRPC for end-to-end type safety.
SKILL.md (description)
npx skills add https://github.com/jeffallan/claude-skills --skill typescript-pro

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs6.7k
repo stars10.8k
Security audit3 / 3 scanners passed
Last updatedMay 20, 2026
Repositoryjeffallan/claude-skills

What it does

Build type-safe full-stack applications using advanced TypeScript generics, branded types, and tRPC for compile-time API validation.

Who is it for?

Full-stack TypeScript applications, monorepo setups, tRPC APIs, state machines, domain-driven design requiring strict type safety.

Skip if: Quick prototypes, codebases unwilling to enable strict mode, projects using untyped JavaScript libraries.

When should I use this skill?

Building TypeScript applications with generics, conditional types, discriminated unions, or implementing tRPC for end-to-end type safety.

What you get

Type-safe full-stack applications with zero type errors, exhaustive state handling, and compile-time API validation.

  • Type definitions (interfaces, branded types, generics)
  • Implementation with type guards
  • tsconfig.json configuration

By the numbers

  • Recommended tsconfig with 12+ strict compiler flags
  • 5 core workflow steps from analysis to type validation
  • 4 reference guides: advanced types, type guards, utility types, configuration

Files

SKILL.mdMarkdownGitHub ↗

TypeScript Pro

Core Workflow

1. Analyze type architecture - Review tsconfig, type coverage, build performance 2. Design type-first APIs - Create branded types, generics, utility types 3. Implement with type safety - Write type guards, discriminated unions, conditional types; run tsc --noEmit to catch type errors before proceeding 4. Optimize build - Configure project references, incremental compilation, tree shaking; re-run tsc --noEmit to confirm zero errors after changes 5. Test types - Confirm type coverage with a tool like type-coverage; validate that all public APIs have explicit return types; iterate on steps 3–4 until all checks pass

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Advanced Typesreferences/advanced-types.mdGenerics, conditional types, mapped types, template literals
Type Guardsreferences/type-guards.mdType narrowing, discriminated unions, assertion functions
Utility Typesreferences/utility-types.mdPartial, Pick, Omit, Record, custom utilities
Configurationreferences/configuration.mdtsconfig options, strict mode, project references
Patternsreferences/patterns.mdBuilder pattern, factory pattern, type-safe APIs

Code Examples

Branded Types

// Branded type for domain modeling
type Brand<T, B extends string> = T & { readonly __brand: B };
type UserId  = Brand<string, "UserId">;
type OrderId = Brand<number, "OrderId">;

const toUserId  = (id: string): UserId  => id as UserId;
const toOrderId = (id: number): OrderId => id as OrderId;

// Usage — prevents accidental id mix-ups at compile time
function getOrder(userId: UserId, orderId: OrderId) { /* ... */ }

Discriminated Unions & Type Guards

type LoadingState = { status: "loading" };
type SuccessState = { status: "success"; data: string[] };
type ErrorState   = { status: "error";   error: Error };
type RequestState = LoadingState | SuccessState | ErrorState;

// Type predicate guard
function isSuccess(state: RequestState): state is SuccessState {
  return state.status === "success";
}

// Exhaustive switch with discriminated union
function renderState(state: RequestState): string {
  switch (state.status) {
    case "loading": return "Loading…";
    case "success": return state.data.join(", ");
    case "error":   return state.error.message;
    default: {
      const _exhaustive: never = state;
      throw new Error(`Unhandled state: ${_exhaustive}`);
    }
  }
}

Custom Utility Types

// Deep readonly — immutable nested objects
type DeepReadonly<T> = {
  readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K];
};

// Require exactly one of a set of keys
type RequireExactlyOne<T, Keys extends keyof T = keyof T> =
  Pick<T, Exclude<keyof T, Keys>> &
  { [K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, never>> }[Keys];

Recommended tsconfig.json

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "noImplicitOverride": true,
    "exactOptionalPropertyTypes": true,
    "isolatedModules": true,
    "declaration": true,
    "declarationMap": true,
    "incremental": true,
    "skipLibCheck": false
  }
}

Constraints

MUST DO

  • Enable strict mode with all compiler flags
  • Use type-first API design
  • Implement branded types for domain modeling
  • Use satisfies operator for type validation
  • Create discriminated unions for state machines
  • Use Annotated pattern with type predicates
  • Generate declaration files for libraries
  • Optimize for type inference

MUST NOT DO

  • Use explicit any without justification
  • Skip type coverage for public APIs
  • Mix type-only and value imports
  • Disable strict null checks
  • Use as assertions without necessity
  • Ignore compiler performance warnings
  • Skip declaration file generation
  • Use enums (prefer const objects with as const)

Output Templates

When implementing TypeScript features, provide: 1. Type definitions (interfaces, types, generics) 2. Implementation with type guards 3. tsconfig configuration if needed 4. Brief explanation of type design decisions

Knowledge Reference

TypeScript 5.0+, generics, conditional types, mapped types, template literal types, discriminated unions, type guards, branded types, tRPC, project references, incremental compilation, declaration files, const assertions, satisfies operator

Documentation

Related skills

How it compares

Pick typescript-pro over general coding skills when the blocker is TypeScript type design—generics, unions, and infer—not framework setup or lint configuration.

FAQ

When should I use branded types instead of enums?

Use branded types for domain modeling (UserId, OrderId) to prevent accidental id mix-ups at compile time. Avoid enums; use const objects with `as const` instead.

How do I ensure exhaustive handling of discriminated unions?

Use type guards with `state is SuccessState` predicates and exhaustive switch statements with `const _exhaustive: never = state` fallback to catch unhandled cases.

What tsconfig flags are required for strict type safety?

Enable strict mode plus noUncheckedIndexedAccess, noImplicitOverride, exactOptionalPropertyTypes, and skipLibCheck: false for full coverage.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.