Skip to content
Back to skills

arbitrum-dapp-skill

ASecurity

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.

  • 7 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 6, 2026
blockchaintypescriptrustgobashreactnextjsnodedockertestingdebugging

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 9 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add hummusonrails/arbitrum-dapp-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of arbitrum-dapp-skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for arbitrum-dapp-skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hummusonrails-arbitrum-dapp-skill/badge)](https://www.skillsdirectory.com/skills/hummusonrails-arbitrum-dapp-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:

1. **Need max performance / lower gas?** → Stylus Rust. See `references/stylus-rust-contracts.md`.
2. **Need broad tooling compatibility / rapid prototyping?** → Solidity. See `references/solidity-contracts.md`.
3. **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

```bash
# 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

```bash
# 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)

```bash
# 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.

### Frontend (viem + wagmi)

```typescript
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, 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

Files in this skill

  • SKILL.md4.7 KB
  • docs/index.html33.3 KB
  • install.sh1.3 KB
  • references/deployment.md3.7 KB
  • references/frontend-integration.md6.8 KB
  • references/local-devnode.md2.8 KB
  • references/solidity-contracts.md3.9 KB
  • references/stylus-rust-contracts.md3.6 KB
  • references/testing.md4.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.