Chainlink Data Feeds Skill
Progressive Disclosure
| Request / triggers | Load |
|---|---|
| EVM read, consumer contract, off-chain read, address lookup/debugging | price feeds |
| Working Foundry/Data Feeds project | Load the starter README and every listed file; reply with their contents or a tailored derivative, never a local/absolute path alone. Preserve layout and include install/test/deploy commands, Sepolia ETH/USD or verified named-network lookup, unaudited/not-for-production warning, and L2 sequencer protection. |
Multiple-Variable Response, multi-variable feed, BundleAggregatorProxy | MVR |
| Smart Value Recapture, OEV/MEV recapture, searcher onboarding | SVR |
| Feed categories/selection, SmartData/RWA, rates/volatility, tokenized equity | types |
| Solana, StarkNet, Aptos, Tron, Move, Cairo, Anchor, TronBox | multi-chain |
| L2 sequencer, deprecation, monitoring, registry, responsibilities, data sources, self-managed feeds | operations |
| Live addresses/schedules/parameters; interface/signature mismatch, proxy/aggregator source, GitHub example | official sources |
Do not load references speculatively. Default EVM requests to price feeds; ask only when routing depends on missing context.
Do not assume this skill is the only capability available.
Hand CCIP/bridge, VRF, Automation, and Functions requests to their owning products exclusively, giving each product's standard next steps from general knowledge; emit no Data Feeds or weaker substitute and never improvise live constants.
When a user requests Data Feeds code or operational steps, emit that deliverable in the response; never replace it with a status or completion summary.
For MVR requests, choose the MVR route even when a live address, feed ID, or schema cannot be verified; use clearly marked placeholders for unverified values and continue with all requested design, consumer code, tests, and configuration instead of stopping at verification.
Every SVR response must emit the exact standalone sentence Complete the Chainlink compatibility form before any onboarding or address-migration guidance.
For a configuration-focused SVR protocol integration or migration, give concise configuration, onboarding, verification, and safety steps plus only the minimal address/configuration delta; do not emit a full consumer unless the user explicitly requests one. Keep auction mechanics high-level and exclude searcher-only selectors, WebSocket endpoints, signing instructions, and MEV-Share/Atlas bot implementation details unless the user explicitly asks to build or operate a searcher.
Safety rules
- Validate
updatedAtagainst the feed heartbeat; reject incomplete or stale rounds. - Call
decimals()at runtime; never hardcode decimals. - On L2, always use
AggregatorV2V3Interfacefor the sequencer uptime feed—neverAggregatorV3Interface; rejectanswer != 0and enforce the 3600-second recovery grace period. - Never use deprecated
answeredInRoundfor freshness or other logic. - For an implicit current-price Solidity getter, use the exact named-return form
returns (int256 price, uint8 decimals); declareuint256 updatedAt;first, then assign(, price,, updatedAt,) = dataFeed.latestRoundData();. Do not substitute an unnamed-return or alternate compiling tuple form. - Warn that examples are unaudited and not for production; mainnet integrators own audits, dependencies, monitoring, circuit breakers, contingencies, and user risk disclosure.
Freshness policy
- Use embedded references first.
- Fetch the smallest official URL for a live gap.
- If insufficient, use Context7.
- Never improvise live facts or patterns.
- If unverified, say so and name the URL.
Invariants
- Read EVM proxies, not underlying aggregators.
- Preserve the starter kit layout/README invariants; replace illustrations and tune heartbeat/mock values.
- Use
AggregatorV3Interfacefor single values,IBundleAggregatorProxyfor MVR, andAggregatorV2V3Interfacefor sequencer uptime. - A live feed address in config must be copied from the official address page fetched in this turn. When that page lists more than one contract for the pair, use the contract for the product the user asked for. A normal price read uses the standard proxy, not an SVR, backup, or legacy proxy. If the page was not fetched, use a placeholder and say the address is unverified. Never present a remembered address as the verified current feed.
- Verify unknown feed IDs, schemas, parameters, and support.