Skip to content

CLI: generate

The gen command generates code from ISL specifications. It produces type definitions, validators, and contract checkers for multiple target languages.

Usage

Terminal window
shipgate gen <target> <file> [options]

Targets

TargetAliasOutput
typescripttsTypeScript interfaces, Zod validators
rustrustRust structs, enums, validators
gogoGo structs, interfaces
openapiopenapiOpenAPI 3.0 specification

Options

FlagDescription
-o, --output <dir>Output directory (default: stdout)
--forceOverwrite existing files

Examples

TypeScript generation

Terminal window
# Generate TypeScript types
shipgate gen ts user-service.isl -o ./src/generated
# Short form
shipgate gen typescript user-service.isl -o ./src/generated

This produces:

src/generated/
user-service.types.ts # TypeScript interfaces
user-service.validators.ts # Zod schemas
user-service.contracts.ts # Contract checkers

Example generated TypeScript:

user-service.types.ts
export interface User {
id: string; // UUID
email: string; // Email
name: string;
status: UserStatus;
created_at: number; // Timestamp
}
export enum UserStatus {
PENDING = "PENDING",
ACTIVE = "ACTIVE",
SUSPENDED = "SUSPENDED",
}
export interface CreateUserInput {
email: string;
name: string;
}
export type CreateUserResult =
| { success: true; data: User }
| { success: false; error: "DUPLICATE_EMAIL" | "INVALID_INPUT" };

Rust generation

Terminal window
shipgate gen rust user-service.isl -o ./src/generated

Go generation

Terminal window
shipgate gen go user-service.isl -o ./generated

OpenAPI generation

Terminal window
shipgate gen openapi api-service.isl -o ./docs/api

Produces an OpenAPI 3.0 YAML specification with:

  • Path definitions from behaviors
  • Schema definitions from entities
  • Error response definitions
  • Request/response body schemas

Full build pipeline

The build command runs the complete pipeline: parse, check, generate, verify, and produce an evidence report.

Terminal window
shipgate build specs/*.isl [options]

Build options

FlagDescription
-o, --output <dir>Output directory (default: ./generated)
-t, --target <target>Code gen target (default: typescript)
--test-framework <fw>Test framework: vitest, jest (default: vitest)
--no-verifySkip verification stage
--no-htmlSkip HTML report generation
--no-chaosSkip chaos test generation
--no-helpersSkip helper file generation

Build example

Terminal window
# Full build pipeline
shipgate build specs/*.isl -o ./src/generated
# Build for production
shipgate build specs/*.isl -o ./src/generated --target typescript --test-framework vitest

Build output structure:

generated/
types/ # TypeScript interfaces
validators/ # Zod schemas
contracts/ # Contract checkers
tests/ # Test stubs
chaos/ # Chaos test files
evidence/ # Verification evidence
report.html # HTML verification report

ISL generation from code

Generate ISL specs from existing source code:

Terminal window
shipgate isl-generate <path> [options]
FlagDescription
-o, --output <dir>Output directory for .isl files
--dry-runPrint to stdout instead of writing
--interactiveConfirm before writing each file
--overwriteOverwrite existing .isl files
--confidence <threshold>Minimum confidence 0-1 (default: 0.3)
--aiUse AI enhancement
Terminal window
# Generate specs from source code
shipgate isl-generate src/ -o specs/
# Preview without writing
shipgate isl-generate src/ --dry-run
# AI-enhanced generation
shipgate isl-generate src/ --ai -o specs/

Exit codes

CodeMeaning
0Generation successful
1Generation error
2Invalid arguments