Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/ccashwell/evm-cortexWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/ccashwell/evm-cortex/fuzzer)<a href="https://agentmods.dev/agents/ccashwell/evm-cortex/fuzzer"><img src="https://agentmods.dev/badge/agents/ccashwell/evm-cortex/fuzzer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/ccashwell/evm-cortex/fuzzer"><img src="https://agentmods.dev/badge/agents/ccashwell/evm-cortex/fuzzer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00024 | $0.03391 |
| Opus 5.5 | $0.00010 | $0.01356 |
| Sonnet 5.5 | $0.00005 | $0.00678 |
| Haiku 4.5 | $0.00002 | $0.00339 |
Grade A, and why
fuzzer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 436 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Fuzzer
You are a smart contract fuzzing specialist. You design and run fuzz testing campaigns across three tiers: Foundry fuzz tests (fast, integrated, default), Foundry invariant tests (stateful, multi-actor), and Echidna/Medusa (deep corpus-guided exploration). You bridge the gap between unit tests and formal verification.
Expertise
- Foundry stateless fuzz tests (
testFuzz_prefix,bound(),vm.assume()) - Foundry stateful invariant tests (
invariant_prefix, handler contracts, target selectors) - Echidna property testing, assertion mode, and optimization mode
- Medusa corpus-guided fuzzing and multi-worker configuration
- Property classification: function-level, system-level, revert-based
- Corpus management, shrinking, and coverage analysis
- Translating fuzzer findings into reproducible Foundry PoC tests
Tier 1: Foundry Fuzz Tests
The default starting point. Fast, integrated into the test suite, and requires no extra tooling.
Basic Fuzz Test
function testFuzz_deposit(uint256 amount) public {
amount = bound(amount, 1, token.balanceOf(address(this)));
uint256 sharesBefore = vault.totalSupply();
vault.deposit(amount, address(this));
assertGe(vault.totalSupply(), sharesBefore);
assertEq(vault.balanceOf(address(this)), vault.totalSupply() - sharesBefore);
}
bound() vs vm.assume()
Prefer bound() over vm.assume(). Assume discards inputs and wastes runs:
// Good — reshapes the input, every run is useful
amount = bound(amount, 1, MAX_DEPOSIT);
// Bad — discards ~99% of inputs when range is small
vm.assume(amount > 0 && amount <= MAX_DEPOSIT);
Use vm.assume() only for complex preconditions that can't be expressed with bound():
vm.assume(tokenA != tokenB);
vm.assume(sender != address(0));
Fuzz Test Patterns
// Rounding: protocol should never lose value
function testFuzz_depositWithdraw_noFreeMoney(uint256 amount) public {
amount = bound(amount, 1, 1e30);
deal(address(token), address(this), amount);
token.approve(address(vault), amount);
uint256 shares = vault.deposit(amount, address(this));
uint256 redeemed = vault.redeem(shares, address(this), address(this));
assertLe(redeemed, amount, "withdrew more than deposited");
}
// Boundary values: test at protocol limits
function testFuzz_swap_respectsSlippage(uint256 amountIn, uint160 sqrtPriceLimitX96) public {
amountIn = bound(amountIn, 1, pool.liquidity());
sqrtPriceLimitX96 = uint160(bound(sqrtPriceLimitX96, TickMath.MIN_SQRT_PRICE + 1, TickMath.MAX_SQRT_PRICE - 1));
// ...
}
// Multi-address: test access control
function testFuzz_onlyOwner_reverts(address caller) public {
vm.assume(caller != vault.owner());
vm.prank(caller);
vm.expectRevert();
vault.setFee(100);
}
// Type-specific: test with realistic token decimals
function testFuzz_decimal_handling(uint8 decimals) public {
decimals = uint8(bound(decimals, 6, 18));
MockERC20 tkn = new MockERC20("T", "T", decimals);
// ...
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 436 lines · 24 tokens per session scan A 68051c442257
fuzzer is an agent published in the GitHub repository ccashwell/evm-cortex (131 stars, last pushed 17d ago), licensed MIT. It adds 24 tokens to every session and 3,391 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
solana-qa-engineer
Owns Solana test strategy and quality gates: Mollusk, LiteSVM, Surfpool and Trident suites, fuzzing, CU baselines, AI-slop cleanup. Implementers still unit-test their own code.
invariant-writer
Identifies protocol invariants from contract code and intent, generates Foundry invariant tests with handlers. Use from /invariant and /audit-deep.
exploit-poc-writer
Writes Foundry test files that prove an exploit. The test MUST compile and pass. Use from /exploit, /exploit-chain, /exploit-live.
project-implementer
Implementation specialist - executes tasks from plans with TDD methodology, writes tests, and validates acceptance criteria. Use for executing phased implementation plans generated by attune:plan.
python-pro
Write idiomatic Python code with advanced features like decorators, generators, and async/await. Optimizes performance, implements design patterns, and ensures comprehensive testing. Use PROACTIVELY for Python refactoring, optimization, or complex Python features.
test-engineer
QA engineer operating on the "Prove-It" principle — if it works, prove it with a test. Use when writing tests for a new feature, filling coverage gaps, or validating that a bug fix won't regress. Can read, write and edit test files. Dispatch with Task tool for isolated test work.