example-fork-detection
TEMPLATE — replace with the description of your rule. Should activate on the specific code patterns your fork has. Activate on `<your trigger keywords or…
Detect restaking / AVS bugs — EigenLayer / Symbiotic / Karak operator slashing edge cases, withdrawal-queue gaming, cascading-slashing across AVSs, LST depeg solvency, AVS opt-in granularity. Activate on EigenLayer / Symbiotic / Karak imports, StrategyManager, DelegationManager,
$ npx -y skills add omermaksutii/RugProof --skill restaking-eigenlayer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/restaking-eigenlayerContext preview
The summary Claude sees to decide when to auto-load this skill.
Detect restaking / AVS bugs — EigenLayer / Symbiotic / Karak operator slashing edge cases, withdrawal-queue gaming, cascading-slashing across AVSs, LST depeg solvency, AVS opt-in granularity. Activate on EigenLayer / Symbiotic / Karak imports, StrategyManager, DelegationManager,
name: restaking-eigenlayer description: Detect restaking / AVS bugs — EigenLayer / Symbiotic / Karak operator slashing edge cases, withdrawal-queue gaming, cascading-slashing across AVSs, LST depeg solvency, AVS opt-in granularity. Activate on EigenLayer / Symbiotic / Karak imports, StrategyManager, DelegationManager, EigenPod, AVS registration, slasher contracts.
User queues withdrawal, performs slashable action, unqueues if slashing didn't hit. Defense: slashing must apply to in-flight withdrawals too.
One operator opts into many AVSs. A slash by AVS-A reduces stake → AVS-B's quorum requirement may not be met. Solvency check before slashing.
Operator opts into a new AVS, exposing delegators to its slashing conditions without notice. Required: opt-in announcement + delegator-side withdrawal window.
Bad AVS spec slashes 100% on a single condition. With multiple AVSs sharing operator, this can drain the operator's restakers entirely. Cap per-slash magnitude.
Slashable conditions claim cryptographic provability. If proof is forgeable or the verifier has a bug, false slashing possible.
Strategy positions and delegation are separate. Race conditions between staking, delegating, and withdrawing. Off-by-one in undelegation queue can lock funds.
Beacon-chain withdrawal credentials must match EigenPod address. Mismatch → funds locked.
Operator can update commission instantly → flash-claim rewards at higher rate. Required: delay on commission updates.
Restaking accepts LSTs at face value. LST depeg → restaking is undercollateralized. Required: solvency check or repricing.
Different vault delegator types have different slashing semantics. Misconfiguration → slashing applies to wrong stakers.
DSS (Distributed Secured Service) registration without operator-consent check.
Slashing authority is a single EOA → can falsely slash. Required: timelock + multi-sig on slasher.
Operator queues large withdrawal just before a slashable event → effective slash magnitude reduced. Required: pre-slash freeze.
| Pattern | Severity | |---|---| | Slashing magnitude uncapped → drainable | **Critical** | | Slasher centralization (single EOA, no timelock) | **High** | | Cascading-slash insolvency on cross-AVS | **High** | | Operator opt-in without delegator notice/window | **High** | | Forgeable off-chain evidence in slashing | **High** | | Withdrawal-queue gaming | **High** | | LST depeg solvency unaccounted | **High** | | Commission update with no delay | **Medium-High** | | Pre-slash withdrawal grief | **Medium** |
Rugproof your code before someone else does. 🌐 Live site: omermaksutii.github.io/RugProof 📦 Latest: v1.0.0 — 45 commands · 23 agents · 45 skills · 13 MCP servers · tested, offline-first, with rule packs, a benchmark, non-EVM coverage, and post-deploy
Repo: omermaksutii/RugProof
TEMPLATE — replace with the description of your rule. Should activate on the specific code patterns your fork has. Activate on `<your trigger keywords or…
Detect unsafe assumptions about Solady's gas-optimized ERC20/ERC2612 permit and DN404 metadata. Solady's ERC20 uses custom storage slots, returns bools via…
Detect front-runnable ownership initialization in Solady Ownable / OwnableRoles. Solady's `_initializeOwner` is a guarded one-time setter (it reverts with…
Detect Solady SafeTransferLib calls that assume the token has code. SafeTransferLib.safeTransfer/safeTransferFrom/safeApprove deliberately skip the EXTCODESIZE…
Detect Uniswap V4 hooks that fail to settle currency deltas with the PoolManager. Every credit/debit a hook creates (BeforeSwapDelta, afterSwap hookDelta,…
Detect Uniswap V4 hooks whose address-encoded permission flags don't match the callbacks the hook actually implements. In V4 the hook's permissions live in the…