Spikard Init Command¶
spikard init creates a real starter project for a supported binding with the right package metadata, entrypoints, and starter tests already in place.
Quick Start¶
Command Shape¶
Options¶
project-name- required positional project name--lang/-l- one ofpython,typescript,rust,ruby,php,elixir--dir/-d- parent directory to create the project inside, default.
There is currently no CLI --schema option for init. If you want schema-aware automation, use the code generation commands after init, or the MCP init_project tool if you are integrating through MCP.
Supported Bindings¶
| Language | Tooling | Starter entrypoint |
|---|---|---|
| Python | uv, pytest, ruff | src/<package>/app.py |
| TypeScript | pnpm, tsc, vitest | src/server.ts |
| Rust | cargo | src/main.rs |
| Ruby | bundler, rspec, rbs | bin/server |
| PHP | composer, phpunit, phpstan | bin/server.php |
| Elixir | mix, ExUnit | run.exs |
Example Output¶
Python¶
Creates:
user_service/
├── pyproject.toml
├── README.md
├── src/user_service/
│ ├── __init__.py
│ └── app.py
└── tests/
└── test_app.py
TypeScript¶
Creates:
user-service/
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── src/
│ ├── app.ts
│ └── server.ts
└── tests/
└── app.spec.ts
Rust¶
Creates:
Ruby¶
Creates:
user_service/
├── Gemfile
├── bin/server
├── lib/user_service.rb
├── sig/user_service.rbs
└── spec/
├── spec_helper.rb
└── user_service_spec.rb
PHP¶
Creates:
UserService/
├── composer.json
├── phpstan.neon
├── phpunit.xml
├── src/AppController.php
├── bin/server.php
└── tests/AppTest.php
Elixir¶
Creates:
user_service/
├── mix.exs
├── .formatter.exs
├── lib/user_service.ex
├── lib/user_service/router.ex
├── run.exs
└── test/
├── test_helper.exs
└── user_service_test.exs
Next Steps¶
After init, the normal flow is:
- Install dependencies for the target binding.
- Run the starter app once.
- Run the starter tests.
- Generate handlers from a schema with
spikard generate ....
Examples:
# Python
uv sync
uv run python -m my_api.app
uv run pytest
# TypeScript
pnpm install
pnpm exec tsc --noEmit
pnpm test
# Rust
cargo run
cargo test