skills/vulnerability-patterns/default-visibility/SKILL.md
- Functions or state variables are declared without an explicit visibility specifier
npx skillsauth add apegurus/solidity-argus default-visibilityInstall 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.
public)internal, but developer may have intended private)// Solidity <0.5.0: function defaults to public
contract Wallet {
address owner;
// No visibility specified — defaults to public
// Anyone can call this and take ownership
function initWallet(address _owner) {
owner = _owner;
}
// Internal helper exposed as public by default
function _sendFunds(address to, uint256 amount) {
payable(to).transfer(amount);
}
}
public, external, internal, or private keywordsinternalpublic by default_ (convention for internal) that lack the internal keywordinternal and correctly defaults to internalpubliccontract Wallet {
address private owner;
function initWallet(address _owner) internal {
owner = _owner;
}
function _sendFunds(address to, uint256 amount) private {
payable(to).transfer(amount);
}
}
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.