CtrlK
BlogDocsLog inGet started
Tessl Logo

hefgi/ponder

Build EVM blockchain data indexers using Ponder (ponder.sh) - an open-source TypeScript framework for indexing smart contract events, transactions, and traces into custom database schemas with type-safe APIs. Use when the user mentions ponder, blockchain/EVM indexing, onchain data pipelines, subgraph replacement, or wants to index smart contract events into a queryable database.

98

1.25x
Quality

99%

Does it follow best practices?

Impact

98%

1.25x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-3/

{
  "context": "Tests whether the agent correctly configures multi-chain indexing, selects the right ordering mode for cross-chain consistency, uses chain-aware env vars, distinguishes chains in handlers, and combines GraphQL with custom Hono routes.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Omnichain ordering",
      "description": "Config uses ordering: 'omnichain' since cross-chain consistency is required for bridge matching",
      "max_score": 12
    },
    {
      "name": "Both chains configured",
      "description": "ponder.config.ts defines both mainnet (id: 1) and Base (id: 8453) in the chains object",
      "max_score": 8
    },
    {
      "name": "Chain-specific RPC vars",
      "description": "Uses PONDER_RPC_URL_1 and PONDER_RPC_URL_8453 for the two chains (not generic names)",
      "max_score": 10
    },
    {
      "name": "Chain distinction in handler",
      "description": "Handler uses context.chain.id to identify which chain an event came from",
      "max_score": 10
    },
    {
      "name": "Correct startBlocks",
      "description": "Contract config sets startBlock per chain (18500000 for mainnet, 6800000 for Base), not 0",
      "max_score": 8
    },
    {
      "name": "Hex for addresses",
      "description": "Schema uses t.hex() for sender and recipient address columns",
      "max_score": 8
    },
    {
      "name": "Bigint for amount",
      "description": "Schema uses t.bigint() for the transfer amount column",
      "max_score": 8
    },
    {
      "name": "Query indexes",
      "description": "Schema includes indexes on at least one of: sender, recipient, or chain ID columns",
      "max_score": 8
    },
    {
      "name": "Custom Hono route",
      "description": "API file includes at least one custom Hono route (app.get) for the volume summary endpoint, separate from GraphQL",
      "max_score": 10
    },
    {
      "name": "Read-only API db",
      "description": "API route imports db from 'ponder:api' (read-only) and does NOT use context.db or attempt writes",
      "max_score": 10
    },
    {
      "name": "ABI as const",
      "description": "Bridge ABI file exports with `as const` assertion",
      "max_score": 8
    }
  ]
}

evals

SKILL.md

tile.json