Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Opinionated guide for building dApps on Arbitrum using Stylus (Rust) and/or Solidity. Covers local devnode setup, contract development, testing, deployment, and React frontend integration with viem. Use when starting a new Arbitrum project, writing Stylus or Solidity contracts, deploying to Arbitrum, or building a frontend that interacts with Arbitrum contracts.
Opinionated guide for building dApps on Arbitrum using Stylus (Rust) and/or Solidity. Covers local devnode setup, contract development, testing, deployment, and React frontend integration with viem. Use when starting a new Arbitrum project, writing Stylus or Solidity contracts, deploying to Arbitrum, or building a frontend that interacts with Arbitrum contracts.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
LayerToolNotesSmart contracts (Rust)stylus-sdk v0.10+Compiled to WASM, runs on Stylus VMSmart contracts (Solidity)Solidity 0.8.x + FoundryStandard EVM path on ArbitrumLocal nodenitro-devnodeDocker-based local Arbitrum chainContract CLIcargo-stylusCheck, deploy, export-abi for StylusContract toolchainFoundry (forge, cast, anvil)Build, test, deploy, interact for SolidityFrontendReact / Next.js + viem + wagmiviem for all chain interactionPackage managerpnpmWorkspace-friendly, fast
When starting a new contract: Need max performance / lower gas? โ Stylus Rust. See references/stylus-rust-contracts.md. Need broad tooling compatibility / rapid prototyping? โ Solidity. See references/solidity-contracts.md. Hybrid? โ Use both. Stylus and Solidity contracts are fully interoperable on Arbitrum.
my-arbitrum-dapp/ โโโ apps/ โ โโโ frontend/ # React / Next.js app โ โโโ contracts-stylus/ # Rust Stylus contracts โ โโโ contracts-solidity/ # Foundry Solidity contracts โ โโโ nitro-devnode/ # Local dev chain (git submodule) โโโ pnpm-workspace.yaml โโโ package.json
# 1. Create workspace mkdir my-arbitrum-dapp && cd my-arbitrum-dapp pnpm init printf "packages:\n - 'apps/*'\n" > pnpm-workspace.yaml # 2. Local devnode git clone https://github.com/OffchainLabs/nitro-devnode.git apps/nitro-devnode cd apps/nitro-devnode && ./run-dev-node.sh && cd ../.. # 3a. Stylus contract cargo stylus new apps/contracts-stylus # 3b. Solidity contract cd apps && forge init contracts-solidity && cd .. # 4. Frontend pnpm create next-app apps/frontend --typescript cd apps/frontend pnpm add viem wagmi @tanstack/react-query
# Validate cargo stylus check --endpoint http://localhost:8547 # Deploy (uses the nitro-devnode pre-funded deployer account) cargo stylus deploy \ --endpoint http://localhost:8547 \ --private-key $PRIVATE_KEY # Export ABI for frontend consumption cargo stylus export-abi
# Build forge build # Test forge test # Deploy locally (uses the nitro-devnode pre-funded deployer account) forge script script/Deploy.s.sol --rpc-url http://localhost:8547 --broadcast \ --private-key $PRIVATE_KEY Note: The nitro-devnode ships with a pre-funded deployer account. See references/local-devnode.md for the default private key and address. For testnet/mainnet, use your own key via environment variables โ never hardcode secrets.
import { createPublicClient, http } from "viem"; import { arbitrumSepolia } from "viem/chains"; const client = createPublicClient({ chain: arbitrumSepolia, transport: http(), }); // Read from contract const result = await client.readContract({ address: "0x...", abi: contractAbi, functionName: "myFunction", }); See references/frontend-integration.md for full patterns with wagmi hooks, wallet connection, and write transactions.
Always use viem for chain interaction. Test locally first against nitro-devnode before deploying to testnet. Export ABIs from both Stylus (cargo stylus export-abi) and Solidity (forge inspect) and keep them in a shared location the frontend can import. Use environment variables for RPC URLs, contract addresses, and private keys. Never hardcode secrets. Stylus contracts are EVM-compatible โ they share the same address space, storage model, and ABI encoding as Solidity contracts. Cross-contract calls work seamlessly.
Load these as needed for deeper guidance: references/stylus-rust-contracts.md โ Stylus SDK patterns, storage, macros, entrypoints references/solidity-contracts.md โ Solidity on Arbitrum specifics and Foundry workflow references/frontend-integration.md โ React + viem + wagmi patterns references/local-devnode.md โ Nitro devnode setup, accounts, and debugging references/deployment.md โ Deploying to testnet and mainnet references/testing.md โ Testing strategies for both Stylus and Solidity
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.