Back to Common Questions

How do I build a blockchain indexer with an AI coding assistant?

Updated August 2026

Install the open-source Substreams agent skills into your AI coding assistant, then describe the dataset you want in plain English. The assistant generates the manifest, protobuf schema, and Rust modules, builds the project, and runs it so you can check the output.

The skills are what make this work. Without them, a general-purpose assistant will guess at Substreams conventions and produce something that does not compile.

How do I install the skills?

Claude Code — add the marketplace and install the plugin:

claude plugin marketplace add streamingfast/substreams-skills
claude plugin install substreams-dev@streamingfast-substreams

Verify with /skills. You should see five entries.

Cursor — clone the repo and add the skill directory path in settings:

~/substreams-skills/skills/substreams-dev

VS Code — 1.107+ supports Claude Skills as an experimental feature. Enable it in settings and add the skill paths.

What are the five skills for?

SkillCovers
substreams-devManifests, Rust modules, protobuf schemas, performance
substreams-sqlPostgres and ClickHouse sink schemas, CDC, relational mappings
substreams-sinkConsuming output in Go, JavaScript, Python, Rust
substreams-sink-deployRunning sinks in production, backfill and live tailing
substreams-testingUnit, integration, and performance testing, CI/CD

Installing substreams-dev pulls all five.

What makes a good prompt?

Be specific. The published evaluation found that vague prompts produce confident guesses rather than clarifying questions — the assistant will silently pick thresholds and token universes rather than ask you.

Include: the chain, the contract address or program ID, the events or instructions you care about, the block range to test against, the output schema you want, and the destination. If downstream consumers depend on field names, state the schema explicitly rather than letting the assistant choose.

A prompt like "index whale activity" will produce something that runs and is probably not what you meant. "Emit every Transfer event from USDC on Ethereum between blocks 19000000 and 19001000, with fields from, to, amount_raw, tx_hash, into Postgres" will produce what you asked for.

What do I do with the result?

Review it, run it over a known block range, and compare the output against something you can verify independently — a block explorer, an existing query, a handful of transactions you check by hand.

Then point it at a sink and let it backfill. The same package that processes history keeps streaming at the chain head.


Frequently asked questions

Do I need an API key first? Yes, to run against live data. Get one at thegraph.market — no personal information required.

Which chains does this work for? Any chain Substreams supports, including Ethereum, Solana, Base, and the other supported networks. The published evaluation covered both EVM and Solana tasks.

What if there's no ABI or IDL for the contract? The evaluation included two such tasks and both succeeded — the agent derived the event signature from Solidity source and an Anchor discriminator from Rust source.


Get started at thegraph.market, and install the skills from github.com/streamingfast/substreams-skills.

Related: Can I build a Substreams package without knowing Rust? · What are the Substreams agent skills? · How reliable is AI-generated blockchain indexing code?