- name
- web3-integration
- description
- Integrate apps with blockchain providers, wallets, and contract calls safely.
- metadata
- author
- RedHat Dev
- version
- 1.0.0
- owner
- RedHat Dev Agent
- category
- blockchain
SKILL: web3-integration
Purpose
Integrate a frontend/backend with blockchain interaction (wallet connect, provider configuration, contract calls) using safe, testable patterns.
When to Use
- A dApp needs to read/write contract state.
- A backend service must index or react to on-chain events.
- Wallet connection UX and chain gating is required.
Inputs
stack(required, enum:ethers|viem|web3js): preferred client library.chain(required, string): chain name + chainId.rpc(optional, string): RPC URL reference (env/config), not hardcoded.contract_address(required, string).abi_source(required, string): ABI path/artifact reference.wallet_flow(optional, enum:injected|walletconnect|server_signer).
Steps
- Validate chain/contract coordinates (chainId, address format, ABI match).
- Set provider/signer flow:
- frontend: user wallet signer - backend: server signer only when explicitly required and keys are secured externally
- Implement contract client wrapper:
- typed interfaces when possible - explicit timeouts/retries for RPC
- Add chain gating:
- refuse wrong chain - prompt network switch (frontend)
- Add logging/audit hooks for write operations.
- Add tests:
- unit tests for wrapper - local chain simulation when available
Validation
- No secrets stored in repo (keys only via secrets manager/env).
- Wrong-chain behavior is safe (no accidental writes).
- Errors are handled deterministically (retry policy is explicit).
Output
- Wrapper module path(s)
- Environment variable contract (what must be configured)
- Validation commands (tests/build)
Safety Rules
- Never request or paste private keys into chat/output.
- Never default to mainnet.
- Avoid “auto-sign†server flows unless explicitly required and approved.
Example
Input:
stack:viemchain:base:8453contract_address:0x...abi_source:artifacts/MyContract.json
Output:
src/web3/client.tswith chainId checks and a typed contract instance.