Claude-skill-registry dojo-setup
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dojo-setup" ~/.claude/skills/majiayu000-claude-skill-registry-dojo-setup && rm -rf "$T"
manifest:
skills/data/dojo-setup/SKILL.mdsource content
Dojo.js SDK Setup
When to Use
Use this skill when:
- Setting up dojo.js in a new frontend project
- Configuring the SDK with world address and Torii URL
- Setting up the React provider hierarchy
- Generating TypeScript types from ABIs
SDK Initialization
import { init } from "@dojoengine/sdk"; import { DojoConfig } from "@dojoengine/core"; import { schema } from "./models.gen"; // Generated from ABI const sdk = await init<typeof schema>({ client: { worldAddress: "0x...", toriiUrl: "http://localhost:8080", }, domain: { name: "MyGame", version: "1.0.0", chainId: "SN_MAIN", // or "SN_SEPOLIA" }, });
React Provider Setup
Note:
andmasterAddressare for local development only. In production, use wallet connections instead.masterPrivateKey
import { DojoSdkProvider } from "@dojoengine/sdk/react"; import { DojoConfig, DojoProvider } from "@dojoengine/core"; const dojoConfig: DojoConfig = { manifest: manifest, // From manifest.json rpcUrl: process.env.VITE_RPC_URL || "http://localhost:5050", toriiUrl: process.env.VITE_TORII_URL || "http://localhost:8080", // For local development only - never hardcode in production masterAddress: process.env.VITE_MASTER_ADDRESS || "0x...", masterPrivateKey: process.env.VITE_MASTER_PRIVATE_KEY || "", }; function App() { return ( <DojoSdkProvider dojoConfig={dojoConfig} sdk={sdk} // clientFn is a user-provided factory to create your game client clientFn={(provider) => new GameClient(provider)} > {children} </DojoSdkProvider> ); }
Environment Variables
VITE_WORLD_ADDRESS=0x... VITE_TORII_URL=http://localhost:8080 VITE_RPC_URL=http://localhost:5050 VITE_CHAIN_ID=SN_SEPOLIA
Key Configuration Options
| Option | Description |
|---|---|
| Deployed world contract address |
| Torii indexer URL (default: ) |
| Starknet RPC URL |
| , , or custom |
| Dojo manifest.json for contract ABIs |
Using DojoContext
import { useDojoSDK } from "@dojoengine/sdk/react"; function GameComponent() { const { sdk, config, provider, useDojoStore } = useDojoSDK(); // sdk: SDK instance for queries/subscriptions // config: DojoConfig // provider: DojoProvider for contract calls // useDojoStore: Zustand store hook }
Common Pitfalls
- Missing schema types: Generate types from ABI using
CLI@dojoengine/core - CORS issues: Ensure Torii is configured to allow your frontend origin
- Wrong chain ID: Must match the deployed world's chain
- Provider hierarchy:
must wrap all Dojo-consuming componentsDojoSdkProvider