packages/cli/templates/static/shared/.claude/skills/indexing-performance/SKILL.md
Use when optimizing indexer speed or tuning sync performance. HyperSync vs RPC, batch size, RPC tuning parameters, WebSocket config, and preload optimization.
npx skillsauth add enviodev/hyperindex indexing-performanceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
HyperSync is the default data source for supported chains. Up to 1000x faster than RPC. No configuration needed — automatic for supported networks.
full_batch_size: 5000 # Target events per batch (default: 5000)
Reduce if handlers make many slow Effect API calls that can't be batched.
When using RPC as a data source, tune these parameters per chain:
chains:
- id: 1
rpc:
- url: ${ENVIO_RPC_URL}
for: sync # sync | live | fallback
ws: ${ENVIO_WS_URL} # WebSocket for lower-latency live block detection
initial_block_interval: 5000 # Starting blocks per query
backoff_multiplicative: 0.8 # Scale factor after RPC error (0.5-0.9)
acceleration_additive: 1000 # Blocks added per successful query
interval_ceiling: 10000 # Max blocks per query
backoff_millis: 5000 # Wait after error before retry (ms)
query_timeout_millis: 20000 # Cancel RPC request after this (ms)
fallback_stall_timeout: 5000 # Switch to next RPC after stall (ms)
polling_interval: 1000 # Check for new blocks every N ms (default: 1000)
for Options| Value | Description |
|-------|-------------|
| sync | RPC as main data source for both historical and live |
| live | HyperSync for historical, switch to RPC for live (lower latency) |
| fallback | Backup when primary stalls (default when HyperSync available) |
Add ws: for lower-latency new block detection via eth_subscribe("newHeads"):
rpc:
- url: ${ENVIO_RPC_ENDPOINT}
ws: ${ENVIO_WS_ENDPOINT}
for: live
Add @index to schema fields for faster queries — see indexing-schema for full syntax (single-field, composite, DESC direction).
Full reference: https://docs.envio.dev/docs/HyperIndex-LLM/hyperindex-complete
development
Write and run tests for HyperIndex indexers using Vitest and createTestIndexer(). Covers test setup, processing block ranges, asserting entity changes with toMatchInlineSnapshot, and TDD workflow. Use when writing tests, debugging handler output, or verifying indexer behavior.
data-ai
Migrate a TheGraph subgraph to Envio HyperIndex using TDD. Covers schema conversion (remove @entity, Bytes->String, @derivedFrom), handler translation (save->set, store.get->context.get, templates->contractRegister), and verification against subgraph data.
data-ai
Use when indexing all instances of a contract across all addresses (e.g., all ERC-20 transfers on a chain). Config setup (no address), wildcard handler option, and event.srcAddress.
data-ai
Use when needing transaction-level data in handlers. Configure field_selection to include transaction fields on events, and access via event.transaction. No native transaction handler — access through event handlers.