skills/vulnerability-patterns/floating-pragma/SKILL.md
- Deployable contract uses a floating or range pragma (e.g., `pragma solidity ^0.8.0`, `pragma solidity >=0.8.0`)
npx skillsauth add apegurus/solidity-argus floating-pragmaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
pragma solidity ^0.8.0, pragma solidity >=0.8.0)// Floating pragma — could compile with any 0.8.x version
pragma solidity ^0.8.0;
contract Token {
// May be compiled with 0.8.0 (tested) or 0.8.25 (untested)
// Different compiler versions may have different bugs or behavior
mapping(address => uint256) public balances;
}
// Range pragma — even wider range
pragma solidity >=0.7.0 <0.9.0;
pragma solidity declarations in all .sol files^, >=, >, or a range (e.g., >=0.8.0 <0.9.0), flag it as floatingpragma solidity 0.8.20; (exact version, no caret or range).sol files containing only interface definitions) may use floating pragmaspragma solidity 0.8.20;// Locked pragma — deterministic compilation
pragma solidity 0.8.20;
contract Token {
mapping(address => uint256) public balances;
}
testing
Specialist profile for mechanically applying the attack-vector deck and classifying vectors as skip, drop, or investigate.
tools
Specialist profile for libraries, helpers, base contracts, adapters, encoders, wrappers, and integration glue.
testing
Specialist profile for rounding, scale, decimal, downcast, and arithmetic accounting edge cases.
testing
Specialist profile for extracting conservation laws and state couplings, then searching for violating paths.