omermaksutii/rugproof/oracle-manipulation
Claude Code and agent skill by omermaksutii/rugproof
- community
Checking that the SKILL.md file is still in the repository.
Detect oracle manipulation risks — spot-price reads from AMMs, stale Chainlink answers, single-source dependence, TWAP gaming. Activate whenever code reads a price, conversion rate, exchange rate, or `getReserves`, `latestAnswer`, `latestRoundData`, `consult`, `quote`, `slot0`, `observe`, `getAmountsOut`.
Install
npx vskill@latest install omermaksutii/rugproof/oracle-manipulationSKILL.md
The same SKILL.md was published earlier as iktok90-design/ai-smart-contract-auditor/oracle-manipulation.
Oracle manipulation detection
When this applies
Any code that consumes a price feed or derives a price from on-chain state:
- Chainlink:
latestAnswer,latestRoundData,getRoundData - Uniswap V2:
getReserves,getAmountsOut,price0Average - Uniswap V3/V4:
slot0,observe,consult - Curve:
get_virtual_price,get_dy - Balancer:
getRate - Custom oracle modules, on-chain TWAPs
- LP token pricing, collateral valuation, liquidation thresholds, mint/burn rates
Detection patterns
Spot price from AMM (CRITICAL — funds at risk)
Stale Chainlink data (HIGH)
Required checks:
updatedAt != 0block.timestamp - updatedAt <= heartbeat(with chain-specific tolerance)answeredInRound >= roundIdanswer > 0- Heartbeat sanity: ETH/USD is 1h on mainnet but 24h on some L2s — verify
latestAnswer (deprecated, no freshness) (HIGH)
Single-source dependence (HIGH)
Only one oracle, no fallback, no cross-check against a second source.
Uniswap V3 slot0 without TWAP (CRITICAL)
Use observe() for TWAP with sufficient lookback (≥30min for shallow pools).
Insufficient TWAP window (HIGH)
TWAP < 5 min on volatile assets or low-liquidity pools is gameable across two blocks.
Read-only reentrancy on oracle (HIGH)
Reading getVirtualPrice / getReserves mid-callback — see [[reentrancy]] §Read-only.
LP token priced via reserves directly (CRITICAL)
LP token price should use the fair LP price formula (Alpha Homora's method), not reserve / totalSupply.
Price scaling errors (HIGH)
Chainlink answers come in feed-specific decimals; mixing ETH/USD (8 decimals) with token (18 decimals) without normalizing produces silent off-by-1e10 errors.
Sequencer uptime ignored (HIGH on L2s)
On Arbitrum, Optimism, Base — must check SequencerUptimeFeed to avoid stale prices when sequencer is down.
Severity rubric
| Pattern | Severity | |
|---|---|---|
| Spot-price from AMM used in liquidation/mint | Critical | |
Uniswap V3 slot0 used for collateral pricing | Critical | |
LP token priced via raw reserve / totalSupply | Critical | |
latestRoundData without freshness/round checks | High | |
| Single oracle, no fallback, financial-critical path | High | |
| Sequencer uptime check missing on L2 | High | |
| Insufficient TWAP window (<5min on shallow pool) | High | |
| Stale heartbeat for known-volatile asset | High | |
latestAnswer (deprecated) used | Medium | |
| Decimal-scaling mistake | High |
Remediation patterns
- For Chainlink: validate
(roundId, answer, , updatedAt, answeredInRound)— guard against stale + zero + non-positive + round-mismatch. - Use multiple oracles with deviation check (e.g. Chainlink + Uniswap V3 TWAP with ≥30min window).
- For LP tokens, use fair-LP-price math:
2 * sqrt(r0 * r1 * p0 * p1) / totalSupply. - On L2s, integrate Chainlink's
SequencerUptimeFeed(Arbitrum, Optimism, Base). - Avoid
slot0and spot-price reads for anything that affects user funds.
False-positive notes
- Display-only prices (UI/event metadata, not affecting fund flow) — Info-only.
getReservesused purely for ratio diagnostics with no downstream effect — Info.
Related
- [[flash-loan-attacks]] — most oracle attacks are funded by flash loans
- [[reentrancy]] — read-only reentrancy is an oracle-staleness issue
- [[mev-frontrunning]] — TWAP-window timing
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/oracle-manipulation/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/omermaksutii/rugproof/oracle-manipulation)