Solidity smart contract development workflow. Use when modifying smart contracts in apps/erc20-token/contracts/.
Workflow for Solidity smart contract changes in the apps/eth-contracts/ Foundry project.
Use git-workflow Skill for branch management, commit conventions, and PR creation.
| Path | Description |
|---|---|
apps/eth-contracts/contracts/ |
Smart contract source files |
apps/eth-contracts/script/ |
Foundry deployment scripts |
apps/eth-contracts/test/ |
Foundry test files (*.t.sol) |
| Tool | Version | Role |
|---|---|---|
Foundry (forge) |
1.6.0-nightly | Compile, test, deploy |
| Solidity | ^0.8.34 |
Smart contract language |
| OpenZeppelin Contracts | ^5.6.1 |
ERC-20 / standard base contracts |
| bun | primary | npm package manager |
| solhint | ^6.0.3 |
Solidity linter |
| dprint | ^0.52.0 |
JS/TS formatter |
Note:
forgeis installed at~/.foundry/bin/forge(may not be in PATH). Run with full path or add~/.foundry/bintoPATH.
cd apps/eth-contracts
# 1. Install forge-std (Foundry testing/scripting library)
forge install foundry-rs/forge-std
# 2. Install npm dependencies (@openzeppelin/contracts, solhint, dprint)
bun install
cd apps/eth-contracts
forge build # Compile all contracts (artifacts → out/)
forge test -v # Run Foundry unit tests
bun run lint # Solidity lint via solhint (must exit 0, zero errors)
bun run fmt # Format JS/TS files via dprint (must exit 0)
cd apps/eth-contracts
export PRIVATE_KEY=0x<deployer-private-key>
forge script script/DeployHYC.s.sol --rpc-url http://localhost:8545 --broadcast
# → outputs contract address, tx hash, gas usage
Compatible with both anvil and geth nodes at http://localhost:8545.
import {Foo} from "...") — no global imports@title, @author, @notice, @param) on contracts and public functions.env added to .gitignoretest/*.t.sol) covers all acceptance criteriaforge test passes with zero failuresbun run lint exits 0 with zero solhint errorsAfter contract changes, if Go bindings are needed:
# 1. Compile
cd apps/eth-contracts
forge build
# 2. Regenerate Go bindings (if target ABI changed)
make gen-abi
anvil, geth at http://localhost:8545git-workflow - Branch, commit, PR workflowgithub-issue-creation - Task classification