[AUTO-INVOKE] MUST be invoked BEFORE writing or modifying any test files (*.t.sol). Covers test structure, naming conventions, coverage requirements, fuzz testing, and Foundry cheatcodes. Trigger: any task involving creating, editing, or running Solidity tests.
MyToken.sol → MyToken.t.soltest/ directorytest_<feature>_<scenario> for passing tests, testFail_<feature>_<scenario> for expected reverts
test_transfer_revertsWhenInsufficientBalancetest_stake_updatesBalanceCorrectlysetUp() for shared state, no cross-test dependencies--match-test and --match-contract for targeted runsEvery core function must have tests covering:
| Scenario | What to verify |
|----------|---------------|
| Happy path | Standard input → expected output, correct state changes |
| Permission checks | Unauthorized caller → vm.expectRevert with correct error |
| Boundary conditions | Zero values, max values (type(uint256).max), off-by-one |
| Failure scenarios | Every require / revert / custom error path |
| State changes | Storage updates, balance changes, event emissions (vm.expectEmit) |
| Edge cases | Empty arrays, duplicate calls, self-transfers |
| Cheatcode | Usage |
|-----------|-------|
| vm.prank(addr) | Next call from addr |
| vm.startPrank(addr) | All calls from addr until vm.stopPrank() |
| vm.warp(timestamp) | Set block.timestamp |
| vm.roll(blockNum) | Set block.number |
| vm.deal(addr, amount) | Set ETH balance |
| vm.expectRevert(error) | Next call must revert with specific error |
| vm.expectEmit(true,true,false,true) | Verify event emission (topic checks) |
| vm.record() / vm.accesses() | Track storage reads/writes |
| makeAddr("name") | Create labeled address for readable traces |
function testFuzz_<name>(uint256 amount) publicvm.assume() to constrain inputs: vm.assume(amount > 0 && amount < MAX_SUPPLY);forge test --fuzz-runs 10000# Run all tests
forge test
# Run specific test function
forge test --match-test test_transfer
# Run specific test contract
forge test --match-contract MyTokenTest
# Verbose output with full trace
forge test -vvvv
# Gas report
forge test --gas-report
# Fuzz with more runs
forge test --fuzz-runs 10000
# Test coverage
forge coverage
# Coverage with report
forge coverage --report lcov
npx skills add 0xlayerghost/solidity-testing下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer