Arc-specific static CI quality gate and integration-pattern validator for wallets, bridges, App Kit integrations, and dApps.
ArcReady Example Release TypeScript Node.js npm Backend
ArcReady helps developers catch common Arc integration mistakes before release. It is a developer-side early warning layer for static checks in local workflows and CI.
ArcReady is an independent open-source project. It is not an official Circle or Arc product.
ArcReady scans source files for common Arc-specific integration assumptions across three presets:
walletbridgeapp-kit
It reports findings in terminal, JSON, Markdown, or HTML formats and can fail CI based on critical, warning, info, or none thresholds.
npx --yes arcready@0.3.0 init npx --yes arcready@0.3.0 scan
CI-oriented Markdown report:
npx --yes arcready@0.3.0 scan --format markdown --out arcready-report.md
Shortened example output:
ArcReady v0.3.0
Project: my-arc-app
Score: 75
Status: fail
Summary: 1 critical, 0 warning, 0 info
Run without installing:
npx --yes arcready@0.3.0 scan
Create a config file:
npx --yes arcready@0.3.0 init
Install locally:
npm install -D arcready
npx arcready scanMinimal workflow:
name: ArcReady on: pull_request: push: branches: [main] jobs: arcready: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - uses: tanka420/arcready@v0.3.0 with: fail-on: critical
The action runs the published npm CLI and defaults to arcready@0.3.0. You can pin or override the CLI package version:
with: arcready-version: "0.3.0"
See docs/github-action.md for inputs, artifact behavior, and external usage notes.
- Arc chain metadata
- native USDC display
- avoiding ETH gas labeling assumptions
- one-confirmation finality assumptions
- unsupported PREVRANDAO assumptions
- blob transaction assumptions
- one-confirmation bridge assumptions
- CCTP domain
26 - canonical USDC vs wrapped USDC assumptions
- relayer gas token assumptions
- retryable CCTP attestation
404handling - avoiding PREVRANDAO relay selection assumptions
Arc_Testnet/ Arc chain identifier usage- capability guardrails
- explicit RPC configuration
- user-controlled wallet delegate handling
- user-facing fee explanation
- bridge minimum amount copy
ArcReady checks static integration patterns. It does not validate the Circle SDK or App Kit at runtime.
CRITICAL (1)
- wallet/ONE_CONFIRMATION_FINAL
Message: Arc wallet transaction flow appears to wait for more than one confirmation.
Files: src/wallet.ts
Suggested fix: Set Arc confirmation waits and release logic to 1 confirmation.
Supported formats:
- terminal
- JSON
- Markdown
- HTML
npx --yes arcready@0.3.0 scan --format terminal npx --yes arcready@0.3.0 scan --format json --out arcready-report.json npx --yes arcready@0.3.0 scan --format markdown --out arcready-report.md npx --yes arcready@0.3.0 scan --format html --out arcready-report.html
Generated report folders such as .arcready/ and reports/ are ignored by git.
ArcReady does not perform:
- live Arc RPC checks
- Circle API checks
- on-chain transaction simulation
- contract deployment validation
- bridge runtime simulation
- real App Kit runtime validation
- SaaS/dashboard monitoring
It is a static CI quality gate, not a runtime verifier or compatibility guarantee.
Arc is EVM-compatible, but Arc integrations should not blindly inherit Ethereum-default assumptions. Teams can accidentally ship incorrect gas labels, finality waits, CCTP domain values, wrapped asset assumptions, or App Kit configuration mistakes.
ArcReady turns those common integration risks into local and CI checks.
Create arcready.config.json in the project you want to scan:
{
"presets": ["wallet", "bridge", "app-kit"],
"paths": ["src", "app", "components", "lib", "package.json"],
"exclude": ["dist/**", "coverage/**", ".next/**", "node_modules/**"],
"reporters": ["terminal", "json", "markdown", "html"],
"failOn": "critical",
"rules": {
"wallet/ONE_CONFIRMATION_FINAL": "critical",
"bridge/BRIDGE_CONFIRMATIONS_ONE": "critical",
"app-kit/APPKIT_CHAIN_IDENTIFIER_VALID": "critical"
}
}failOn controls when the CLI exits non-zero:
| Value | Behavior |
|---|---|
critical |
Fail only when critical findings exist |
warning |
Fail when warning or critical findings exist |
info |
Fail when any finding exists |
none |
Never fail due to findings |
The CLI --fail-on option overrides the config value.
| Preset | Focus | Example rules |
|---|---|---|
wallet |
Wallet UX, chain metadata, fee display, finality | ARC_CHAIN_METADATA, NO_ETH_GAS_LABEL, ONE_CONFIRMATION_FINAL |
bridge |
CCTP, finality, relayer gas, canonical USDC | BRIDGE_CONFIRMATIONS_ONE, CCTP_DOMAIN_26, RELAYER_USES_USDC_FOR_GAS |
app-kit |
App Kit chain identifiers, capability guards, Unified Balance UX | APPKIT_CHAIN_IDENTIFIER_VALID, APPKIT_CAPABILITY_SUPPORTED, UB_FEE_EXPLANATION_PRESENT |
Full rule list: docs/rule-catalog.md
ArcReady includes good and bad fixtures for wallet, bridge, and App Kit integrations:
corepack pnpm validate:fixtures
Good fixtures should pass with zero findings. Bad fixtures should produce findings and fail according to their expected result.
Contributions should keep ArcReady focused and conservative:
- keep rules Arc-specific
- prefer precise findings over noisy checks
- add or update tests for rule or message changes
- keep reporter schemas and CLI behavior stable unless a task explicitly changes them
- do not add SaaS, dashboard, auth, database, telemetry, or runtime validation features
Development commands:
corepack pnpm build corepack pnpm test corepack pnpm lint corepack pnpm validate:fixtures
ArcReady is an independent open-source project. It is not an official Circle or Arc product, and its static findings should be treated as developer-side release checks rather than official validation.
MIT