Route Data Feed requests to the simplest valid path. Generate working code on first attempt when possible. Fetch documentation only when a specific gap blocks progress.
Progressive Disclosure
Keep this file as the default guide.
Read references/reading-price-feeds.md only when the user wants to read a price feed on EVM, write a consumer contract, read off-chain, look up AggregatorV3Interface, or debug a price feed integration.
Read templates/starter-kit/README.md and the files in templates/starter-kit when the user asks for a working example project, Foundry starter kit, runnable Data Feeds example, or says something like "give me a working example of a data feeds project." Use this starter-kit template instead of inventing project scaffolding.
Read references/mvr-feeds.md only when the user asks about Multiple-Variable Response feeds, bundle feeds, or BundleAggregatorProxy.
Read references/svr-feeds.md only when the user asks about Smart Value Recapture, OEV recapture, or searcher onboarding.
Read references/feed-types.md only when the user asks about feed categories, SmartData/RWA, rates/volatility, tokenized equity feeds, or needs help choosing a feed type.
Read references/multi-chain.md only when the user targets Solana, StarkNet, Aptos, or Tron.
Read references/feed-operations.md only when the user asks about L2 sequencer uptime checks, feed deprecation, contract registry, developer responsibilities, or data sources.
Read references/official-sources.md only when the answer depends on live data that the reference files do not contain -- feed addresses for a specific chain, current deprecation schedules, specific network parameters.
10. Read references/source-code.md only when debugging interface mismatches or the user needs to inspect contract source code on GitHub.
11. Do not load reference files speculatively.
Routing
Use reading-price-feeds.md as the default for any EVM price feed request — this covers the vast majority of Data Feeds use cases.
Use templates/starter-kit for project-level example requests, especially Foundry starter requests. Return a concise file tree, the relevant template files, install/test commands, and the Sepolia ETH/USD feed configuration unless the user asks for another chain.
Route to the chain-specific section of multi-chain.md for non-EVM chains (Solana, Aptos, StarkNet, Tron).
Route to mvr-feeds.md for bundle or multi-variable feed requests.
Route to svr-feeds.md for OEV or MEV recapture requests.
Route to feed-operations.md for operational concerns (L2 sequencer checks, deprecation, monitoring).
Ask one focused question if the chain, feed type, or integration method is unclear.
Proceed without asking for read-only work: explanations, code generation, debugging.
Safety Defaults
These are non-negotiable in generated code. Every consumer contract or integration must include them.
Always validate freshness: check updatedAt against a staleness threshold based on the feed's heartbeat. Never skip this.
Always call decimals() on the feed: never hardcode decimal counts. Different feeds use different decimals.
On L2 chains (Arbitrum, Optimism, Base, Scroll, etc.): always include an L2 Sequencer Uptime Feed check with a grace period after recovery.
Never use answeredInRound for freshness validation — this field is deprecated.
Remind users that example code is unaudited and not for production use without a security review.
If the user is targeting mainnet, emphasize developer responsibilities and recommend a security audit.
Documentation Access
This skill references official Data Feeds documentation URLs throughout its reference files. Whether the model can fetch those URLs depends on the host agent's capabilities.
If WebFetch, a browser tool, or an MCP server that can retrieve documentation is available, use it to fetch the referenced URL before answering.
If no documentation-fetching tool is available, do not silently improvise Data Feeds patterns from training data alone. Instead:
Use the embedded reference content in this skill's reference files as the floor for guidance.
Tell the user that live documentation could not be verified.
Provide the specific URL so the user can check it directly.
For contract-first workflows where correctness matters most, prefer the concrete examples in references/reading-price-feeds.md over generating patterns from memory.
Working Rules
Generate working code from knowledge and reference files first. Fetch only when a specific detail is missing.
Treat 0-1 fetches as normal, 2-3 as the ceiling. Most questions need no fetches because the reference files contain the implementation guidance.
When a fetch is needed, apply the cascade: WebFetch first; if it returns <1000 chars of useful content, fall back to curl -s -L -A "Mozilla/5.0 ..." "<url>"; if both fail, report the URL to the user.
Keep answers proportional — a simple "read a price feed" question gets a code block and brief explanation, not a full tutorial.
Generate code only when code is actually needed.
Keep unsupported or out-of-scope features out of the answer rather than speculating.
When using the starter-kit template, preserve its Foundry layout and contract names unless the user asks for a different framework. The template is based on the Chainlink Foundry Starter Kit PriceFeedConsumer.sol example, with the required Data Feeds validation added for safer generated code.
How to use it
Copy the folder
Take smartcontractkit/chainlink-data-feeds-skill from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.