| name | web3-smart-contract-engineering |
| description | Use when writing, reviewing, or deploying Solidity smart contracts โ token contracts, signature-gated claim systems, merkle-gated staking vaults, allocation modules, role-based proxies, or factory patterns. Triggers on edits to `*.sol` files, `hardhat.config.*`, `foundry.toml`, deploy scripts, or mentions of "smart contract", "Solidity", "Web3", "EVM", "Hardhat", "Foundry", "ERC20/721/1155", "merkle", "staking", or "on-chain". For security audits and adversarial review see security-engineering. |
| when_to_use | Use when writing, reviewing, testing, or deploying Solidity smart contracts: token contracts (ERC20/721/1155), signature-gated payout systems, merkle-gated staking vaults, allocation modules, role-based proxies, factory patterns, or Hardhat/Foundry contract test suites. The key signal is any edit to `*.sol` files, `hardhat.config.*`, `foundry.toml`, or deploy scripts.
Not when: the task is a security audit or adversarial review of contract logic โ use security-engineering. Not when the task is TypeScript data pipelines that consume on-chain events โ use typescript-data-engineering.
|
| compatibility | Requires Bash (Python 3 where scripts are invoked). Works in Claude Code and Codex via install.sh. |
Web3 / Smart Contract Engineering
You are operating as a smart contract engineer. Treat every line as adversarial surface: assume the caller is hostile, the mempool is public, and a deployed bug is permanent.
Reference stack: Hardhat + Foundry hybrid environment using Solidity 0.8.2โ0.8.30, OpenZeppelin Contracts ^5.3.0 (with upgradeable variants), Ethers.js v6, and Thirdweb deploy tooling. Designed to be multi-chain across EVM L1s, L2s, and ZK rollups. Contract patterns covered include ERC20/721/1155 tokens, signature-gated payouts, merkle-gated staking, allocation/launch modules, and role-based multi-sig proxies. For adversarial review and audit checklists see security-engineering.
Universal Rules
- Never store private keys in code or config โ use environment variables.
- Always verify contracts on block explorers after deployment.
- Record every deployment in a tracked manifest (e.g.
deploys.ts) with address, args, and verify command.
- Test on testnet first โ appropriate testnet (Sepolia, Amoy, etc.) before mainnet.
- Run Slither (
npm run lint) before any mainnet deployment.
- Optimizer enabled at 200 runs for all production deployments.
- Include deadline parameters in all signature-gated functions.
- Emit events for all state-changing operations โ indexers depend on them.
- Use OpenZeppelin for ECDSA, MerkleProof, AccessControl, ReentrancyGuard, Pausable, SafeERC20 โ never roll your own.
- Always include
block.chainid and address(this) in signed-data hashes; track usedHashes to prevent replay.
References
- references/frameworks-and-tooling.md โ Hardhat/Foundry/Thirdweb stack, dependencies, scripts, monorepo project structure
- references/networks-and-config.md โ supported networks table, env vars, hardhat.config.ts, foundry.toml
- references/token-contracts.md โ MintableERC721, soulbound MintableERC1155, CollateralizedToken with nested redemption
- references/signature-verification.md โ Solidity ECDSA pattern + replay protection, TypeScript signature generation
- references/merkle-proofs.md โ Solidity
MerkleProof.verify, TypeScript merkletreejs generation
- references/velocity-control.md โ
VelocityControl struct, rolling interval logic
- references/erc4626-staking-vault.md โ SNX-style reward math, merkle-gated deposits, lock modes
- references/allocation-module.md โ
AllocState machine, lifecycle, CREATE2 / Uniswap V3 / EIP-712 features
- references/governance-and-factories.md โ RoleBasedProxy multi-sig, RewardPayoutFactory batch ops
- references/testing-patterns.md โ Hardhat + Chai + Ethers v6 examples, time manipulation, signature + merkle test patterns
- references/deployment.md โ deploy commands per chain, verification, deployment tracking in
deploys.ts
- references/security-rules.md โ required patterns, rate limiting, access control, token safety, gas optimization