بنقرة واحدة
dojo-init
// Initialize new Dojo projects with proper directory structure, configuration files, and dependencies. Use when starting a new Dojo game project or setting up the initial project structure.
// Initialize new Dojo projects with proper directory structure, configuration files, and dependencies. Use when starting a new Dojo game project or setting up the initial project structure.
Integrate Dojo with game clients for JavaScript, Unity, Unreal, Rust, and other platforms. Generate typed bindings and connection code. Use when connecting frontends or game engines to your Dojo world.
Deploy Dojo worlds to local Katana, testnet, or mainnet. Configure Katana sequencer and manage deployments with sozo. Use when deploying your game or starting local development environment.
Create Dojo models for storing game state with proper key definitions, trait derivations, and ECS patterns. Use when defining game entities, components, or state structures.
Create Dojo systems that implement game logic, modify model state, and handle player actions. Use when implementing game mechanics, player commands, or automated logic.
Implement, deploy, and index ERC20 and ERC721 tokens in Dojo. Use when adding token contracts, deploying them, or configuring Torii to index balances and transfers.
Set up and configure Torii indexer for GraphQL queries, gRPC subscriptions, and SQL access. Use when indexing your deployed world for client queries or real-time updates.
| name | dojo-init |
| description | Initialize new Dojo projects with proper directory structure, configuration files, and dependencies. Use when starting a new Dojo game project or setting up the initial project structure. |
| allowed-tools | Read, Write, Bash, Glob |
Initialize new Dojo projects with the complete directory structure, configuration files, and dependencies.
Creates a complete Dojo project with:
Scarb.toml with Dojo dependenciesdojo_dev.toml for local developmentUsing sozo init:
sozo init my-game
This creates a new Dojo project from the dojo-starter template.
Interactive mode:
"Create a new Dojo project called my-game"
After initialization:
my-game/
├── Scarb.toml # Package manifest and dependencies
├── dojo_dev.toml # Local development profile
├── dojo_release.toml # Production deployment profile
└── src/
├── lib.cairo # Module exports
├── models.cairo # Game state models
├── systems/
│ └── actions.cairo # Game logic systems
└── tests/
└── test_world.cairo # Integration tests
Package manifest with Dojo dependencies:
[package]
cairo-version = "2.12.2"
name = "my_game"
version = "1.0.0"
edition = "2024_07"
[[target.starknet-contract]]
sierra = true
build-external-contracts = ["dojo::world::world_contract::world"]
[dependencies]
starknet = "2.12.2"
dojo = "1.7.1"
[dev-dependencies]
cairo_test = "2.12.2"
dojo_cairo_test = "1.7.1"
[tool.scarb]
allow-prebuilt-plugins = ["dojo_cairo_macros"]
Local development configuration:
[world]
name = "My Game"
seed = "my_game"
[env]
rpc_url = "http://localhost:5050/"
account_address = "0x127fd..."
private_key = "0xc5b2f..."
[namespace]
default = "my_game"
[writers]
"my_game" = ["my_game-actions"]
The starter template includes:
src/models.cairo)Position model with player key and Vec2 coordinatesMoves model tracking remaining moves and directionDirection enumsrc/systems/actions.cairo)spawn function to initialize player statemove function to update player positionsrc/tests/test_world.cairo)spawn_test_worldInitialize project:
sozo init my-game
cd my-game
Start Katana:
katana --dev --dev.no-fee
Build and deploy:
sozo build && sozo migrate
Test your system:
sozo execute my_game-actions spawn
Run tests:
sozo test
After initialization, customize your project:
src/models.cairo or separate filessrc/systems/[writers] in dojo_dev.toml[dependencies] in Scarb.tomlAfter initialization:
dojo-model skill to add game state modelsdojo-system skill to implement game logicdojo-test skill to write testsdojo-deploy skill to deploy your world