| name | graphql-ts-generator |
|---|---|
| description | Automatically generates TypeScript types from GraphQL schema files with CLI integration for developers and AI agents. |
Automatically generates TypeScript types from GraphQL schema files with CLI integration for developers and AI agents.
- Convert GraphQL schema (.graphql, .gql) files to TypeScript interfaces and types
- Generate TypeScript enums, union types, and input types from GraphQL schemas
- Provide command-line interface for direct file processing
- Handle complex GraphQL types including unions, interfaces, enums, and input objects
- Validate GraphQL schemas before TypeScript generation
- Support batch processing of multiple schema files
- Proper nullability mapping for all GraphQL type combinations
- GraphQL server implementation
- Database schema management
- Runtime GraphQL client code generation
- Documentation generation beyond type definitions
- Custom code formatting beyond TypeScript standards
- Integration with specific frameworks (React, Angular, etc.)
- "Generate TypeScript types from this GraphQL schema"
- "Create TypeScript interfaces from GraphQL schema file"
- "Convert .graphql file to TypeScript types"
- "Auto-generate types for my GraphQL API"
- "Generate client types from GraphQL schema"
- "Transform GraphQL schema to TypeScript"
- scripts/: Contains the main TypeScript generation logic and CLI entry point
- references/: GraphQL schema examples and test cases
- assets/: CLI help text and TypeScript configuration
- scripts/index.ts: Main CLI entry point
- scripts/generator.ts: Core type generation logic (TypeGenerator class)
- scripts/cli.ts: Command-line argument parsing and validation
- scripts/utils.ts: Utility functions for GraphQL schema loading and formatting
- scripts/generator.test.ts: Comprehensive test suite
- references/sample.graphql: Example GraphQL schema for testing
- references/test-schema.graphql: Complex test case with unions, interfaces, input types
- assets/tsconfig.json: TypeScript configuration
- assets/cli-help.txt: CLI help text and usage examples
- Skill correctly processes simple GraphQL schemas and generates valid TypeScript types
- Skill handles complex GraphQL features (unions, interfaces, enums, input types)
- CLI interface accepts schema file paths and outputs TypeScript files
- Error handling for invalid GraphQL schemas with non-zero exit codes
- All 44 tests pass covering scalars, lists, enums, unions, input types, and CLI parsing
- Generated TypeScript types are immediately usable in TypeScript projects
├── scripts/
│ ├── index.ts # CLI entry point
│ ├── generator.ts # Type generation logic (TypeGenerator class)
│ ├── cli.ts # Command-line argument parsing
│ ├── utils.ts # GraphQL parsing utilities
│ └── generator.test.ts # Test suite (44 tests)
├── references/
│ ├── sample.graphql # Basic schema example
│ └── test-schema.graphql # Complex test cases
├── assets/
│ ├── tsconfig.json # TypeScript config
│ └── cli-help.txt # CLI usage examples
├── package.json
└── tsconfig.json
- Language: TypeScript
- Inputs: CLI arguments (schema file paths, options)
- Outputs: Generated TypeScript files in output directory
- Core Logic: Parses CLI args -> Loads schemas -> Calls TypeGenerator -> Writes output files
- Language: TypeScript
- Inputs: GraphQL schema (parsed via
graphqllibrary) - Outputs: TypeScript source code as GeneratedFile[]
- Core Logic: TypeGenerator class with type transformation rules:
- Scalar types -> TS primitives (Int->number, String->string, etc.)
- Object types -> TS interfaces
- Union types -> TS union type aliases
- Enum types -> TS enums with string values
- Input types -> TS interfaces with optional fields for defaults
- Proper nullability: NonNull, List, and nested combinations
- Language: TypeScript
- Inputs: Raw command-line arguments
- Outputs: Parsed CLIConfig object and loaded schemas
- Core Logic: Argument parsing, file validation, schema loading
- Language: TypeScript
- Inputs: GraphQL schema file path or text
- Outputs: Parsed GraphQLSchema, formatting helpers
- Core Logic: Schema file loading, built-in scalar detection, JSDoc formatting
- CLI receives schema path(s) and options via arguments
cli.tsparses arguments and validates schema file paths existutils.tsreads and parses each schema file to a GraphQLSchema objectgenerator.tsTypeGenerator processes the schema type map- Generated TypeScript source is written to the output directory
- User requests: "Generate types from schema at /docs/api.graphql"
- Agent triggers CLI:
graphql-ts-generator /docs/api.graphql -o src/types - CLI processes schema, writes generated .ts files
- Agent presents generated files to user
{
"scripts": {
"generate:types": "graphql-ts-generator schemas/api.graphql -o src/types"
}
}npm install -g graphql-ts-generator# Generate types from a single schema file
graphql-ts-generator schema.graphql
# Specify output directory
graphql-ts-generator schema.graphql -o src/types
# Process multiple schema files
graphql-ts-generator schemas/users.graphql schemas/posts.graphql
# Add type name prefix
graphql-ts-generator schema.graphql -p Api-o, --output <dir>: Output directory for generated TypeScript files (default:dist)-p, --prefix <prefix>: Prefix for generated type names-n, --namespace <name>: Wrap types in a namespace--skip-enums: Skip enum generation--skip-unions: Skip union type generation-h, --help: Show help message-v, --version: Show version number
The generator produces TypeScript files containing:
- Interfaces for GraphQL object types and input types
- Type aliases for GraphQL unions
- Enums with string values for GraphQL enums
- Proper nullability handling (non-null fields, nullable fields with
| null)
npm testRuns 44 tests covering CLI parsing, type generation for all GraphQL type kinds, nullability handling, prefix support, and end-to-end integration with real schema files.