CLI Usage¶
spikard is a codegen-first CLI with project scaffolding, AsyncAPI testing helpers, validation, and an MCP server.
Install¶
Top-Level Commands¶
spikard init <name> --lang <language> [--dir <parent>]
spikard generate <target> ...
spikard testing asyncapi <target> ...
spikard validate-asyncapi <schema>
spikard features
spikard mcp
Init¶
Create a starter project for a supported binding:
Supported languages: python, typescript, rust, ruby, php, elixir
Generate¶
Generate code from a contract or schema:
# OpenAPI
spikard generate openapi openapi.yaml --lang python --output ./generated.py
# AsyncAPI
spikard generate asyncapi asyncapi.yaml --lang typescript --output ./src/handlers.ts
# JSON-RPC from OpenRPC
spikard generate jsonrpc rpc-spec.json --lang ruby --output ./lib/generated.rb
# GraphQL
spikard generate graphql schema.graphql --lang typescript --target all --output ./src/generated.ts
# Protobuf / gRPC
spikard generate protobuf user.proto --lang rust --output ./src/generated.rs
# PHP DTO helpers
spikard generate php-dto --output ./src/Generated
AsyncAPI Testing Helpers¶
spikard testing asyncapi fixtures chat.asyncapi.yaml --output ./testing_data
spikard testing asyncapi test-app chat.asyncapi.yaml --lang elixir --output ./e2e/elixir
spikard testing asyncapi all chat.asyncapi.yaml --output ./generated
Validation¶
MCP¶
Start the MCP server over stdio:
With HTTP transport:
Runtime Note¶
The CLI does not currently provide a generic run or serve command for applications. Start apps using the generated or binding-native entrypoints:
- Python:
uv run python -m my_api.app - TypeScript:
node src/server.tsor the package's dev script - Rust:
cargo run - Ruby:
bundle exec ruby bin/server - PHP:
php bin/server.php - Elixir:
mix run run.exs