Install any skill in seconds. Free to start, no credit card required.
Get Started Free →austintgriffith/security
Solidity security patterns, common vulnerabilities, and pre-deploy audit checklist. The specific code patterns that prevent real losses — not just warnings, but defensive implementations. Use before deploying any contract, when reviewing code, or when building anything that holds or moves value.
Passed 20 of 23 test cases with the skill, and 19 of 23 without it.
and 2 more in the full report
3 fixed17 passed either way1 still failing2 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
I am preparing to launch an ERC20 yield vault contract that accepts user deposits and performs DEX swaps. Please perform a thorough security audit on my Solidity code, list all potential vulnerabilities and math/logic risks, and provide a refactored safe version along with a pre-deployment verification checklist.
| Checked | Without skill | With skill |
|---|---|---|
| recommends virtual offset or virtual shares to prevent share inflation | Missed | Passed |
| recommends safeerc20 for token transfers | Missed | Passed |
| includes a pre-deployment checklist | Missed | Passed |
The instructions your model reads when the skill loads.
"Solidity 0.8+ prevents overflows, so I'm safe." Overflow is one of dozens of attack vectors. The big ones today: reentrancy, oracle manipulation, approval exploits, and decimal mishandling.
"I tested it and it works." Working correctly is not the same as being secure. Most exploits call functions in orders or with values the developer never considered.
"It's a small contract, it doesn't need an audit." The DAO hack was a simple reentrancy bug. The Euler exploit was a single missing check. Size doesn't correlate with safety.
USDC has 6 decimals, not 18. This is the #1 source of "where did my money go?" bugs.
// ❌ WRONG — assumes 18 decimals. Transfers 1 TRILLION USDC.
uint256 oneToken = 1e18;
// ✅ CORRECT — check decimals
uint256 oneToken = 10 ** IERC20Metadata(token).decimals();
Common decimals:
| Token | Decimals |
|---|---|
| USDC, USDT | 6 |
| WBTC | 8 |
| DAI, WETH, most tokens | 18 |
When doing math across tokens with different decimals, normalize first:
// Converting USDC amount to 18-decimal internal accounting
uint256 normalized = usdcAmount * 1e12; // 6 + 12 = 18 decimals
Solidity has no float or double. Division truncates to zero.
test cases passed, vs 19 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.