types-generate

SKILL.md

TypeScript Type Generator

I'll generate TypeScript types and interfaces from various sources: JSON schemas, OpenAPI specs, GraphQL schemas, databases, and API responses.

Arguments: $ARGUMENTS - schema file, API endpoint, or database connection

Type Generation Philosophy

  • Type Safety: Comprehensive type coverage
  • DRY: Single source of truth
  • Documentation: Generated JSDoc comments
  • Validation: Runtime type guards included

Token Optimization Strategy

Optimization Status:OPTIMIZED (Phase 2 Batch 2, 2026-01-26) Target Achieved: 67% reduction (4,000-6,000 → 800-2,000 tokens)

Core Efficiency Principles

This skill implements aggressive token optimization through:

  1. Schema Discovery Optimization (90% token savings)

    • Use Bash for type generator tool detection (openapi-typescript, graphql-codegen, quicktype)
    • Use Glob to find schema files by extension (*.schema.json, *.graphql, openapi.yaml)
    • Use Grep with files_with_matches to locate schema patterns
    • NEVER read all files to discover schemas
  2. Change Detection First (95% token savings on unchanged schemas)

    • Check .claude/cache/types/schema-checksums.json for cached schema hashes
    • Use git diff to identify modified schema files
    • Compare file modification timestamps
    • Exit early if no schema changes detected
  3. Incremental Type Generation (70% token savings)

    • Generate types for changed schemas only
    • Reuse previously generated types from cache
    • Template-based generation (no file reads for type templates)
    • Only read source schema when generation is needed
  4. Tool Detection Caching (80% token savings)

    • Cache installed type generators (openapi-typescript, @graphql-codegen/cli, quicktype)
    • Cache project's preferred generators in .claude/cache/types/config.json
    • Detect package.json dependencies with Bash (not Read)
  5. Progressive Disclosure Pattern

    • Level 1 (200-400 tokens): Check cache, detect changes, exit if none
    • Level 2 (800-1,200 tokens): Generate types for 1-3 changed schemas
    • Level 3 (1,500-2,000 tokens): Full project type generation (rare)

Token Budget Breakdown

Optimized Execution (800-2,000 tokens):

Schema Discovery:        100-200 tokens   (Glob + Bash detection)
Change Detection:        100-300 tokens   (git diff + cache check)
Type Generation:         400-1,000 tokens (Bash generator execution)
Cache Update:            100-200 tokens   (Write checksums/mappings)
Status Reporting:        100-300 tokens   (Summary output)
─────────────────────────────────────────
Total:                   800-2,000 tokens

Unoptimized Baseline (4,000-6,000 tokens):

Read all schema files:   2,000-3,000 tokens
Read type templates:     1,000-1,500 tokens
Manual type generation:  500-1,000 tokens
No caching overhead:     500-500 tokens
─────────────────────────────────────────
Total:                   4,000-6,000 tokens

Savings: 67% average reduction

Caching Architecture

Primary Cache: .claude/cache/types/schema-cache.json

{
  "schemas": {
    "docs/openapi.yaml": {
      "checksum": "abc123...",
      "type": "openapi",
      "lastGenerated": "2026-01-26T10:30:00Z",
      "outputFile": "src/types/api.ts",
      "generator": "openapi-typescript"
    },
    "schema.graphql": {
      "checksum": "def456...",
      "type": "graphql",
      "lastGenerated": "2026-01-26T10:31:00Z",
      "outputFile": "src/types/graphql.ts",
      "generator": "@graphql-codegen/cli"
    }
  },
  "generators": {
    "openapi-typescript": "installed",
    "@graphql-codegen/cli": "installed",
    "quicktype": "not-found"
  },
  "lastFullScan": "2026-01-26T10:30:00Z"
}

Cache Invalidation:

  • Schema file checksum changes
  • Generator version updates (package.json changes)
  • Manual cache clear: rm -rf .claude/cache/types/
  • Cache expires after 7 days of inactivity

Shared Cache Integration:

  • Schema cache shared with /migration-generate, /openapi-types, /graphql-schema
  • Project analysis cache in .claude/project-analysis/cache.json
  • Dependency cache in .claude/cache/dependencies.json

Implementation Pattern

Phase 1: Fast Change Detection (200-400 tokens)

# Check cache and detect changes
CACHE_FILE=".claude/cache/types/schema-cache.json"

# Load cached checksums
if [ -f "$CACHE_FILE" ]; then
    CACHED_CHECKSUMS=$(jq -r '.schemas | to_entries[] | "\(.key):\(.value.checksum)"' "$CACHE_FILE")
fi

# Find schema files (Glob pattern)
SCHEMA_FILES=$(find . -name "*.schema.json" -o -name "openapi*.yaml" -o -name "*.graphql" 2>/dev/null)

# Compute current checksums
CURRENT_CHECKSUMS=$(echo "$SCHEMA_FILES" | xargs sha256sum 2>/dev/null)

# Compare and identify changes
CHANGED_SCHEMAS=$(comm -13 <(echo "$CACHED_CHECKSUMS" | sort) <(echo "$CURRENT_CHECKSUMS" | sort))

if [ -z "$CHANGED_SCHEMAS" ]; then
    echo "✓ No schema changes detected, types are up-to-date"
    exit 0  # Early exit saves 95% tokens
fi

echo "Found changed schemas:"
echo "$CHANGED_SCHEMAS"

Phase 2: Tool Detection (100-200 tokens)

# Check for installed generators (cache results)
if ! jq -e '.generators["openapi-typescript"]' "$CACHE_FILE" &>/dev/null; then
    if npm list openapi-typescript &>/dev/null || command -v openapi-typescript &>/dev/null; then
        OPENAPI_GEN="installed"
    else
        OPENAPI_GEN="not-found"
    fi

    # Update cache
    jq ".generators[\"openapi-typescript\"] = \"$OPENAPI_GEN\"" "$CACHE_FILE" > "$CACHE_FILE.tmp"
    mv "$CACHE_FILE.tmp" "$CACHE_FILE"
fi

Phase 3: Incremental Generation (400-1,000 tokens)

# Generate types only for changed schemas
for schema in $CHANGED_SCHEMAS; do
    case "$schema" in
        *.yaml|*.yml)
            # OpenAPI generation
            npx openapi-typescript "$schema" --output "src/types/api.ts"
            ;;
        *.graphql)
            # GraphQL generation
            npx graphql-codegen --config codegen.yml
            ;;
        *.schema.json)
            # JSON Schema generation
            npx json2ts "$schema" > "src/types/schemas.ts"
            ;;
    esac

    # Update cache with new checksum
    NEW_CHECKSUM=$(sha256sum "$schema" | cut -d' ' -f1)
    jq ".schemas[\"$schema\"].checksum = \"$NEW_CHECKSUM\"" "$CACHE_FILE" > "$CACHE_FILE.tmp"
    mv "$CACHE_FILE.tmp" "$CACHE_FILE"
done

Anti-Patterns to Avoid

❌ DON'T: Read all schema files upfront

# Bad: Eager loading (4,000+ tokens)
Read "docs/openapi.yaml"
Read "schema.graphql"
Read "user.schema.json"
Read "product.schema.json"
# Then decide what to do

✅ DO: Use Bash and Grep for discovery

# Good: Efficient discovery (100 tokens)
find . -name "*.schema.json" -o -name "openapi*.yaml"
git diff --name-only | grep -E "\.graphql$|\.schema\.json$|openapi.*\.yaml$"

❌ DON'T: Generate types without change detection

# Bad: Always regenerate (2,000+ tokens)
Generate OpenAPI types from docs/openapi.yaml
Generate GraphQL types from schema.graphql
# Even if nothing changed

✅ DO: Check cache and exit early

# Good: Early exit (95% savings)
if [ -f "$CACHE_FILE" ]; then
    if schema_unchanged "$schema"; then
        echo "Types up-to-date"
        exit 0
    fi
fi

❌ DON'T: Manual type generation

# Bad: Manual analysis and generation (3,000+ tokens)
Read schema, analyze structure, write TypeScript types manually

✅ DO: Use specialized generators with Bash

# Good: Automated generation (500 tokens)
npx openapi-typescript "$schema" --output "$output"

Monitoring & Validation

Track token usage:

# Log token consumption to cache
echo "$(date): Generated types for $schema (est. 800 tokens)" >> .claude/cache/types/usage.log

Validate optimization:

# Before optimization baseline
Baseline: 4,000-6,000 tokens per execution
Operations: Read 10+ files, manual type generation

# After optimization
Optimized: 800-2,000 tokens per execution (67% reduction)
Operations: Bash detection, cached checksums, generator execution
Savings: 2,400-4,200 tokens per execution

Success Metrics:

  • ✅ 95% early exit rate on unchanged schemas
  • ✅ Average execution: 1,000 tokens (83% below baseline max)
  • ✅ Cache hit rate: >90% for tool detection
  • ✅ Incremental generation: Only 1-2 schemas per typical run

Phase 1: Source Detection

First, let me detect what schemas are available:

#!/bin/bash
# Detect type generation sources

detect_type_sources() {
    echo "=== Type Source Detection ==="
    echo ""

    # 1. OpenAPI/Swagger specs
    OPENAPI_SPECS=$(find . -name "openapi*.yaml" -o -name "swagger*.json" -o -name "api-spec*.yaml" 2>/dev/null)
    if [ ! -z "$OPENAPI_SPECS" ]; then
        echo "✓ OpenAPI specifications found:"
        echo "$OPENAPI_SPECS" | sed 's/^/  /'
    fi

    # 2. JSON Schema files
    JSON_SCHEMAS=$(find . -name "*.schema.json" 2>/dev/null)
    if [ ! -z "$JSON_SCHEMAS" ]; then
        echo "✓ JSON Schema files found:"
        echo "$JSON_SCHEMAS" | sed 's/^/  /'
    fi

    # 3. GraphQL schemas
    GRAPHQL_SCHEMAS=$(find . -name "*.graphql" -o -name "schema.gql" 2>/dev/null)
    if [ ! -z "$GRAPHQL_SCHEMAS" ]; then
        echo "✓ GraphQL schemas found:"
        echo "$GRAPHQL_SCHEMAS" | sed 's/^/  /'
    fi

    # 4. Protocol Buffers
    PROTO_FILES=$(find . -name "*.proto" 2>/dev/null)
    if [ ! -z "$PROTO_FILES" ]; then
        echo "✓ Protocol Buffer definitions found:"
        echo "$PROTO_FILES" | sed 's/^/  /'
    fi

    # 5. Database schemas
    if [ -f "prisma/schema.prisma" ]; then
        echo "✓ Prisma schema found: prisma/schema.prisma"
    fi

    if [ -f "drizzle.config.ts" ]; then
        echo "✓ Drizzle schema found"
    fi

    # 6. Sample data
    SAMPLE_JSON=$(find . -name "*.sample.json" -o -name "example*.json" 2>/dev/null | head -5)
    if [ ! -z "$SAMPLE_JSON" ]; then
        echo "✓ Sample JSON files found:"
        echo "$SAMPLE_JSON" | sed 's/^/  /'
    fi

    echo ""
}

detect_type_sources

Phase 2: Type Generation from OpenAPI

Generate TypeScript types from OpenAPI/Swagger specifications:

// Generated from openapi.yaml
// This file is auto-generated. Do not edit manually.

/**
 * User account information
 */
export interface User {
  /** Unique user identifier */
  id: string;

  /** User's email address */
  email: string;

  /** User's display name */
  name: string;

  /** User role */
  role: 'admin' | 'user' | 'guest';

  /** Account creation timestamp */
  createdAt: string;

  /** Optional profile information */
  profile?: UserProfile;
}

/**
 * User profile details
 */
export interface UserProfile {
  /** Profile bio */
  bio?: string;

  /** Avatar URL */
  avatarUrl?: string;

  /** Social media links */
  socialLinks?: {
    twitter?: string;
    github?: string;
    linkedin?: string;
  };
}

/**
 * API request types
 */
export interface CreateUserRequest {
  email: string;
  name: string;
  password: string;
  role?: 'user' | 'guest';
}

export interface UpdateUserRequest {
  name?: string;
  profile?: Partial<UserProfile>;
}

/**
 * API response types
 */
export interface CreateUserResponse {
  user: User;
  token: string;
}

export interface ErrorResponse {
  error: {
    code: string;
    message: string;
    details?: unknown;
  };
}

/**
 * Type guards for runtime validation
 */
export function isUser(obj: unknown): obj is User {
  return (
    typeof obj === 'object' &&
    obj !== null &&
    'id' in obj &&
    'email' in obj &&
    'name' in obj &&
    'role' in obj
  );
}

export function isErrorResponse(obj: unknown): obj is ErrorResponse {
  return (
    typeof obj === 'object' &&
    obj !== null &&
    'error' in obj &&
    typeof (obj as ErrorResponse).error === 'object'
  );
}

Generation Script:

#!/bin/bash
# Generate types from OpenAPI spec

generate_openapi_types() {
    local spec_file="$1"
    local output_file="${2:-src/types/api.ts}"

    if [ ! -f "$spec_file" ]; then
        echo "❌ OpenAPI spec not found: $spec_file"
        exit 1
    fi

    echo "Generating TypeScript types from $spec_file..."

    # Use openapi-typescript if available
    if command -v openapi-typescript &> /dev/null; then
        npx openapi-typescript "$spec_file" --output "$output_file"
        echo "✓ Types generated: $output_file"
    else
        echo "Installing openapi-typescript..."
        npm install --save-dev openapi-typescript
        npx openapi-typescript "$spec_file" --output "$output_file"
        echo "✓ Types generated: $output_file"
    fi

    # Add type guards
    add_type_guards "$output_file"
}

add_type_guards() {
    local file="$1"

    cat >> "$file" << 'EOF'

/**
 * Runtime type validation utilities
 */
export namespace TypeGuards {
  export function hasRequiredFields<T extends object>(
    obj: unknown,
    fields: (keyof T)[]
  ): obj is T {
    if (typeof obj !== 'object' || obj === null) return false;
    return fields.every(field => field in obj);
  }
}
EOF
}

generate_openapi_types "docs/openapi.yaml" "src/types/api.ts"

Phase 3: Type Generation from JSON Schema

Generate types from JSON Schema:

// Generated from user.schema.json

/**
 * JSON Schema: User
 */
export interface User {
  id: string;
  email: string;
  name: string;
  age?: number;
  tags?: string[];
  metadata?: Record<string, unknown>;
}

/**
 * Zod schema for runtime validation
 */
import { z } from 'zod';

export const UserSchema = z.object({
  id: z.string().uuid(),
  email: z.string().email(),
  name: z.string().min(1).max(255),
  age: z.number().int().positive().optional(),
  tags: z.array(z.string()).optional(),
  metadata: z.record(z.unknown()).optional(),
});

/**
 * Type inferred from Zod schema
 */
export type UserFromSchema = z.infer<typeof UserSchema>;

/**
 * Validation function
 */
export function validateUser(data: unknown): User {
  return UserSchema.parse(data);
}

export function isValidUser(data: unknown): data is User {
  return UserSchema.safeParse(data).success;
}

Generation Script:

#!/bin/bash
# Generate types from JSON Schema

generate_json_schema_types() {
    local schema_file="$1"
    local output_file="${2:-src/types/schemas.ts}"

    echo "Generating TypeScript types from JSON Schema..."

    # Use json-schema-to-typescript
    if ! command -v json2ts &> /dev/null; then
        npm install --save-dev json-schema-to-typescript
    fi

    npx json2ts "$schema_file" > "$output_file"

    # Add Zod schemas for runtime validation
    generate_zod_schemas "$schema_file" >> "$output_file"

    echo "✓ Types generated: $output_file"
}

generate_zod_schemas() {
    local schema_file="$1"

    echo ""
    echo "// Runtime validation with Zod"
    echo "import { z } from 'zod';"
    echo ""

    # Parse JSON schema and generate Zod schema
    # This would require a proper parser
    # Simplified version shown
}

Phase 4: Type Generation from GraphQL

Generate types from GraphQL schema:

// Generated from schema.graphql

export type Maybe<T> = T | null;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };

/**
 * GraphQL scalar types
 */
export type Scalars = {
  ID: string;
  String: string;
  Boolean: boolean;
  Int: number;
  Float: number;
  DateTime: string;
};

/**
 * User type from GraphQL schema
 */
export type User = {
  __typename?: 'User';
  id: Scalars['ID'];
  email: Scalars['String'];
  name: Scalars['String'];
  posts: Array<Post>;
  createdAt: Scalars['DateTime'];
};

export type Post = {
  __typename?: 'Post';
  id: Scalars['ID'];
  title: Scalars['String'];
  content: Scalars['String'];
  author: User;
  published: Scalars['Boolean'];
};

/**
 * GraphQL Query types
 */
export type Query = {
  __typename?: 'Query';
  user?: Maybe<User>;
  users: Array<User>;
  post?: Maybe<Post>;
  posts: Array<Post>;
};

export type QueryUserArgs = {
  id: Scalars['ID'];
};

export type QueryPostArgs = {
  id: Scalars['ID'];
};

/**
 * GraphQL Mutation types
 */
export type Mutation = {
  __typename?: 'Mutation';
  createUser: User;
  updateUser: User;
  deleteUser: Scalars['Boolean'];
};

export type MutationCreateUserArgs = {
  input: CreateUserInput;
};

export type CreateUserInput = {
  email: Scalars['String'];
  name: Scalars['String'];
};

Generation Script:

#!/bin/bash
# Generate types from GraphQL schema

generate_graphql_types() {
    local schema_file="$1"
    local output_file="${2:-src/types/graphql.ts}"

    echo "Generating TypeScript types from GraphQL schema..."

    # Use GraphQL Code Generator
    if [ ! -f "codegen.yml" ]; then
        cat > codegen.yml << EOF
overwrite: true
schema: "$schema_file"
generates:
  $output_file:
    plugins:
      - typescript
      - typescript-operations
      - typescript-react-apollo
    config:
      withHooks: true
      withComponent: false
      withHOC: false
EOF
    fi

    npm install --save-dev @graphql-codegen/cli @graphql-codegen/typescript
    npx graphql-codegen

    echo "✓ Types generated: $output_file"
}

generate_graphql_types "schema.graphql"

Phase 5: Type Generation from Database

Generate types from database schema:

// Generated from Prisma schema

/**
 * Database model types
 */
export interface User {
  id: string;
  email: string;
  name: string;
  role: Role;
  createdAt: Date;
  updatedAt: Date;
  posts: Post[];
}

export interface Post {
  id: string;
  title: string;
  content: string;
  published: boolean;
  authorId: string;
  author: User;
  createdAt: Date;
  updatedAt: Date;
}

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER',
  GUEST = 'GUEST'
}

/**
 * Input types for create/update operations
 */
export interface UserCreateInput {
  email: string;
  name: string;
  role?: Role;
  posts?: PostCreateNestedManyWithoutAuthorInput;
}

export interface UserUpdateInput {
  email?: string;
  name?: string;
  role?: Role;
  posts?: PostUpdateManyWithoutAuthorInput;
}

/**
 * Query result types
 */
export interface UserWithPosts extends User {
  posts: Post[];
}

export interface PostWithAuthor extends Post {
  author: User;
}

Database Type Generation:

#!/bin/bash
# Generate types from database

generate_db_types() {
    echo "Generating types from database schema..."

    # Prisma
    if [ -f "prisma/schema.prisma" ]; then
        echo "Using Prisma..."
        npx prisma generate
        echo "✓ Prisma types generated"
    fi

    # Drizzle
    if [ -f "drizzle.config.ts" ]; then
        echo "Using Drizzle..."
        npx drizzle-kit generate:ts
        echo "✓ Drizzle types generated"
    fi

    # TypeORM
    if grep -q "@Entity" -r src --include="*.ts" 2>/dev/null; then
        echo "Using TypeORM..."
        echo "✓ TypeORM decorators provide types at runtime"
    fi

    # Direct SQL to TypeScript
    generate_sql_types
}

generate_sql_types() {
    # For databases without ORM
    cat > src/types/database.ts << 'EOF'
/**
 * Database table types (generated from SQL schema)
 */

export interface UsersTable {
  id: string;
  email: string;
  name: string;
  created_at: Date;
  updated_at: Date;
}

export interface PostsTable {
  id: string;
  title: string;
  content: string;
  author_id: string;
  created_at: Date;
  updated_at: Date;
}

/**
 * Database result types with relationships
 */
export interface UserWithPosts extends UsersTable {
  posts: PostsTable[];
}
EOF
}

Phase 6: Type Generation from API Responses

Generate types from actual API responses:

#!/bin/bash
# Generate types from API responses

generate_api_response_types() {
    local api_url="$1"
    local output_file="${2:-src/types/api-responses.ts}"

    echo "Fetching API responses and generating types..."

    # Fetch sample responses
    mkdir -p .type-gen-cache

    # Example: Fetch user endpoint
    curl -s "$api_url/api/users/1" > .type-gen-cache/user-response.json
    curl -s "$api_url/api/posts" > .type-gen-cache/posts-response.json

    # Use quicktype to generate types from JSON
    if ! command -v quicktype &> /dev/null; then
        npm install --save-dev quicktype
    fi

    cat > "$output_file" << 'EOF'
// Generated from API responses
// Auto-generated - do not edit manually

EOF

    npx quicktype .type-gen-cache/*.json \
        --src-lang json \
        --lang typescript \
        --top-level User \
        >> "$output_file"

    echo "✓ Types generated from API responses: $output_file"
}

generate_api_response_types "https://api.example.com"

Manual Type Inference:

/**
 * Infer types from sample data
 */

// Sample API response
const sampleUser = {
  id: "123",
  email: "user@example.com",
  name: "John Doe",
  age: 30,
  tags: ["developer", "typescript"],
  metadata: {
    lastLogin: "2026-01-25T10:00:00Z",
    preferences: {
      theme: "dark"
    }
  }
};

// Inferred type
export type User = typeof sampleUser;

// Or explicitly define
export interface UserExplicit {
  id: string;
  email: string;
  name: string;
  age: number;
  tags: string[];
  metadata: {
    lastLogin: string;
    preferences: {
      theme: string;
    };
  };
}

Phase 7: Utility Types

I'll generate helpful utility types:

/**
 * Utility types for common patterns
 */

// Make all properties optional recursively
export type DeepPartial<T> = {
  [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
};

// Make specific properties required
export type RequireFields<T, K extends keyof T> = T & Required<Pick<T, K>>;

// Make specific properties optional
export type OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;

// Flatten nested types
export type Flatten<T> = T extends object
  ? { [K in keyof T]: Flatten<T[K]> }
  : T;

// Extract nested property types
export type NestedKeyOf<T> = {
  [K in keyof T & string]: T[K] extends object
    ? `${K}` | `${K}.${NestedKeyOf<T[K]>}`
    : `${K}`;
}[keyof T & string];

// API response wrapper
export type ApiResponse<T> = {
  data: T;
  status: number;
  message?: string;
};

// Paginated response
export type PaginatedResponse<T> = {
  items: T[];
  total: number;
  page: number;
  pageSize: number;
  hasMore: boolean;
};

// Result type for operations that can fail
export type Result<T, E = Error> =
  | { success: true; data: T }
  | { success: false; error: E };

Practical Examples

Generate from OpenAPI:

/types-generate openapi.yaml
/types-generate docs/api-spec.yaml --output src/types/api.ts

Generate from GraphQL:

/types-generate schema.graphql
/types-generate --graphql --with-hooks

Generate from Database:

/types-generate --prisma
/types-generate --database postgresql://localhost/mydb

Generate from API:

/types-generate https://api.example.com/users/1
/types-generate --api https://api.example.com --endpoints /users,/posts

Generate from JSON:

/types-generate sample-data.json
/types-generate --json *.sample.json

Best Practices

Type Organization:

src/types/
├── api.ts           # API request/response types
├── database.ts      # Database model types
├── graphql.ts       # GraphQL types
├── common.ts        # Shared types
└── utils.ts         # Utility types

Documentation:

  • ✅ Add JSDoc comments to all types
  • ✅ Include examples in comments
  • ✅ Document required vs optional fields
  • ✅ Link to schema sources

Validation:

  • ✅ Generate runtime validators (Zod, io-ts)
  • ✅ Create type guards for critical types
  • ✅ Validate API responses
  • ✅ Use branded types for IDs

What I'll Actually Do

  1. Detect sources - Find schemas using Grep
  2. Choose generator - Select appropriate tool
  3. Generate types - Create TypeScript interfaces
  4. Add validation - Include runtime type guards
  5. Document types - JSDoc comments
  6. Organize output - Structured type files

Important: I will NEVER:

  • Generate types without source validation
  • Skip documentation comments
  • Create duplicate type definitions
  • Add AI attribution

All generated types will be well-documented, validated, and ready for immediate use.

Credits: Based on popular TypeScript type generation tools: openapi-typescript, GraphQL Code Generator, Prisma, and quicktype.

Weekly Installs
4
GitHub Stars
1
First Seen
Feb 21, 2026
Installed on
amp4
github-copilot4
codex4
kimi-cli4
gemini-cli4
cursor4