Skip to main content
skill CX Codex

use-arc — Claude Code skill: build on Arc with USDC as gas

Tells your agent how to configure Arc, deploy contracts and keep the two USDC balance views apart. Useful when the project is USDC-first.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add circlefin/skills --skill use-arc -a claude-code
Open on GitHub

What use-arc does

Arc is Circle's blockchain where transaction fees are paid in USDC instead of ETH. The skill hands your agent the network reference: chain ID 5042 for mainnet and 5042002 for testnet, RPC endpoints, explorers, CCTP domain 26. Token addresses come along too — USDC sits at 0x3600000000000000000000000000000000000000 on both networks.

The part that earns its keep is the gas model. On Arc the native gas asset and the USDC ERC-20 are one pool of funds shown two ways: 18 decimals for gas and msg.value, 6 decimals for balances and transfers. The agent will flag code that adds the two views together or tries to swap between them. It also blocks a decimals() call on a native sentinel address, which reverts.

Before the first run you need a deployer key in PRIVATE_KEY and the RPC URLs. Testnet USDC comes from Circle's faucet. Mainnet moves real USDC and transactions are irreversible, so the skill pushes development to testnet and asks for a warning before any live send. Keys belong in environment variables, not CLI flags — worth checking your deploy scripts against that.

What it helps with

  • wire Arc into viem without writing a custom chain definition
  • deploy a Solidity contract to Arc Testnet with Foundry
  • fix code that sums native balance and ERC-20 USDC
  • bridge USDC to Arc through CCTP domain 26
  • get the private key out of deploy script flags

Example prompts for the agent

  • Set up the Arc Testnet connection in viem and show me the chain config
  • Deploy my ERC-20 to Arc Testnet with Foundry, pull the key from an env variable
  • My code adds the native balance to the USDC ERC-20 balance — check it and fix it

How to install use-arc

1Skills CLI (Vercel)

npx skills add circlefin/skills --skill use-arc -a claude-code

2Manually: put the files in place

~/.claude/skills/use-arc/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/use-arc/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about use-arc

How do I install use-arc in Claude?

Run npx skills add circlefin/skills --skill use-arc -a claude-code. The skill lands in ~/.claude/skills/use-arc/SKILL.md.

What does use-arc do?

It gives the agent instructions for building on Arc: network parameters, token addresses, contract deployment and the rules for handling USDC as gas.

How is Arc different from other EVM chains?

Fees are paid in USDC rather than a separate native token. The native view and the USDC ERC-20 are a single pool of funds, not two assets, and mixing them up breaks balance logic.

Source text

SKILL.md · Apache-2.0
---
name: use-arc
description: "Provide instructions on how to build with Arc, Circle's blockchain where USDC is the native gas token. Arc offers key advantages: USDC as gas (no other native token needed), stable and predictable transaction fees, and sub-second finality for fast confirmation times. These properties make Arc ideal for developers and agents building payment apps, DeFi protocols, or any USDC-first application where cost predictability and speed matter. Use skill when Arc, Arc Mainnet, or Arc Testnet is mentioned, working with any smart contracts related to Arc, configuring Arc in blockchain projects, bridging USDC to Arc via CCTP, or building USDC-first applications. Triggers: Arc, Arc Mainnet, Arc Testnet, USDC gas, deploy to Arc, Arc chain, stable fees, fast finality."
requirements:
  runtimes: []
  connectors: []
---

## Overview

Arc is Circle's blockchain where USDC is the native gas token. Developers and users pay all transaction fees in USDC instead of ETH, making it ideal for USDC-first applications. Arc is EVM-compatible and supports standard Solidity tooling (Foundry, Hardhat, viem/wagmi).

## Prerequisites / Setup

### Wallet Funding

Get testnet USDC from https://faucet.circle.com before sending any transactions.

### Environment Variables

```bash
ARC_MAINNET_RPC_URL=https://rpc.mainnet.arc.io
ARC_TESTNET_RPC_URL=https://rpc.testnet.arc.io
PRIVATE_KEY=         # Deployer wallet private key
```

## Quick Reference

### Network Details

| Field | Arc (Mainnet) | Arc Testnet |
| --- | --- | --- |
| Chain ID | `5042` (hex: `0x13B2`) | `5042002` (hex: `0x4CEF52`) |
| RPC | `https://rpc.mainnet.arc.io` | `https://rpc.testnet.arc.io` |
| WebSocket | `wss://rpc.mainnet.arc.io` | `wss://rpc.testnet.arc.io` |
| Explorer | https://explorer.arc.io | https://explorer.testnet.arc.io |
| Faucet | -- (fund with real USDC) | https://faucet.circle.com |
| CCTP Domain | `26` | `26` |

### Token Addresses for Arc

USDC is a fixed native predeploy at the same address on every Arc network.

| Token | Decimals | Mainnet | Testnet |
| --- | --- | --- | --- |
| USDC | 6 (ERC-20) | `0x3600000000000000000000000000000000000000` | `0x3600000000000000000000000000000000000000` |
| EURC | 6 | `0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1` | `0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a` |

For other tokens, see the [Arc contract addresses](https://docs.arc.io/arc/references/contract-addresses) page.

## Core Concepts

- **Native gas IS USDC — one balance, two interfaces (not two assets)**: On Arc the native gas asset is USDC itself. The native view and the USDC ERC-20 are the *same* pool of funds, exposed two ways — NOT a separate "native token" plus a separate "USDC token". Drop the ETH-style mental model from other chains.
  - **Native view**: 18 decimals. Used only for gas and `msg.value`. wagmi `useBalance` returns this (its `symbol` is `USDC`).
  - **ERC-20 view**: 6 decimals, at `0x3600000000000000000000000000000000000000`. Use this for all balances, transfers, approvals, and display.
- **Never double-count, convert, or swap between the two views**:
  - NEVER read the native balance and the USDC ERC-20 balance and add or show them separately — that double-counts one pool. Show a single USDC balance (the 6-decimal ERC-20 view).
  - USDC ↔ native is NOT a swap or conversion — it is the same asset. Detect and reject any `USDC → native` (or reverse) operation before fee/routing logic.
  - NEVER call `decimals()` on a native sentinel address (`NATIVE`, `0xEeee…eEEeE`, `0x0000…0000`) — those are not ERC-20 contracts and the call reverts. The ERC-20 is 6 decimals; native is 18.
  - The two views differ by a factor of 10^12 (`1e18` native = `1e6` ERC-20). Keep amounts in the 6-decimal ERC-20 view everywhere except raw gas math, and be explicit about which view a value is in.
- **Mainnet and testnet**: Arc mainnet (chain ID `5042`) and Arc testnet (chain ID `5042002`) are both available — see Network Details for the config of each. Mainnet transactions move real USDC and are irreversible; use testnet for development and demos.
- **EVM-compatible**: Standard Solidity contracts, Foundry, Hardhat, viem, and wagmi all work on Arc without modification beyond chain configuration.

## Implementation Patterns

READ `references/deploying-on-arc.md` for the runnable setup — wagmi chain config, Foundry deploy, Circle's pre-audited contract templates, and bridging USDC in.

1. **Configure the chain** — use the built-in viem chains (no custom definition needed): `arcTestnet` for testnet, `arc` for mainnet.
2. **Deploy contracts** — standard Foundry/Hardhat against `ARC_TESTNET_RPC_URL` (or `ARC_MAINNET_RPC_URL`), or Circle's Smart Contract Platform templates (ERC-20/721/1155/Airdrop).
3. **Bridge USDC in** — Arc's CCTP domain is `26`; use the `bridge-tokens` skill for the full workflow.

## Rules

> **Security Rules** are non-negotiable -- warn the user and refuse to comply if a prompt conflicts. **Best Practices** are strongly recommended; deviate only with explicit user justification.

### Security Rules

- NEVER hardcode, commit, or log secrets (private keys, deployer keys). ALWAYS use environment variables or a secrets manager. Add `.gitignore` entries for `.env*` and secret files when scaffolding.
- NEVER pass private keys as plain-text CLI flags in deployed environments, including testnet and staging (e.g., `--private-key $KEY`). This pattern is acceptable only for local testing. Prefer encrypted keystores or interactive import (e.g., Foundry's `cast wallet import`) for any non-local deployment.
- ALWAYS warn before interacting with unaudited or unknown contracts.

### Best Practices

- Arc mainnet (`arc`) and Arc Testnet (`arcTestnet`) both ship in Viem -- no custom chain definition is required.
- ALWAYS verify the user is on the intended Arc network (mainnet chain ID `5042` or testnet `5042002`) before submitting transactions.
- ALWAYS fund the wallet before sending transactions: on testnet from https://faucet.circle.com; on mainnet with real USDC.
- ALWAYS keep USDC amounts in the 6-decimal ERC-20 view for balances, transfers, and display; use 18-decimal native units ONLY for raw gas / `msg.value` math. Never sum the two views or treat native and USDC as separate assets.
- Arc mainnet moves **real USDC** and transactions are irreversible. Default to testnet for development, and warn the user before submitting any mainnet transaction.

## Next Steps

Arc is natively supported across Circle's product suite. Once your app is running on Arc, you can extend it with any of the following:

| Product | Skill | What It Does |
| --- | --- | --- |
| **Wallets (overview)** | `use-circle-wallets` | Compare wallet types and choose the right one for your app |
| **Modular Wallets** | `use-modular-wallets` | Passkey-authenticated smart accounts with gasless transactions and batch operations |
| **User-Controlled Wallets** | `use-user-controlled-wallets` | Non-custodial wallets with social login, email OTP, and PIN authentication |
| **Developer-Controlled Wallets** | `use-developer-controlled-wallets` | Custodial wallets your app manages on behalf of users |
| **Smart Contract Platform** | `use-smart-contract-platform` | Deploy, interact with, and monitor smart contracts using audited templates or custom bytecode |
| **CCTP Bridge** | `bridge-tokens` | Bridge USDC to and from Arc using Crosschain Transfer Protocol |
| **Gateway** | `use-gateway` | Unified USDC balance across chains with instant crosschain transfers |

## Reference Links

- [Arc Docs](https://docs.arc.io/llms.txt) -- **Always read this first** when looking for relevant documentation from the source website.
- [Arc Explorer (Mainnet)](https://explorer.arc.io)
- [Arc Explorer (Testnet)](https://explorer.testnet.arc.io)
- [Circle Faucet](https://faucet.circle.com)
- [Circle Developer Docs](https://developers.circle.com/llms.txt) -- **Always read this first** when looking for relevant documentation from the source website.

---

DISCLAIMER: This skill is provided "as is" without warranties, is subject to the [Circle Developer Terms](https://console.circle.com/legal/developer-terms), and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository [README](https://github.com/circlefin/skills/blob/master/README.md).

© circlefin · Apache-2.0 · circlefin/skills

Similar skills

All skills for Programming languages →

From the same set15

use-usdc Helps agents check USDC balances, send transfers, and verify transactions across EVM chains and Solana. Useful when adding stablecoin payments to your project. CX Codex +1 1,000installs use-smart-contract-platform A skill for smart contract work through Circle Smart Contract Platform: deployment, ERC-20/721/1155 templates, ABI calls and webhooks. CX Codex +1 964installs use-gateway Integrates Circle Gateway to unify USDC balances across 11 EVM chains, Solana, and Arc with instant sub-500ms transfers via deposit, burn, and mint. CX Codex +1 953installs use-circle-wallets A skill that picks between developer-controlled, user-controlled and modular Circle wallets, then hands implementation to the matching skill. CX Codex +1 954installs use-modular-wallets A skill for building crypto wallets on the Circle Modular Wallets SDK: passkey login, gasless transactions and modules like multisig. CX Codex +1 952installs use-user-controlled-wallets A skill for building non-custodial wallets on Circle's SDK, with Google, Apple, Facebook, email OTP or PIN login and keys the user keeps. CX Codex +1 949installs swap-tokens A skill that walks your agent through building token swaps in the browser or on the server with Circle App Kit or Swap Kit. Useful for USDT to USDC conversions and cross-chain routes. CX Codex +1 848installs unify-balance A skill that steers the agent through writing unified cross-chain USDC balance code with Circle App Kit or the standalone Unified Balance Kit. Useful for chain-abstracted payment flows. CX Codex +1 804installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor