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.
SKILL.md
Full skill instructions
Dojo Project Initialization
Initialize new Dojo projects with the complete directory structure, configuration files, and dependencies.
When to Use This Skill
- "Create a new Dojo project"
- "Initialize a Dojo game called [name]"
- "Set up a new Dojo application"
- "Start a new provable game project"
What This Skill Does
Creates a complete Dojo project with:
Scarb.tomlwith Dojo dependenciesdojo_dev.tomlfor local development- Source directory structure
- Example models and systems
- Test files
Quick Start
Using 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"
Project Structure
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
Configuration Files
Scarb.toml
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"]
dojo_dev.toml
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"]
Starter Template Contents
The starter template includes:
Models (src/models.cairo)
Positionmodel with player key and Vec2 coordinatesMovesmodel tracking remaining moves and directionDirectionenum
Systems (src/systems/actions.cairo)
spawnfunction to initialize player statemovefunction to update player position- Example event emission
Tests (src/tests/test_world.cairo)
- Test world setup with
spawn_test_world - Integration tests for spawn and move
Development Workflow
-
Initialize 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
Customization
After initialization, customize your project:
- Add models: Create new model structs in
src/models.cairoor separate files - Add systems: Create new contract modules in
src/systems/ - Update permissions: Edit
[writers]indojo_dev.toml - Add dependencies: Edit
[dependencies]inScarb.toml
Next Steps
After initialization:
- Use
dojo-modelskill to add game state models - Use
dojo-systemskill to implement game logic - Use
dojo-testskill to write tests - Use
dojo-deployskill to deploy your world
Related Skills
- dojo-model: Add models to your project
- dojo-system: Add systems to your project
- dojo-config: Modify configuration
- dojo-deploy: Deploy your project
