security
Use when designing, implementing, or reviewing Solidity contracts that hold assets, account for shares or debt, read price oracles, verify signatures…
Skill by BuidlGuidl
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/buidlguidl-security
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design, testing, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/security
What's inside
- Skill name
security- Description
- Use when designing, implementing, or reviewing Solidity contracts that hold assets, account for shares or debt, read price oracles, verify signatures, integrate ERC-20s, or sit behind upgradeable proxies, and for a pre-deployment security review. Not for test-suite design (`/testing`) or a full audit report (`/audit`).
- License
- MIT
- Instructions
- 53 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Smart Contract Security Treat every external token, price, signature, callback, and privileged caller as adversarial. Prefer audited OpenZeppelin primitives over hand-rolled implementations, but verify the installed library version and the assumptions around each primitive. ## Asset accounting - Keep units explicit. ERC-20 decimals and oracle decimals vary; normalize every quantity to one documented scale before comparing collateral, debt, fees, or shares. Multiply before dividing and use full-precision `mulDiv` where intermediate overflow or rounding matters. - For arbitrary ERC-20s, use `SafeERC20.safeTransfer` and `safeTransferFrom`. Credit deposits from the contract's balance delta, not the requested amount, or reject tokens whose received amount differs. Fee-on-transfer and rebasing tokens otherwise break custody accounting. - On OpenZeppelin Contracts v5, use `SafeERC20.forceApprove` when an allowance may already be nonzero. `safeApprove` was removed. Keep approvals exact or bounded and clear leftovers when practical. - Apply checks-effects-interactions and a reentrancy guard to value-moving entry points. Update shares, debt, and other accounting before external calls. For a vault or receipt-token design, start from OpenZeppelin `ERC4626`. A hand-rolled vault must defend its empty state against first-depositor donation/inflation attacks with virtual assets and shares or another explicit mitigation. Test direct donations and rounding at small deposits; never use an unprotected `assets * totalSupply / totalAssets` conversion with a special 1:1 empty-vault path. ## Prices and liquidations Never use a DEX spot read (`slot0`, reserves, balances, or a current quote) for collateral, borrowing, minting, or liquidation decisions. Pool depth does not fix atomic manipulation: flash-borrowed capital can move the price, exploit the dependent action, unwind, and repay inside one transaction before arbitrage can intervene. Use a manipulation-resistant push feed for high-value decisions, or a meaningful TWAP when its weaker guarantees fit the risk. For every feed: - require a positive answer; - validate `updatedAt` against a per-feed maximum age derived from that feed's published heartbeat plus a justified margin—never one global hardcoded timeout; - handle feed and token decimals explicitly; - define behavior for sequencer downtime where relevant; and - bound liquidation incentives and any swap's minimum output. ## Signatures and replay protection Use EIP-712 and OpenZeppelin's implementation rather than assembling signature recovery from scratch. Bind the signed action to the intended contract and chain, consume a signer-scoped nonce, enforce a deadline, and update replay state before moving assets. If a domain separator is cached, also cache the deployment chain id and re-derive the separator whenever `block.chainid` differs. An immutable separator computed only at deployment becomes stale after a fork. OpenZeppelin `EIP712` handles this invalidation. ## Upgradeability and authority Use an upgradeable design only when post-deployment changes are required. With proxies: - initialize through an initializer and disable initializers on the implementation; - use the upgradeable variants of inherited contracts; - preserve inheritance order and storage layout—append variables only; never insert, delete, reorder, or change an existing type; - run the framework's storage-layout compatibility check before every upgrade; and - put upgrade and emergency authority behind the intended multisig or timelock, not a single EOA. Every privileged state change needs explicit access control. Make pause, upgrade, rescue, oracle-update, and parameter-update powers visible in the threat model; a safety switch controlled by one key is also a censorship and compromise risk. Never `delegatecall` to a user-selected target. ## Before deployment - Trace assets, shares, debt, approvals, callbacks, and privilege through every success and failure path. - Test zero, maximum, rounding, donation, fee-on-transfer, stale-price, replay, reentrancy, and unauthorized-caller cases that apply. - Run unit, fuzz, invariant, and pinned-fork tests appropriate to the integrations; use the `testing` skill for suite design. - Run static analysis and resolve every high or medium finding or document why it is a false positive. - Verify deployed bytecode and transfer production authority to the intended multisig or timelock. - For a comprehensive pre-deployment review across domains, use the `audit` skill.
From BuidlGuidl/ethskills-evals, MIT.
More from BuidlGuidl/ethskills-evals
- 0.547score
wallets
BuidlGuidl
Use when deciding who or what may sign for funds: an agent or script signing unattended, a treasury's custody, a multisig's owners and threshold, a private…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
benchmark-major-refine
BuidlGuidl
Run the major-refine benchmark (issue #119) for one skill on one of its four stacks — no skill vs the first vendored skill text vs the refined one, every live…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
ship
BuidlGuidl
Use before implementation, or when a build lacks these decisions: what goes onchain, the minimal contract surface, who triggers each state transition and why…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
standards
BuidlGuidl
Use when a design needs agent identity or reputation, pay-per-call HTTP payments, USDC transfers from a wallet that holds no ETH, or contract abilities on an…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
tools
BuidlGuidl
Use when picking or installing packages, versions, or a scaffold for an Ethereum project, when wiring an agent to read onchain data, or when asking what to…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
audit
BuidlGuidl
Use when asked to audit or security-review EVM smart contracts: find vulnerabilities, judge exploit impact, or produce a ranked audit report.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
concepts
BuidlGuidl
Use when designing or explaining anything onchain that has to keep working with nobody running it: who calls each function and why they would, where…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
frontend-playbook
BuidlGuidl
Use when working inside a Scaffold-ETH 2 app: running it against a local chain or a fork of a real chain, demoing on that fork, or shipping it as a static…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
frontend-ux
BuidlGuidl
Use when building, fixing, or reviewing how an Ethereum dApp frontend behaves for its users: product identity, address inputs that resolve names, token…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
gas
BuidlGuidl
Use when quoting a gas or dollar cost for a transaction or deployment, when cost is the reason to pick mainnet over an L2, when setting EIP-1559 fee fields or…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
indexing
BuidlGuidl
Use when building anything that reads past onchain activity: feeds, leaderboards, dashboards, analytics.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
l2s
BuidlGuidl
Use when choosing an Ethereum L2, deploying the same app across chains, or moving funds between an L2 and mainnet — which chain fits the binding constraint…
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 1
- Open issues
- 4
- Last commit (this folder)
- Sep 18, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/BuidlGuidl/ethskills-evals
- Website
- ethskills-evals.vercel.app
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from BuidlGuidl
- 0.547score
frontend-playbook
BuidlGuidl
Use when working inside a Scaffold-ETH 2 app: running it against a local chain or a fork of a real chain, demoing on that fork, or shipping it as a static…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
frontend-ux
BuidlGuidl
Use when building, fixing, or reviewing how an Ethereum dApp frontend behaves for its users: product identity, address inputs that resolve names, token…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
audit
BuidlGuidl
Use when asked to audit or security-review EVM smart contracts: find vulnerabilities, judge exploit impact, or produce a ranked audit report.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
benchmark-major-refine
BuidlGuidl
Run the major-refine benchmark (issue #119) for one skill on one of its four stacks — no skill vs the first vendored skill text vs the refined one, every live…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
concepts
BuidlGuidl
Use when designing or explaining anything onchain that has to keep working with nobody running it: who calls each function and why they would, where…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
gas
BuidlGuidl
Use when quoting a gas or dollar cost for a transaction or deployment, when cost is the reason to pick mainnet over an L2, when setting EIP-1559 fee fields or…
SkillBFreshness: B★ 1Claude Code +9
Cite this page
security skill. Agent Mart. https://agentmart.dev/skills/buidlguidl-security (last updated 2026-10-24)