6.0k★arbitrum-dapp-skill – OpenClaw Skill
arbitrum-dapp-skill is an OpenClaw Skills integration for coding workflows. 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.
Skill Snapshot
| name | arbitrum-dapp-skill |
| description | 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. OpenClaw Skills integration. |
| owner | hummusonrails |
| repository | hummusonrails/arbitrum-dapp-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @hummusonrails/arbitrum-dapp-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: arbitrum-dapp-skill description: 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.
Arbitrum dApp Development
Stack
| Layer | Tool | Notes |
|---|---|---|
| Smart contracts (Rust) | stylus-sdk v0.10+ | Compiled to WASM, runs on Stylus VM |
| Smart contracts (Solidity) | Solidity 0.8.x + Foundry | Standard EVM path on Arbitrum |
| Local node | nitro-devnode | Docker-based local Arbitrum chain |
| Contract CLI | cargo-stylus | Check, deploy, export-abi for Stylus |
| Contract toolchain | Foundry (forge, cast, anvil) | Build, test, deploy, interact for Solidity |
| Frontend | React / Next.js + viem + wagmi | viem for all chain interaction |
| Package manager | pnpm | Workspace-friendly, fast |
Decision Flow
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.
Project Scaffolding
Monorepo layout (recommended)
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
Bootstrap steps
# 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
Core Workflow
Stylus Rust
# 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
Solidity (Foundry)
# 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.mdfor the default private key and address. For testnet/mainnet, use your own key via environment variables — never hardcode secrets.
Frontend (viem + wagmi)
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.
Principles
- 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.
References
Load these as needed for deeper guidance:
references/stylus-rust-contracts.md— Stylus SDK patterns, storage, macros, entrypointsreferences/solidity-contracts.md— Solidity on Arbitrum specifics and Foundry workflowreferences/frontend-integration.md— React + viem + wagmi patternsreferences/local-devnode.md— Nitro devnode setup, accounts, and debuggingreferences/deployment.md— Deploying to testnet and mainnetreferences/testing.md— Testing strategies for both Stylus and Solidity
What it does
This skill gives Claude Code deep knowledge of the Arbitrum development stack so it can help you:
- Scaffold a monorepo with Stylus Rust contracts, Solidity contracts, and a React frontend
- Write and test smart contracts using the Stylus Rust SDK or Foundry
- Run a local Arbitrum devnode for development
- Build frontend interfaces with viem and wagmi
- Deploy contracts to Arbitrum Sepolia and Arbitrum One
- Interop across contract languages (Stylus and Solidity)
Quick Start
bash <(curl -s https://raw.githubusercontent.com/hummusonrails/arbitrum-dapp-skill/main/install.sh)
Then start Claude Code and ask it to build something:
> Create a Stylus contract for an ERC-20 token with a React frontend
That's it. The skill loads automatically.
<details> <summary><strong>Install from ClawHub</strong></summary> <br>npx clawhub@latest install arbitrum-dapp-skill
Or browse the skill on ClawHub.
</details> <details> <summary><strong>Manual installation</strong></summary> <br>git clone https://github.com/hummusonrails/arbitrum-dapp-skill.git ~/.claude/skills/arbitrum-dapp-skill
</details>
Stack
| Layer | Tool | Notes |
|---|---|---|
| Smart contracts (Rust) | stylus-sdk v0.10+ | Compiled to WASM, runs on Stylus VM |
| Smart contracts (Solidity) | Solidity 0.8.x + Foundry | Standard EVM path on Arbitrum |
| Local chain | nitro-devnode | Docker-based with pre-funded accounts |
| Contract CLI | cargo-stylus | Check, deploy, export-abi |
| Contract toolchain | forge / cast | Build, test, deploy, interact |
| Frontend | viem + wagmi | Type-safe chain interaction |
| Package manager | pnpm | Workspace-friendly, fast |
The skill will guide you through installing these, but for reference:
- Rust 1.81+
- cargo-stylus:
cargo install --force cargo-stylus - Foundry:
curl -L https://foundry.paradigm.xyz | bash && foundryup - Docker for the local devnode
- Node.js 20+ and pnpm
Usage examples
Once installed, start a Claude Code session and try:
> Help me create a new Arbitrum dApp
> Write a Stylus contract that implements an ERC-20 token
> Set up my local devnode and deploy my contract
> Add a frontend that reads from my deployed contract
> Help me write tests for my Stylus contract
Skill structure
arbitrum-dapp-skill/
├── SKILL.md # Main skill definition
├── references/
│ ├── stylus-rust-contracts.md # Stylus SDK patterns and examples
│ ├── solidity-contracts.md # Solidity on Arbitrum + Foundry
│ ├── frontend-integration.md # viem + wagmi patterns
│ ├── local-devnode.md # Nitro devnode setup
│ ├── deployment.md # Testnet and mainnet deployment
│ └── testing.md # Testing strategies
├── install.sh
└── README.md
Resources
| Resource | Description |
|---|---|
| Demo Video | Watch the skill in action |
| Arbitrum Stylus Quickstart | Official getting-started guide |
| Stylus SDK | Rust SDK for writing Stylus contracts |
| Stylus Workshop | Game of Life example project |
| Nitro Devnode | Local Arbitrum chain for development |
| viem | TypeScript interface for Ethereum |
| wagmi | React hooks for Ethereum |
Contributing
Contributions welcome. Open an issue or submit a pull request.
License
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install arbitrum-dapp-skill?
Run openclaw add @hummusonrails/arbitrum-dapp-skill in your terminal. This installs arbitrum-dapp-skill into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/hummusonrails/arbitrum-dapp-skill. Review commits and README documentation before installing.
