Agent Skills: Dojo Project Initialization

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.

UncategorizedID: dojoengine/book/dojo-init

Install this agent skill to your local

pnpm dlx add-skill https://github.com/dojoengine/book/tree/HEAD/skills/dojo-init

Skill Files

Browse the full folder contents for dojo-init.

Download Skill

Loading file tree…

skills/dojo-init/SKILL.md

Skill Metadata

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.

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.toml with Dojo dependencies
  • dojo_dev.toml for 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)

  • Position model with player key and Vec2 coordinates
  • Moves model tracking remaining moves and direction
  • Direction enum

Systems (src/systems/actions.cairo)

  • spawn function to initialize player state
  • move function 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

  1. Initialize project:

    sozo init my-game
    cd my-game
    
  2. Start Katana:

    katana --dev --dev.no-fee
    
  3. Build and deploy:

    sozo build && sozo migrate
    
  4. Test your system:

    sozo execute my_game-actions spawn
    
  5. Run tests:

    sozo test
    

Customization

After initialization, customize your project:

  1. Add models: Create new model structs in src/models.cairo or separate files
  2. Add systems: Create new contract modules in src/systems/
  3. Update permissions: Edit [writers] in dojo_dev.toml
  4. Add dependencies: Edit [dependencies] in Scarb.toml

Next Steps

After initialization:

  1. Use dojo-model skill to add game state models
  2. Use dojo-system skill to implement game logic
  3. Use dojo-test skill to write tests
  4. Use dojo-deploy skill 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